A small step for #446🕸️ Web support, use web-sys to interface to the web.
Previously, we would try to use glutin on the web, which is not supported;
now glutin is only used on native: fixes#171 could not find Context in platform_impl.
winit is still used on both, but the GL context is created with web-sys and glow
(on the web), and created with glutin and used with glow (on native). stdweb is
no longer used, being replaced by web-sys.
Substantial refactoring to allow reusing the code between web/native:
* settings: use VirtualKeyCode from winit, not reexported from glutin
* std_or_web: remove broken localstoragefs/stdweb, add File placeholder
* render: disable skin_thread on wasm since we don't have threads
* gl: use glow types in gl wrapper (integers in native, but Web*Key in web)
* gl: web-sys WebGlUniformLocation does not implement Copy trait, so glow::UniformLocation doesn't so gl::Uniform can't
* gl: refactor context initialization, pass glow::Context to gl::init for consistency between native/web
* gl: update to glow with panicking tex_image_2d_multisample web-sys wrapper
* glsl: use shader version in GLSL for WebGL 2 and OpenGL 3.2
* shaders: add explicit float/int type conversions, required for WebGL
* shaders: specify mediump precision, required for WebGL
* shaders: specify fragment shader output locations for WebGL
* main: refactor handle_window_event to take a winit window, not glutin context
* main: handle resize outside of handle_window_event since it updates the glutin window (the only event which does this)
* main: use winit events in handle_window_event not reexported glutin events
* main: refactor game loop handling into tick_all()
* main: create winit window for WebGL, and use winit_window from glutin
* main: restore console_error_panic_hook, mistakingly removed in (#260)
* main: remove force setting env RUST_BACKTRACE=1, no longer can set env on web
* www: index.js: fix wasm import path
* www: npm update, npm audit fix
* www: update readme to link to status on #446🕸️ Web support
Replaces the use of gl_generator with the glow wrapper:
* Add glow dependency, based on glow 0.6.1
* Pin version of glow fork for https://github.com/iceiix/glow/pull/1 until #442 renderbuffer
* Remove gl module, steven_gl
Porting details:
* Initialize glow in src/gl/mod.rs
* Call gl methods on glow context
* glow uses camelcase
* Import glow::HasContext trait, finds draw_elements etc.
* Fix mismatched types, glow uses Option and &str instead of raw pointers
* Fix uniform_location, glow already returns Some(u32)
* uniform_location: convert i32 to u32 for Uniform
* Fix attribute_location
* Fix shader creation Result u32 type
* Fix passing GLvoid and 2d/3d
* Fix missing Options type mismatches
* Offsets are i32 in glow, not GLvoid
* Fix clear_buffer using _f32_slice
* Delete methods are singular not plural
* glBufferData -> buffer_data_u8_slice
* buffer_sub_data_u8_slice
* Update more glow method wrapper names found by reviewing glow native platform
* Remove unused multi_draw_elements, can be replaced by draw_elements in a loop and it has no WebGL equivalent
* glow implements glMapBufferRange
* Remove unused read_buffer
* glow's deletes automatically pass 1 and take no reference
* shader_source() accepts &str directly; removes last of std::ptr
* Pass uniform Option<u32>
* Fix bool passing normalized parameter
* Fix draw_buffers parameter
* Stop unnecessarily returning context from gl::init
* Getting shader info is unsafe
* Unwrapping static mut is unsafe
* Use unsafe raw pointers for global mutable context
* Fix initializing GL objects wrappers from glow wrappers
* Unbinding framebuffers uses None
* Uppercase global to fix warning
* Shaders return Some instead of None
* Unbox the context to a raw pointer
* Use tex_image_2d_multisample added in glow fork
* Implement uniform_location, fixing unwrap None failed
* Add tex_sub_image_3d, using PixelUnpackData::Slice
* set_matrix4: transmute the Matrix4 since it is repr(C)
* get_pixels -> get_tex_image -> glGetTexImage, with PixelPackData::Slice
* Wrap sub_image_2d (glTexSubImage2D) and fix warnings
* Implement set_float_multi_raw and set_matrix4_multi, using from_raw_parts
* Update for ModifiersChanged event
* Consistently use logical position and size
CursorMoved gives us a PhysicalPosition, which needs to be converted
to LogicalPosition to properly track the mouse movement. Change the
width/height passed to be a LogicalSize instead of a PhysicalPosition,
matching the LogicalPosition.
Closes#425 build(deps): bump wasm-bindgen from 0.2.68 to 0.2.69
Closes#426 build(deps): bump structopt from 0.3.20 to 0.3.21
Closes#427 build(deps): bump serde_json from 1.0.59 to 1.0.60
Closes#428 build(deps): bump serde from 1.0.117 to 1.0.118
Closes#433 build(deps): bump reqwest from 0.10.9 to 0.10.10
Fixes#408 1.16.1: EntityEquipment_VarInt : Main thread panic: Failed to read all of packet 0x47, had 363 bytes left - enchants
Fixes#421 1.16.1: EntityEquipment_VarInt : Player heads break things. (Failed to read all of packet 0x47, had 1292 bytes left)
Bump cfg-if to 1.0.0 (closes#412)
Bump serde to 1.0.117 (closes#416)
Bump serde_json to 1.0.59 (closes#413)
Bump structopt to 0.3.20 (closes#414)
Bump flate2 to 1.0.19 (closes#420)
Bump reqwest to 0.10.9 (closes#423)
Adds support for 1.16.4 (754) / 1.16.3 (753) / 1.16.2 (751) protocols
* Update packet IDs and readme
* Add and handle ChunkData_Biomes3D_VarInt variant
* Support world chunk data padded bit map array
* Add and handle JoinGame_WorldNames_IsHard variant
* Add and handle MultiBlockChange_Packed variant
* Add UnlockRecipes_WithBlastSmoker variant
* Add SetDisplayedRecipe and SetRecipeBookState packets
Closes#372 bump log from 0.4.8 to 0.4.11
Closes#387 bump reqwest from 0.10.6 to 0.10.8
Closes#391 bump wasm-bindgen from 0.2.64 to 0.2.68
Closes#403 bump serde_json from 1.0.56 to 1.0.58
Closes#405 bump flate2 from 1.0.16 to 1.0.18
Closes#409 bump structopt from 0.3.15 to 0.3.19
* Minor change: Don't consume self when writing packet to a writer. Mutability is not affected.
* Further decrease packet write requirements
Co-authored-by: Terminator <terminator@nonexistent.com>
Consolidates the multitude of CI systems, replacing Azure, SourceHut, and
AppVeyor with GitHub Actions, which now also runs clippy and fmt. See #352
* Add task to run clippy
* Add task to check formatting
* Test on 1.44.1 toolchain
* Update readme: status badge and downloads on GitHub Actions
* Remove strip binary task, leave it unstripped to allow debugging for now
* Rename task to install dependencies
* Remove Azure Pipelines
* Remove sr.ht SourceHut CI
* Remove AppVeyor
Bump flate2 to 1.0.16, closes#350
Bump serde_json to 1.0.56, closes#349
Bump wasm-bindgen to 0.2.64, closes#348
gl: Bump libc to 0.2.71
protocol: Bump hex to 0.4.2
protocol: Bump aes to 0.4.0
protocol: Bump cfb8 to 0.4.0
protocol: Bump num-traits to 0.2.12
The server list ping response contains a base64-encoded favicon image,
which in pre-1.13 servers can have embedded newlines:
https://wiki.vg/Server_List_Ping#Response
> The favicon should be a PNG image that is Base64 encoded (without
> newlines: \n, new lines no longer work since 1.13) and prepended
> with data:image/png;base64,.
If this was the case, base64 decode would fail with a DecodeError,
similar to Invalid byte (76, 10). We now strip the whitespace, so the
base64 favicon can be decoded properly.
* Add first action
* Install libxcb-composite0-dev, fix job name
* Use apt-get instead of apt, more descriptive names for os-specific steps
* Also match .exe, thanks windows
* use upload-artifact v2
* Specifically pick out the binary for upload
* Fix step name
* Name binary after target os
Add a new CI system for Linux/macOS/Windows, Azure Pipelines
Configuration based on https://github.com/crate-ci/azure-pipelines
Since crate-ci defaults to failing the build on clippy errors, forked to:
https://github.com/iceiix/azure-pipelines/tree/clippy
with configurable clippy parameters, to allow disabling the hard failures
(until the underlying causes for the warnings can be fixed).
* Allow erroring clippy float_cmp and unsafe ptrs
* Relax allowed clippy warnings
* Install xcb libraries for -lxcb-shape, -lxcb-xfixes
* Update shifted packet ids
* Add new smithing recipe type
* Also support 1.16 (735), same packets as 1.16.1 (736)
New packets:
* GenerateStructure
New packet variants:
* UseEntity_Sneakflag, split from UseEntity_Hand
* ClientAbilities_u8, split from ClientAbilities_f32
* UpdateJigsawBlock_Joint, split from UpdateJigsawBlock_Type
* ServerMessage_Sender, split from ServerMessage_Position
* ChunkData_Biomes3D_bool, split from ChunkData_Biomes3D
* JoinGame_WorldNames, split from JoinGame_HashedSeed_Respawn
* Respawn_WorldName, split from Respawn_Gamemode
* EntityEquipment_VarInt renamed
* UpdateLight_WithTrust, split from UpdateLight_NoTrust
* LoginSuccess_UUID, split from LoginSuccess_String