From 9cc77c16eb2017e95dad43fe455540130fe3c043 Mon Sep 17 00:00:00 2001 From: Craig Date: Fri, 6 Sep 2024 11:12:01 +0100 Subject: [PATCH] Release 2.0.7 - 1.20.2 --- changelog.md | 67 ++----------------- .../mixin/forge/BlockEntityRendererMixin.java | 12 ++-- gradle.properties | 2 +- 3 files changed, 15 insertions(+), 66 deletions(-) diff --git a/changelog.md b/changelog.md index 1ba5544a..9e01757b 100644 --- a/changelog.md +++ b/changelog.md @@ -1,64 +1,11 @@ -# Version 2.0.6 +# Version 2.0.7 ![TARDIS Refined](https://wiki.tardisrefined.net/TARDIS-Refined-Wiki/tardis_refined_v2.png) -## New Features - -- Datapack Console Patterns and Shell Patterns can now define the sounds used by the Tardis. - - Console Patterns can define Left Click and Right Click sounds for Generic interactions, as well as Throttle and - Handbrake specific sounds - - Shell Patterns can define Door Unlock/Lock, Door Open/Close sounds. - -**Note:** These additions are optional fields, meaning all existing Pattern datapacks will not need to be updated. - ## Gameplay Fixes -- Fixes occasional legacyrandom crash within Gra- I mean Mavity Well -- Fixes left clicking controls during flight dance activating the control's function unexpectedly. E.g. Left clicking X - Coordinate control actually changing the X coordinate when re-aligning a control -- Fixed blocks causing player's hand to swing twice in every interaction. Caused by the wrong InteractionResult being - used on the serverside. -- Fixes Dimensions not being registered to the server, causing the world to not exist upon reloading the save. This also - increases performance for world loading as it means the server doesn't need to create a new world everytime a player - enters a Tardis after server restart (for multiplayer) or logging out then reopening a save file (singleplayer). -- Comprehensive fix for Root Shell not updating its `OPEN` state during terraforming (#299). This has been achieved by - cleaning up and unifying door update logic as well as patching the desktop regeneration logic. -- Attempting to land a Tardis on a block where there are no valid positions caused an infinite crash loop #309 -- Fixes issue where (Neo) Forge rendering would cause Consoles and Shells to stop rendering at certain angles - -## Technical Debt -- Cleaned up all Tardis manager classes and implemented common methods stuch as ``tick(ServerLevel level)``, - ``saveData`` and ``loadData`` -- Unified door closing and door locking logic by implementing the ``TardisInternalDoor`` interface on - ``AbstractDoorBlockEntity`` instead of some classes sometimes using the Blockstate property, and other classes - sometimes using the BlockState properties directly. - - Before this cleanup the codebase logic would continue to become even more inconsistent, difficult to maintain, test, - debug and enable poor practices to slip in. - - Example: Forgetting to update the exterior shell but not the internal door, and vice versa. -- Unified shell open and locking logic by using ``ExteriorShell`` interface which was introduced early on in the 1.19,2 - development but was hidden in a random package and never referenced again. -- Relocated ``ExteriorShell`` interface to another package so that it's more noticeable -- Moved desktop generation logic into a method for ease of viewing -- Reordered some getter and setter methods in classes for ease of viewing -- Fixed teleportation via Tardis doors not using the correct facing, requiring us to call `Direction#getOpposite` in - many places to compensate. Previously it created great difficulty to debug teleportation issues. -- Removed `AbstractDoorBlockEntity#isLocked` in favour of a Blockstate Property. This allows the locking logic to use - the BlockState Property to be consistent with the Exterior Shell. -- Enhanced ``TardisExteriorManager#setOrUpdateExteriorBlock`` to not be as verbose with the parameters. Removed the - boolean field, and added a default method called ``TardisExteriorManager.placeExteriorBlockForLanding`` which - implements the correct logic for when the Tardis is landing, and thus requires a new Shell blockstate instance to be - created. -- Exterior Shell updates using duplicate implementations across multiple classes, include `AestheticHandler`, - `TardisExteriorManager` and `TardisInteriorManager`. This is now unified in `TardisLevelOperator` for ease of - maintenance. - -## API Changes - -- Added new events for addon mods - `LockDoor` and `UnlockDoor`, which are fired after the internal door and exterior - shell blocks are locked/unlocked -- Made `OpenDoor` and `CloseDoor` events fire after doors have been updated. Previously it fired after the internal door - updates, but before the exterior shell updated. This would have caused some issues when addon mods subscribe to these - events because it would mean addon mods are applying logic before the exterior shell door has closed, which can have - unintended consequences. -- Added `ShellChangeSource`, an object to identify why a Shell was updated. This provides additional data to use for - differentiate logic between updating shell from landing the Tardis to when the shell is updated during terraforming - +- Fixed bulkheads and eye of harmony no longer stopping rendering when looking at certain angles +- Fixed diagonal walls messing with recipes +- Fixed landing issue where pattern would be forgotten +- Fixed issue where unused walter_white.png was breaking the game's mipmaps +- Fixed sound profiles crashing on certain shells +- Added "Compatibility" with [DiagonalWalls](https://www.curseforge.com/minecraft/mc-mods/diagonal-walls) diff --git a/forge/src/main/java/whocraft/tardis_refined/mixin/forge/BlockEntityRendererMixin.java b/forge/src/main/java/whocraft/tardis_refined/mixin/forge/BlockEntityRendererMixin.java index dded9c7d..7c1ba0c1 100644 --- a/forge/src/main/java/whocraft/tardis_refined/mixin/forge/BlockEntityRendererMixin.java +++ b/forge/src/main/java/whocraft/tardis_refined/mixin/forge/BlockEntityRendererMixin.java @@ -5,24 +5,26 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; -import net.minecraftforge.common.extensions.IForgeBlockEntity; +import net.neoforged.neoforge.client.extensions.IBlockEntityRendererExtension; import org.spongepowered.asm.mixin.Mixin; -import whocraft.tardis_refined.client.renderer.blockentity.life.EyeRenderer; import whocraft.tardis_refined.common.blockentity.console.GlobalConsoleBlockEntity; import whocraft.tardis_refined.common.blockentity.device.ConsoleConfigurationBlockEntity; import whocraft.tardis_refined.common.blockentity.door.BulkHeadDoorBlockEntity; import whocraft.tardis_refined.common.blockentity.door.RootShellDoorBlockEntity; +import whocraft.tardis_refined.common.blockentity.life.EyeBlockEntity; import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; -@Mixin({EyeRenderer.class, ConsoleConfigurationBlockEntity.class, GlobalShellBlockEntity.class, RootShellDoorBlockEntity.class, GlobalShellBlockEntity.class, GlobalConsoleBlockEntity.class, BulkHeadDoorBlockEntity.class}) -public class BlockEntityRendererMixin extends BlockEntity implements IForgeBlockEntity { + +@Mixin({EyeBlockEntity.class, ConsoleConfigurationBlockEntity.class, GlobalShellBlockEntity.class, RootShellDoorBlockEntity.class, GlobalShellBlockEntity.class, GlobalConsoleBlockEntity.class, BulkHeadDoorBlockEntity.class}) +public class BlockEntityRendererMixin extends BlockEntity implements IBlockEntityRendererExtension { public BlockEntityRendererMixin(BlockEntityType arg, BlockPos arg2, BlockState arg3) { super(arg, arg2, arg3); } @Override - public AABB getRenderBoundingBox() { + public AABB getRenderBoundingBox(BlockEntity blockEntity) { return INFINITE_EXTENT_AABB; } + } diff --git a/gradle.properties b/gradle.properties index 192dfeee..dcb740f7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -46,7 +46,7 @@ neoforge_data_pack_format=18 ##Mod Information #Common Mod Information -mod_version=2.0.6 +mod_version=2.0.7 license=https://github.com/Whocraft/TardisRefined/blob/minecraft/1.20/LICENSE.MD credits=Commoble, Lucraft, starray1000000, Monsterwaill, TheJudge, LoxiGoose mod_authors=CommandrMoose / River, Jeryn99, Magic Man, ILikePandas, Jacob K, 50ap5ud5