Commit Graph

1014 Commits

Author SHA1 Message Date
Camotoy bc0cfde8f9
Set the minimum Java version to 16; drop Bedrock 1.17.0 (#2477) 2021-09-10 14:10:56 -04:00
Camotoy 93f5298ee3
Introduce specialized maps for block state operations
By introducing fixed maps, we are able to reduce the overhead of needing to store arbitrary numbers; fixed maps start at one number and must be sequential. This commit also reduces some overhead of lecterns in block updating as we are able to utilize our own maps to reduce object boxing and removing the function of Map#compute of trying to re-insert a value.
2021-09-09 21:33:48 -04:00
Camotoy f22d286ea1
Add world border translation (#1839)
As Bedrock does not have world border support, this PR translates what the Java server sends us for a world border into particles and fog, while also preventing the Bedrock client from moving outside of the world border.

Co-authored-by: Luke <32024335+lukeeey@users.noreply.github.com>
Co-authored-by: ofunny <play@ofunny.world>
2021-09-09 21:27:38 -04:00
David Choo 8461cf76b7
Smooth Pistons (#1542)
With proper piston collision for players as well.
2021-09-09 21:20:25 -04:00
Camotoy 1199d50338
Allow single quotes to appear in translations in chat 2021-09-08 19:24:30 -04:00
Camotoy d602d820dd
Re-use patterns in MinecraftTranslationRegistry 2021-09-07 11:56:23 -04:00
Redned c1e66f306c Play sound when totem is used 2021-09-04 13:52:02 -05:00
Redned 64b0788012 Use an array for java blocks and replace rarely used map in BlockMappings 2021-09-04 12:36:09 -05:00
Camotoy 206368e448
JavaExplosionTranslator: clean up vector usage 2021-09-02 19:42:50 -04:00
Camotoy 7fe7dc1d70
Remove debug code 2021-08-31 19:52:10 -04:00
Camotoy b89cc1aef0
Refactor lodestones to be more memory efficient
- Most importantly, redesign lodestone caches to be per-player.
- Redesign lodestone caches with the expectation that a client will never re-request the same value.
- Re-use lodestone IDs in a WeakHashMap to be re-used but successfully garbage-collected.
2021-08-31 19:49:55 -04:00
Camotoy b9541505af
Bump version to try and fix deploying; other nitpicks 2021-08-30 13:55:01 -04:00
Camotoy e95d9d3b75
Use closest matching color for unmapped RGB fireworks
Also remove Bukkit-specific firework colors as those were pure workarounds.

Fixes #2505
2021-08-29 10:33:33 -04:00
Camotoy 3c18eb44aa
Use instance of ThreadLocalRandom for particle offsets
Random instances are synchronized meaning this was a potential deadlock situation.
2021-08-26 21:43:53 -04:00
Camotoy 77119316f5
Check for closed immediately before processing a packet 2021-08-24 09:31:19 -04:00
Camotoy a1d167d5f1
Ensure skull operations are done on the player thread 2021-08-21 19:38:13 -04:00
Camotoy ab540b1951
Ensure more entity tasks are run on the player session 2021-08-21 09:54:52 -04:00
Camotoy 3d04a957d0 Ensure that exceptions in player event loop are handled
Any stray exception means that the entire event loop comes crashing down.
2021-08-17 20:57:46 -04:00
Camotoy 7ae91a40ec
Ensure every packet is ran on the same thread per player (#2473)
This removes a lot of concurrency checking that needs to be done, because there should be no way two packets can be handled at the same time.
2021-08-16 20:39:29 -04:00
Camotoy f4437e45a8
Attempt to make Geyser build 2021-08-16 14:00:12 -04:00
Camotoy ac17963baa
Player effect cache cleanup
Only cache effects and not their values unless we actually use the value.
2021-08-16 11:53:56 -04:00
Camotoy 5d90ba91f7
Move LoginSuccessPacket handling to its own translator 2021-08-14 12:52:35 -04:00
Camotoy 9f4c2ce5fc
Fix rare StackOverflowError in DeclareCommands
This behavior is exhibited with the NanoLimbo software version 1.2.2.
2021-08-13 23:56:44 -04:00
David Choo 3eb73a5634
Fix powder snow and fish buckets (#2437) 2021-08-01 22:20:15 -04:00
Camotoy 3d50155ee3
Handle the server sending invalid biome IDs in chunks
Should hopefully address #2400 - the Java client handles invalid biome IDs and simply complains in its logs.
2021-07-31 16:34:24 -04:00
David Choo 1d04a61a46
Collision Registry (#2430)
* Fix trapdoor collision

* Add EqualsAndHashCode to all Collision subclasses and shift code around

EqualsAndHashCode are required on subclasses otherwise blocks will be assigned an incorrect collision instance. (Doors and trapdoors are mixed and ladder sometimes gets a DoorCollision instance).
Added protected constructor to BlockCollision to make boundingBoxes final.
Removed EmptyCollision because I don't think it is useful.
Moved conversion from ArrayNode to BoundingBoxes[] from OtherCollision to CollisionRegistryLoader
Removed regex from SnowCollision and use default bounding boxes.

* Deduplicate BlockCollision instances

* Create one set of bounding boxes for all BlockCollisions

* Don't depend on the player's block position in DoorCollision

* Fix dirt path position corrections

Grass paths were renamed to dirt path in 1.17
Fix position correction for y=1, y=2, y=255, and y=256

* Increase pushAwayTolerance depending on distance from origin

This should fix position corrections for blocks less than 1 unit in length/width at high coordinates.
This includes ladders after x 4096 or z 4096
Not too sure about the math here though

* Use ThreadLocal for position

Hopefully resolves concurrency issues

* Remove comment and add layer check to SnowCollision
2021-07-30 22:35:13 -04:00
Camotoy 8c95e26189
Fix experimental toggle'd biomes not accounting for chunk offset 2021-07-29 14:35:03 -04:00
Camotoy 7a99aa0ddf
Merge branch 'biomes' 2021-07-28 20:27:34 -04:00
Konicai b86648332a
Auth type refactor in internal config (#2410) 2021-07-28 19:44:09 -04:00
Camotoy 5529a1cc1c
Fix spectator gamemode movement
- Don't allow the player to toggle flight status in spectator mode
- Fix weird flight movement when player was previously on the ground
- The player is always flying in spectator mode, no exceptions
2021-07-28 13:21:18 -04:00
Camotoy 4241b5463f
Fix mesa replacement biome 2021-07-27 23:01:38 -04:00
Camotoy a5beebdffa
Add best-fit replacement biomes for custom biomes 2021-07-27 22:52:07 -04:00
Camotoy 8c96c3b11d
Biome reworkings
- Introduce biome mappings for having a constant reference between Java biome identifier and their Bedrock equivalents
- Don't assume biome IDs and instead listen to the server for biome IDs
- Ensure that only valid Bedrock biomes are sent. With the caves and cliffs experimental toggle, Bedrock will crash if an invalid biome ID is sent its way.
2021-07-27 20:29:27 -04:00
David Choo c6589136bf
Fix movement against spawners (#2409) 2021-07-24 10:35:23 -04:00
Camotoy da66a01a9a
Fix possible NullPointerException in handling CanBreak/CanDestroy items 2021-07-23 21:28:28 -04:00
Camotoy 11f048a065
Better logic for item updating on item entities
Specifically created to address InteractionVisualizer updating all metadata properties when updating the nametag - this commit prevents the item from jumping on updating. It also prevents the entity from being respawned if just the stack size updated.
2021-07-22 09:16:19 -04:00
RednedEpic 9817dc932a Merge branch 'feature/optimizations' into master 2021-07-21 21:44:49 -05:00
David Choo 8f98162c69
Fix Item drop animation (#2406) 2021-07-21 21:48:59 -04:00
Redned 95a1cbfa24 Some more micro optimizations 2021-07-18 15:43:04 -05:00
Redned b4921132e1 Replace BiMap with an Object2IntBiMap 2021-07-18 14:43:17 -05:00
Camotoy 0e72952e0b
Merge branch 'master' of https://github.com/GeyserMC/Geyser 2021-07-18 11:13:37 -04:00
David Choo 2766038db9
Update player bounding box in more scenarios (#2377)
Co-authored-by: Camotoy <20743703+Camotoy@users.noreply.github.com>
2021-07-18 10:58:08 -04:00
RednedEpic ff280ef192 Replace Reflections usage with an annotation processor
Reduces jar size by about 1.5-2mb
2021-07-17 13:36:04 -05:00
Camotoy 80b8d18c31
Replace more instances of String#split with BlockUtils#getCleanIdentifier 2021-07-17 09:43:25 -04:00
Camotoy db1563aa79
Better estimate for new biome data size 2021-07-15 20:51:13 -04:00
Camotoy 3b55826d70
Make the ByteBuf in ChunkDataTranslator allocate a more decent size 2021-07-15 18:33:49 -04:00
Camotoy 99a7f9a012
Explain that yes, we have to write 32 biome palettes always 2021-07-15 18:31:47 -04:00
Camotoy 89370ef648
Explain new changes in BedrockMovePlayerTranslator 2021-07-15 18:27:43 -04:00
Camotoy 11874aaa9b
Merge branch 'master' of https://github.com/GeyserMC/Geyser into extended-world-height 2021-07-14 22:00:23 -04:00
Camotoy d19ff657de
Ensure overworld constraints are used everywhere 2021-07-14 21:46:56 -04:00