Commit Graph

877 Commits

Author SHA1 Message Date
iceiix adb71c7caa
Update dependencies: image, serde, serde_json (#707)
* Bump image to 0.24.3. Closes #702

* Bump serde to 1.0.142. Closes #704

* Bump serde_json to 1.0.83. Closes #705
2022-08-06 17:33:27 -07:00
iceiix 1f183ed76e
1.18.1 protocol (757) (#640)
https://wiki.vg/index.php?title=Protocol&oldid=17203 1.18.1
https://wiki.vg/index.php?title=Protocol&type=revision&diff=17203&oldid=16918 1.18.1 vs 1.17.1

* protocol: add UpdateSimulationDistance packet and update IDs
* protocol: add JoinGame_WorldNames_IsHard_SimDist packet variant
* protocol: add UpdateBlockEntity_VarInt packet variant
* protocol: start adding ChunkData_AndLight, combining ChunkData + UpdateLight
* protocol: ChunkData_AndLight: add struct BlockEntityAtPackedLocation

* server: handle JoinGame_WorldNames_IsHard_SimDist packet variant
* server: handle combined chunk data and light packet
* server: on_chunk_data_and_light: set all bits in now-removed bitmask

* bit map: add derived std::fmt::Debug implementation
* bit map: allow creating, but not accessing, zero-length bit maps

* world: sanity check chunk bit_size, failing earlier
* world: read biome data bits after palette
* world: support single-valued palettes
* world: handle single-valued biomes
* world: add checks for direct palettes; update comments
* world: parse dimension tags
* world: load dimension type tags: min_y
* world: skip chunk sections underneath y<0
* world: force filling sky on 1.18+ for now, workaround until mask/fill_sky can be calculated correctly wrt min_y

* readme: add 1.18.1 (757)
2022-08-06 16:32:40 -07:00
iceiix 2e224a77f9
clipboard: update to fork updating x11-clipboard for xcb (#701)
Using https://github.com/aweinstock314/rust-clipboard/pull/89
2022-07-30 17:11:36 -07:00
iceiix ba3cf43f93
Update dependencies: glutin 0.29, winit 0.27, and more (#700)
* Update to glutin 0.29.0, winit 0.27.0. Closes #695
Change true/false to CursorGrabMode::Locked/None for set_cursor_grab
https://github.com/rust-windowing/winit/releases/tag/v0.27.0
> Breaking: Window::set_cursor_grab now accepts CursorGrabMode to control grabbing behavior.

* Update web-sys to 0.3.59. Closes #699

* Update flate2 to 1.0.24. Closes #698

* Update zip to 0.6.2. Closes #697

* Update to log 0.4.17. Closes #696
2022-07-30 15:54:49 -07:00
iceiix e00e249793
Update dependencies (#694)
* Update rand to 0.8.5. Closes #665

* Update web-sys to 0.3.55. Closes #637

* Update glow to 0.11.2. Closes #641

* Update to structopt 0.3.26. Closes #652

* Update to crossbeam-deque 0.8.2. Closes #680

* Update crossbeam-utils to 0.8.11. Closes #681

* Updaet tokio to 1.16.1. Closes #682

* protocol: Update tokio to 1.19.2. Closes #683, closes #684

* Update reqwest to 0.11.11. Closes #685

* Update getrandom to 0.2.7. Closes #686

* Update wams-bindgen to 0.2.81. Closes #687

* Update serde_json to 1.0.82. Closes #689

* Update serde to 1.0.140. Closes #693
2022-07-30 14:49:30 -07:00
iceiix 45f9cd45b0
GitHub Actions: clippy interaction fix for Win/Mac (#671) 2022-03-06 18:25:27 -08:00
iceiix 2fd10442bb
Update to Rust 1.58.1 (#669) 2022-03-06 14:19:46 -08:00
ice_iix 9486bf817b render: suppress clippy::uninit_vec for now 2022-03-06 13:39:20 -08:00
iceiix d16c24b8fe
GitHub Actions: manually run clippy if resource not accessible (#662)
* GitHub Actions: manually run clippy if resource not accessible, https://github.com/actions-rs/clippy-check/issues/2#issuecomment-807878478

* readme: update status badge for GitHub Actions
2022-02-19 16:26:17 -08:00
iceiix 3b43c7661f
Update to Rust 1.58 (#661) (fixes #650)
* Bump Rust version to 1.58

* Update to Rust 1.58 in CI and readme

* Cargo.toml: fix typo for rust-version (https://doc.rust-lang.org/cargo/reference/manifest.html#the-rust-version-field)

Co-authored-by: Ben Reeves <benwolverine2019@gmail.com>
2022-02-05 16:13:51 -08:00
Ben Reeves 9a8d3572eb Derive Clone, PartialEq, Eq, and Hash where appropriate.
This is really useful for anyone who wishes to use the steven_protocol
crate and write tests that compare packets to expected values.
2022-02-05 15:42:38 -08:00
ice_iix 00e7a3d1bc 1.13.2+: correct particle IDs, fixes Failed to read all of packet 0x24
Updates https://github.com/iceiix/stevenarella/issues/377#issuecomment-1003598682
2022-01-02 08:10:50 -08:00
iceiix 21a1b64a14
Merge pull request #639 from iceiix/rust2021
Update to Rust 1.57.0 and 2021 edition
2021-12-24 10:53:27 -08:00
ice_iix 2cec81fd06 Cargo.toml: add minimum supported rust_version 2021-12-24 09:37:01 -08:00
ice_iix a90a6af7c2 Update to Rust 2021 2021-12-24 09:32:56 -08:00
ice_iix c3edf715ef Fix clippy needless_borrow and unused_mut 2021-12-24 09:25:15 -08:00
ice_iix 669e37ac5c Suppress dead_code warnings for unused fields new in Rust 1.57 2021-12-24 09:17:58 -08:00
ice_iix 6f8dcea2a5 Update to Rust 1.57.0 2021-12-24 09:13:17 -08:00
iceiix c8cb29e1fa
Update dependencies: flate2, dirs, structopt, instant, serde... (#636)
* Bump flate2 to 1.0.22. Closes #614

* Bump wasm-bindgen to 0.2.78. Closes #616

* Bump dirs to 4.0.0. Closes #617

* Bump console_error_panic_hook to 0.1.7. Closes #622

* Bump structopt to 0.3.25. Closes #623

* Bump instant to 0.1.12. Closes #624

* Bump serde to 1.0.132. Closes #634

* Bump serde_json to 1.0.73. Closes #633

* Bump reqwest to 0.11.8. Closes #635

* Update Cargo.lock
2021-12-24 09:04:43 -08:00
iceiix 080851353c
Update to Rust 1.55.0 (#618) 2021-09-29 17:06:29 -07:00
iceiix cfcc7d2a1f
1.17.1 (756) protocol (#605)
https://wiki.vg/index.php?title=Protocol&oldid=16918

New and changed packets:
* 1.17.1 packet id shifts, new clientbound packets
* Add WindowPong new packet serverbound
* Add Tags_Nested packet variant
* Add TeleportPlayer_WithDismount packet variant
* Add ChunkData_Biomes3D_Bitmasks packet variant 
* Add WindowItems_StateCarry variant, split WindowItems_i16
* Add WindowSetSlot_State packet variant
* Add Explosion_VarInt packet variant
* Add UpdateLight_Arrays variant
* Add ResourcePackSend_Prompt variant
* Add SpawnPosition_Angle variant
* Add EntityProperties_VarIntVarInt variant, using VarInts in both fields 
* Add ClientSettings_Filtering variant
* Add ClickWindow_State variant
* Add EditBook packet variant 
* Fix many Particle packet variant definitions

* server: handle TeleportPlayer_WithDismount
* server: handle ChunkData_Biomes3D_Bitmasks

* world: add num_sections to self.load_chunk19_or_115
* world: load_chunk19_to_117: accept 64-bit mask

* metadata: add PoseData::LongJumping 

* protocol: update Cargo.lock for serde_json 1.0.130
* build: pin to wasm-pack 0.10.0
2021-09-05 13:30:32 -07:00
dependabot[bot] 83bbb9fe4f
gl: Update to glow 0.11.0 (#594)
* gl: update for newtype wrappers Default impl

* build(deps): bump glow from 0.10.0 to 0.11.0

Bumps [glow](https://github.com/grovesNL/glow) from 0.10.0 to 0.11.0.
- [Release notes](https://github.com/grovesNL/glow/releases)
- [Commits](https://github.com/grovesNL/glow/commits)

---
updated-dependencies:
- dependency-name: glow
  dependency-type: direct:production
  update-type: version-update:semver-minor
2021-09-01 19:21:49 -07:00
ice_iix 0d5feb9454 build(deps): update serde, wasm-bindgen, web-sys
Bump serde to 1.0.129. Closes #604
Bump wasm-bindgen to 0.2.76. Closes #595
Bump web-sys to 0.3.52. Closes #591
2021-08-29 18:44:00 -07:00
terrarier2111 3ae7e0e178
Fix transparency while ingame (#592). Fixes #570 2021-08-29 18:25:35 -07:00
iceiix 755aaf9ede
Update protocol crate dependencies (#590), closes #587
* protocol: bump hex to 0.4.3

* protocol: bump sha-1 to 0.9.7

* protocol: bump num-traits to 0.2.14

* protocol: bump aes to 0.7.4, cfb8 to 0.7.1
2021-08-16 07:22:01 -07:00
ice_iix 107d4f4f4a protocol: bump serde to 1.0.127, updates #586 2021-08-15 18:45:07 -07:00
dependabot[bot] 96809a1848
build(deps): bump serde from 1.0.126 to 1.0.127 (#586)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.126 to 1.0.127.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.126...v1.0.127)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-15 18:43:03 -07:00
dependabot[bot] 3eb735eb48
build(deps): bump wasm-bindgen from 0.2.74 to 0.2.75 (#585)
Bumps [wasm-bindgen](https://github.com/rustwasm/wasm-bindgen) from 0.2.74 to 0.2.75.
- [Release notes](https://github.com/rustwasm/wasm-bindgen/releases)
- [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rustwasm/wasm-bindgen/compare/0.2.74...0.2.75)

---
updated-dependencies:
- dependency-name: wasm-bindgen
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-15 18:42:54 -07:00
iceiix 1a9e8d406c
Merge pull request #580 from iceiix/rust1.54
Update to Rust 1.54
2021-08-05 07:00:13 -07:00
dependabot[bot] a35b9d241f
build(deps): bump serde_json from 1.0.64 to 1.0.66 (#579)
* build(deps): bump serde_json from 1.0.64 to 1.0.66

Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.64 to 1.0.66.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.64...v1.0.66)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* protocol: update to serde_json 1.0.66

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: ice_iix <ice_ix@protonmail.ch>
2021-08-01 06:39:35 -07:00
ice_iix 47df12b5ee main: allow clippy::needless_borrow since it isn't needless for web 2021-08-01 06:25:57 -07:00
ice_iix 3d1bea85fe Fix clippy::needless_borrow 2021-08-01 06:19:48 -07:00
ice_iix eb420c4896 Fix clippy::manual_str_repeat 2021-08-01 06:19:48 -07:00
ice_iix 814b6ab422 Update to Rust 1.54.0 2021-07-31 19:03:15 -07:00
terrarier2111 44fd1f933c
screen: fixed a focusing bug in the settings (#565)
The game was previously focused after clicking the done button in the individual settings, which would cause the game to be focused while still in the main settings menu.
2021-07-31 18:56:06 -07:00
iceiix a25a2382b0
Update to rsa_public_encrypt_pkcs1 0.4.0 (#577)
* Update to rsa_public_encrypt_pkcs1 0.4.0

* cargo update
2021-07-18 17:23:15 -07:00
iceiix fd5290fa4f
Update reqwest, structopt, instant. Closes #561, #574, #574 (#576)
* Update to reqwest 0.11.4. Closes #561
* Update to structopt 0.3.22. Closes #574
* Update to instant 0.1.10. Closes #575
* Update cargo.lock
* protocol: update Cargo.lock
2021-07-18 09:44:37 -07:00
terrarier2111 d260162642
entity/systems: fixed typo in comment (#566) 2021-07-18 09:12:42 -07:00
terrarier2111 9e0dc7cceb
settings: remove outdated comment (#564)
This notice is outdated as the file was already renamed to settings.rs.
2021-07-18 09:09:00 -07:00
iceiix 9712387ec0
Update to winit 0.25, glutin 0.27. Closes #541 (#546) 2021-07-18 09:07:50 -07:00
iceiix 72f5fdf619
Merge pull request #559 from iceiix/rust1.53
Update to Rust 1.53.0
2021-06-18 19:47:29 -07:00
ice_iix b145e1ad0e Fix clippy::branches_sharing_code in chunk loading 2021-06-18 19:32:26 -07:00
ice_iix 526dfa65b6 Fix clippy::uninit_assumed_init, use MaybeUninit<T> 2021-06-18 19:32:26 -07:00
ice_iix 728367c59b Fix clippy::collapsible_match, collapse it 2021-06-18 19:32:26 -07:00
ice_iix 53a0bc9fb6 Fix clippy::manual_flatten, use flatten() 2021-06-18 19:32:26 -07:00
ice_iix d15229dd0b Fix clippy::mem_replace_with_default, use std::mem::take 2021-06-18 19:32:26 -07:00
ice_iix c4dac61ab5 Fix clippy::manual_map, no longer manual 2021-06-18 19:32:26 -07:00
ice_iix 26a22750d5 Cargo.toml: split debug info for faster builds
https://blog.rust-lang.org/2021/03/25/Rust-1.51.0.html#splitting-debug-information
2021-06-18 19:32:26 -07:00
ice_iix e980bfc940 Cargo.toml: use new resolver = 2
https://blog.rust-lang.org/2021/03/25/Rust-1.51.0.html#cargos-new-feature-resolver
In my testing, the target release binary is 136 bytes smaller (insignificant).
2021-06-18 19:32:26 -07:00
ice_iix 9ae87f9340 Update to Rust 1.53.0 2021-06-18 19:32:09 -07:00
iceiix a48a6f5a99
Update zip, glow, rand, rand_pcg (#557)
* Bump zip to 0.5.13. Closes #551

* Bump glow to 0.10.0. Closes #552

* Bump rand to 0.8.4. Closes #555

* Bump rand_pcg to 0.3.1. Closes #554
2021-06-18 14:01:08 -07:00
Bart Ribbers a7b093c93d Remove mention of Freenode channel
As most people know, Freenode has changed owners and a lot of stuff
happened since. No need to go into details here, but all IRC channels on
the network are gone and control by channel operators is lost.
The channel wasn't really used anyway, so let's stop mentioning it
2021-06-18 06:26:41 -07:00
iceiix 08900fc6f7
www: remove npm package-lock.json for now (#556)
While the package lock is useful to consistently include the same
versions of each package, right now it causes too much noise with
dependabot, as new versions are released but with little or no impact on
this project because the web port is not yet usable (see #446 🕸️ Web
support)
2021-06-18 06:09:34 -07:00
dependabot-preview[bot] caa9e825b8
Upgrade to GitHub-native Dependabot (#535)
Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: ice_iix <ice_ix@protonmail.ch>
2021-05-25 08:14:50 -07:00
iceiix 63c9d81687
Update to glow 0.9.0. Closes #532 (#545) 2021-05-25 08:13:07 -07:00
iceiix 9e570d953d
Update web-sys, getrandom dependencies (#547)
* Bump web-sys to 0.3.51. Closes #543

* Bump getrandom to 0.2.3. Closes #544

* Update Cargo.lock
2021-05-25 08:10:51 -07:00
iceiix 24b6d84414
Update web dependencies (#542)
* Bump elliptic to 6.5.4. Closes #520

* Bump y18n to 4.0.1. Closes #528

* Bump ssri to 6.0.2. Closes #531

* Bump url-parse to 1.5.1. Closes #536

* Bump lodash to 4.17.21. Closes #537
2021-05-23 12:11:35 -07:00
dependabot-preview[bot] 7611a52374
build(deps): bump wasm-bindgen from 0.2.71 to 0.2.74 (#538)
Bumps [wasm-bindgen](https://github.com/rustwasm/wasm-bindgen) from 0.2.71 to 0.2.74.
- [Release notes](https://github.com/rustwasm/wasm-bindgen/releases)
- [Changelog](https://github.com/rustwasm/wasm-bindgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rustwasm/wasm-bindgen/compare/0.2.71...0.2.74)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2021-05-17 20:24:33 -07:00
iceiix 0563757cb0
Update dependencies: byteorder, reqwest, zip, dirs, serde (#540)
* Bump byteorder to 1.4.3. Closes #522

* Bump reqwest to 0.11.3. Closes #529

* Bump zip to 0.5.12. Closes #530

* Bump dirs to 3.0.2. Closes #533

* Bump serde to 1.0.126. Closes #539

* Update Cargo lock
2021-05-16 21:13:50 -07:00
Kezi eb452abbb5
protocol/item: update to support protocol_version >= 404 (1.13.2+) (#524) 2021-03-25 08:21:25 -07:00
iceiix abbc58b9ef
deps: update reqwest, wasm-bindgen, serde_json, image (#516)
* Bump reqwest to 0.11.1, closes #504

* Bump wasm-bindgen to 0.2.71, closes #513

* Bump serde_json to 1.0.64, closes #514

* Bump image to 0.23.14, closes #515

* cargo update
2021-03-06 16:47:38 -08:00
Kezi 8cecbb37e3
server: fix block placement in 1.16 (#512)
* fix block placement in 1.16

* fmt
2021-03-03 19:34:36 -08:00
Kezi e3845a0dbf
protocol: fix panic in chat formatting, closes #505 (#506)
* remove panic on chat thing

* fmt
2021-03-03 19:28:43 -08:00
ice_iix d7b7216315 server: thread_rng is a CSPRNG, closes #508 2021-03-03 19:11:56 -08:00
ice_iix 995cf981c5 main: remove console chat activation, updates #479 2021-02-18 17:40:45 -08:00
iceiix 7dcbac2a5d
Update dependencies: serde, log, rand, flate2, image (#502)
* cargo update all modules

* Bump serde to 1.0.123. Closes #496

* Bump wasm-bindgen to 0.2.70. Closes #497

* Bump log to 0.4.14. Closes #498

* Bump rand to 0.8.3. Closes #499

* Bump flate2 to 1.0.20. Closes #500!

* Bump image to 0.23.13. Closes #501
2021-02-06 13:49:49 -08:00
iceiix 3e3bcdc5da
protocol, console, server: receive chat messages (#479)
Implements support for receiving chat messages from the server, the
first step towards #63 chat support. Long way to go, but is a start.

* server: handle ServerMessage_* packets, on_servermessage

* format: get the with arguments of translations
* format: hardcode chat types
* format: support bare strings, used in chat.type.text
* format: use extra text if present, fixes missing username on 1.16.5

* console/main/server: activate on receiving chat messages
2021-01-24 17:41:16 -08:00
iceiix 6b961622aa
forge: add FML2 protocol support (1.13.2-1.16.5+), fixes #400 (#494)
Allows connecting to newer Forge servers, 1.13.2 to 1.16.5 at least, which use
the FML2 handshake protocol:

https://wiki.vg/Minecraft_Forge_Handshake#FML2_protocol_.281.13_-_Current.29

Tested with a modded 1.16.5 server

Extends #88 #134 Forge FML (v1, for 1.7.10 - 1.12.2)

* protocol: update Cargo.lock
* protocol: send FML2 on fmlNetworkVersion: 2
* protocol: factor out read_raw_packet_from()
* protocol: move plugin message writing from Server to Conn; add write_fml2_handshake_plugin_message
* protocol: CommandNode: add forge:modid, forge:enum
* forge: add fml2 handshake packets
* server: handle fml:loginwrapper fml::handshake packets
2021-01-23 13:47:30 -08:00
dependabot-preview[bot] 1a257e2e90
build(deps): bump glow from 0.7.1 to 0.7.2 (#493)
Bumps [glow](https://github.com/grovesNL/glow) from 0.7.1 to 0.7.2.
- [Release notes](https://github.com/grovesNL/glow/releases)
- [Commits](https://github.com/grovesNL/glow/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2021-01-21 19:32:43 -08:00
iceiix 72aec0c6a2
blocks: fix hier block shift (#489), add tests (#492)
* blocks: fix soul fire/soil, exclude from <1.13, fixing #489 

* blocks: add unit tests for #467 #469 #474
2021-01-20 17:07:27 -08:00
ice_iix d60a495425 deps: update getrandom, serde (#491, #490)
Bump getrandom to 0.2.2, closes #491
Bump serde to 1.0.120, closes #490
2021-01-20 15:29:06 -08:00
iceiix 3daa9c0b83
console: configurable log levels, file logging (#359) (#488)
* console: write to log file (configdir/client.log)

* console: change to log only Info and more important to terminal (but all to file)

* console: configurable log levels
2021-01-20 15:22:28 -08:00
iceiix c7bdb60d85
CI enhancements: .app bundling, build .wasm (#486)
Updates to enhance GitHub Actions continuous integration:

* ci: add macOS app bundle packaging using cargo-bundle, closes #352 
based on https://github.com/EndlessSkyCommunity/ESLauncher2/blob/master/Cargo.toml
* ci: add web target, building using wasm-pack (for #446) 
* ci: refactor and cleanup targets, split out instead of using matrix

* main: save config in consistent OS-specific dirs::config_dir()
Instead of storing and loading in the current working directory, change
to a consistent dedicated configuration directory. This is necessary for
.app launching since cwd is set to /. To preserve compatibility with
existing installations, if conf.cfg exists in cwd then it will be used instead,
but otherwise we will use the operating system specific config dirs:
// Lin: Some(/home/alice/.config)
// Win: Some(C:\Users\Alice\AppData\Roaming)
// Mac: Some(/Users/Alice/Library/Application Support)

* macos: add icons based on screenshotted logo
* macos: add Cmd-Q to quit
2021-01-18 19:05:29 -08:00
iceiix 0b4c56b803
1.7.10: populate player info on spawn, fixes #141 (#485)
PlayerInfo post-1.7.10 has the UUID, so it populates the self.players map,
in 1.7.10 there is only enough information for the client <tab> list. To fix
this, instead populate self.players in SpawnPlayer, for the 1.7.10 variant.

Fixes player name tags showing as "MISSING" on 1.7.10 servers.
2021-01-18 13:53:09 -08:00
iceiix 2b6103e6d9
gl: fix disembodied player model found in #141 (#484)
Regression introduced in #262 by the glow port, correct the raw size to
include all elements in set_float_multi().

See https://github.com/iceiix/stevenarella/issues/141#issuecomment-762417970
2021-01-18 11:50:00 -08:00
iceiix 56f9c0e908
www: bundle resources statically (#483) 2021-01-18 09:48:38 -08:00
iceiix c505903aed
ui: fix backspace on Windows, closes #481 (#482) 2021-01-17 18:32:13 -08:00
iceiix c78068e6f9
1.16.5 protocol is the same as 1.16.4 (#480) 2021-01-17 17:13:23 -08:00
ice_iix d14573c3cf protocol: glowstone compatibility: warn not panic on unrecognized modinfo, fixes #478 2021-01-16 19:48:20 -08:00
iceiix 0c65cc1e0d
ui: keyboard input fixes (#432, #476) (#477)
* Fix Cmd-V typing v, suppress key_type on ctrl/logo, closes #432
Only send key_type() when modifiers are not pressed.

* Fix backspace repeat and inserting ⌂, closes #476
Handle backspace in key_type instead of key_press, so we get
auto-repeat for free, and can suppress typing the character.
2021-01-16 14:11:17 -08:00
iceiix 4dd25de709
ui: click TextBox to focus, fixes #415 (#475)
Previously text boxes could only be focused by cycling through
focus with the tab key, now you can click with the mouse as well.
2021-01-15 16:42:20 -08:00
dependabot-preview[bot] 2f08e14b1c
build(deps): bump rand from 0.8.1 to 0.8.2 (#473)
Bumps [rand](https://github.com/rust-random/rand) from 0.8.1 to 0.8.2.
- [Release notes](https://github.com/rust-random/rand/releases)
- [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/rand/compare/0.8.1...0.8.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2021-01-15 16:41:07 -08:00
iceiix 49274e7e52 blocks: add 1.16.1/2+ new blocks/states (#474)
Adds _some _new blocks and block states, building on the version-
dependent block support added in #469. Notably, fixes grass on 1.16.4.

1.16.1+ (protocol_version >= 735)
* Add NetherGoldOre
* Add SoulFire
* Add SoulSoil, Basalt
* Add PolishedBasalt, SoulTorch, SoulWallTorch
* Add Chain

1.16.2+ (protocol_version >= 751)
* Add Chain axis states
2021-01-14 16:47:41 -08:00
iceiix 8ca12a69ce
blocks: versioned block states, fixes world on fire #467 (#469)
Since the unflattening in 1.13.x, block IDs are no longer stable across versions, and
can be shifted by the addition of new block states. To get the right block IDs across
multiple protocol versions, add a new `offsets` token to `define_blocks!`, which
is similar to `offset` (used post-flattening, compare to `data` used pre-flattening),
but accepts a protocol_version argument to enable block states _per-version_:

* Add 'offsets' for protocol_version-specific blockstates

As part of this change, by_vanilla_id is now a method of a VanillaIDMap instance,
instead of a method of Block, so it can know the protocol version. Previously, the
ID map was lazily computed statically, once, but this change allows it to be
computed based on protocol version:

* Move by_vanilla_id to VanillaIDMap instance

Tools to help debug blocks:

* Add DEBUG_BLOCKS environment variable to dump block states
* Add dump_block command-line tool

The block `offset`s were previously only correct for 1.13.2, to take advantage of
the new version-specific `offsets` capability, blocks were updated for 1.14.x:

1.14+ (protocol_version >= 477):
* Add NoteBlock instruments
* Add FlowerPot and RedFlowerVariant cornflower, wither rose, lily of the valley
* Add StandingSign wood variants
* Add WallSign tree variants
* Add StoneSlab smooth stone, cut sandstone, cut red sandstone

This fixes #467, where grass was misinterpreted as fire on 1.14+ because of the
ID shifts caused by NoteBlock, among other block misassignments (though not 100%).
2021-01-13 19:50:05 -08:00
ice_iix bb4fb9eb8b Update byteorder, log, serde dependencies
Bump byteorder to 1.4.2, closes #470
Bump log to 0.4.13, closes #471
Bump serde to 1.0.119, closes #472
2021-01-12 19:13:21 -08:00
iceiix 63716499f2
1.13.2+: fix TallGrassVariant block state offsets (#468)
Fixes tallgrass showing up as dead bushes and also ferns. The flattened
IDs are in a different order than the pre-flattening data values, as observed
by enabling the commented-out block state logging.
2021-01-10 16:12:43 -08:00
ice_iix ac63ee5ece protocol: add angle command node (fixes #466) 2021-01-10 15:00:34 -08:00
ice_iix 622cf164f9 protocol: update Cargo.lock 2021-01-10 15:00:09 -08:00
iceiix 8bd233c3db
Update reqwest, getrandom, rand (#464)
Update getrandom to 0.2.1. Closes #460
Update rand to 0.8.1. Closes #462
Update reqwest to 0.11.0. Closes #463
2021-01-07 17:29:09 -08:00
ice_iix fa2e5e8bdb chunk_builder: single-threaded on wasm (#458)
Refactor the chunk builder to use multithreading on native, but no threads on
wasm, at least until we have web workers or wasm threads. With this change
and the shader fix, chunks now render on Chrome (albeit with no textures).
Another step towards 🕸️ Web support #446.

* Single-threaded chunk builder

* shaders: chunk_frag: consistently enable outputs, fixes GL_INVALID_OPERATION on WebGL
2021-01-07 17:26:58 -08:00
iceiix 8208e3b595
wasm: enable events loop (#459)
On the web, we have a separate render_loop (for window.requestAnimationFrame)
and events_loop (for winit/window events), so `game` and `ui_container` are shared
using an `Rc<RefCell>`, and `winit_window` as well for wasm only (on native,
`glutin_window` which provides access to the winit window is used instead).

With these changes, events (hover, click, etc.) and rendering now work in the web.
Another step towards 🕸️ Web support (#446)

* wasm: enable events loop

* Use Rc<RefCell>'s for winit_window

* Use Rc<RefCell> for game and ui_container

* main: disable set_cursor_grab() call on wasm to get further until Pointer Lock is available
2021-01-04 10:14:55 -08:00
dependabot-preview[bot] 98bd7f004b
build(deps): bump serde_json from 1.0.60 to 1.0.61 (#456)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.60 to 1.0.61.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.60...v1.0.61)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2021-01-01 08:02:30 -08:00
iceiix 22f6c83d59
WebGL fixes after disabling threaded chunk builder (#451)
At this point, the UI renders in the browser through WebGL, with no GL errors.
Progress towards #446 🕸️ Web support

* main: enable render loop on wasm, disable events_loop on wasm for now
Allow for testing rendering on WebGL

* chunk_builder: disable on wasm due to no threads on wasm
Chunks will not be correctly rendered, but other parts of the program now can be tested instead of crashing in std::thread

* chunk_frag: glBindFragDataLocation is only on native, WebGL 2 uses in-shader specification layout(location=), which works on native in OpenGL 4.1 but we're on OpenGL 3.2 - see https://www.khronos.org/opengl/wiki/Fragment_Shader#Output_buffers

* std_or_web: always fail File::open() to avoid servers.json empty string JSON parse failing

* www: update installation instructions

* render: fix apparent TEXTURE_MAX_LEVEL -> TEXTURE_MAG_FILTER typo

* render: correct type for internalFormat DEPTH_COMPONENT24
Valid combinations of format, type, and internalFormat are listed at https://www.khronos.org/registry/OpenGL/specs/es/3.0/es_spec_3.0.pdf#page=124&zoom=100,168,206. We had UNSIGNED_BYTE for DEPTH_COMPONENT24, but only UNSIGNED_INT is a valid type for this internal format.

Fixes texImage: Mismatched internalFormat and format/type: 0x81a6 and 0x1902/0x1401
and fixes the subsequent GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT error.

* render: gl::MULTISAMPLE (0x809d) is not available on WebGL
Fixes WebGL warning: enabled: cap: Invalid enum value <enum 0x809d> 0.bootstrap.js line 11 > eval:851:21

* gl: replace set_float_multi_raw with a safer set_float_multi
Removes use of passing raw pointers in set_float_multi_raw parameters
Instead, casts raw pointers to flatten, similar to set_matrix_multi
Fixes uniform setter: (uniform colorMul[0]) values length (1) must be a positive integer multiple of size of <enum 0x8b52>.

* render: model: send BYTE to id attrib, fixes type mismatch
Fixes drawElementsInstanced: Vertex attrib 0 requires data of type INT, but is being supplied with type UINT
2020-12-31 14:35:30 -08:00
iceiix b7bd59f75f
Update to Rust 1.49.0 (#457)
* Update to Rust 1.49.0

* Fix clippy::manual_range_contains warnings
2020-12-31 09:51:46 -08:00
ice_iix 028ab1cbe3 1.16.4-19w02a: fix Maps packet missing locked, closes #454 2020-12-28 14:02:05 -08:00
ice_iix 5a38ea1091 1.16.4-1.14: fix Particle_f64/Data packet fields, closes #377 2020-12-28 11:57:59 -08:00
ice_iix 80887eec91 1.16.2+: fix Respawn dimension field, closes #452 2020-12-27 18:13:51 -08:00
ice_iix 71121bd572 load_block_entities: check for missing id, fixes #445 2020-12-27 17:49:22 -08:00
iceiix 352f1965af
Update rand to 0.8.0, add getrandom js for web (#450)
* Add getrandom with js feature for JavaScript web compatibility

* Update to rand 0.8.0, closes #440

* Update to rand_pcg 0.3.0, closes #434

* Update rsa_public_encrypt_pkcs1 to 0.3.0, updates rand 0.8.0
2020-12-27 16:14:11 -08:00
iceiix 503a98d7a8
Use instant over std::time, for wasm compat (#449)
Replace std::time with the `instant` crate, which bridges to std::time on
native but on wasm calls performance.now() instead of panicking.

A step towards 🕸️ Web support #446

* logo: replace SystemTime/UNIX_EPOCH with Instant
2020-12-27 15:06:03 -08:00