Commit graph

31 commits

Author SHA1 Message Date
BruceChen
41a701b6b2 Fix RegistryData parsing and KnownDataPacks negotiation for 1.20.6
Two critical issues in the 1.20.6 configuration phase that could cause
connection instability and packet desync:

1. RegistryData: The handler used an early `break` when it encountered
   a registryId other than "minecraft:dimension_type" or
   "minecraft:chat_type". This skipped reading the remaining entries
   for that registry, leaving unconsumed data in the packet buffer.
   Subsequent packet reads would start at the wrong offset, causing
   cascading parse failures and eventual disconnection.

   Fix: Always read all entries (entryId + hasData + optional NBT)
   for every registry, regardless of whether we process it. For
   dimension_type entries, if the server sends inline NBT data (i.e.
   non-vanilla dimensions from mods/datapacks), parse and store
   the dimension directly via World.StoreOneDimension(). Only fall
   back to hardcoded defaults when no dimension data was received.

2. KnownDataPacks: The client echoed back ALL packs the server
   listed, including non-vanilla ones. This told the server "I have
   these packs cached" when the client actually did not, so the
   server would skip sending full registry data for those packs.
   The result: incomplete registries for modded/datapack content.

   Fix: Filter the response to only include packs with the
   "minecraft" namespace. Non-vanilla packs are omitted, forcing
   the server to send their full registry data inline.

Also adds supporting methods to World.cs:
- SetDimensionIdMap(): Store VarInt ID -> dimension name mapping
  from RegistryData entries (needed by JoinGame/Respawn)
- GetDimensionNameById(): Look up dimension name by numeric ID
- HasAnyDimension(): Check if any dimensions were loaded from
  server-provided data

Made-with: Cursor
2026-03-19 00:13:22 +08:00
breadbyte
494be0930b
Merge branch 'master' into 1.20.6 2025-12-02 00:06:16 +08:00
vinicius
d0c9695a79 Fixed bug in SetDimension method of World class, where it would crash if joining a paper server. Added error handling. 2024-12-05 02:13:21 +00:00
Anon
67e36a92d2 First working version, not fully tested 2024-06-30 11:26:41 +02:00
BruceChen
84cf749344 Implement command completion suggestions. 2022-12-06 15:50:17 +08:00
BruceChen
077e3a5e9f
Crowdin localization support (#2310)
* Switching to use resource files

* Update Crowdin configuration file

* Code cleanup
2022-10-28 11:13:20 +08:00
Milutinke
730990cee5 Switched to a faster implementation of FindBlock proposed by Daenges, tested on Farmer Bot.
Tweaked the amount of bone mealing in the Farmer Bot.
2022-10-18 22:39:48 +02:00
BruceChen
1d52d1eadd
Fix all warnings & Trim (#2226)
* Fix AutoFishing crash
* Fix all warnings
* Remove DotNetZip.
* Fix the usage of HttpClient.
2022-10-02 18:31:08 +08:00
BruceChen
4aa6c1c99f
Upgrade GetLookingBlock 2022-10-02 13:49:36 +08:00
BruceChen
4d4940a3b9 Trim 2022-09-07 00:08:31 +08:00
BruceChen
8ce5c40b28 Another fix for #2159 2022-09-07 00:02:09 +08:00
BruceChen
afdf2f9e2c Merge from master 2022-09-04 10:44:25 +08:00
BruceChen
6cb0c35ab8 Trim 2022-09-02 22:38:59 +08:00
BruceChen
0382e07d50 Bug fix: Chunk deleted by mistake 2022-09-02 21:02:25 +08:00
BruceChen
0a689e407e Trim 2022-08-31 19:50:11 +08:00
BruceChen
9089bb4cdb Change how world is stored & Bug fix 2022-08-31 18:00:00 +08:00
BruceChen
bc5298bf5f Terrain support for 1.19 2022-08-28 22:27:21 +08:00
BruceChen
5f520e2cf4 Improve ReadBlockStatesField 2022-08-25 10:40:55 +08:00
BruceChen
58eafdfd5c Optimize cold start speed and block loading speed 2022-08-25 01:34:07 +08:00
BruceChen
01ef9a89ca Bug fix: Cancel chunk load task when switching worlds 2022-08-24 18:16:16 +08:00
Milutinke
af6f655d5e Fixed the requested changes for Terrain Movement. Tested and working. 2022-08-18 20:58:49 +02:00
BruceChen
ff014d2912 Delete unnecessary comments 2022-07-25 03:50:31 +08:00
BruceChen
357820e1c2 Fix bugs in gravity handle 2022-07-25 03:19:24 +08:00
BruceChen
516effa81d terrain handling for 1.18(1.18.1) and 1.18.2 2022-07-24 21:41:56 +08:00
ORelio
aeca6a8f53 Add thead safety to terrain data (#1999)
Allow safely reading terrain data from other threads
2022-04-23 12:00:50 +02:00
ReinforceZwei
90505dbc4c
New method for getting looking location (#1503)
* New method for getting looking location

* improve
2021-03-13 22:23:58 +08:00
Рома Данилов
8fedd59f0a
Add FindBlock on GetWorld (#1152)
* Add FindBlock
* Add FindBlock Array
* Update World.cs
* Factorize FindBlock methods
2020-07-29 21:49:16 +02:00
ORelio
a6e660c974 Enable/Disable TerrainAndMovements while logged in
Feature requested in #705
2019-04-28 21:32:03 +02:00
ORelio
c04b17cabc Implement Terrain and Movements for MC 1.13
Special thanks to @TheSnoozer and @vkorn for their help!

 - Implement global block Palette mechanism
 - Add class generation tool from blocks.json
 - Regenerate Material.cs and redefine solid blocks
 - Migrate previous Material.cs into Palette112
 - Generate Palette113 from MC 1.13.2 blocks.json
 - Improve Block class to handle up to 65535 block states
 - Adjust terrain parsing, small fixes in packets
 - Remove unused snapshot-related protocol cases

Solves #599
2019-04-25 22:19:50 +02:00
ORelio
49702e30b8 Add block material database
Taken from Bukkit's Material class, with credits.
Allows to know types and properties of blocks.
+ Use database for "is solid" checks
+ Add "can harm players" method
+ Faster movements, falling seems natural now
+ Shorter error message when ping failed
2015-12-09 23:04:00 +01:00
ORelio
cb00c28b6e Add world handling (and fall to ground)
- World is now properly parsed and stored from chunk data
- Block changes are also handled and world updated accordingly
- Added ground checking, the player will move down to reach the ground
- Performance tweaking in Protocol18, using lists instead of arrays
- Fix player look not properly skipped causing invalid location after
teleport
2015-11-30 15:30:49 +01:00