ShellBaseBlockEntity always having the wrong TARDIS_ID being set during exterior shell placement in TardisExteriorManager. This breaks most functions of the Tardis, such as teleporting players to the wrong dimension, and breaking the Tardis Key's ability to unlock/lock the Tardis
Added check to TardisHelper.teleportEntityTardis to prevent entities being teleported to an invalid dimension if trying to enter via an exterior shell which doesn't have a valid TARDIS_ID due to above bug.
Since players won't be able to enter their Tardises anymore (better this than wrong teleports), they can "fix" it by teleporting into the Tardis Interior via /tardis_refined interior and forcing a block update on the Shell block, such as changing exteriors or flying the Tardis to a different location.
On multiplayer servers, administrator intervention may be required.
Added TardisExteriorManager#setOrUpdateExteriorBlock as a common logic for placing Exterior blocks whilst preserving critical data such as ShellTheme and Patterns
Replaced TardisExteriorManager#placeExteriorBlock with startLanding and setOrUpdateExteriorBlock, where setOrUpdateExteriorBlock executes the block placement, and startLanding updates Tardis data and chunkloads the area.
Enhanced TardisExteriorManager#triggerShellRegenState with a boolean flag to unify logic for updating the REGEN blockstate property on the Shell Block when the Tardis is reconfiguring its Desktop.
KeyItem using wrong logic to append strings to translatable tooltip strings. Fixes scenario where tooltip displayed *message.tardis_refined.tooltip_in_flight*
Fixed TardisExteriorManager.setDoorClosed using confusing logic when trying to determine if we are trying to close the door or not. Previously, it was using the locked field to determine "closed" state, which was erroneous.
Large amount of duplicate control entities present on Nuka Console
Fixed placement of monitor control for all consoles. Fixes some of the behaviour described in #283. To be tested
Added dimension load fix from #296
Missing translations for all default Hum sounds (used one translation key to cover all scenarios- "TARDIS hums")
Missing translation for SCREWDRIVER_CONNECT sound
Missing translation for LOW_FUEL sound
Fixed FlightDance control re-alignment logic in ControlEntity allowing player to activate the control. Fixes Issue #269
Example: "Randomiser" control is considered "misaligned" by FlightDanceManager.
When player clicks on the Randomiser control, the control is realigned BUT the Tardis coordinates are ALSO randomised.
This causes the flight destination to be changed and the flight duration to be recalculated, which was unintended.
Fixed Gravity Shaft causing player to open elytra when JUMP key is pressed.
NOTE: Due to the patch using Player#onGround this means all game behaviours relating to when the player is on the ground (hunger, damage etc.) will also be applied
Fixed Tardis Flight Loop not playing (Combination of undocumented logic being called in multiple call sites, and the volume being set to zero causing the SoundManager to skip playing it). Fixes Issue #293
Fixed several sound entries having the incorrect registry names, which caused any data-generated translations for their subtitles to always be incorrect.
HumSelectionScreen using erroneous logic for parsing Hum text components, causing log spam each time the screen is opened.
Changes
Refactor of LoopingSound and TardisClientLogic to unify logic, remove duplicate call sites, document logic.
Moved SoundInstance registry entries into their own class, cleaning up method names
Made TardisPilotingManager and TardisExteriorManager explicitly update TardisClientData in a few critical methods such as endFlight, to ensure that sounds dependent on that data is played at the correct time.
Additions
Added a boolean flag to the Control object to allow for controls to be excluded from the list of possible controls to use for the FlightDanceManager. This is flexible enough to allow for addon mods to modify and customise behaviour.
Notes
The way we generate control positions needs to be improved. The output generated by default is off by a few decimal places that causes the control to be placed sometimes quite far away from its intended location.
Need to be careful of generating duplicate controls. They cause performance hits and prevent the player from completing Flight Dance events due to multiple controls placed in the same location with the same hitbox size.
TardisClientLogic needed a cleanup. The LoopingSounds logic was making duplicate call sites using undocumented logic.
As a general convention: SoundEvent IDs need to be the same as their field names. This way we can be sure that the subtitle translations are generated correctly via data-gen.
Bug Fixes
TardisHelper.teleportEntityTardis
to prevent entities being teleported to an invalid dimension if trying to enter via an exterior shell which doesn't have a valid TARDIS_ID due to above bug./tardis_refined interior
and forcing a block update on the Shell block, such as changing exteriors or flying the Tardis to a different location.TardisExteriorManager#setOrUpdateExteriorBlock
as a common logic for placing Exterior blocks whilst preserving critical data such as ShellTheme and PatternsTardisExteriorManager#placeExteriorBlock
withstartLanding
andsetOrUpdateExteriorBlock
, wheresetOrUpdateExteriorBlock
executes the block placement, andstartLanding
updates Tardis data and chunkloads the area.TardisExteriorManager#triggerShellRegenState
with a boolean flag to unify logic for updating the REGEN blockstate property on the Shell Block when the Tardis is reconfiguring its Desktop.*message.tardis_refined.tooltip_in_flight*
TardisExteriorManager.setDoorClosed
using confusing logic when trying to determine if we are trying to close the door or not. Previously, it was using thelocked
field to determine "closed" state, which was erroneous.Player#onGround
this means all game behaviours relating to when the player is on the ground (hunger, damage etc.) will also be appliedHumSelectionScreen
using erroneous logic for parsing Hum text components, causing log spam each time the screen is opened.Changes
endFlight
, to ensure that sounds dependent on that data is played at the correct time.Additions
Control
object to allow for controls to be excluded from the list of possible controls to use for the FlightDanceManager. This is flexible enough to allow for addon mods to modify and customise behaviour.Notes