b4b3c21d30
Merge branch 'stable'
2021-08-19 15:39:16 +01:00
5da90b9530
Stop auto-translating strings when not asked
...
fixes #4371
2021-08-15 20:44:27 +01:00
a81680c5c6
missed a few more hardcoded translation keys
2021-08-15 20:12:55 +01:00
60ac76a3bc
Remove more usages of hardcoded translation keys
2021-08-15 19:22:40 +01:00
789a669395
Rename TranslationContainer -> Translatable
2021-08-15 16:17:46 +01:00
8b9d7d6390
Support for nested TranslationContainers
2021-08-14 20:57:13 +01:00
804d02b086
TranslationContainer: added prefix(), postfix() and format()
2021-08-14 16:08:22 +01:00
13d4131d0d
Remove player update warnings
...
a player ingame is not going to have access to the terminal to update PM, and if they do, they can see the warning on the console themselves anyway.
2021-08-14 13:27:21 +01:00
b4c0ddd155
Use native union types for TranslationContainer|string
2021-08-10 15:17:26 +01:00
2293bd948d
Added KnownTranslationFactory and use it in as many places as possible
...
this makes translation usage much more statically analysable.
The only places this isn't used are:
- places that prefix translations with colours (those are still a problem)
- places where server/client translations don't match (e.g. gameMode.changed accepts different parameters in vanilla than in PM)
2021-08-10 14:50:40 +01:00
b31dce2119
Player: fixed type of loadQueue field
2021-08-04 21:17:44 +01:00
c567ed4b7a
fix build error
2021-08-03 15:32:21 +01:00
dcd203370b
Player: make use of typed properties
...
readability significantly benefits from use of typed properties here.
2021-08-03 15:02:32 +01:00
58498c2b0b
Merge remote-tracking branch 'origin/stable'
2021-07-23 16:40:19 +01:00
5130a32333
GameMode: removed dead property (leftover from 902ea515f7
)
2021-07-05 20:00:24 +01:00
f3bd48e6cb
Updated some more hardcoded translation key usages missed by 94e16f416d
2021-06-30 14:02:55 +01:00
94e16f416d
Added KnownTranslationKeys (generated) and start using it
2021-06-29 22:46:04 +01:00
f02817bcd3
Player: fixed toString() on TranslationContainer exposed by previous commit
...
this code looks smelly...
2021-06-29 20:14:11 +01:00
6fb8ac211e
Make GameMode::fromString() and PluginEnableOrder::fromString() return null, instead of throwing exceptions
...
since these are always used for handling userdata, it doesn't make sense for them to throw exceptions.
2021-06-27 20:56:51 +01:00
3dd33cd35e
Get rid of EnumTrait::fromString()
...
it's better to just implement this for stuff where there's explicitly designated aliases, otherwise we could end up with unexpected BC breaks (e.g. hardcoding POSTWORLD in plugin.yml would suddenly break if the core enum was changed, even though it remained valid).
2021-06-27 20:52:56 +01:00
902ea515f7
Separate ID handling from GameMode
...
the aliases of 0,1,2,3 remain for user-interface level compatibility.
2021-06-27 20:32:35 +01:00
db28358316
Player: Assume that usedChunks was cleared by the previous loop
2021-06-27 17:50:39 +01:00
ede4d58394
Automatic permission calculation on PermissibleBase construction
...
thanks to the PermissibleInternal/PermissibleBase architectural change, there's no longer any concern regarding cyclic refs.
2021-06-26 22:15:22 +01:00
bf7d69b69e
Stop hardcoding permission names everywhere
...
using strings for permission names is nearly as shitty, but this is at least cross-referencable and statically analysable.
2021-06-26 19:14:51 +01:00
0910054c41
NetworkSession: Fixed InventoryManager nullability disaster
...
fixes #4277
fixes #4275
fixes #3139
2021-06-26 17:44:42 +01:00
4a5bdefe8b
Player: Explicitly clear permission recalculation callbacks
...
this is necessary to get rid of the broadcast permission callbacks, which retain references to the Player itself, forming a cycle which would prevent PermissibleBase->__destruct() from cleaning up.
2021-06-26 17:18:17 +01:00
85ee628a74
Player: remove sendPosition() from public API
...
plugins shouldn't be touching this for any reason now.
2021-06-21 20:08:43 +01:00
60d80e173b
Fixed player sounds not being broadcasted to the player itself
...
fixes #4259
fixes #4270
2021-06-21 20:03:32 +01:00
981b0285d1
Isolate config casting nastiness in one place
...
this doesn't solve the underlying problem, but it does reduce the amount of noise made by PHPStan about it, as well as avoiding code litter.
2021-06-19 19:14:02 +01:00
bfcf4a25d4
Automatic cleanup of permission subscriptions on PermissibleBase destructor calls
...
this has gotten too complex ...
2021-06-12 21:12:39 +01:00
5a14c1cb89
Entity: don't rebuild metadata every tick unless an associated property changed
...
this should improve performance back to PM3 levels.
2021-05-17 20:05:52 +01:00
42e915b902
Player: added locking variable to prevent reentry into respawn() while awaiting spawn terrain generation
2021-05-12 12:10:32 +01:00
4a68e0219e
shut
2021-05-11 19:29:30 +01:00
ab0500ae4f
Player: Fixed a multitude of bugs with respawning
...
the following things are changed:
- Player->getSpawn() no longer returns a safe spawn by default. Instead, if the player doesn't have a spawn set, it returns the world's stored spawn directly. This allows consistent behaviour of locating safe respawn positions without double calculation of safe spawn position, and also fixes crash issues during the login sequence if the player's spawn position referred to ungenerated terrain.
- Player->respawn() is now asynchronous, using the promise returned by orderChunkPopulation() to complete respawn after the terrain is generated. This allows consistently selecting a safe respawn position and fixes crashes when respawning if the spawn location was in ungenerated terrain.
There remains a problem that ragequit respawns are still only handled right after PlayerJoinEvent, which leads to the original spawn terrain being sent to the player, which is obviously very wasteful. However, that's a problem for a later commit.
2021-05-11 19:15:31 +01:00
1533789f35
Player: fixed not subscribing to own inventory updates
...
fixes #4211
2021-05-09 19:36:36 +01:00
624495f4d3
Added a generic Promise type
...
I anticipate increasing demand for promises, and since all the libraries I could find suck, we'll stick to our own impl for now.
2021-05-08 15:57:30 +01:00
652de2632a
Rough OffHand implementation
...
this doesn't do stuff like taking arrows from offhand yet.
2021-05-05 14:46:51 +01:00
845819123d
Player: drop perm nulling
...
this is no longer necessary because the PermissibleBase doesn't keep a ref to the Player anymore.
2021-04-27 14:49:26 +01:00
09a2402f01
Fixed precondition on double chunk send being useless
...
this is messy, but necessary for now.
2021-04-19 00:50:43 +01:00
6d38922af0
Undo my -100IQ fuckup with chunk sending precondition
...
the commit I reverted put the preconditions in the completion handler,
which is executed AFTER THE CHUNK IS SENT.
Revert "NetworkSession: allow Player to handle its own business in chunk sending"
This reverts commit a223d1cbf3
.
2021-04-19 00:36:13 +01:00
35a3522b4e
Player: fixed chunks getting spammed like crazy during generation
...
because of the shitty way that the chunk resending is handled, it causes all kinds of problems with the async system because of potential reversions of the state during the process.
2021-04-19 00:30:34 +01:00
b4afa46fad
Player: don't re-request chunks unless they've already been sent
...
if they've been requested, the ChunkCache will take care of rebuilding the chunk packet before sending it.
2021-04-18 23:53:34 +01:00
adbc58f326
TickingChunkLoader: use native return types
2021-03-26 22:55:48 +00:00
cdeedbad8b
Player: extract some entity spawning logic into a separate function
2021-03-26 22:51:56 +00:00
de49a361c0
NetworkSession: Remove parameters from startUsingChunk() callback
...
these can easily be use()d into the closure (which also has slightly better performance, because no type checks - not that anyone will notice).
2021-03-26 22:45:36 +00:00
a223d1cbf3
NetworkSession: allow Player to handle its own business in chunk sending
...
these checks should appear consistently in all of these async callbacks.
2021-03-26 22:00:42 +00:00
f047ecfd2d
Fixed player spawning in ungenerated terrain ( #4087 )
...
fixes #4044
fixes #2724
this is significantly more complex than I hoped for, but it's a start... and it works.
2021-03-26 21:36:27 +00:00
49438d360d
RegistryUtils: generate ordered doc comments
...
this makes things easier to find, especially in the large ones like VanillaBlocks.
2021-03-22 16:16:28 +00:00
90161f24e3
Added script to update registry/enum docblocks
2021-03-22 16:00:09 +00:00
c092a2e836
Separate TickingChunkLoader from ChunkLoader
...
this makes it possible to keep chunks loaded without ticking them.
2021-03-18 23:19:27 +00:00