Commit graph

1882 commits

Author SHA1 Message Date
Camotoy
e1085270b8
Don't use Locale class in MessageTranslator
The Minecraft Java client doesn't appear to use any specific locale function in its translating. Just passing a string saves computational time in parsing a locale that will be the same result every time.
Should this be invalid behavior, we should instead cache the Locale class for a player so it doesn't have to be repeatedly calculated.
2021-10-05 18:55:32 -04:00
Camotoy
b65ba2cb52
Update display names for team players after team updates
Resolves #1912
2021-10-05 17:06:15 -04:00
Camotoy
175d9aff48
Don't add sculk sensor to creative items without extended height enabled
Fixes #2564
2021-10-04 08:58:33 -04:00
Camotoy
a5779a716b
Better handling of invalid items in recipe translator
Stonecutter recipes will now be processed correctly, even if an item is modded.

Co-authored-by: Setadokalo <darkenchanter1@gmail.com>
2021-10-03 10:54:00 -04:00
Camotoy
7cd3eb99ef
Always check for a key in Floodgate's folder first on plugin versions
This should avoid people trying to incorrectly copy the key.
2021-10-02 14:00:10 -04:00
Camotoy
b58cbd00bc
Fix edge case in removing below name objectives 2021-10-01 16:38:04 -04:00
Camotoy
86c0c009e7
Add below name scoreboard support
Fixes #1927
2021-10-01 16:24:25 -04:00
Tim203
50896a24e7
Documented the if statement introduced in the previous commit 2021-09-30 23:04:32 +02:00
Tim203
0f81b28630
Fixed GeyserMC/Geyser#2556 2021-09-30 22:16:15 +02:00
Camotoy
59c34fbcae
Properly handle Norwegian locale code differences
Bedrock's code is not the same as Java's code.
2021-09-29 14:49:20 -04:00
Tim203
3323e5732c
Scoreboard improvements (#2078)
* Fixed some Scoreboard bugs and ScoreboardUpdater is now global

* Begin implementing below name support and better name display

* Use final for classes

* Revert "Begin implementing below name support and better name display"

This reverts commit 01babd636a.

* Don't remove objective if we're showing it

* Prevent concurrency exceptions when switching servers

* Properly fix the concurrency issue

* Fix inconsistencies in update cycle

* Few minor changes

* Port over this fix

* Fixed a problem that was introduced yesterday

* Cleanup

* Scores don't have to be removed before removing the objective itself

* Moved away from the general thread pool and some more changes

* Small changes

* Converted switch statements

Co-authored-by: Camotoy <20743703+Camotoy@users.noreply.github.com>
2021-09-29 20:36:27 +02:00
Camotoy
7f4d3def58
Convert GameProfileData to record; remove confusing skin log
`Registering bedrock skin for PLAYERNAME` is now just confusing as it implies something to do with Floodgate's skin system when it's just for Bedrock <-> Bedrock players.
2021-09-28 19:25:34 -04:00
Camotoy
7d176cd669
Fix regressions in handling invalid account cases 2021-09-28 09:46:12 -04:00
Cybornut
4503991d37
Added a couple of comments in config.yml for clarification (#2544)
* Update config.yml

Added commented clarifications on:
1. "remote: address: auto"
2. "remote: auth-type: online"

May need formatting checks to conform with correct annotation

* Update config.yml
2021-09-27 21:51:50 -05:00
Camotoy
0438aa4709
Comment change in map data translator 2021-09-26 20:54:03 -04:00
David Choo
9a8795988f
Movement checks (#2547)
This avoids ArrayList allocations and https://github.com/GeyserMC/Geyser/issues/2540.
2021-09-26 10:16:22 -04:00
Camotoy
6f4d433561
We don't need to store each individual RGB color for maps 2021-09-25 15:02:08 -04:00
Camotoy
67c93dcc8c
Add new map colors
Also fix our map colors, which appear to in fact be RGB for both Java and Bedrock.

Fixes #2468
2021-09-25 14:56:37 -04:00
Tim203
e8ddac64b4
Merge remote-tracking branch 'origin/feature/floodgate-transfer-players' 2021-09-24 20:38:03 +02:00
Camotoy
f6313dd0ac
Use old MCProtocolLib, etc. commits for now
While we work out the kinks!
2021-09-23 17:53:57 -04:00
Camotoy
85a5762364
Don't allow blank messages to be sent
Fixes #2546
2021-09-23 17:52:22 -04:00
Camotoy
27a17ff183
Fix firework stars being unobtainable from the creative menu 2021-09-22 19:27:49 -04:00
Camotoy
82bb6ad61f
Fix furnace minecart custom item for 1.17.30 2021-09-22 15:11:14 -04:00
Camotoy
9f95178b58
Return to main develop branch of Protocol 2021-09-22 13:43:06 -04:00
Camotoy
c28364c5dd
Prevent large ArrayLists from growing on collision checks
See #2540 - not confirmed to be resolved as we weren't able to replicate a cause for this issue but this solved the issue from artifically invoking it.
2021-09-21 21:06:07 -04:00
Camotoy
d5c37e927b
Fix item frames on 1.17.30 2021-09-21 16:50:06 -04:00
Camotoy
e0ae4c1b85
Fix disconnect message formatting 2021-09-21 14:58:35 -04:00
Camotoy
22b962731c
Implement proper non-sound particle for turtle eggs 2021-09-21 14:04:11 -04:00
RednedEpic
fdca9f9be6 Add support for 1.17.30 (v465) 2021-09-19 14:20:42 -05:00
Camotoy
58e00b2645
Add more sanity checks for shulker boxes
Also properly implements reading byte tags from Java Edition.
2021-09-18 10:35:49 -04:00
Camotoy
0537c04ef6
Handle invalid enchantment NBT
Fixes #2117
2021-09-14 11:18:26 -04:00
TheFloyds4240
e13643d040
Update config.yml (#2522) 2021-09-12 14:32:58 -05:00
Camotoy
4196402105
Indicate when the en_US jar has finished downloading 2021-09-10 21:12:12 -04:00
Camotoy
c763939452
Use set for sticky pistons 2021-09-10 16:36:56 -04:00
Camotoy
3632ebda8b
Prevent concurrency issues with SkinProvider#requestedSkins
There is a small potential here to return null if containsKey runs before remove and then get is called.
2021-09-10 16:32:09 -04:00
Camotoy
f32e4725b8
Update world border in constructor
Prevents us from thinking the player is in the border before we get the packet.
2021-09-10 15:03:43 -04:00
Camotoy
9136e4b591
Remove deploying for now; fix LecternHasBookMap offset issue 2021-09-10 14:53:02 -04:00
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
Tim203
a1bdf6dbda
Implemented Floodgate's player transfer plugin message 2021-09-10 01:42:05 +02:00
Camotoy
1199d50338
Allow single quotes to appear in translations in chat 2021-09-08 19:24:30 -04:00
Camotoy
6dd4629fcd
Utilize multiple threads for Bedrock networking if possible 2021-09-08 13:59:32 -04:00
Camotoy
52ad5c37ee
Uncomment MTU in config
It doesn't change anything if uncommented and just serves to confuse people.
2021-09-08 13:46:46 -04:00
Camotoy
95ba2a10ad
Properly error if Microsoft authentication sends an error 2021-09-08 10:13:46 -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
9f77d47f14 Set int array directly for BlockMappings and change naming 2021-09-04 12:45:32 -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
0069566803
Dependency update; re-use Thread.MAX_PRIORITY for Spigot; other network optimizations 2021-08-31 19:57:56 -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
ab2f5b326f
Clear chunk on dimension switch
This should resolve chunks being leftover in instances such as server switches in proxies.
2021-08-31 11:32:58 +01:00
Camotoy
b9541505af
Bump version to try and fix deploying; other nitpicks 2021-08-30 13:55:01 -04:00
Camotoy
ea8f4b854b
Formatting fixes in the FireworkColor class 2021-08-29 10:36:34 -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
bb92c89273
Small optimizations; use array for Java -> Bedrock block mappings
Java runtime IDs are in order starting from 0; an array is all that is needed to map Java IDs to Bedrock IDs.
2021-08-27 20:10:01 -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
rtm516
26a778fd77
Remove exact refrence to imported class in FileUtils (Thanks @Konicai) 2021-08-25 15:53:20 +01:00
rtm516
65e85eb853
Fix bungeecord dump logs after 9fb5090 2021-08-25 11:31:12 +01:00
rtm516
9fb509010a
Use more generic method for posting logs 2021-08-24 21:42:44 +01:00
Jens Collaert
d26aed0a87
Allow uploading logs with mclo.gs link into dump (#2453) 2021-08-24 15:11:38 -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
Konicai
85404f0ed5
Rearrange connector pom (#2455)
* rearrange and add comments

* fix pom

* fix pom again
2021-08-20 10:39:05 +01:00
Camotoy
89dde2aec3
Do a null check on downstream channel when sending packets 2021-08-19 12:37:14 -04:00
David Choo
57c0185b45
Prevent projectiles from blocking the player's vision (#2472)
Prevent Snowballs, Eggs, and other throwable projectiles from blocking the player's screen
2021-08-17 22:44:33 -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
76399881a3
Use legacy DefaultEventLoopGroup constructor; label Geyser <-> Spigot connection thread 2021-08-16 22:33:14 -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
36ad5612ed
Support Brigadier long argument types in commands
Fixes #2476
2021-08-16 14:04:13 -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
ce748990a4
Javadoc fix and tiny teleport optimization 2021-08-15 14:57:02 -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
Camotoy
1afa22d5cf
Fix NPE with area effect cloud particles 2021-08-13 13:42:35 -04:00
Camotoy
25ff3661e3
Update version strings to add 1.17.11
This version has been supported; let's make it clear that it is.
2021-08-13 13:37:06 -04:00
Camotoy
919e84c23f
Don't try to connect to the remote server with invalid credentials
Fixes #2458
2021-08-12 14:35:26 -04:00
Camotoy
b95cd8e0c1
Query improvements
- Improved detection of query packet
- Don't initialize the QueryPacketHandler class until we verified we have query data
- Encode strings like the vanilla Minecraft server
2021-08-12 10:42:58 -04:00
Camotoy
0c5b39f35b
Intern strings and other values
This should reduce memory usage at startup by preventing multiple identicals objects being present in memory.
2021-08-11 20:16:10 -04:00
David Choo
fb5449d0d1
Fix extended world height client crash with 32+ section chunks (#2441) 2021-08-03 00:08:47 -04:00
David Choo
3eb73a5634
Fix powder snow and fish buckets (#2437) 2021-08-01 22:20:15 -04:00
Camotoy
20b183ddda
Fix horse variant color
Our old method broke with the 1.17.10 update.
2021-08-01 19:14:01 -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
Camotoy
a197f60446
Move use-direct-adapters to system property 2021-07-31 13:54:51 -04:00
Camotoy
002be32bb3
Connect Geyser players directly to the server for plugin versions (#2413)
- Faster loading times and improved latency; Geyser no longer creates a physical TCP connection to join the server
- Less configuration: remote address and port are now irrelevant
- Accurate IP addresses without needing Floodgate.

Co-authored-by: Redned <redned235@gmail.com>
2021-07-31 12:52:49 -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
Konicai
6f93bbfe21
Improvements to VillagerEntity (#2412)
* initial changes to villager

* touchup

* don't call getPos() twice

* whoops, better
2021-07-30 15:45:50 -05: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
Camotoy
46cd26ffae
Don't cache non-locale assets in the LocaleUtils asset cache
Previously Geyser was storing a reference of every single asset hash provided by the server, including things like sound files. We never used this files, and their existence caused the amount of Asset classes present in Geyser to be over 3000. With this change, we only cache the 118 language files.
2021-07-25 10:11:53 -04:00