1
0
Fork 0
mirror of https://github.com/italicsjenga/valence.git synced 2025-02-13 14:06:33 +11:00
Commit graph

170 commits

Author SHA1 Message Date
Carson McManus
59ca1ab573
Set up Inventory module ()
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:  

# 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
f58e6662dd
Add performance tests ()
Adds the performance_tests/ directory.

In the future we could use our own fake client software instead of
rust-mc-bot. This would make it easier to run the tests.
2022-10-14 21:18:03 -07:00
Ryan
a53738355f Fix bug in ident and use AsRef instead of Borrow 2022-10-13 22:28:12 -07:00
Ryan Johnson
056b4ebd32
Correctly encode biomes () 2022-10-13 18:19:35 -07:00
Sekky61
a29542b467
Dying and respawning ()
* `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
7d0c254874
Rewrite ident module (again) ()
Ident is now a wrapper around any string type `S`.
2022-10-12 03:53:59 -07:00
Ryan
afe390836c Remove dbg! calls and make some tweaks to Ident 2022-10-11 14:05:00 -07:00
Zh_Jk
e30ed62240
Fix typo in c2s.rs () 2022-10-11 11:12:06 -07:00
Carson McManus
a02b657f3c
clamp ItemStack item count to range 1-127 () 2022-10-11 11:10:04 -07:00
Ryan Johnson
23fdc41610
Clean up ident module and add lifetime ()
This lifetime will be useful for zero-copy decoding later.
2022-10-11 01:10:49 -07:00
Tert0
c758f70c33
Implement Weather ()
* implemented raining, rain level and thunder level

* fix linter and cargo fmt

* removed field from the client, removed weather getters, added docs, ensuring valid rain/thunder level values and sending weather changing directly

* Remove results from `set_rain_level` and `set_thunder_level`

* Remove unused import

Co-authored-by: Ryan <ryanj00a@gmail.com>
2022-10-09 15:18:15 -07:00
Carson McManus
0652fa13a4
change Slot enum into alias of Option<ItemStack> () 2022-10-09 12:38:00 -07:00
Daniel Huth
e13d0ffe7a
Skip spawn of non visible player characters ()
* Skip spawn of non visible player characters
* Don't spawn player if player list is `None`

Co-authored-by: Ryan <ryanj00a@gmail.com>
2022-10-08 15:12:30 -07:00
Ryan Johnson
153cde1a04
Chunk Rewrite With Paletted Containers ()
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
1fcc5bd527 Set player head yaw when spawning 2022-10-05 15:02:40 -07:00
EmperialDev
1f996f7549
Add Items ()
Adding all the items, just like the blocks are. This will adress 1. and 2. bullet from issue 
This will also make it easier to convert between block <-> item.
2022-10-05 09:28:08 -07:00
Ryan
e985bae469 Use StatusCode in auth server response check 2022-10-04 23:35:34 -07:00
Terminator
b83b9f76ed
Expose enchantments to Rust ()
* Expose extracted enchantments to Rust.

* Give enchantments a `level: i16` field.

* Update enchantment derive impls

* Restructure how enchants are exposed to Rust through C-like enums

* Update build/enchant.rs

Co-authored-by: Ryan Johnson <ryanj00a@gmail.com>

* Update build/enchant.rs

Co-authored-by: Ryan Johnson <ryanj00a@gmail.com>

* Move enchantment sources to their own struct.

* make id() function return it's discriminant instead of matching

Co-authored-by: Ryan Johnson <ryanj00a@gmail.com>
2022-10-03 13:19:42 -07:00
Terminator
ef64296159
Implement prevent-proxy-connections
This adds the `prevent-proxy-connections` server property and implements it into valence.

Note that if the server is in offline mode, this changes nothing.

By default, proxy connections are allowed.

Fixes 
2022-10-01 10:42:43 -07:00
Ryan Johnson
a623c9b1f0 fix formatting 2022-09-26 22:32:04 -07:00
Ryan Johnson
ca89140ebe rustdoc checks to github actions 2022-09-26 22:30:42 -07:00
Ryan Johnson
25e99a4133 Fix SetTitleAnimationTimes doc link 2022-09-26 21:08:37 -07:00
Ryan Johnson
82152c5e5d More docs on protocol module 2022-09-26 21:08:17 -07:00
Carson McManus
47538ea05c
Refactor Slot ()
* 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
Ryan
1dc5d84ba9 Add biomes example (which is currently broken due to bugs in chunk module) 2022-09-23 19:10:11 -07:00
Ryan
28b26b2aae Reorganize registry codec stuff and fix some bugs 2022-09-23 04:51:26 -07:00
Ryan Johnson
36b63e777e
Replace serde_nbt with valence_nbt ()
valence_nbt has a much nicer API and avoids the complications brought by integrating with serde. valence_nbt also fixes some bugs and is 3x faster according to benchmarks.
2022-09-23 04:03:21 -07:00
dani162
eed39364df
Set time of day ()
* Set time of day 

* fix typo

* Update src/client.rs

Co-authored-by: Ryan Johnson <ryanj00a@gmail.com>

* format file

Co-authored-by: Ryan Johnson <ryanj00a@gmail.com>
2022-09-21 15:12:31 -07:00
dani162
77ad1dfdd1
Listen on any network interfaces () 2022-09-21 15:11:45 -07:00
Ryan
b13fe32f76 Only set center chunk when crossing chunk borders, not sections 2022-09-19 21:03:39 -07:00
Tim Satke
d9b7008827
Add methods to Config to use a custom session server ()
* Add methods to Config to use a custom session server

Added new methods to the Config trait, that enables
implementors to use a custom session server host
or even a fully custom URL.

* Fix error in documentation

* Make format_session_server_url return a String
2022-09-19 20:23:39 -07:00
Ryan
d25f3674fb Acknowledge only the latest dug block sequence 2022-09-19 19:19:20 -07:00
Carson McManus
4574e18d49
inventory client events ()
* 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
2f2bc91535 Fix error in docs 2022-09-18 18:38:12 -07:00
Ryan
d459df8b2c Fix formatting 2022-09-17 23:37:11 -07:00
Ryan
cab1337716 Add Giant to entity_raycast example 2022-09-17 23:30:54 -07:00
Ryan
5bdac7fbb0 Remove unnecessary prefix from Poses 2022-09-17 23:25:07 -07:00
Ryan Johnson
9ec1df1978
Entity Hitbox Improvements ()
Solves . 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 ()
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
Ryan
02b4b49c10 Remove packets.json notice 2022-09-16 22:48:22 -07:00
EmperialDev
419d317736
Migrating the packets to wiki.vg ()
Addresses . Migrating all the packet names to wiki.vg's instead of fabric's.
2022-09-16 21:29:48 -07:00
Ryan Johnson
0a75f103aa
Packet filtering ()
* Add `PacketName`

* Fix inefficiency in codec.rs

* Add regex argument to packet_inspector

* Reorder imports

* Make the regex arg optional

* Update README
2022-09-16 05:31:37 -07:00
Ryan Johnson
7cd3b6cd2d
Add inventory packets ()
Adds the inventory packets so we can use them with `packet_inspector`.
2022-09-14 14:18:04 -07:00
Carson McManus
f165b55c7b
add building example ()
This adds a new example to demonstrate how to implement block breaking/placing.
2022-09-13 18:30:45 -07:00
Ryan
7878793629 Explain event validation 2022-09-12 21:53:07 -07:00
Ryan
51cb3bd277 Fix formatting 2022-09-12 20:32:11 -07:00
Ryan
dc64f06cac Clarify chunk space/world space 2022-09-12 20:20:58 -07:00
Nolan Rosen
adc927d319
Cleaner fix to () 2022-09-12 17:14:37 -07:00
Ryan
65dc561868 Document and rename default_client_event to handle_event_default. 2022-09-11 21:59:05 -07:00