Carson McManus
9faac7a0fb
add open_inventory
to clients ( #119 )
2022-10-16 14:12:36 -07:00
Carson McManus
59ca1ab573
Set up Inventory module ( #75 )
...
This is a very rough version of the inventory module and associated features. This will be a good base to start building something more robust.
- adds a player inventory to all clients
- makes clients keep track of what inventory they have open
- adds very naive state sync for inventories
related: #53
# Test plans
### Building
1. run `building` example
2. pick any block from creative
3. place it
4. pick a different block from creative
5. place 2
6. break the last one
7. see that both remaining blocks don't become dirt
### Chest inventories
1. run `chest` example
2. sneak to give yourself a stone block
3. open the chest (it's invisible on top of the stone block)
4. place stone in chest
5. see the stone moving around in the chest
## Known Issues
To be fixed in later PRs
- It's very easy to duplicate items if you take the stone out of the chest on the same tick as the server trying to move the item.
- The chest is invisible when you spawn in. It appears if you break it.
- `get_slot` and `set_slot` can panic.
2022-10-15 19:47:02 -07:00
Ryan Johnson
056b4ebd32
Correctly encode biomes ( #112 )
2022-10-13 18:19:35 -07:00
Sekky61
a29542b467
Dying and respawning ( #51 )
...
* `RespawnRequest` client event
* `CombatDeath` packet
* `kill` client method
* `death.rs` example
* clippy lint fix
* Clean up examples
* Fix formatting
* `win_game`, `set_respawn_screen` client methods
* respawn screen no longer deferred
This means that death example does not have respawn screen now.
Co-authored-by: Ryan <ryanj00a@gmail.com>
2022-10-12 11:11:33 -07:00
Ryan Johnson
153cde1a04
Chunk Rewrite With Paletted Containers ( #91 )
...
The current approach to managing chunk data is misconceived. This new approach uses genuine paletted containers and does not suffer from complexities caused by caching. As a result, memory usage (according to htop) in the terrain example with render distance = 32 has gone from 785 megs to 137 megs. That's 17.4% of the memory it used to use. Terrain generation speed was not affected.
2022-10-07 15:52:55 -07:00
Ryan
5a686a0e8b
Derive terrain seed from current day
...
It's easier to test things when the terrain isn't constantly changing.
2022-10-07 00:17:14 -07:00
Carson McManus
47538ea05c
Refactor Slot
( #87 )
...
* create ItemStack type
* move slot back into protocol
* change DropItemStack to use ItemStack, because it's imposible to drop nothing
2022-09-26 20:44:06 -07:00
emortal
2044add969
Create parkour.rs example ( #28 )
2022-09-24 19:40:10 -07:00
Ryan
1dc5d84ba9
Add biomes example (which is currently broken due to bugs in chunk module)
2022-09-23 19:10:11 -07:00
Carson McManus
4574e18d49
inventory client events ( #66 )
...
* finish packet definition for ClickContainer
* add CloseScreen client event
* add DropItem client event
* add SetSlotCreative client event
* implement ClientEvent::CloseScreen
* ClientEvent::DropItem
* implement ClientEvent::SetSlotCreative
* cargo fmt
* add inventory_piano example to demo inventory slot click events
* lints
* implement ClickContainer event
* inventory_piano: deduplicate note playing logic
* add DropItemStack client event
* implement ClientEvent::DropItemStack
* adjust logging
* tweak inventory_piano example, send text to chat instead of stdout
* fix lint
* move Slot outside of protocol module
* avoid cloning slot in ClickContainer packet handler
* fix inventory_piano example
2022-09-19 11:29:41 -07:00
Ryan
cab1337716
Add Giant to entity_raycast example
2022-09-17 23:30:54 -07:00
Ryan Johnson
9ec1df1978
Entity Hitbox Improvements ( #70 )
...
Solves #45 . With help from @guac420
2022-09-17 23:14:48 -07:00
Ryan
dcd4a2b5ed
Update resource pack link and add SHA-1 hash
2022-09-17 19:40:26 -07:00
James P
e6f01e5e4d
Custom resource packs ( #68 )
...
Implements custom resource pack support.
Adds a `Client` method to set resource pack, and a `ClientEvent` for listening to resource pack status updates from clients.
2022-09-17 19:32:40 -07:00
Carson McManus
f165b55c7b
add building example ( #49 )
...
This adds a new example to demonstrate how to implement block breaking/placing.
2022-09-13 18:30:45 -07:00
Ryan
65dc561868
Document and rename default_client_event
to handle_event_default
.
2022-09-11 21:59:05 -07:00
Ryan
bc470f3eb3
Consistent logo file names
2022-09-11 00:20:17 -07:00
Ryan Johnson
ca4f47c768
Implement the player sample ( #47 )
...
Verify that it works by hovering your mouse over the player count in the
cow_sphere example.
2022-09-10 16:02:12 -07:00
Ryan
5c9a6c973c
Add --all-targets to actions
2022-09-09 22:35:24 -07:00
Ryan Johnson
20546e2fb8
Split Chunk
into loaded and unloaded types ( #37 )
...
These changes will pave the way for nonblocking terrain generation in `terrain.rs`.
2022-09-08 19:33:24 -07:00
Ryan
7d55dfb964
Simplify position conversion
2022-09-05 22:12:28 -07:00
SirJosh3917
08ee7acacf
Fix order of chunk creation in conway's example ( #27 )
...
This would typically go unnoticed, but upon expanding the and making meaningful use of both directions, this being an issue arises.
2022-09-05 20:16:21 -07:00
Tristan F
10a8de3bbd
Add action bar support ( #15 )
...
* Action bar + conway
* Docs for action bar
* Apply suggestions
* fmt
2022-09-05 17:23:32 -07:00
Mrln
42dfcef57d
Add ClientEvent::InteractWithBlock ( #26 )
...
* Add ClientEvent::InteractWithBlock
* Add an example of ClientEvent::InteractWithBlock to the conway example
2022-09-05 17:01:39 -07:00
Tristan F
df3e5b12bb
Add custom sound effect packet and sound example to conway ( #12 )
...
* Add custom sound effect packet, sound example
* Small logic cleanup
* More sound packets
* fmt
* Apply suggestions
2022-09-05 15:37:59 -07:00
Ryan
30e05bb373
cargo fmt
2022-09-04 22:21:24 -07:00
Tristan F
d7e229e0a9
Make default client event
2022-09-04 15:42:08 -04:00
Ryan
f3c96403e0
Slow down conway example
2022-09-03 01:40:09 -07:00
Ryan
6e0a7e0a88
Allow pausing and clearing the conway example
2022-08-31 04:51:13 -07:00
Ryan
2a266fb091
Change rustfmt settings
2022-08-28 21:31:07 -07:00
Ryan
793a795732
Check protocol version during login
2022-08-14 15:18:22 -07:00
Ryan
55cb595740
Improve chunks API
2022-08-10 20:09:10 -07:00
Ryan
003c2e3649
Enable authentication in examples
2022-08-10 10:32:05 -07:00
Ryan
b2310db7b7
Fix chunks loading multiple times
...
The default chunk view distance has also been lowered to 2 since that is the most conservative guess.
2022-08-10 10:27:25 -07:00
Ryan
d4d169d130
Use chunk state instead of HashSet
2022-08-09 17:24:21 -07:00
Ryan
760f4bddcf
Fix extra knockback sprint bug
2022-08-09 15:42:05 -07:00
Ryan
3649a8ca99
Make superflat option per client rather than per world
2022-08-09 15:09:51 -07:00
Ryan
a5a560220c
New player list implementation
2022-08-09 14:44:04 -07:00
Ryan
1838c290a0
Extract slotmap logic into separate modules
2022-08-08 18:42:39 -07:00
Ryan
49d63a39c0
Clean up client and fix names
2022-08-05 12:36:34 -07:00
Ryan
6b5e795f81
Rename entity data
2022-08-02 19:02:05 -07:00
Ryan
e21fd70160
Restructure packet module
2022-07-29 05:34:29 -07:00
Ryan
35c697ff93
Rename *Data to *State
2022-07-27 19:21:11 -07:00
Ryan
2e22946ffc
Rewrite the entity generator
2022-07-27 07:10:35 -07:00
Ryan
b604dafe73
Add combat example
2022-07-17 21:29:44 -07:00
Ryan
865ab76699
Add custom data
2022-07-15 20:40:39 -07:00
Ryan
4b83801066
Clean up docs and fix clippy issues
2022-07-14 23:18:20 -07:00
Ryan
4a12def900
Redesign the spatial index API and add raycast example
2022-07-14 03:40:26 -07:00
Ryan
9448e17607
Add spawn platform
2022-07-13 21:52:33 -07:00
Ryan
a36b5163f7
Implement attack and movement speed
2022-07-12 20:47:53 -07:00