Commit Graph

827 Commits

Author SHA1 Message Date
Snowiiii
df1d5fb580 Extractor: Export Recipes 2024-11-08 16:48:33 +01:00
Alexander Medvedev
2f6f11673b MPSC channel buffer fix (#246)
* Fix: Check is chunks Vec is not empty
2024-11-07 22:44:17 +01:00
user622628252416
16dabf1826 Add /give Command (#234)
* add prototype for /give command

* fix /give namespace

* fix accidentally replaced text

* remove dbg! statements

* replace block_registry with item_registry

* sync added items with client

* warn!(..) => log::warn!(..)

---------

Co-authored-by: user622628252416 <nnew8715@gmail.com>
2024-11-07 20:34:56 +01:00
Victor
41e71a857d Add List command (#238)
* List command

* Stop message on /stop
2024-11-07 16:32:27 +01:00
Snowiiii
c2dd029fbc Minor changes to PR template 2024-11-07 07:59:55 +01:00
Snowiiii
c470f94bc3 Fix: https://github.com/Snowiiii/Pumpkin/issues/236 2024-11-06 20:50:52 +01:00
Gyula Kiri
a1926ffea6 Fix: Use correct packet for set_help_item (#235)
* According to the wiki we need to use 0x2F for set held item, this fixes the bug where if you have something in your 1st slot you would be able to place it with any other slot selected
2024-11-06 20:24:40 +01:00
Snowiiii
0fb1ac5f5d Fix: build 2024-11-06 07:07:17 +01:00
Alvsch
d3f299d2f6 Add damage and re-spawning (#224)
* Added new packets

Added packets to pumpkin-protocol for damage and re-spawning.

* Made damage_type registry value accessible

* Added damage and fall damage

* fixed phasing bug

* fix issues caused by merge

* spawn player on ground

make the player spawn on the highest block instead of in the air.

* dont default player to flying

* mode last_pos to living_entity

* fix using entity instead of living_entity

* fixed fall damage not working properly when switching gamemodes
2024-11-05 23:38:26 +01:00
Snowiiii
17f1984699 Remove some ToPrimitive 2024-11-05 23:32:56 +01:00
we sell insurance
93c6da993f Implement Query protocol (#218)
* Add query options to config
Added packet data types
Correctly parse a handshake packet
Add tokio to pumpkin protocol for `AsyncReadExt` convenience functions

* Add repr(u8) so that PacketType is a byte

* Respond to handshake correctly

* Allow for proper decoding of status packets and properly handle errors in decoding

* Implement challange tokens and verify with token and address

* Encode Basic status packet
Switch to CString since its better to and null errors higher up the code

* Encode Full status packet

* Add forgotten fields to full status packet

* Correctly respond to query clients when requesting full status

* Return actual address and port of server
Respect config options
Remove uncessary debug derives

* Remove packet type as it is redundant/unnecssary

* Implement basic status request
Refactor code for better error handling

* Update README

* Show players correctly in full status packet

* Store all packets in structs instead of enums
Break up en/decoding for each packet
Reduce client tracking
Get rid of QueryClients struct
Stop storing of magic value and check during decoding
Added tests for all decoding and encoding
Fix all sugestions from @StripedMonkey
2024-11-05 20:07:31 +01:00
Snowiiii
1f8385e890 Add Serverbound Player Input 2024-11-04 22:02:14 +01:00
Snowiiii
f30da32848 Add Serverbound Client Tick End 2024-11-04 21:53:40 +01:00
Snowiiii
3c7106af0b Print raw Packet ID when not found
We now will use Raw Packet IDs instead of hex
2024-11-04 21:48:28 +01:00
user622628252416
87aa5ec493 Commands: Fix Bug, Refactor Arguments, Add /tp (#227)
* fix command dispatch, add/refactor arguments & add tp command

* implement teleport facing location/facing entity

* implement teleport facing location/facing entity

* implement arg_player/arg_entity and refactor commands accordingly

* implement ~ coordinate notation

* refactor arg_position_3d

* major command refactor

* add documentation

* add default names to more argument types

* add argument names to arg_bounded_nums

* change command argument api

---------

Co-authored-by: user622628252416 <nnew8715@gmail.com>
2024-11-03 23:15:49 +01:00
Snowiiii
8db277f63e Minior Changes 2024-11-03 22:36:00 +01:00
Snowiiii
1842e8e6b1 Parse Serverbound Packet IDs from JSON as well
Before only Clientbound Packet IDs where parsed from JSON, Now Serverbound Packet IDs are parsed from JSON as well. This makes porting to new minecraft version much easier
2024-11-03 12:25:10 +01:00
Snowiiii
8f90b29cfe Extractor: Parse and use screens.json 2024-11-03 11:25:15 +01:00
Snowiiii
9e7adec16b Parse Registries from JSON 2024-11-02 16:34:35 +01:00
Snowiiii
b090c34228 Extractor: Make Recipes work 2024-11-01 18:17:19 +01:00
Snowiiii
1b510eaa21 Fix: https://github.com/Snowiiii/Pumpkin/issues/222
Check if item is a block, Because Not every item can be placed
2024-11-01 16:18:01 +01:00
Snowiiii
460e9d3cae Add more informations about blocks
Also fixed light for transparent blocks
2024-11-01 11:01:25 +01:00
Snowiiii
21dd9c194c Split PacketError into 2 Structs
Much nicer now
2024-11-01 10:26:07 +01:00
Snowiiii
9b1e518556 Remove docs from master branch
Its now in a other branch
2024-10-31 18:56:06 +01:00
Snowiiii
acf2fab100 Fix: Block still placed when empty slot 2024-10-31 18:35:03 +01:00
Snowiiii
3fb191fa37 Fix: deadlock when removing player 2024-10-31 17:47:01 +01:00
Alvsch
3f2bbcc7f9 small CChunkData write improvement (#216)
* small CChunkData write improvement

* Reuse palette instead of palette_ids
2024-10-31 17:39:44 +01:00
Polygons1
99c9866840 Fix spelling error (#220) 2024-10-31 14:17:13 +01:00
Snowiiii
14c8c7e362 Add more docs 2024-10-29 23:21:04 +01:00
Snowiiii
9f70b95b9b Split commands into their own Folder
Now its much nicer separate from the command base
2024-10-29 22:47:52 +01:00
Snowiiii
74c4662121 Fix: https://github.com/Snowiiii/Pumpkin/issues/195 2024-10-29 16:35:09 +01:00
suprohub
89640fe0c0 Command /say (#211)
* add say command
2024-10-29 11:07:53 +01:00
suprohub
abbb76ab19 Chunk optimization: remove subarray (#209)
* Removed array helper

* Removed array helper 2

* Add functions in ChunkBlocks

* cargo fmt

* clippy fix
2024-10-29 08:14:57 +01:00
Snowiiii
e0dd8d6b61 Move Chunks things from Client to Player
Also made Chunk handling more robust
2024-10-28 22:48:17 +01:00
suprohub
ba6f50aae0 Super commit (#208) 2024-10-28 21:04:56 +01:00
Snowiiii
79d2f91deb Chunk: Use Air if block is not found
So currently we trough an error and don't load the entire chunk if a block is not found in the registry, Which is often the case when loading worlds from older or newer version than Currently supported. So now we will just not load the not founded blocks and load blocks which we found
2024-10-27 22:45:51 +01:00
DirefulBelt6803
d9fcbf623d Added detailed documentation on how to contribute (#205) 2024-10-27 21:48:55 +01:00
Snowiiii
245053d50c Port Chunk Status to 1.21.3
This sometimes causes problems with some worlds
2024-10-27 19:07:27 +01:00
lokka30
1c048a17cc Implement cross platform signal handling with tokio (#183)
* ctrlc: also handle `sigterm` and `sighup` via `termination` feature

This commit enables the `termination` feature in `ctrlc` so that
`sigterm` and `sighup` are also handled on UNIX systems. This in turn
improves Docker compatibility since containers now listen to the
`SIGTERM` signal it sends to containers when trying to stop the
container via `Ctrl-C` whilst attached.

* Replace `ctrlc` signal handling with `tokio`

This removes the `ctrlc` crate from the project, replacing (and upgrading) its functionality to also handle `sigterm` and `sighup`.

Sigterm handling is working on UNIX with this commit, I haven't tested Windows compatibility with `Ctrl-C` nor have I tested `sighup` or `sigint`.

Of course, compiles and runs on UNIX. Haven't tested Windows.

* fix: remove unused import; collapse if statement

* main: fix per-os signal handling

Will only compile Windows-specific/Unix-specific code when on their respective environments.

Handles signals in a separate tokio thread so it doesn't suspend the main thread.

Tested to work on UNIX (macOS) but not tested on Windows.

* main: cargo fmt

* main: fix setup_sighandler fn signature on windows

* main: attempt 2 at fixing windows sighandler

* main: enable ctrlc for all non-unix systems

Previously, ctrlc usage in tokio was only enabled on Windows systems
(since UNIX systems have their own signal handling in Pumpkin). Instead
of limiting ctrlc to just Windows, we can make it run on any non-UNIX
system since it should be platform independent anyhow.
2024-10-27 16:29:59 +01:00
lokka30
15d9920826 Implement max player limit (#194)
* Implement max player limit

* Removed unnecessary `return`.

* Moved server full check to start of `handle_login_start`

Also removed unnecessary debug log.

* Use  instead of  for max players; add disable logic

* Fix semicolon missing
2024-10-27 16:18:28 +01:00
Snowiiii
58ace310fc Add PR template 2024-10-27 16:03:28 +01:00
lokka30
1a1a7e351c Add player join and quit messages. (#192)
* pumpkin: Add player join and quit messages.

This implementation will send a 'joined the game' and 'left the game'
message akin to the vanilla server when a player joins or disconnects
respectively.

One caveat with this implementation is that it only broadcasts the
join/quit messages to players in the same world, unlike the vanilla
server, which broadcasts it to all online players (regardless of their
world).

I discussed this with Alex who suggested to keep it as per-world
(seemingly for now?) - [Discord conversation](https://discord.com/channels/1268592337445978193/1268611318617866261/1299668206734147597).

Regardless, this implementation works perfectly on my end. (yes, it has been tested)

* pumpkin: added logs for join/quit

* Move disconnect message code to world from player

Compiles and runs, sends join and quit messages in console with no
errors.

* Move join message from server to world
2024-10-27 14:50:52 +01:00
Snowiiii
a6f3b3f748 Clientbound Packets: use ids from JSON 2024-10-27 14:18:18 +01:00
Alvsch
5507b2069f Added Worldborder (#202)
* Added packets

* Created worldborder struct

* Added worldborder command

* Improved worldborder command

Added messages to worldborder command
Removed all .unwrap()
Created consumer for command

* Fixed small issue

/worldborder add wasn't working properly
2024-10-27 13:11:08 +01:00
DirefulBelt6803
2add2057da Update world.md (#200) 2024-10-27 12:32:17 +01:00
Snowiiii
b23b7421cf Revert "CChunkData optimizations (#193)"
This reverts commit a1b97730bd.

Due to Errors
```
thread 'tokio-runtime-worker' panicked at pumpkin-protocol/src/client/play/c_chunk_data.rs:84:25:
index out of bounds: the len is 4096 but the index is 25374
```
2024-10-27 12:29:53 +01:00
Alexander Medvedev
b17ade7b06 Add own Extractor (#201)
* Add custom extractor

* Add namespaces to blocks

* Fix: Errors
2024-10-27 12:21:55 +01:00
Alexander Medvedev
5e6374ecc2 Update and rename feature_request.md to feature_request.yml 2024-10-27 11:23:14 +01:00
Alexander Medvedev
7eec40fc43 Update bug_report.yml 2024-10-27 11:15:42 +01:00
Alexander Medvedev
9358d70518 Update and rename bug_report.md to bug_report.yml 2024-10-27 11:06:27 +01:00