Commit Graph

332 Commits

Author SHA1 Message Date
Camotoy 05d74ebd3e
Fix signs for Bedrock 1.18.30
Fixes #2944
2022-04-21 22:23:00 -04:00
Camotoy 575fe98c0f
Fix anvils for 1.18.30 Bedrock 2022-04-20 21:39:35 -04:00
Konicai 03b067e23e
Merge master into extensions (#2941)
* Don't always store cert/client data used for skin uploaded

This takes up a decent 30K of memory that we don't use after the skin is uploaded. The GameProfileTranslator cannot be run more than once per session.

* Make all moon phases visible

The fix to prevent integer overflows also prevented moon phases from being visible until now.

Fixes #2927

* SetTimeTranslator: cast from long on the entire modulus

This should fix some inaccuracies with time on older worlds.

* Bump version; drop 1.17.40; support 1.18.30

* Actually bump to 2.0.3-SNAPSHOT

* Fix message being sent still if a single escape character is sent

* Replace instances of configs using `generateduuid` for Metrics

* Fix some merge mistakes

Co-authored-by: Camotoy <20743703+Camotoy@users.noreply.github.com>
2022-04-20 21:37:50 -04:00
Camotoy e923325246
Fix stonecutters for Bedrock 1.18.30
Also add an option in debug mode to not log pings in the event they're spammy.
2022-04-20 21:22:02 -04:00
Camotoy af08488d1e
Fix message being sent still if a single escape character is sent 2022-04-18 21:30:44 -04:00
Camotoy cf8114543e Bump version; drop 1.17.40; support 1.18.30 2022-04-17 19:53:06 -04:00
Camotoy 0803c5d9af
SetTimeTranslator: cast from long on the entire modulus
This should fix some inaccuracies with time on older worlds.
2022-04-12 19:42:41 -04:00
Camotoy 98db9c6948
Make all moon phases visible
The fix to prevent integer overflows also prevented moon phases from being visible until now.

Fixes #2927
2022-04-12 19:04:09 -04:00
Camotoy cb8858fc42
Don't always store cert/client data used for skin uploaded
This takes up a decent 30K of memory that we don't use after the skin is uploaded. The GameProfileTranslator cannot be run more than once per session.
2022-04-11 15:44:15 -04:00
Camotoy 1ebc3fd8f6
Merge branch 'master' of https://github.com/GeyserMC/Geyser into feature/extensions 2022-04-07 19:22:46 -04:00
Camotoy 1d3eebc678
Add recent Paper check and new vanilla check for block placement
Fixes #2917
2022-04-04 21:03:43 -04:00
Camotoy d6cb5bd52d
ItemMappings: use array for ItemMapping class 2022-04-04 14:08:35 -04:00
Camotoy 2a05dd57ff
Don't store GameProfile class of players
This stores repetitive information, and also we don't currently use the signature, so it's wasted memory.
2022-03-30 22:30:49 -04:00
Camotoy f639be6362
Better handling of fake cooldown
Because of Bedrock limitations, if a player has text background opacity enabled, they'll see an empty section where the title is usually displayed as the fake cooldown is shown. This commit minimizes the time that is shown by clearing the text as soon as possible. Reference issue: https://github.com/GeyserMC/Geyser/issues/1710

This commit also removes starting the fake cooldown process if the client switches to an inventory slot with the same Java ID.
2022-03-25 20:22:39 -04:00
Camotoy 780218d39d
Consolidate NoteblockBlockEntityTranslator behavior
It was only used in one place that could better use existing code.
2022-03-22 23:03:37 -04:00
RednedEpic 9939a26a5b Add RemoteServer API 2022-03-19 21:55:29 -05:00
RednedEpic 02cda38259 Merge remote-tracking branch 'origin/master' into feature/extensions-gradle 2022-03-19 20:48:14 -05:00
Konicai 87d70be10d
Register `floodgate:transfer` plugin channel (#2896)
* Register floodgate:transfer channel

* Don't warn on unknown channel
2022-03-19 19:56:34 -05:00
Camotoy 732fd90d48
Missed instance of Outdated server 2022-03-18 23:31:25 -04:00
Camotoy 607e97f988
More descriptive disconnect messages for outdated Java servers 2022-03-18 10:51:22 -04:00
Camotoy 0829b5cd4e
Replicate Bedrock shield behavior more accurately
If the player swings, then they cannot be holding their shield at the same time.

Also fixes an animation edge case with other players.
2022-03-15 13:34:56 -04:00
Camotoy d0d01714aa Remove unlockedRecipes storage
This has been unused, and for the time being we aren't going the packet route that would use these.
2022-03-09 23:09:48 -05:00
Camotoy 9c0b9f1975 Show attribute suggestions in commands 2022-03-07 13:58:09 -05:00
Camotoy 9154a4571c Merge branch 'master' of https://github.com/GeyserMC/Geyser into feature/extensions 2022-03-06 20:35:04 -05:00
Camotoy 50bed6a2be Use a dummy legacy event hover serializer
This reduces computation processing needing, since Bedrock doesn't have any hover text ability. This also fixes a 1.8 bug where villager titles would not process correctly - by having a dummy serializer, a recent MCProtocolLib update would not stop the window packet from processing.
2022-03-05 22:15:25 -05:00
Camotoy c977e36368
Deprecate userAuths in favor of a saved token system 2022-03-03 18:52:26 -05:00
Camotoy b4b5cea42d
Implement offhand support when interacting with entities
By simulating the exact processing that Java Edition does on the client-side, we can achieve full packet parity with Java when interacting with an entity.
2022-02-25 11:02:18 -05:00
Camotoy 9b8e1372c1
Work around dropping items from other slots
Fixes #2846
2022-02-25 10:31:00 -05:00
Camotoy 7d1ec5c41a
Support offhand interactions with entities 2022-02-24 22:49:10 -05:00
Camotoy 811ae178c9
Store recipes in a more compact GeyserRecipe type
This prevents us from storing some unnecessary data.

Also removes some 1.11 recipe compatibility code that is essentially unusable.
2022-02-21 16:11:51 -05:00
Camotoy 0ca77233ed
oh no my extensive debugging setup 2022-02-10 20:15:46 -05:00
Camotoy 746cd94dd1
Fix villagers for 1.18.10
Includes working around pre-1.14 ONLY on pre-1.14 by checking the tags packet.

Fixes #2828
2022-02-10 20:14:52 -05:00
Camotoy 354e87b747
Merge branch 'master' of https://github.com/GeyserMC/Geyser into feature/extensions 2022-02-10 09:17:27 -05:00
Camotoy 559c5d655a
Allow smithing recipes to work again in 1.18.10 2022-02-09 15:08:58 -05:00
Camotoy 0eed6025a6
Remove protocol checks referencing 1.17.30
These are now unnecessary.
2022-02-08 23:16:11 -05:00
David Choo 36afd3f2ec
Fix villager prices with demand price adjustments (#2767)
* Fix villager prices with demand price adjustments

* Don't cap second input/output item count

* Handle negative item counts properly

* Don't get item mapping twice

* Add null check to getItemTag
2022-01-30 19:26:31 -05:00
Camotoy 2d28ba0cb5
Several inventory and parity improvements
These changes fix up things that were missed with Java Edition inventory changes in 1.17 and 1.17.1. Working with the inventory in modern versions should be much nicer.
2022-01-30 11:15:07 -05:00
Camotoy d0fa2d2b05
Don't send respawn code until Java is ready
Fixes #2668
2022-01-30 11:14:51 -05:00
Camotoy 14882534c0
Don't fully translate item data to compare net IDs
Just compare the item mappings of the two Java items. This should shave some NBT and display conversion processing time down.
2022-01-30 11:05:29 -05:00
Tim203 53de9f4a31
Deploy the Cumulus changes for Geyser so Floodgate can use them 2022-01-26 12:10:15 +01:00
Camotoy 1fba96c339
Address armor stand invisibility edge case
See https://github.com/GeyserMC/Geyser/issues/2780
2022-01-22 16:22:27 -05:00
Tim203 3011d89db6
Update Geyser to use the latest features of Cumulus 1.1 2022-01-22 12:20:52 +01:00
Camotoy e92633d657
Add an option to always quick-change armor
With thanks to f068217cb7/src/main/java/me/juancarloscp52/bedrockify/client/features/quickArmorSwap/ArmorReplacer.java for making me realize this was possible.

Currently disabled by default in the event that a server implementation also has this feature. May be enabled by default in the future.
2022-01-20 18:09:35 -05:00
Camotoy a6004af083
Minor cleanups 2022-01-19 19:30:54 -05:00
Camotoy c1e4040cb6
Don't let Bedrock players send format character
See https://github.com/PaperMC/Paper/issues/7362
2022-01-17 16:10:56 -05:00
RednedEpic 30303d5f16 Implement support for adding Geyser subcommands 2022-01-16 15:09:53 -06:00
Camotoy 8a93f6a116
Send the client render distance to the server
Previously we've had discussions on if the render distance math should be tweaked like we do server -> client, but for now this is better than nothing and can be tweaked further in the future.
2022-01-15 20:29:00 -05:00
Camotoy 516d8e573e
Config option to disable Bedrock scaffolding/godbridging 2022-01-15 16:28:52 -05:00
David Choo a39de7d7d2
Fix ArrayIndexOutOfBoundsException for worlds lower than -64 (#2759)
* Fix ArrayIndexOutOfBoundsException for worlds lower than -64

`chunkSize` is Java section count while `sectionCount` is the Bedrock section count

* Send biomes for air sections while also staying within limits

.-.

* Move protocol version check to variable
2022-01-14 14:57:59 -05:00
Camotoy 3b943f214c
Update comments 2022-01-13 20:03:38 -05:00
Camotoy 881352daaf
Recreate the death smoke particles to work around double death noises
Fixes #2363
2022-01-13 20:00:05 -05:00
Camotoy a29e7731e8
Inventory fixes and state ID emulation
- Introduce a state ID incrementation emulation. This prevents the server from spamming back with tons of set content packets, and can instead reply with set slot packets.
- Fix what we were sending as a carried item in the ServerboundContainerClickPacket.
2022-01-10 22:55:27 -05:00
Tim203 3251d9010c
We're in 2022 now 2022-01-01 20:03:05 +01:00
Camotoy d7eef7aaeb
Cache forms until the player has fully initialized 2021-12-29 14:20:34 -05:00
RednedEpic 7beedb46f8 Check for empty component in JavaSetTitleTextTranslator 2021-12-29 10:50:26 -06:00
RednedEpic 61636f44aa Simulate Java chunk unloading by sending empty chunks
Closes #2725
2021-12-28 23:25:33 -06:00
Camotoy 68c13c08fa
Fix some regressions in swim handling 2021-12-25 22:46:16 -05:00
David Choo 65aaa07493
Fix sneaking speed adjustment and bounding box (#2728)
* Fix sneaking speed adjustment and bounding box

Also remove redundant session variable in SessionPlayerEntity

* Add comment to valid field

* Hopefully fix crawling after swimming in water
2021-12-23 19:49:58 -05:00
Camotoy 6eb069cc13 Fix evoker fangs not being visible
Also implement sound when attacking
2021-12-20 19:59:12 -05:00
Camotoy 24f09e016d Entity IDs in Java Edition just need to be integers
We don't need to keep them as longs - this just reduces the amount of casting needing throughout the codebase.
2021-12-20 19:25:11 -05:00
Camotoy 15522aed52 Fix fishing rod behavior on Geyser players
Fixes #2716
2021-12-19 19:15:53 -05:00
David Choo 754bb42c19
Fix some mount offsets and strange behaviors with GSit (#2701)
* Prevent boats from floating when a Bedrock player rides in the back

* Update llama and shulker mount height offset

* Fix Trader llama mount offset

* Change passengers to an IntList

Also move rotation lock stuff to EntityUtils

* Allow EntityCache.getEntityByJavaId to return the session's player

Removes many checks from several translators.

* Fix mount offset on armorstands and area effect clouds

Also prevent area effect clouds from despawning when used as an invisible entity (used in GSit to offset players riding on other players)

* Update mount offsets on height changes

TODO test this

* Actually update vehicleId and optimize StriderEntity metadata update

* Don't hide marker armor stands and properly update mount offsets

* What?

* Remove y offset for Shulkers riding other entities

* Confirm teleports in the order received

This allows Bedrock players to move after standing up when using GSit

* Fix mount offset for riders on baby zoglins

* Cache only the latest teleport and confirm teleports immediately

* Fix crawling with GSit

* Inline var and undo respawn method

* Use Entity reference for vehicles

* Remove ridingVehicleEntity from GeyserSession

* Use Entity references for passengers and drop cachedPlayerEntityLinks

* Reuse variable and remove setVehicle(null)
2021-12-18 11:43:57 -05:00
Tim203 9c672c9919
Packet ids can't be negative 2021-12-16 21:58:40 +01:00
Tim203 a4399f0c1e
Implemented Floodgate's 'packet' plugin message 2021-12-16 00:19:51 +01:00
Camotoy 967ee4f58d
Fix command descriptions merging 2021-12-13 22:25:08 -05:00
Camotoy 25921e1d67
Hide out-of-range entity metadata IDs
The vanilla Java client gracefully ignores these.
2021-12-13 13:25:51 -05:00
Camotoy 892855415b
Fix offset team colors
Fixes #2674
2021-12-11 16:05:12 -05:00
Luke 8c7a3d1822
Show the nether fog when using the nether height workaround (#2663) 2021-12-08 13:23:05 -05:00
Camotoy b0baf1670d
Don't send inventories to the client before initialization
Fixes #2677
2021-12-07 14:51:58 -05:00
Kenox 1840172c8d
Fix custom merchant inventory not opening (#2672) 2021-12-06 10:43:36 -05:00
Camotoy e954d091b9
Prevent errors from simply being swallowed 2021-12-05 19:03:47 -05:00
RednedEpic 1d713cb34c Fix handling for null ContainerTypes
EnumMap does not permit null values.
2021-12-04 14:35:01 -06:00
Camotoy 9084c59003
Fix regressions in player movement handling 2021-12-02 19:56:12 -05:00
Camotoy 3f296e32a1
Boss bar colors now work in Bedrock 1.18!! 2021-11-30 21:28:32 -05:00
Camotoy 75d1a6364c
Gracefully handle invalid block entity types 2021-11-30 15:06:47 -05:00
David Choo a305c22665
1.18 entity name and metadata changes (#2651)
* Fix amount & javaId being used before it is initialized

Fixes invisible falling blocks and incorrectly sized exp orbs

* Add missing item metadata to throwable items and fireballs

Renamed ItemedFireballEntity -> FireballEntity

* Renamed more EntityDefinitions to match MCProtocolLib

* Add some missing metadata and add null check

* Use entity type when possible in debug spawn message

Fallback onto classes simple name
Also don't register ENDER_DRAGON_PART

* Remove redundant entity identifiers and fix END_CRYSTAL and FISHING_BOBBER identifiers

minecraft:end_crystal -> minecraft:ender_crystal
minecraft:fishing_book -> minecraft:fishing_hook

* Cave spider should inherit metadata from spider

* Keep entity definitions in roughly alphabetical order

* Alphabetize entity definitions

* ABCs?

* Bump MCProtocolLib version
2021-11-26 23:03:46 -05:00
Camotoy ec34510417 Don't tie biome translation to Bedrock chunk section size
This allows biomes to be translated even if the block count is empty. Fixes some biome glitching.
2021-11-25 11:59:25 -05:00
Camotoy e7ecda64f0
Use new 1.18 chunk encoding features 2021-11-23 11:21:54 -05:00
Camotoy 41ecb885bd
Merge branch 'master' of https://github.com/GeyserMC/Geyser into feature/1.18 2021-11-22 22:47:58 -05:00
Camotoy 966c2155ad
API: change player class to Connection 2021-11-22 14:52:26 -05:00
RednedEpic 83ddbd7d1a Initial api draft 2021-11-21 12:36:42 -06:00
RednedEpic 2c663e0ee5 The Great Refactor Part 3 - Entire project restructure 2021-11-20 17:29:46 -06:00