From 99b17b22a939f2a40a3a30301247fb5f5dc02f71 Mon Sep 17 00:00:00 2001 From: Craig Date: Tue, 19 Dec 2023 11:54:17 +0000 Subject: [PATCH] Upgrade Improvements, Asset Changes & Internal Door Fix (#184) Co-authored-by: 50ap5ud5 <50ap5ud5125@gmail.com> Co-authored-by: MagicMaan <38400400+Magicmaan@users.noreply.github.com> Co-authored-by: leafy <80794784+leafreynolds@users.noreply.github.com> --- .github/workflows/publish.yml | 31 ++ build.gradle | 25 +- changelog.md | 88 ++++++ .../api/event/TardisEvents.java | 52 +++- .../tardis_refined/client/ModelRegistry.java | 16 +- .../client/ParticleGallifrey.java | 19 ++ .../tardis_refined/client/ScreenHandler.java | 34 +++ .../tardis_refined/client/TRParticles.java | 2 +- .../client/TardisClientData.java | 178 ++++++++--- .../blockentity/door/FactoryDoorModel.java | 84 ------ .../door/{ => interior}/BigBenDoorModel.java | 32 +- .../{ => interior}/BriefcaseDoorModel.java | 27 +- .../{ => interior}/BulkHeadDoorModel.java | 2 +- .../door/interior/CastleShellDoorModel.java | 72 +++++ .../door/{ => interior}/DrifterDoorModel.java | 26 +- .../door/interior/FactoryDoorModel.java | 76 +++++ .../{ => interior}/GroeningDoorModel.java | 29 +- .../door/{ => interior}/GrowthDoorModel.java | 32 +- .../door/interior/HieroglyphShellDoor.java | 116 +++++++ .../door/interior/LiftShellDoorModel.java | 100 +++++++ .../door/{ => interior}/MysticDoorModel.java | 27 +- .../door/{ => interior}/NukaDoorModel.java | 27 +- .../door/{ => interior}/PagodaDoorModel.java | 44 +-- .../{ => interior}/PhoneBoothDoorModel.java | 24 +- .../{ => interior}/PoliceBoxDoorModel.java | 23 +- .../{ => interior}/PortalooDoorModel.java | 31 +- .../door/{ => interior}/PresentDoorModel.java | 25 +- .../door/interior/ShellDoorModel.java | 32 ++ .../VendingMachineDoorModel.java | 22 +- .../model/blockentity/life/ArsEggModel.java | 73 ++++- .../blockentity/shell/FactoryShellModel.java | 90 ------ .../blockentity/shell/PoliceBoxModel.java | 159 ---------- .../model/blockentity/shell/ShellEntry.java | 30 ++ .../model/blockentity/shell/ShellModel.java | 26 +- .../shell/ShellModelCollection.java | 69 +++-- .../shell/{ => shells}/BigBenShellModel.java | 12 +- .../{ => shells}/BriefcaseShellModel.java | 12 +- .../shell/shells/CastleShellModel.java | 283 ++++++++++++++++++ .../shell/{ => shells}/DrifterShellModel.java | 12 +- .../shell/shells/FactoryShellModel.java | 82 +++++ .../{ => shells}/GroeningShellModel.java | 12 +- .../shell/{ => shells}/GrowthShellModel.java | 14 +- .../shell/shells/HieroglyphModel.java | 228 ++++++++++++++ .../shell/shells/LiftShellModel.java | 188 ++++++++++++ .../shell/{ => shells}/MysticShellModel.java | 12 +- .../shell/{ => shells}/NukaShellModel.java | 12 +- .../shell/{ => shells}/PagodaShellModel.java | 14 +- .../shell/{ => shells}/PhoneBoothModel.java | 12 +- .../shell/shells/PoliceBoxModel.java | 170 +++++++++++ .../{ => shells}/PortalooShellModel.java | 12 +- .../shell/{ => shells}/PresentShellModel.java | 12 +- .../VendingMachineShellModel.java | 12 +- .../console/GlobalConsoleRenderer.java | 23 +- .../door/BulkHeadDoorRenderer.java | 2 +- .../blockentity/door/GlobalDoorRenderer.java | 61 +--- .../blockentity/life/ArsEggRenderer.java | 39 ++- .../shell/GlobalShellRenderer.java | 17 +- .../selections/ShellSelectionScreen.java | 35 ++- .../screen/upgrades/BuyUpgradeScreen.java | 5 +- .../client/screen/upgrades/UpgradeTab.java | 8 +- .../client/screen/upgrades/UpgradeWidget.java | 15 +- .../screen/upgrades/UpgradesScreen.java | 26 +- .../client/sounds/LoopingSound.java | 108 +++++++ .../command/TardisRefinedCommand.java | 9 +- .../arguments/UpgradeArgumentType.java | 45 +++ .../command/sub/LevelCommand.java | 102 +++++++ .../command/sub/UpgradesCommand.java | 55 ++++ .../common/block/RootPlantBlock.java | 25 +- .../block/console/GlobalConsoleBlock.java | 5 +- .../device/ConsoleConfigurationBlock.java | 1 + .../common/block/door/BulkHeadDoorBlock.java | 45 ++- .../common/block/door/GlobalDoorBlock.java | 17 ++ .../common/block/life/ArsEggBlock.java | 98 +++++- .../common/block/shell/GlobalShellBlock.java | 9 +- .../common/block/shell/RootedShellBlock.java | 11 +- .../common/block/shell/ShellBaseBlock.java | 8 +- .../console/GlobalConsoleBlockEntity.java | 10 + .../door/AbstractEntityBlockDoor.java | 2 + .../door/BulkHeadDoorBlockEntity.java | 27 +- .../door/GlobalDoorBlockEntity.java | 61 +++- .../blockentity/life/ArsEggBlockEntity.java | 7 + .../shell/ShellBaseBlockEntity.java | 12 +- .../capability/TardisLevelOperator.java | 29 +- .../capability/upgrades/IncrementUpgrade.java | 28 ++ .../common/capability/upgrades/Upgrade.java | 14 +- .../capability/upgrades/UpgradeHandler.java | 45 ++- .../common/capability/upgrades/Upgrades.java | 64 ++-- .../common/entity/ControlEntity.java | 14 +- .../common/mixin/FogRendererMixin.java | 46 +++ .../common/network/TardisNetwork.java | 6 +- .../network/messages/ChangeShellMessage.java | 14 +- .../network/messages/OpenMonitorMessage.java | 12 +- ....java => SyncTardisClientDataMessage.java} | 6 +- .../upgrades/S2CDisplayUpgradeScreen.java | 23 +- .../waypoints/RemoveWaypointEntryMessage.java | 2 +- .../waypoints/RequestWaypointsMessage.java | 2 +- .../S2COpenCoordinatesDisplayMessage.java | 4 +- ...e.java => WaypointsListScreenMessage.java} | 6 +- .../tardis/TardisArchitectureHandler.java | 14 +- .../common/tardis/TardisDesktops.java | 7 +- .../common/tardis/control/Control.java | 7 + .../tardis/manager/AestheticHandler.java | 195 ++++++++++++ .../common/tardis/manager/BaseHandler.java | 10 + .../tardis/manager/TardisExteriorManager.java | 108 +------ .../manager/TardisFlightEventManager.java | 6 +- .../tardis/manager/TardisHADSManager.java | 8 +- .../tardis/manager/TardisInteriorManager.java | 75 ++--- .../tardis/manager/TardisPilotingManager.java | 94 +++--- .../tardis/manager/TardisWaypointManager.java | 7 +- .../common/tardis/themes/ShellTheme.java | 18 +- .../common/util/TardisHelper.java | 18 ++ .../world/feature/NbtTemplateFeature.java | 2 +- .../compat/portals/ImmersivePortals.java | 4 +- .../patterns/ConsolePatterns.java | 19 +- .../patterns/ShellPatterns.java | 8 +- .../registry/BlockRegistry.java | 6 +- .../registry/DeferredRegistry.java | 5 +- .../registry/SoundRegistry.java | 2 + .../3fcdc37ad136e2a9e4d043224d2db5bc1dee2659 | 15 - .../c8f6ff9084a307ea1af670e22b8331798da837dd | 10 - .../fb1d1450e45f24c16ff9548196e396cd1616c0aa | 10 - .../assets/tardis_refined/lang/en_us.json | 124 -------- .../models/block/flight_detector.json | 1 + .../sounds/tardis/ars/ars_hum.ogg | Bin 0 -> 252423 bytes .../tardis_refined/sounds/tardis/test_hum.ogg | Bin 0 -> 61896 bytes .../console/nuka/nuka emission.png | Bin 728 -> 2645 bytes .../blockentity/console/nuka/nuka_console.png | Bin 7709 -> 13242 bytes ...xture_blue.png => toyota_console_blue.png} | Bin ...e.png => toyota_console_blue_emissive.png} | Bin ...e_purple.png => toyota_console_purple.png} | Bin ...png => toyota_console_purple_emissive.png} | Bin .../console/toyota/toyota_console_skulk.png | Bin 0 -> 19142 bytes .../textures/blockentity/life/ars_egg.png | Bin 570 -> 668 bytes .../blockentity/life/ars_egg_emissive.png | Bin 482 -> 405 bytes .../blockentity/shell/castle/castle.png | Bin 0 -> 4564 bytes .../shell/castle/castle_interior.png | Bin 0 -> 2972 bytes .../blockentity/shell/factory/factory.png | Bin 2381 -> 3573 bytes .../shell/factory/factory_interior.png | Bin 14445 -> 2004 bytes .../shell/hieroglyph/hieroglyph.png | Bin 0 -> 5366 bytes .../shell/hieroglyph/hieroglyph_interior.png | Bin 0 -> 5766 bytes .../textures/blockentity/shell/lift/lift.png | Bin 0 -> 5343 bytes .../blockentity/shell/lift/lift_interior.png | Bin 0 -> 2920 bytes .../shell/police_box/police_box.png | Bin 1862 -> 4583 bytes .../shell/police_box/police_box_emissive.png | Bin 297 -> 624 bytes .../textures/gui/desktops/shalka.png | Bin 0 -> 167006 bytes .../textures/gui/sprites/trash.png | Bin 2095 -> 289 bytes .../alt_hexagon_frame_obtained.mcmeta | 9 + .../upgrades/alt_hexagon_frame_obtained.png | Bin 0 -> 245 bytes .../alt_hexagon_frame_unobtained.mcmeta | 9 + .../upgrades/alt_hexagon_frame_unobtained.png | Bin 0 -> 245 bytes .../gui/sprites/upgrades/box_obtained.mcmeta | 9 + .../gui/sprites/upgrades/box_obtained.png | Bin 0 -> 226 bytes .../sprites/upgrades/box_unobtained.mcmeta | 9 + .../gui/sprites/upgrades/box_unobtained.png | Bin 0 -> 226 bytes .../upgrades/exterior_frame_blue.mcmeta | 9 + .../sprites/upgrades/exterior_frame_blue.png | Bin 0 -> 247 bytes .../upgrades/exterior_frame_obtained.mcmeta | 9 + .../upgrades/exterior_frame_obtained.png | Bin 0 -> 247 bytes .../upgrades/exterior_frame_unobtained.mcmeta | 9 + .../upgrades/exterior_frame_unobtained.png | Bin 0 -> 247 bytes .../gallifreyan_frame_obtained.mcmeta | 9 + .../upgrades/gallifreyan_frame_obtained.png | Bin 0 -> 283 bytes .../upgrades/gallifreyan_frame_unobtained.png | Bin 0 -> 283 bytes .../textures/gui/sprites/upgrades/lock.mcmeta | 9 + .../textures/gui/sprites/upgrades/lock.png | Bin 0 -> 306 bytes .../upgrades/upgrade_frame_obtained.mcmeta | 9 + .../upgrades/upgrade_frame_obtained.png | Bin 0 -> 236 bytes .../upgrades/upgrade_frame_unobtained.mcmeta | 9 + .../upgrades/upgrade_frame_unobtained.png | Bin 0 -> 236 bytes .../textures/gui/upgrades/upgrades.png | Bin 1940 -> 2742 bytes .../textures/gui/upgrades/widgets.png | Bin 786 -> 0 bytes .../textures/gui/upgrades/window.png | Bin 8999 -> 5099 bytes .../structures/desktop/shalka.nbt | Bin 0 -> 285566 bytes .../rooms/ars/room_ars_stage_five.nbt | Bin 54201 -> 54450 bytes .../rooms/ars/room_ars_stage_four.nbt | Bin 53106 -> 53331 bytes .../rooms/ars/room_ars_stage_one.nbt | Bin 52420 -> 52569 bytes .../rooms/ars/room_ars_stage_three.nbt | Bin 52702 -> 52958 bytes .../rooms/ars/room_ars_stage_two.nbt | Bin 52544 -> 52789 bytes .../tardis_refined/desktops/copper.json | 5 - .../tardis_refined/desktops/coral.json | 5 - .../tardis_refined/desktops/crystal.json | 5 - .../tardis_refined/desktops/factory.json | 5 - .../desktops/future_nostalgia.json | 5 - .../tardis_refined/desktops/nuka.json | 5 - .../tardis_refined/desktops/toyota.json | 5 - .../tardis_refined/desktops/victorian.json | 5 - .../tardis_refined/desktops/violet_eye.json | 5 - .../patterns/console/copper.json | 20 -- .../patterns/console/coral.json | 28 -- .../patterns/console/crystal.json | 20 -- .../patterns/console/factory.json | 36 --- .../patterns/console/initiative.json | 36 --- .../tardis_refined/patterns/console/myst.json | 20 -- .../tardis_refined/patterns/console/nuka.json | 28 -- .../patterns/console/toyota.json | 28 -- .../patterns/console/victorian.json | 28 -- .../patterns/shell/big_ben.json | 28 -- .../patterns/shell/briefcase.json | 52 ---- .../patterns/shell/drifter.json | 16 - .../tardis_refined/patterns/shell/mystic.json | 28 -- .../tardis_refined/patterns/shell/nuka.json | 16 - .../tardis_refined/patterns/shell/pagoda.json | 16 - .../patterns/shell/phone_booth.json | 28 -- .../patterns/shell/police_box.json | 76 ----- .../patterns/shell/portaloo.json | 16 - .../patterns/shell/present.json | 28 -- .../patterns/shell/vending.json | 16 - .../corridors/corridor_hub_roomless.nbt | Bin 0 -> 179476 bytes .../tardis_refined-common.mixins.json | 1 + .../resources/tardis_refined.accesswidener | 4 +- fabric/build.gradle | 50 ++-- .../network/fabric/NetworkManagerImpl.java | 9 +- .../fabric/TardisRefinedFabric.java | 6 + .../fabric/TardisRefinedFabricClient.java | 9 +- .../registry/fabric/DeferredRegistryImpl.java | 11 +- forge/build.gradle | 15 +- .../0533c97ce5395f38717098a1ca49d72068853e57 | 2 - .../07cdbcdc6e4f4553ae9ccc48cd1ff0a5be53a01c | 2 - .../103d9f3f36b01595f1aa5172191e60eff02e6924 | 4 - .../1605092b5c78c792538553a3583c4f114827efd2 | 18 -- .../3fcdc37ad136e2a9e4d043224d2db5bc1dee2659 | 15 - .../735031f3addf80804addae5e3f53249900116f1e | 2 - .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 19 -- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 2 - .../c8f6ff9084a307ea1af670e22b8331798da837dd | 10 - .../e7bc600dadd489865d6fbbde8c1c01bd136d8060 | 3 - .../f681b33583ec37ab445ac361e38402e069dc01f6 | 8 - .../fb1d1450e45f24c16ff9548196e396cd1616c0aa | 10 - .../0533c97ce5395f38717098a1ca49d72068853e57 | 2 +- .../07cdbcdc6e4f4553ae9ccc48cd1ff0a5be53a01c | 3 +- .../103d9f3f36b01595f1aa5172191e60eff02e6924 | 2 +- .../1605092b5c78c792538553a3583c4f114827efd2 | 2 +- .../3fcdc37ad136e2a9e4d043224d2db5bc1dee2659 | 7 +- .../4dd1d6c274bb02a1ca04c043cc3e81adc6abd533 | 4 +- .../735031f3addf80804addae5e3f53249900116f1e | 4 +- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 2 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +- .../c8f6ff9084a307ea1af670e22b8331798da837dd | 3 +- .../e7bc600dadd489865d6fbbde8c1c01bd136d8060 | 2 +- .../f681b33583ec37ab445ac361e38402e069dc01f6 | 2 +- .../fb1d1450e45f24c16ff9548196e396cd1616c0aa | 4 +- .../tardis_refined/blockstates/ars_egg.json | 23 +- .../assets/tardis_refined/lang/en_us.json | 11 +- .../tardis_refined/particles/ars_leaves.json | 5 + .../assets/tardis_refined/sounds.json | 12 + .../tardis_refined/desktops/shalka.json | 5 + .../patterns/console/toyota.json | 12 +- .../tardis_refined/patterns/shell/castle.json | 4 +- .../patterns/shell/hieroglyph.json | 4 +- .../tardis_refined/patterns/shell/lift.json | 4 +- .../patterns/shell/police_box.json | 60 ---- .../commands/ForgeTRCommands.java | 20 ++ .../common/data/LangProviderEnglish.java | 11 +- .../common/data/ModelProviderBlock.java | 78 ----- .../common/data/ParticleProvider.java | 1 + .../common/data/SoundProvider.java | 11 + .../network/neoforge/NetworkManagerImpl.java | 13 +- .../tardis_refined/neoforge/ClientModBus.java | 1 + .../neoforge/TardisRefinedForge.java | 3 + gradle.properties | 2 +- 260 files changed, 3690 insertions(+), 2357 deletions(-) create mode 100644 .github/workflows/publish.yml create mode 100644 changelog.md delete mode 100644 common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/FactoryDoorModel.java rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/{ => interior}/BigBenDoorModel.java (81%) rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/{ => interior}/BriefcaseDoorModel.java (71%) rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/{ => interior}/BulkHeadDoorModel.java (97%) create mode 100644 common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/CastleShellDoorModel.java rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/{ => interior}/DrifterDoorModel.java (78%) create mode 100644 common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/FactoryDoorModel.java rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/{ => interior}/GroeningDoorModel.java (81%) rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/{ => interior}/GrowthDoorModel.java (70%) create mode 100644 common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/HieroglyphShellDoor.java create mode 100644 common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/LiftShellDoorModel.java rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/{ => interior}/MysticDoorModel.java (85%) rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/{ => interior}/NukaDoorModel.java (79%) rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/{ => interior}/PagodaDoorModel.java (86%) rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/{ => interior}/PhoneBoothDoorModel.java (81%) rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/{ => interior}/PoliceBoxDoorModel.java (82%) rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/{ => interior}/PortalooDoorModel.java (71%) rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/{ => interior}/PresentDoorModel.java (78%) create mode 100644 common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/ShellDoorModel.java rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/{ => interior}/VendingMachineDoorModel.java (74%) delete mode 100644 common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/FactoryShellModel.java delete mode 100644 common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/PoliceBoxModel.java create mode 100644 common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/ShellEntry.java rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/{ => shells}/BigBenShellModel.java (98%) rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/{ => shells}/BriefcaseShellModel.java (92%) create mode 100644 common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/CastleShellModel.java rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/{ => shells}/DrifterShellModel.java (98%) create mode 100644 common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/FactoryShellModel.java rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/{ => shells}/GroeningShellModel.java (96%) rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/{ => shells}/GrowthShellModel.java (97%) create mode 100644 common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/HieroglyphModel.java create mode 100644 common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/LiftShellModel.java rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/{ => shells}/MysticShellModel.java (99%) rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/{ => shells}/NukaShellModel.java (98%) rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/{ => shells}/PagodaShellModel.java (97%) rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/{ => shells}/PhoneBoothModel.java (96%) create mode 100644 common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/PoliceBoxModel.java rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/{ => shells}/PortalooShellModel.java (95%) rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/{ => shells}/PresentShellModel.java (94%) rename common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/{ => shells}/VendingMachineShellModel.java (94%) create mode 100644 common/src/main/java/whocraft/tardis_refined/client/sounds/LoopingSound.java create mode 100644 common/src/main/java/whocraft/tardis_refined/command/arguments/UpgradeArgumentType.java create mode 100644 common/src/main/java/whocraft/tardis_refined/command/sub/LevelCommand.java create mode 100644 common/src/main/java/whocraft/tardis_refined/command/sub/UpgradesCommand.java create mode 100644 common/src/main/java/whocraft/tardis_refined/common/capability/upgrades/IncrementUpgrade.java create mode 100644 common/src/main/java/whocraft/tardis_refined/common/mixin/FogRendererMixin.java rename common/src/main/java/whocraft/tardis_refined/common/network/messages/{SyncIntReactionsMessage.java => SyncTardisClientDataMessage.java} (87%) rename common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/{OpenWayPointsListMessage.java => WaypointsListScreenMessage.java} (88%) create mode 100644 common/src/main/java/whocraft/tardis_refined/common/tardis/manager/AestheticHandler.java create mode 100644 common/src/main/java/whocraft/tardis_refined/common/tardis/manager/BaseHandler.java delete mode 100644 common/src/main/resources/.cache/3fcdc37ad136e2a9e4d043224d2db5bc1dee2659 delete mode 100644 common/src/main/resources/.cache/c8f6ff9084a307ea1af670e22b8331798da837dd delete mode 100644 common/src/main/resources/.cache/fb1d1450e45f24c16ff9548196e396cd1616c0aa delete mode 100644 common/src/main/resources/assets/tardis_refined/lang/en_us.json create mode 100644 common/src/main/resources/assets/tardis_refined/sounds/tardis/ars/ars_hum.ogg create mode 100644 common/src/main/resources/assets/tardis_refined/sounds/tardis/test_hum.ogg rename common/src/main/resources/assets/tardis_refined/textures/blockentity/console/toyota/{toyota_texture_blue.png => toyota_console_blue.png} (100%) rename common/src/main/resources/assets/tardis_refined/textures/blockentity/console/toyota/{toyota_texture_blue_emissive.png => toyota_console_blue_emissive.png} (100%) rename common/src/main/resources/assets/tardis_refined/textures/blockentity/console/toyota/{toyota_texture_purple.png => toyota_console_purple.png} (100%) rename common/src/main/resources/assets/tardis_refined/textures/blockentity/console/toyota/{toyota_texture_purple_emissive.png => toyota_console_purple_emissive.png} (100%) create mode 100644 common/src/main/resources/assets/tardis_refined/textures/blockentity/console/toyota/toyota_console_skulk.png create mode 100644 common/src/main/resources/assets/tardis_refined/textures/blockentity/shell/castle/castle.png create mode 100644 common/src/main/resources/assets/tardis_refined/textures/blockentity/shell/castle/castle_interior.png create mode 100644 common/src/main/resources/assets/tardis_refined/textures/blockentity/shell/hieroglyph/hieroglyph.png create mode 100644 common/src/main/resources/assets/tardis_refined/textures/blockentity/shell/hieroglyph/hieroglyph_interior.png create mode 100644 common/src/main/resources/assets/tardis_refined/textures/blockentity/shell/lift/lift.png create mode 100644 common/src/main/resources/assets/tardis_refined/textures/blockentity/shell/lift/lift_interior.png create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/desktops/shalka.png create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/alt_hexagon_frame_obtained.mcmeta create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/alt_hexagon_frame_obtained.png create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/alt_hexagon_frame_unobtained.mcmeta create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/alt_hexagon_frame_unobtained.png create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/box_obtained.mcmeta create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/box_obtained.png create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/box_unobtained.mcmeta create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/box_unobtained.png create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/exterior_frame_blue.mcmeta create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/exterior_frame_blue.png create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/exterior_frame_obtained.mcmeta create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/exterior_frame_obtained.png create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/exterior_frame_unobtained.mcmeta create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/exterior_frame_unobtained.png create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/gallifreyan_frame_obtained.mcmeta create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/gallifreyan_frame_obtained.png create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/gallifreyan_frame_unobtained.png create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/lock.mcmeta create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/lock.png create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/upgrade_frame_obtained.mcmeta create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/upgrade_frame_obtained.png create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/upgrade_frame_unobtained.mcmeta create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/upgrade_frame_unobtained.png delete mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/upgrades/widgets.png create mode 100644 common/src/main/resources/data/tardis_refined/structures/desktop/shalka.nbt delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/desktops/copper.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/desktops/coral.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/desktops/crystal.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/desktops/factory.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/desktops/future_nostalgia.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/desktops/nuka.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/desktops/toyota.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/desktops/victorian.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/desktops/violet_eye.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/patterns/console/copper.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/patterns/console/coral.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/patterns/console/crystal.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/patterns/console/factory.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/patterns/console/initiative.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/patterns/console/myst.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/patterns/console/nuka.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/patterns/console/toyota.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/patterns/console/victorian.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/patterns/shell/big_ben.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/patterns/shell/briefcase.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/patterns/shell/drifter.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/patterns/shell/mystic.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/patterns/shell/nuka.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/patterns/shell/pagoda.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/patterns/shell/phone_booth.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/patterns/shell/police_box.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/patterns/shell/portaloo.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/patterns/shell/present.json delete mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/patterns/shell/vending.json create mode 100644 common/src/main/resources/data/tardis_refined/tardis_refined/structures/corridors/corridor_hub_roomless.nbt delete mode 100644 forge/src/generated/.cache/0533c97ce5395f38717098a1ca49d72068853e57 delete mode 100644 forge/src/generated/.cache/07cdbcdc6e4f4553ae9ccc48cd1ff0a5be53a01c delete mode 100644 forge/src/generated/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 delete mode 100644 forge/src/generated/.cache/1605092b5c78c792538553a3583c4f114827efd2 delete mode 100644 forge/src/generated/.cache/3fcdc37ad136e2a9e4d043224d2db5bc1dee2659 delete mode 100644 forge/src/generated/.cache/735031f3addf80804addae5e3f53249900116f1e delete mode 100644 forge/src/generated/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e delete mode 100644 forge/src/generated/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 delete mode 100644 forge/src/generated/.cache/c8f6ff9084a307ea1af670e22b8331798da837dd delete mode 100644 forge/src/generated/.cache/e7bc600dadd489865d6fbbde8c1c01bd136d8060 delete mode 100644 forge/src/generated/.cache/f681b33583ec37ab445ac361e38402e069dc01f6 delete mode 100644 forge/src/generated/.cache/fb1d1450e45f24c16ff9548196e396cd1616c0aa create mode 100644 forge/src/generated/resources/assets/tardis_refined/particles/ars_leaves.json create mode 100644 forge/src/generated/resources/data/tardis_refined/tardis_refined/desktops/shalka.json rename common/src/main/resources/data/tardis_refined/tardis_refined/patterns/shell/growth.json => forge/src/generated/resources/data/tardis_refined/tardis_refined/patterns/shell/castle.json (59%) rename common/src/main/resources/data/tardis_refined/tardis_refined/patterns/shell/groening.json => forge/src/generated/resources/data/tardis_refined/tardis_refined/patterns/shell/hieroglyph.json (57%) rename common/src/main/resources/data/tardis_refined/tardis_refined/patterns/shell/factory.json => forge/src/generated/resources/data/tardis_refined/tardis_refined/patterns/shell/lift.json (59%) create mode 100644 forge/src/main/java/whocraft/tardis_refined/commands/ForgeTRCommands.java diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 000000000..60ff2b554 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,31 @@ +name: Publish to Maven Repository + +on: + push: + branches: + - minecraft/1.20 + +jobs: + publish: + runs-on: ubuntu-latest + + steps: + - name: Checkout Repository + uses: actions/checkout@v2 + + - name: Set up JDK + uses: actions/setup-java@v2 + with: + distribution: 'adopt' + java-version: '17' + + - name: Make Gradlew Executable + run: chmod +x ./gradlew + + - name: Build and Publish + run: | + ./gradlew publish + + env: + MAVEN_REPO_USERNAME: ${{ secrets.MAVEN_REPO_USERNAME }} + MAVEN_REPO_PASSWORD: ${{ secrets.MAVEN_REPO_PASSWORD }} diff --git a/build.gradle b/build.gradle index baacdf526..863856a66 100644 --- a/build.gradle +++ b/build.gradle @@ -20,19 +20,37 @@ subprojects { minecraft "com.mojang:minecraft:${rootProject.minecraft_version}" mappings loom.layered() { officialMojangMappings() - // parchment("org.parchmentmc.data:parchment-${rootProject.mappings}") + // parchment("org.parchmentmc.data:parchment-${rootProject.mappings}") } implementation group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2' } } +def gitHash = { -> + def stdout = new ByteArrayOutputStream() + exec { + commandLine 'git', 'rev-parse', '--short', 'HEAD' + standardOutput = stdout + } + return stdout.toString().trim() +} + +def gitBranch() { + def branch = "" + def proc = "git rev-parse --abbrev-ref HEAD".execute() + proc.in.eachLine { line -> branch = line } + proc.err.eachLine { line -> println line } + proc.waitFor() + branch +} + allprojects { apply plugin: "java" apply plugin: "architectury-plugin" apply plugin: "maven-publish" archivesBaseName = rootProject.jar_name - version = "${rootProject.minecraft_version}-${rootProject.mod_version}" + version = "${rootProject.minecraft_version}-${rootProject.mod_version}-${gitHash()}-${gitBranch()}" group = rootProject.maven_group repositories { @@ -51,6 +69,7 @@ allprojects { dirs '../modlibs' } + } tasks.withType(JavaCompile) { @@ -61,4 +80,4 @@ allprojects { java { withSourcesJar() } -} +} \ No newline at end of file diff --git a/changelog.md b/changelog.md new file mode 100644 index 000000000..866674989 --- /dev/null +++ b/changelog.md @@ -0,0 +1,88 @@ +## Upgrades +- ARS Tree now grows with the percentage of upgrades unlocked +- External Shell Configuration now locked behind Upgrades +- x1000 Increment now locked behind upgrades +- x2500 Increment now introduced and locked behind upgrades +- x5000 Increment now introduced and locked behind upgrades +- Added Waypoints +- Added Co-ordinate Input (This might make you lazy people happy, but you are going to hell and back to get it) +- Landing Pad now locked behind upgrades + +## Particles +#### Additions +- Added ARS Leaves Particles +- Crashed TARDIS now emits smokey particles as if room is overflowing with smoke +- Root Plant now emits particles when growing to indicate to the user that they are doing it correctly + +## Sounds +#### Updates +- Added ARS Room sound +- Added Destination Ding noise, plays when TARDIS initially starts landing +- TARDIS flight noise now loops via LoopingSound + +## Commands +#### Additions +- Introduced Upgrades command to unlock/lock TARDIS Upgrades +- Introduced Points command to set TARDIS xp/points + +## Shells +#### Updates +- Updated Police Box Shell Model +- Updated Factory Shell Model +#### Additions +- Added Lift Shell +- Added Hieroglyph +- Added Castle +#### Removals +- Removed Police Box "Marbles" Pattern due to Model Change +- Removed Police Box "Gaudy" Pattern due to Model Change +- Removed Police Box "Metal" Pattern due to Model Change +- Removed Police Box "Stone" Pattern due to Model Change +- Removed Police Box "Red" Pattern due to Model Change + +## Crafting +- Bulkhead doors can now be crafted + +## Consoles +#### Additions +- Updated all Toyota Pattern Textures +#### Updates +- Updated Nuka Default Pattern + +## Interiors +- Added Shalka Interior + +## TARDIS Growth Process +- Players must now use Shears to unlock the growth stage TARDIS + +## Rooms +- ARS Room is back under mod protection +- ARS Room Tree grows as the user upgrades their TARDIS (will degrow if addons add new upgrades as it is calculated with upgrade unlock percentage) + +## Immersive Portals (Fabric) +- Fixed bug where users could not leave via Immersive Portals portals due to a sizing issue + +## Quality of Life +- Interior doors and Shells now hold their own data instead of taking it from their related dimension +- Shell animations now play in Shell Selection Screen +- Sounds that loop are now handled differently, improving performance +- Root shell now only creates the TARDIS dimension when sheared (Hi Performance gains!) +- TARDIS interior is now air instead of growth stone + + +# Bugs +- Fix GlobalDoorBlock deleting the player held item when interacted with +- Fix unexpected behaviour with ConsoleConfigurator console removal logic and change theme +- Fixed console removal running the interaction twice and causing the configurator to change its console theme +- Fixed console changing not updating control positions and sizes +- Fixed various screens hard crashing the server +- Fixed BulkHeadDoor deleting blocks around it when placed, you can no longer place it unless there is enough room + + +## API +#### Additions +- Added TARDIS Upgrade Unlocked Event +- Allows other mods to add: Shells, Patterns, Desktops, Consoles, Upgrades + + + diff --git a/common/src/main/java/whocraft/tardis_refined/api/event/TardisEvents.java b/common/src/main/java/whocraft/tardis_refined/api/event/TardisEvents.java index ebc09376d..46046c3ad 100644 --- a/common/src/main/java/whocraft/tardis_refined/api/event/TardisEvents.java +++ b/common/src/main/java/whocraft/tardis_refined/api/event/TardisEvents.java @@ -7,9 +7,14 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.upgrades.Upgrade; +import whocraft.tardis_refined.common.entity.ControlEntity; import whocraft.tardis_refined.common.tardis.ExteriorShell; import whocraft.tardis_refined.common.tardis.TardisNavLocation; -import whocraft.tardis_refined.common.tardis.themes.ShellTheme; +import whocraft.tardis_refined.common.tardis.control.Control; + +import java.util.List; +import java.util.function.Function; public class TardisEvents { @@ -51,6 +56,37 @@ public class TardisEvents { } })); + public static final Event UPGRADE_UNLOCKED = new Event<>(UpgradeUnlocked.class, listeners -> ((tardisLevelOperator, upgrade) -> { + for (UpgradeUnlocked listener : listeners) { + listener.onUpgradeUnlock(tardisLevelOperator, upgrade); + } + })); + + + /** + * Represents an event that allows checking whether player control can be used. + */ + public static final Event PLAYER_CONTROL_INTERACT = new Event<>(CanControlBeUsed.class, listeners -> (tardisLevelOperator, control, controlEntity) -> Event.result(listeners, takeOff -> takeOff.canControlBeUsed(tardisLevelOperator, control, controlEntity))); + + + /** + * Functional interface to define the conditions for using player control. + */ + @FunctionalInterface + public interface CanControlBeUsed { + + /** + * Checks whether player control can be used based on specified parameters. + * + * @param tardisLevelOperator The Tardis level operator. + * @param control The control to be used. + * @param controlEntity The entity associated with the control. + * @return True if control can be used, false otherwise. + */ + EventResult canControlBeUsed(TardisLevelOperator tardisLevelOperator, Control control, ControlEntity controlEntity); + } + + /** * An event that is triggered when a TARDIS takes off. */ @@ -153,4 +189,18 @@ public interface TardisCrash { */ void onTardisCrash(TardisLevelOperator tardisLevelOperator, TardisNavLocation crashLocation); } + + /** + * An event that is triggered when a TARDIS unlocks a new Upgrade. + */ + @FunctionalInterface + public interface UpgradeUnlocked { + /** + * Called when a TARDIS unlocks a new Upgrade. + * + * @param tardisLevelOperator The TARDIS Level Operator. + * @param upgrade The Upgrade + */ + void onUpgradeUnlock(TardisLevelOperator tardisLevelOperator, Upgrade upgrade); + } } diff --git a/common/src/main/java/whocraft/tardis_refined/client/ModelRegistry.java b/common/src/main/java/whocraft/tardis_refined/client/ModelRegistry.java index bfbdcf78d..2a6601682 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/ModelRegistry.java +++ b/common/src/main/java/whocraft/tardis_refined/client/ModelRegistry.java @@ -6,11 +6,11 @@ import net.minecraft.resources.ResourceLocation; import whocraft.tardis_refined.TardisRefined; import whocraft.tardis_refined.client.model.blockentity.console.*; -import whocraft.tardis_refined.client.model.blockentity.door.*; +import whocraft.tardis_refined.client.model.blockentity.door.interior.*; import whocraft.tardis_refined.client.model.blockentity.life.ArsEggModel; -import whocraft.tardis_refined.client.model.blockentity.shell.*; import whocraft.tardis_refined.client.model.blockentity.shell.internal.door.RootShellDoorModel; import whocraft.tardis_refined.client.model.blockentity.shell.rootplant.*; +import whocraft.tardis_refined.client.model.blockentity.shell.shells.*; import whocraft.tardis_refined.common.util.PlatformWarning; import java.util.function.Supplier; @@ -49,6 +49,9 @@ public class ModelRegistry { public static ModelLayerLocation GROWTH_SHELL; public static ModelLayerLocation PORTALOO_SHELL; public static ModelLayerLocation PAGODA_SHELL; + public static ModelLayerLocation LIFT_SHELL; + public static ModelLayerLocation HIEROGLYPH_SHELL; + public static ModelLayerLocation CASTLE_SHELL; public static ModelLayerLocation ROOT_SHELL_DOOR; @@ -66,6 +69,9 @@ public class ModelRegistry { public static ModelLayerLocation GROWTH_DOOR; public static ModelLayerLocation PORTALOO_DOOR; public static ModelLayerLocation PAGODA_DOOR; + public static ModelLayerLocation LIFT_DOOR; + public static ModelLayerLocation HIEROGLYPH_DOOR; + public static ModelLayerLocation CASTLE_DOOR; public static ModelLayerLocation ARS_EGG; @@ -103,6 +109,9 @@ public static void init() { GROWTH_SHELL = register(new ModelLayerLocation(new ResourceLocation(TardisRefined.MODID, "growth_shell"), "growth_shell"), GrowthShellModel::createBodyLayer); PORTALOO_SHELL = register(new ModelLayerLocation(new ResourceLocation(TardisRefined.MODID, "portaloo_shell"), "portaloo_shell"), PortalooShellModel::createBodyLayer); PAGODA_SHELL = register(new ModelLayerLocation(new ResourceLocation(TardisRefined.MODID, "pagoda_shell"), "pagoda_shell"), PagodaShellModel::createBodyLayer); + LIFT_SHELL = register(new ModelLayerLocation(new ResourceLocation(TardisRefined.MODID, "lift_shell"), "lift_shell"), LiftShellModel::createBodyLayer); + HIEROGLYPH_SHELL = register(new ModelLayerLocation(new ResourceLocation(TardisRefined.MODID, "hieroglyph_shell"), "hieroglyph_shell"), HieroglyphModel::createBodyLayer); + CASTLE_SHELL = register(new ModelLayerLocation(new ResourceLocation(TardisRefined.MODID, "castle_shell"), "castle_shell"), CastleShellModel::createBodyLayer); ROOT_SHELL_DOOR = register(new ModelLayerLocation(new ResourceLocation(TardisRefined.MODID, "root_shell_door"), "root_shell_door"), RootShellDoorModel::createBodyLayer); @@ -120,6 +129,9 @@ public static void init() { GROWTH_DOOR = register(new ModelLayerLocation(new ResourceLocation(TardisRefined.MODID, "growth_door"), "growth_door"), GrowthDoorModel::createBodyLayer); PORTALOO_DOOR = register(new ModelLayerLocation(new ResourceLocation(TardisRefined.MODID, "portaloo_door"), "portaloo_door"), PortalooDoorModel::createBodyLayer); PAGODA_DOOR = register(new ModelLayerLocation(new ResourceLocation(TardisRefined.MODID, "pagoda_door"), "pagoda_door"), PagodaDoorModel::createBodyLayer); + LIFT_DOOR = register(new ModelLayerLocation(new ResourceLocation(TardisRefined.MODID, "lift_door"), "lift_door"), LiftShellDoorModel::createBodyLayer); + HIEROGLYPH_DOOR = register(new ModelLayerLocation(new ResourceLocation(TardisRefined.MODID, "hieroglyph_door"), "hieroglyph_door"), HieroglyphShellDoor::createBodyLayer); + CASTLE_DOOR = register(new ModelLayerLocation(new ResourceLocation(TardisRefined.MODID, "castle_door"), "castle_door"), CastleShellDoorModel::createBodyLayer); diff --git a/common/src/main/java/whocraft/tardis_refined/client/ParticleGallifrey.java b/common/src/main/java/whocraft/tardis_refined/client/ParticleGallifrey.java index 6e2229e65..ca1304202 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/ParticleGallifrey.java +++ b/common/src/main/java/whocraft/tardis_refined/client/ParticleGallifrey.java @@ -3,6 +3,7 @@ import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.particle.*; import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.util.Mth; public class ParticleGallifrey extends BaseAshSmokeParticle { @@ -51,4 +52,22 @@ public Particle createParticle(SimpleParticleType arg, ClientLevel arg2, double return particleGallifrey; } } + + public static class ARSVinesParticle implements ParticleProvider { + private final SpriteSet sprite; + + public ARSVinesParticle(SpriteSet arg) { + this.sprite = arg; + } + + @Override + public Particle createParticle(SimpleParticleType arg, ClientLevel arg2, double d, double e, double f, double g, double h, double i) { + SuspendedParticle suspendedParticle = new SuspendedParticle(arg2, this.sprite, d, e, f, 0.0, -0.8f, 0.0); + suspendedParticle.setLifetime(Mth.randomBetweenInclusive(arg2.random, 500, 1000)); + suspendedParticle.gravity = 0.01f; + suspendedParticle.setColor(0.4F, 0.4F, 0.7F); + return suspendedParticle; + } + + } } diff --git a/common/src/main/java/whocraft/tardis_refined/client/ScreenHandler.java b/common/src/main/java/whocraft/tardis_refined/client/ScreenHandler.java index 5a97c8692..61ee75717 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/ScreenHandler.java +++ b/common/src/main/java/whocraft/tardis_refined/client/ScreenHandler.java @@ -3,11 +3,17 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.Minecraft; +import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.Level; +import whocraft.tardis_refined.client.screen.CancelDesktopScreen; +import whocraft.tardis_refined.client.screen.MonitorScreen; +import whocraft.tardis_refined.client.screen.upgrades.UpgradesScreen; import whocraft.tardis_refined.client.screen.waypoints.CoordInputType; import whocraft.tardis_refined.client.screen.waypoints.WaypointListScreen; import whocraft.tardis_refined.client.screen.waypoints.WaypointManageScreen; +import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.upgrades.UpgradeHandler; import whocraft.tardis_refined.common.tardis.TardisNavLocation; import java.util.Collection; @@ -26,4 +32,32 @@ public static void setWaypointScreen(Collection waypoints) { public static void setCoordinatesScreen(List> levels, CoordInputType coordInputType, TardisNavLocation tardisNavLocation) { Minecraft.getInstance().setScreen(new WaypointManageScreen(levels, coordInputType, tardisNavLocation)); } + + @Environment(EnvType.CLIENT) + public static void openMonitorScreen(boolean desktopGenerating, CompoundTag upgradeHandlerNbt, TardisNavLocation currentLocation, TardisNavLocation targetLocation) { + if (desktopGenerating) { + Minecraft.getInstance().setScreen(new CancelDesktopScreen()); + } else { + UpgradeHandler upgradeHandlerClient = new UpgradeHandler(new TardisLevelOperator(Minecraft.getInstance().level)); + upgradeHandlerClient.loadData(upgradeHandlerNbt); + Minecraft.getInstance().setScreen(new MonitorScreen(currentLocation, targetLocation, upgradeHandlerClient)); + } + } + + @Environment(EnvType.CLIENT) + public static void openCoordinatesScreen(List> levels, CoordInputType coordInputType, TardisNavLocation tardisNavLocation) { + ScreenHandler.setCoordinatesScreen(levels, coordInputType, tardisNavLocation); + } + + @Environment(EnvType.CLIENT) + public static void displayUpgradesScreen(CompoundTag upgradeTag) { + UpgradeHandler upgradeHandlerClient = new UpgradeHandler(new TardisLevelOperator(Minecraft.getInstance().level)); + upgradeHandlerClient.loadData(upgradeTag); + + if (Minecraft.getInstance().screen instanceof UpgradesScreen screen && screen.selectedTab != null) { + screen.selectedTab.populate(upgradeHandlerClient); + } else { + Minecraft.getInstance().setScreen(new UpgradesScreen(upgradeHandlerClient)); + } + } } diff --git a/common/src/main/java/whocraft/tardis_refined/client/TRParticles.java b/common/src/main/java/whocraft/tardis_refined/client/TRParticles.java index 9ab58b126..b4ae64079 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/TRParticles.java +++ b/common/src/main/java/whocraft/tardis_refined/client/TRParticles.java @@ -1,7 +1,6 @@ package whocraft.tardis_refined.client; import dev.architectury.injectables.annotations.ExpectPlatform; -import net.minecraft.core.Registry; import net.minecraft.core.particles.ParticleType; import net.minecraft.core.particles.SimpleParticleType; import net.minecraft.core.registries.Registries; @@ -14,6 +13,7 @@ public class TRParticles { public static final DeferredRegistry> TYPES = DeferredRegistry.create(TardisRefined.MODID, Registries.PARTICLE_TYPE); public static final RegistrySupplier GALLIFREY = TYPES.register("gallifrey", TRParticles::getParticleType); + public static final RegistrySupplier ARS_LEAVES = TYPES.register("ars_leaves", TRParticles::getParticleType); @ExpectPlatform diff --git a/common/src/main/java/whocraft/tardis_refined/client/TardisClientData.java b/common/src/main/java/whocraft/tardis_refined/client/TardisClientData.java index cde983e3e..091efed29 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/TardisClientData.java +++ b/common/src/main/java/whocraft/tardis_refined/client/TardisClientData.java @@ -3,19 +3,27 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import net.minecraft.Util; import net.minecraft.client.Minecraft; +import net.minecraft.client.sounds.SoundManager; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.RandomSource; import net.minecraft.world.entity.AnimationState; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; -import whocraft.tardis_refined.common.network.messages.SyncIntReactionsMessage; +import net.minecraft.world.phys.Vec3; +import whocraft.tardis_refined.client.sounds.LoopingSound; +import whocraft.tardis_refined.common.network.messages.SyncTardisClientDataMessage; import whocraft.tardis_refined.common.tardis.themes.ShellTheme; -import whocraft.tardis_refined.constants.NbtConstants; -import whocraft.tardis_refined.patterns.ShellPattern; import whocraft.tardis_refined.patterns.ShellPatterns; +import whocraft.tardis_refined.registry.DimensionTypes; import java.util.Map; +import static whocraft.tardis_refined.common.util.TardisHelper.isInArsArea; + public class TardisClientData { @@ -23,7 +31,8 @@ public class TardisClientData { public AnimationState ROTOR_ANIMATION = new AnimationState(); public AnimationState LANDING_ANIMATION = new AnimationState(); public AnimationState TAKEOFF_ANIMATION = new AnimationState(); - public TardisClientData(ResourceKey resourceKey){ + + public TardisClientData(ResourceKey resourceKey) { this.levelKey = resourceKey; } @@ -43,23 +52,24 @@ public ResourceKey getLevelKey() { private boolean isOnCooldown = false; private float flightShakeScale = 0; private ResourceLocation shellTheme = ShellTheme.FACTORY.getId(); - private ShellPattern shellPattern = ShellPatterns.DEFAULT; + private ResourceLocation shellPattern = ShellPatterns.DEFAULT.id(); -// private ShellPattern safeGrabPattern() { -// if (ShellPatterns.getRegistry().isEmpty()) -// return ShellPatterns.getPatternsForThemeDefault(shellTheme).get(0); -// return ShellPatterns.getPatternsForTheme(shellTheme).get(0); -// } + public ResourceLocation getShellTheme() { + return shellTheme; + } - public TardisClientData setShellPattern(ShellPattern shellPattern) { - this.shellPattern = shellPattern; - return this; + public void setShellTheme(ResourceLocation shellTheme) { + this.shellTheme = shellTheme; } - public ShellPattern shellPattern() { + public ResourceLocation getShellPattern() { return shellPattern; } + public void setShellPattern(ResourceLocation shellPattern) { + this.shellPattern = shellPattern; + } + public int landingTime = 0, takeOffTime = 0; public void setFlying(boolean flying) { @@ -78,26 +88,53 @@ public boolean isThrottleDown() { return throttleDown; } - public void setIsLanding(boolean landing) {this.isLanding = landing;} - public boolean isLanding() {return isLanding;} + public void setIsLanding(boolean landing) { + this.isLanding = landing; + } - public void setIsTakingOff(boolean takingOff) {this.isTakingOff = takingOff;} - public boolean isTakingOff() {return isTakingOff;} + public boolean isLanding() { + return isLanding; + } - public void setInDangerZone(boolean isInDangerZone) {this.isInDangerZone = isInDangerZone;} - public boolean isInDangerZone() {return isInDangerZone;} + public void setIsTakingOff(boolean takingOff) { + this.isTakingOff = takingOff; + } - public void setIsCrashing(boolean isCrashing) {this.isCrashing = isCrashing;} - public boolean isCrashing() {return isCrashing;} + public boolean isTakingOff() { + return isTakingOff; + } - public void setIsOnCooldown(boolean isCooldown) {this.isOnCooldown = isCooldown;} - public boolean isOnCooldown() {return isOnCooldown;} + public void setInDangerZone(boolean isInDangerZone) { + this.isInDangerZone = isInDangerZone; + } - public void setFlightShakeScale(float scale) {this.flightShakeScale = scale;} - public float flightShakeScale() {return flightShakeScale;} + public boolean isInDangerZone() { + return isInDangerZone; + } - public void setShellTheme(ResourceLocation theme) {this.shellTheme = theme;} - public ResourceLocation getShellTheme() {return this.shellTheme;} + public void setIsCrashing(boolean isCrashing) { + this.isCrashing = isCrashing; + } + + public boolean isCrashing() { + return isCrashing; + } + + public void setIsOnCooldown(boolean isCooldown) { + this.isOnCooldown = isCooldown; + } + + public boolean isOnCooldown() { + return isOnCooldown; + } + + public void setFlightShakeScale(float scale) { + this.flightShakeScale = scale; + } + + public float flightShakeScale() { + return flightShakeScale; + } /** * Serializes the Tardis instance to a CompoundTag. @@ -111,16 +148,12 @@ public CompoundTag serializeNBT() { compoundTag.putBoolean("throttleDown", throttleDown); compoundTag.putBoolean("isLanding", isLanding); compoundTag.putBoolean("isTakingOff", isTakingOff); - if (shellTheme != null) - compoundTag.putString("shellTheme", shellTheme.toString()); compoundTag.putBoolean("isInDangerZone", this.isInDangerZone); compoundTag.putFloat("flightShakeScale", this.flightShakeScale); compoundTag.putBoolean("isOnCooldown", this.isOnCooldown); - - if (this.shellTheme != null) { - if ( this.shellPattern != null) - compoundTag.putString(NbtConstants.TARDIS_EXT_CURRENT_PATTERN, shellPattern.id().toString()); - } + // Save shellTheme and shellPattern + compoundTag.putString("shellTheme", shellTheme.toString()); + compoundTag.putString("shellPattern", shellPattern.toString()); return compoundTag; } @@ -135,15 +168,13 @@ public void deserializeNBT(CompoundTag compoundTag) { throttleDown = compoundTag.getBoolean("throttleDown"); isLanding = compoundTag.getBoolean("isLanding"); isTakingOff = compoundTag.getBoolean("isTakingOff"); - if (compoundTag.contains("shellTheme")) - shellTheme = new ResourceLocation(compoundTag.getString("shellTheme")); isInDangerZone = compoundTag.getBoolean("isInDangerZone"); flightShakeScale = compoundTag.getFloat("flightShakeScale"); isOnCooldown = compoundTag.getBoolean("isOnCooldown"); - if (compoundTag.getString(NbtConstants.TARDIS_EXT_CURRENT_PATTERN) != null) { - this.shellPattern = ShellPatterns.getPatternOrDefault(shellTheme, new ResourceLocation(compoundTag.getString(NbtConstants.TARDIS_EXT_CURRENT_PATTERN))); - } + // Load shellTheme and shellPattern + shellTheme = new ResourceLocation(compoundTag.getString("shellTheme")); + shellPattern = new ResourceLocation(compoundTag.getString("shellPattern")); } @@ -152,10 +183,14 @@ public void deserializeNBT(CompoundTag compoundTag) { * server-side, as calling it client-side may cause the game to crash. */ public void sync() { - new SyncIntReactionsMessage(getLevelKey(), serializeNBT()).sendToAll(); + new SyncTardisClientDataMessage(getLevelKey(), serializeNBT()).sendToAll(); } public void tickClientside() { + + SoundManager soundManager = Minecraft.getInstance().getSoundManager(); + + if (isTakingOff()) { takeOffTime++; landingTime = 0; @@ -168,6 +203,32 @@ public void tickClientside() { } + if (Minecraft.getInstance().player.level().dimensionTypeId() == DimensionTypes.TARDIS) { + createWorldAmbience(Minecraft.getInstance().player); + + + if (LoopingSound.ARS_HUMMING == null) { + LoopingSound.setupSounds(); + } + + if (isInArsArea(Minecraft.getInstance().player.blockPosition())) { + if (!soundManager.isActive(LoopingSound.ARS_HUMMING)) { + LoopingSound.ARS_HUMMING.setLocation(new Vec3(1024, 100, 16)); + soundManager.play(LoopingSound.ARS_HUMMING); + } + } + + if(!soundManager.isActive(LoopingSound.HUM_TEST)){ + soundManager.play(LoopingSound.HUM_TEST); + } + } + + + if (LoopingSound.shouldMinecraftMusicStop(soundManager)) { + Minecraft.getInstance().getMusicManager().stopPlaying(); + } + + // Responsible for screen-shake. Not sure of a better solution at this point in time. if (isInDangerZone || isCrashing) { if (Minecraft.getInstance().player.level().dimension() == levelKey) { @@ -180,6 +241,7 @@ public void tickClientside() { } + /** * Updates the Tardis instance. This method is called manually from the SyncIntReactionsMessage message. */ @@ -236,7 +298,7 @@ public static void add(TardisClientData tardisClientData, ResourceKey lev * @param levelResourceKey The resource key of the level the Tardis is in. * @return The TardisIntReactions instance containing information about the Tardis. */ - public static TardisClientData getInstance(ResourceKey levelResourceKey){ + public static TardisClientData getInstance(ResourceKey levelResourceKey) { // Check if the map contains information about the Tardis if (DATA.containsKey(levelResourceKey)) { // If the map contains information about the Tardis, return it @@ -262,12 +324,13 @@ public static void clearAll() { /** * Called by platform-specific methods + * * @param client Minecraft client */ public static void tickClientData(Minecraft client) { // Inelegant solution, please revise if (client.level == null || client.isPaused()) { - if(!TardisClientData.getAllEntries().isEmpty() && !client.isPaused()) { + if (!TardisClientData.getAllEntries().isEmpty() && !client.isPaused()) { TardisClientData.clearAll(); } return; @@ -275,4 +338,33 @@ public static void tickClientData(Minecraft client) { TardisClientData.getAllEntries().forEach((levelResourceKey, tardisClientData) -> tardisClientData.tickClientside()); } + + private static void createWorldAmbience(Player player) { + if (player.tickCount % 120 == 0 && !isInArsArea(player.blockPosition())) return; + RandomSource random = player.level().random; + Level level = player.level(); + double originX = player.getX(); + double originY = player.getY(); + double originZ = player.getZ(); + for (int i = 0; i < 5; i++) { + double particleX = originX + (random.nextInt(24) - random.nextInt(24)); + double particleY = originY + (random.nextInt(24) - random.nextInt(24)); + double particleZ = originZ + (random.nextInt(24) - random.nextInt(24)); + double velocityX = (random.nextDouble() - 0.5) * 0.02; + double velocityY = (random.nextDouble() - 0.5) * 0.02; + double velocityZ = (random.nextDouble() - 0.5) * 0.02; + if (isInArsArea(new BlockPos((int) particleX, (int) particleY, (int) particleZ))) { + level.addParticle(TRParticles.ARS_LEAVES.get(), particleX, particleY, particleZ, velocityX, velocityY, velocityZ); + level.addParticle(ParticleTypes.END_ROD, particleX, particleY, particleZ, velocityX, velocityY, velocityZ); + } + } + } + + public Vec3 fogColor(boolean isCrashing) { + if (isCrashing) { + return new Vec3(1, 0, 0); + } + return new Vec3(0.14F, 0.15F, 0.22F); + } + } diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/FactoryDoorModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/FactoryDoorModel.java deleted file mode 100644 index eecc792d3..000000000 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/FactoryDoorModel.java +++ /dev/null @@ -1,84 +0,0 @@ -package whocraft.tardis_refined.client.model.blockentity.door; - - -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import net.minecraft.client.model.geom.ModelPart; -import net.minecraft.client.model.geom.PartPose; -import net.minecraft.client.model.geom.builders.*; -import net.minecraft.world.entity.Entity; -import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; -import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; - -public class FactoryDoorModel extends ShellModel { - - private final ModelPart root; - private final ModelPart leftDoor; - private final ModelPart rightDoor; - - public FactoryDoorModel(ModelPart root) { - super(root); - this.root = root.getChild("root"); - this.leftDoor = this.root.getChild("left_door"); - this.rightDoor = this.root.getChild("right_door"); - } - - public static LayerDefinition createBodyLayer() { - MeshDefinition meshdefinition = new MeshDefinition(); - PartDefinition partdefinition = meshdefinition.getRoot(); - - PartDefinition root = partdefinition.addOrReplaceChild("root", CubeListBuilder.create().texOffs(18, 45).addBox(-9.0F, -4.0F, -8.0F, 18.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)) - .texOffs(96, 2).addBox(-7.0F, -37.0F, -6.0F, 14.0F, 33.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(19, 17).addBox(-9.0F, -39.0F, -8.0F, 18.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)) - .texOffs(54, 57).addBox(-5.0F, -37.0F, -8.0F, 10.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)) - .texOffs(49, 66).addBox(-9.0F, -37.0F, -7.0F, 2.0F, 33.0F, 2.0F, new CubeDeformation(0.0F)) - .texOffs(13, 66).addBox(7.0F, -37.0F, -7.0F, 2.0F, 33.0F, 2.0F, new CubeDeformation(0.0F)) - .texOffs(19, 52).addBox(-7.0F, -37.0F, -6.1F, 14.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 26.0F, 13.0F)); - - PartDefinition left_door = root.addOrReplaceChild("left_door", CubeListBuilder.create().texOffs(70, 96).addBox(0.0F, -15.0F, -0.6F, 7.0F, 31.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(-7.0F, -20.0F, -5.6F)); - - PartDefinition right_door = root.addOrReplaceChild("right_door", CubeListBuilder.create().texOffs(95, 81).addBox(-7.0F, -15.0F, -0.6F, 7.0F, 31.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(7.0F, -20.0F, -5.6F)); - - ShellModel.splice(partdefinition); - - - return LayerDefinition.create(meshdefinition, 128, 128); - } - - - @Override - public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - root.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - } - - @Override - public ModelPart root() { - return root; - } - - @Override - public void setupAnim(Entity entity, float f, float g, float h, float i, float j) { - - } - - @Override - public void setDoorOpen(boolean open) { - if (open) { - this.leftDoor.yRot = -250f; - this.rightDoor.yRot = 250f; - } else { - this.leftDoor.yRot = 0; - this.rightDoor.yRot = 0; - } - } - - @Override - public boolean isDoorModel() { - return true; - } - - @Override - public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - - } -} \ No newline at end of file diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/BigBenDoorModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/BigBenDoorModel.java similarity index 81% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/BigBenDoorModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/BigBenDoorModel.java index d15924901..65ae3beab 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/BigBenDoorModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/BigBenDoorModel.java @@ -1,6 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.door;// Made with Blockbench 4.5.2 -// Exported for Minecraft version 1.17 - 1.18 with Mojang mappings -// Paste this class into your mod and generate all required imports +package whocraft.tardis_refined.client.model.blockentity.door.interior; import com.mojang.blaze3d.vertex.PoseStack; @@ -8,11 +6,10 @@ import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.*; -import net.minecraft.world.entity.Entity; import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; -import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; +import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; -public class BigBenDoorModel extends ShellModel { +public class BigBenDoorModel extends ShellDoorModel { private final ModelPart root; private final ModelPart door; private final ModelPart bone27; @@ -21,23 +18,11 @@ public class BigBenDoorModel extends ShellModel { private final ModelPart bb_main; @Override - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { this.door.yRot = (open) ? -275f : 0; - - } - - @Override - public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - - } - - @Override - public boolean isDoorModel() { - return true; } public BigBenDoorModel(ModelPart root) { - super(root); this.root = root; this.door = root.getChild("door"); this.bone27 = root.getChild("bone27"); @@ -79,13 +64,13 @@ public static LayerDefinition createBodyLayer() { .texOffs(0, 0).addBox(-7.0F, -57.0F, 5.0F, 14.0F, 57.0F, 3.0F, new CubeDeformation(0.0F)) .texOffs(35, 0).addBox(-7.0F, -35.0F, 6.25F, 14.0F, 35.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F)); - ShellModel.splice(partdefinition); + ShellModel.addMaterializationPart(partdefinition); return LayerDefinition.create(meshdefinition, 128, 128); } @Override - public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + public void renderInteriorDoor(GlobalDoorBlockEntity doorBlockEntity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); bone27.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); bone5.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); @@ -97,9 +82,4 @@ public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, i public ModelPart root() { return this.root; } - - @Override - public void setupAnim(Entity entity, float f, float g, float h, float i, float j) { - - } } \ No newline at end of file diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/BriefcaseDoorModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/BriefcaseDoorModel.java similarity index 71% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/BriefcaseDoorModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/BriefcaseDoorModel.java index 94c8593f4..a72634e0b 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/BriefcaseDoorModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/BriefcaseDoorModel.java @@ -1,15 +1,14 @@ -package whocraft.tardis_refined.client.model.blockentity.door; +package whocraft.tardis_refined.client.model.blockentity.door.interior; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.*; -import net.minecraft.world.entity.Entity; import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; -import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; +import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; -public class BriefcaseDoorModel extends ShellModel { +public class BriefcaseDoorModel extends ShellDoorModel { private final ModelPart root; private final ModelPart door_open; @@ -19,27 +18,18 @@ public class BriefcaseDoorModel extends ShellModel { private boolean isDoorOpen; @Override - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { this.isDoorOpen = open; } - @Override - public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - - } public BriefcaseDoorModel(ModelPart root) { - super(root); this.root = root; this.door_open = root.getChild("door_open"); this.door_closed = root.getChild("door_closed"); this.bb_main = root.getChild("bb_main"); } - @Override - public boolean isDoorModel() { - return true; - } public static LayerDefinition createBodyLayer() { MeshDefinition meshdefinition = new MeshDefinition(); @@ -54,15 +44,14 @@ public static LayerDefinition createBodyLayer() { PartDefinition cube_r1 = bb_main.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(0, 49).addBox(-7.0F, 1.0F, -2.25F, 14.0F, 48.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -48.0F, 9.25F, -0.1309F, 0.0F, 0.0F)); - ShellModel.splice(partdefinition); + ShellModel.addMaterializationPart(partdefinition); return LayerDefinition.create(meshdefinition, 128, 128); } @Override - public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - + public void renderInteriorDoor(GlobalDoorBlockEntity doorBlockEntity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { if (isDoorOpen) { door_open.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); } else { @@ -77,8 +66,4 @@ public ModelPart root() { return root; } - @Override - public void setupAnim(Entity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { - - } } \ No newline at end of file diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/BulkHeadDoorModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/BulkHeadDoorModel.java similarity index 97% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/BulkHeadDoorModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/BulkHeadDoorModel.java index 94e45dea0..66667cfd0 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/BulkHeadDoorModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/BulkHeadDoorModel.java @@ -1,4 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.door; +package whocraft.tardis_refined.client.model.blockentity.door.interior; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/CastleShellDoorModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/CastleShellDoorModel.java new file mode 100644 index 000000000..ea4e2a23e --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/CastleShellDoorModel.java @@ -0,0 +1,72 @@ +package whocraft.tardis_refined.client.model.blockentity.door.interior; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; + +public class CastleShellDoorModel extends ShellDoorModel { + + private final ModelPart r_door; + private final ModelPart l_door; + private final ModelPart bone8; + + public CastleShellDoorModel(ModelPart root) { + this.r_door = root.getChild("r_door"); + this.l_door = root.getChild("l_door"); + this.bone8 = root.getChild("bone8"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + + PartDefinition r_door = partdefinition.addOrReplaceChild("r_door", CubeListBuilder.create().texOffs(0, 40).mirror().addBox(-0.25F, -16.0F, -0.5F, 8.0F, 32.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(-7.5F, 8.0F, 4.5F)); + + PartDefinition l_door = partdefinition.addOrReplaceChild("l_door", CubeListBuilder.create().texOffs(0, 40).addBox(-7.75F, -16.0F, -0.5F, 8.0F, 32.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(7.5F, 8.0F, 4.5F)); + + PartDefinition bone8 = partdefinition.addOrReplaceChild("bone8", CubeListBuilder.create().texOffs(37, 0).addBox(-10.5F, -36.0F, 7.0F, 3.0F, 36.0F, 3.0F, new CubeDeformation(0.0F)) + .texOffs(37, 0).mirror().addBox(7.5F, -36.0F, 7.0F, 3.0F, 36.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(0, 0).addBox(-7.5F, -36.0F, 7.0F, 15.0F, 36.0F, 3.0F, new CubeDeformation(0.0F)) + .texOffs(19, 40).addBox(-2.5F, -36.0F, 5.0F, 5.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(45, 45).addBox(2.5F, -35.0F, 5.0F, 4.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(34, 40).addBox(6.5F, -36.0F, 5.0F, 4.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(34, 40).mirror().addBox(-10.5F, -36.0F, 5.0F, 4.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(45, 45).mirror().addBox(-6.5F, -35.0F, 5.0F, 4.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(0.0F, 24.0F, -2.0F)); + + PartDefinition bone = bone8.addOrReplaceChild("bone", CubeListBuilder.create().texOffs(34, 40).addBox(7.5F, -4.0F, 5.0F, 4.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(19, 47).addBox(7.5F, -8.0F, 5.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(34, 40).addBox(7.5F, -12.0F, 5.0F, 4.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(19, 47).addBox(7.5F, -16.0F, 5.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(30, 47).addBox(7.5F, -20.0F, 5.0F, 2.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(19, 47).addBox(7.5F, -24.0F, 5.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(30, 47).addBox(7.5F, -28.0F, 5.0F, 2.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(19, 47).addBox(7.5F, -32.0F, 5.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition bone2 = bone8.addOrReplaceChild("bone2", CubeListBuilder.create().texOffs(34, 40).mirror().addBox(-11.5F, -4.0F, 5.0F, 4.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(19, 47).mirror().addBox(-10.5F, -8.0F, 5.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(34, 40).mirror().addBox(-11.5F, -12.0F, 5.0F, 4.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(19, 47).mirror().addBox(-10.5F, -16.0F, 5.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(30, 47).mirror().addBox(-9.5F, -20.0F, 5.0F, 2.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(19, 47).mirror().addBox(-10.5F, -24.0F, 5.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(30, 47).mirror().addBox(-9.5F, -28.0F, 5.0F, 2.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(19, 47).mirror().addBox(-10.5F, -32.0F, 5.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(0.0F, 0.0F, 0.0F)); + + return LayerDefinition.create(meshdefinition, 128, 128); + } + + @Override + public void renderInteriorDoor(GlobalDoorBlockEntity doorBlockEntity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + r_door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + l_door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone8.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + @Override + public void setDoorPosition(boolean open) { + l_door.yRot = open ? (float) Math.toRadians(90) : (float) Math.toRadians(0); + r_door.yRot = open ? (float) Math.toRadians(-90) : (float) Math.toRadians(0); + } +} diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/DrifterDoorModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/DrifterDoorModel.java similarity index 78% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/DrifterDoorModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/DrifterDoorModel.java index a3b7d39b4..137ed72a3 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/DrifterDoorModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/DrifterDoorModel.java @@ -1,6 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.door;// Made with Blockbench 4.5.2 -// Exported for Minecraft version 1.17 - 1.18 with Mojang mappings -// Paste this class into your mod and generate all required imports +package whocraft.tardis_refined.client.model.blockentity.door.interior; import com.mojang.blaze3d.vertex.PoseStack; @@ -10,9 +8,9 @@ import net.minecraft.client.model.geom.builders.*; import net.minecraft.world.entity.Entity; import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; -import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; +import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; -public class DrifterDoorModel extends ShellModel { +public class DrifterDoorModel extends ShellDoorModel { private final ModelPart door_closed; private final ModelPart door_open; @@ -20,7 +18,6 @@ public class DrifterDoorModel extends ShellModel { private final ModelPart root; public DrifterDoorModel(ModelPart root) { - super(root); this.root = root; this.door_closed = root.getChild("door_closed"); this.door_open = root.getChild("door_open"); @@ -47,20 +44,15 @@ public static LayerDefinition createBodyLayer() { PartDefinition bone = main.addOrReplaceChild("bone", CubeListBuilder.create().texOffs(41, 5).addBox(-9.5F, 0.0F, -2.0F, 19.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -34.0F, 6.0F, 0.7418F, 0.0F, 0.0F)); - ShellModel.splice(partdefinition); + ShellModel.addMaterializationPart(partdefinition); return LayerDefinition.create(meshdefinition, 128, 128); } - @Override - public boolean isDoorModel() { - return true; - } - boolean isDoorOpen = false; - @Override - public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + @Override + public void renderInteriorDoor(GlobalDoorBlockEntity doorBlockEntity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { door_open.visible = isDoorOpen; door_closed.visible = !isDoorOpen; @@ -75,14 +67,10 @@ public ModelPart root() { } @Override - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { this.isDoorOpen = open; } - @Override - public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - - } @Override public void setupAnim(Entity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/FactoryDoorModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/FactoryDoorModel.java new file mode 100644 index 000000000..7a0ce3117 --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/FactoryDoorModel.java @@ -0,0 +1,76 @@ +package whocraft.tardis_refined.client.model.blockentity.door.interior; + + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.world.entity.Entity; +import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; + +public class FactoryDoorModel extends ShellDoorModel { + + private final ModelPart root; + private final ModelPart leftDoor; + private final ModelPart rightDoor; + + public FactoryDoorModel(ModelPart root) { + this.root = root; + this.leftDoor = this.root.getChild("left_door"); + this.rightDoor = this.root.getChild("right_door"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + + PartDefinition door = partdefinition.addOrReplaceChild("door", CubeListBuilder.create().texOffs(48, 6).addBox(-9.0F, -4.0F, -8.0F, 18.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)) + .texOffs(0, 0).addBox(-7.0F, -37.0F, -6.0F, 14.0F, 33.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(48, 0).addBox(-9.0F, -39.0F, -8.0F, 18.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)) + .texOffs(48, 17).addBox(-5.0F, -37.0F, -8.0F, 10.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(9, 35).addBox(-9.0F, -37.0F, -7.0F, 2.0F, 33.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(0, 35).addBox(7.0F, -37.0F, -7.0F, 2.0F, 33.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(48, 12).addBox(-7.0F, -37.0F, -6.1F, 14.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 26.0F, 13.0F)); + + PartDefinition bone = door.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, -20.0F, 11.0F, 0.0F, 1.5708F, 0.0F)); + + PartDefinition left_door = partdefinition.addOrReplaceChild("left_door", CubeListBuilder.create().texOffs(31, 33).addBox(0.0F, -15.0F, -0.6F, 7.0F, 31.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(-7.0F, 6.0F, 7.4F)); + + PartDefinition right_door = partdefinition.addOrReplaceChild("right_door", CubeListBuilder.create().texOffs(31, 0).addBox(-7.0F, -15.0F, -0.6F, 7.0F, 31.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(7.0F, 6.0F, 7.4F)); + + return LayerDefinition.create(meshdefinition, 128, 128); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + root.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + @Override + public void renderInteriorDoor(GlobalDoorBlockEntity doorBlockEntity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + root.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + @Override + public ModelPart root() { + return root; + } + + @Override + public void setupAnim(Entity entity, float f, float g, float h, float i, float j) { + + } + + @Override + public void setDoorPosition(boolean open) { + if (open) { + this.leftDoor.yRot = -250f; + this.rightDoor.yRot = 250f; + } else { + this.leftDoor.yRot = 0; + this.rightDoor.yRot = 0; + } + } + +} \ No newline at end of file diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/GroeningDoorModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/GroeningDoorModel.java similarity index 81% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/GroeningDoorModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/GroeningDoorModel.java index cf070bab7..b9587ed1b 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/GroeningDoorModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/GroeningDoorModel.java @@ -1,4 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.door; +package whocraft.tardis_refined.client.model.blockentity.door.interior; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; @@ -7,9 +7,9 @@ import net.minecraft.client.model.geom.builders.*; import net.minecraft.world.entity.Entity; import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; -import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; +import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; -public class GroeningDoorModel extends ShellModel { +public class GroeningDoorModel extends ShellDoorModel { private final ModelPart root; private final ModelPart door; @@ -18,17 +18,11 @@ public class GroeningDoorModel extends ShellModel { private final ModelPart bb_main; @Override - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { this.door.yRot = (open) ? -275f : 0; } - @Override - public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - - } - public GroeningDoorModel(ModelPart root) { - super(root); this.root = root; this.door = root.getChild("door"); this.bone = root.getChild("bone"); @@ -36,11 +30,6 @@ public GroeningDoorModel(ModelPart root) { this.bb_main = root.getChild("bb_main"); } - @Override - public boolean isDoorModel() { - return true; - } - public static LayerDefinition createBodyLayer() { MeshDefinition meshdefinition = new MeshDefinition(); PartDefinition partdefinition = meshdefinition.getRoot(); @@ -59,7 +48,7 @@ public static LayerDefinition createBodyLayer() { PartDefinition bb_main = partdefinition.addOrReplaceChild("bb_main", CubeListBuilder.create().texOffs(0, 0).addBox(-10.5F, -39.0F, 6.0F, 21.0F, 39.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(35, 42).addBox(-9.0F, -39.0F, 3.025F, 18.0F, 5.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F)); - ShellModel.splice(partdefinition); + ShellModel.addMaterializationPart(partdefinition); return LayerDefinition.create(meshdefinition, 128, 128); } @@ -73,6 +62,14 @@ public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, i bb_main.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); } + @Override + public void renderInteriorDoor(GlobalDoorBlockEntity doorBlockEntity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone2.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bb_main.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + @Override public ModelPart root() { return root; diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/GrowthDoorModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/GrowthDoorModel.java similarity index 70% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/GrowthDoorModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/GrowthDoorModel.java index 9066299be..e1b0a0f6d 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/GrowthDoorModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/GrowthDoorModel.java @@ -1,6 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.door;// Made with Blockbench 4.5.2 -// Exported for Minecraft version 1.17 - 1.18 with Mojang mappings -// Paste this class into your mod and generate all required imports +package whocraft.tardis_refined.client.model.blockentity.door.interior; import com.mojang.blaze3d.vertex.PoseStack; @@ -8,18 +6,16 @@ import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.*; -import net.minecraft.world.entity.Entity; import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; -import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; +import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; -public class GrowthDoorModel extends ShellModel { +public class GrowthDoorModel extends ShellDoorModel { private final ModelPart root; private final ModelPart door_closed; private final ModelPart door_open; private final ModelPart bb_main; public GrowthDoorModel(ModelPart root) { - super(root); this.root = root; this.door_closed = root.getChild("door_closed"); this.door_open = root.getChild("door_open"); @@ -41,15 +37,15 @@ public static LayerDefinition createBodyLayer() { PartDefinition bb_main = partdefinition.addOrReplaceChild("bb_main", CubeListBuilder.create().texOffs(44, 46).addBox(-5.5F, -34.0F, 7.55F, 11.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)) .texOffs(0, 0).addBox(-15.5F, -44.0F, 7.825F, 31.0F, 44.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F)); - ShellModel.splice(partdefinition); + ShellModel.addMaterializationPart(partdefinition); return LayerDefinition.create(meshdefinition, 128, 128); } boolean isDoorOpen = false; - @Override - public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + @Override + public void renderInteriorDoor(GlobalDoorBlockEntity doorBlockEntity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { door_closed.visible = !isDoorOpen; door_open.visible = isDoorOpen; @@ -65,22 +61,8 @@ public ModelPart root() { } @Override - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { this.isDoorOpen = open; } - @Override - public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - - } - - @Override - public boolean isDoorModel() { - return true; - } - - @Override - public void setupAnim(Entity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { - - } } \ No newline at end of file diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/HieroglyphShellDoor.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/HieroglyphShellDoor.java new file mode 100644 index 000000000..cb143f8b4 --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/HieroglyphShellDoor.java @@ -0,0 +1,116 @@ +package whocraft.tardis_refined.client.model.blockentity.door.interior; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; + +public class HieroglyphShellDoor extends ShellDoorModel{ + + private final ModelPart root; + private final ModelPart door_closed; + private final ModelPart door_open; + private final ModelPart bone6; + private final ModelPart pillars; + private final ModelPart bone18; + private final ModelPart bb_main; + + + public HieroglyphShellDoor(ModelPart modelPart) { + this.root = modelPart; + this.door_closed = root.getChild("door_closed"); + this.door_open = root.getChild("door_open"); + this.bone6 = root.getChild("bone6"); + this.pillars = root.getChild("pillars"); + this.bone18 = root.getChild("bone18"); + this.bb_main = root.getChild("bb_main"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + + PartDefinition door_closed = partdefinition.addOrReplaceChild("door_closed", CubeListBuilder.create().texOffs(66, 69).addBox(-7.5F, -33.0F, -7.5F, 15.0F, 31.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(95, 98).addBox(-5.0F, -27.0F, -11.0F, 10.0F, 3.0F, 4.0F, new CubeDeformation(0.025F)) + .texOffs(0, 25).addBox(2.5F, -24.0F, -9.5F, 2.0F, 12.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(0, 25).mirror().addBox(-4.5F, -24.0F, -9.5F, 2.0F, 12.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(98, 33).addBox(-5.0F, -12.0F, -11.0F, 10.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(64, 33).addBox(-4.5F, -11.5F, -10.5F, 9.0F, 9.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 12.5F)); + + PartDefinition cube_r1 = door_closed.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(0, 13).addBox(-2.5F, -2.5F, -1.0F, 5.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -12.0F, -9.0F, 0.0F, 0.0F, 0.7854F)); + + PartDefinition cube_r2 = door_closed.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(99, 69).addBox(-5.0F, -5.0F, 0.0F, 10.0F, 5.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -27.0F, -11.0F, -0.5236F, 0.0F, 0.0F)); + + PartDefinition bone29 = door_closed.addOrReplaceChild("bone29", CubeListBuilder.create().texOffs(9, 25).addBox(-1.5F, 0.0F, 0.25F, 3.0F, 5.0F, 1.0F, new CubeDeformation(0.25F)), PartPose.offset(0.0F, -24.0F, -9.75F)); + + PartDefinition door_open = partdefinition.addOrReplaceChild("door_open", CubeListBuilder.create().texOffs(33, 69).addBox(5.5F, -33.0F, -7.5F, 15.0F, 33.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 60).addBox(5.5F, -33.0F, -6.5F, 15.0F, 33.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(95, 98).addBox(8.0F, -27.0F, -11.0F, 10.0F, 3.0F, 4.0F, new CubeDeformation(0.025F)) + .texOffs(9, 25).addBox(11.5F, -24.0F, -9.5F, 3.0F, 5.0F, 1.0F, new CubeDeformation(0.25F)) + .texOffs(0, 25).addBox(15.5F, -24.0F, -9.5F, 2.0F, 12.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(0, 25).mirror().addBox(8.5F, -24.0F, -9.5F, 2.0F, 12.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(98, 33).addBox(8.0F, -12.0F, -11.0F, 10.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(64, 33).addBox(8.5F, -11.5F, -10.5F, 9.0F, 9.0F, 3.0F, new CubeDeformation(0.0F)) + .texOffs(0, 49).addBox(-8.5F, -0.2F, -14.75F, 26.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(1.5F, 24.0F, 8.0F, 0.0F, -0.0873F, 0.0F)); + + PartDefinition cube_r3 = door_open.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(0, 13).addBox(-2.5F, -2.5F, -1.0F, 5.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(13.0F, -12.0F, -9.0F, 0.0F, 0.0F, 0.7854F)); + + PartDefinition cube_r4 = door_open.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(99, 69).addBox(-5.0F, -5.0F, 0.0F, 10.0F, 5.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(13.0F, -27.0F, -11.0F, -0.5236F, 0.0F, 0.0F)); + + PartDefinition bone6 = partdefinition.addOrReplaceChild("bone6", CubeListBuilder.create().texOffs(0, 40).addBox(1.25F, -40.0F, -8.5F, 6.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 40).mirror().addBox(-7.25F, -40.0F, -8.5F, 6.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(0.0F, 22.0F, 12.5F)); + + PartDefinition bone5 = bone6.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offsetAndRotation(-3.245F, -36.7704F, -8.0F, 0.0F, -0.0044F, 0.0F)); + + PartDefinition cube_r5 = bone5.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(33, 60).mirror().addBox(-0.55F, 0.0F, 0.0F, 8.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-3.755F, -0.2296F, -1.5F, 0.0F, 0.0F, -0.3491F)); + + PartDefinition bone2 = bone6.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offsetAndRotation(3.245F, -36.7704F, -8.0F, 0.0F, 0.0044F, 0.0F)); + + PartDefinition cube_r6 = bone2.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(33, 60).addBox(-7.45F, 0.0F, 0.0F, 8.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(3.755F, -0.2296F, -1.5F, 0.0F, 0.0F, 0.3491F)); + + PartDefinition pillars = partdefinition.addOrReplaceChild("pillars", CubeListBuilder.create(), PartPose.offset(0.0F, 24.0F, 12.5F)); + + PartDefinition bone3 = pillars.addOrReplaceChild("bone3", CubeListBuilder.create().texOffs(0, 0).addBox(6.5F, -10.0F, -10.5F, 4.0F, 8.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(0, 95).addBox(7.0F, -41.0F, -9.5F, 3.0F, 31.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition bone4 = pillars.addOrReplaceChild("bone4", CubeListBuilder.create().texOffs(0, 0).mirror().addBox(-10.5F, -10.0F, -10.5F, 4.0F, 8.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(0, 95).mirror().addBox(-10.0F, -41.0F, -9.5F, 3.0F, 31.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition bone18 = partdefinition.addOrReplaceChild("bone18", CubeListBuilder.create().texOffs(98, 50).addBox(-7.5F, -34.0F, -9.25F, 15.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 22.0F, 12.5F)); + + PartDefinition bb_main = partdefinition.addOrReplaceChild("bb_main", CubeListBuilder.create().texOffs(17, 42).addBox(-10.5F, -2.0F, 2.0F, 21.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(17, 17).addBox(-10.5F, -39.0F, 2.0F, 21.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(69, 60).addBox(-6.5F, -45.0F, 6.0F, 13.0F, 6.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(85, 0).addBox(-7.0F, -33.0F, 5.5F, 14.0F, 31.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(15, 105).addBox(-10.5F, -39.0F, 6.0F, 21.0F, 39.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F)); + + return LayerDefinition.create(meshdefinition, 256, 256); + } + + + + @Override + public void renderInteriorDoor(GlobalDoorBlockEntity doorBlockEntity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + door_closed.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + door_open.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone6.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + pillars.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone18.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bb_main.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + + door_closed.visible = !open; + door_open.visible = open; + } + + @Override + public void setDoorPosition(boolean open) { + + } + + @Override + public ModelPart root() { + return root; + } +} diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/LiftShellDoorModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/LiftShellDoorModel.java new file mode 100644 index 000000000..54ae367e6 --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/LiftShellDoorModel.java @@ -0,0 +1,100 @@ +package whocraft.tardis_refined.client.model.blockentity.door.interior; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; + +public class LiftShellDoorModel extends ShellDoorModel { + + private final ModelPart bone28; + private final ModelPart doorOpen, doorClosed; + + public LiftShellDoorModel(ModelPart modelPart) { + this.bone28 = modelPart.getChild("bone28"); + this.doorOpen = bone28.getChild("door_open"); + this.doorClosed = bone28.getChild("door_closed"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + + PartDefinition bone28 = partdefinition.addOrReplaceChild("bone28", CubeListBuilder.create().texOffs(0, 0).addBox(-10.0F, -39.0F, 0.25F, 20.0F, 39.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 73).addBox(-9.0F, -35.0F, -1.0F, 18.0F, 3.0F, 1.0F, new CubeDeformation(0.025F)) + .texOffs(66, 72).addBox(-9.5F, -36.0F, -1.5F, 19.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(42, 33).addBox(-5.5F, -40.5F, -0.775F, 11.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 7.0F)); + + PartDefinition door_open = bone28.addOrReplaceChild("door_open", CubeListBuilder.create().texOffs(38, 73).addBox(5.0F, -32.0F, -1.0F, 3.0F, 32.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(-13.0F, 0.0F, 0.0F)); + + PartDefinition door_closed = bone28.addOrReplaceChild("door_closed", CubeListBuilder.create().texOffs(42, 0).addBox(-8.0F, -32.0F, -1.0F, 16.0F, 32.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(34, 40).addBox(-8.0F, -32.0F, -0.25F, 16.0F, 32.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition bone7 = door_closed.addOrReplaceChild("bone7", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition bone6 = bone7.addOrReplaceChild("bone6", CubeListBuilder.create(), PartPose.offset(4.0F, -11.0F, -0.5F)); + + PartDefinition cube_r1 = bone6.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(70, 75).mirror().addBox(0.0F, -5.0F, -0.475F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(1.0F, -5.5F, 0.0F, 0.0F, 0.0F, 0.4189F)); + + PartDefinition cube_r2 = bone6.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(66, 75).mirror().addBox(0.0F, 0.0F, -0.475F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(1.0F, -5.5F, 0.0F, 0.0F, 0.0F, -0.4189F)); + + PartDefinition bone5 = bone7.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offset(-4.0F, -11.0F, -0.5F)); + + PartDefinition cube_r3 = bone5.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(70, 75).addBox(-1.0F, -5.0F, -0.475F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.0F, -5.5F, 0.0F, 0.0F, 0.0F, -0.4189F)); + + PartDefinition cube_r4 = bone5.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(66, 75).addBox(-1.0F, 0.0F, -0.475F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.0F, -5.5F, 0.0F, 0.0F, 0.0F, 0.4189F)); + + PartDefinition bone4 = bone7.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offset(-4.0F, -11.0F, -0.5F)); + + PartDefinition cube_r5 = bone4.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(66, 75).mirror().addBox(0.0F, 0.0F, -0.475F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, -0.4189F)); + + PartDefinition cube_r6 = bone4.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(66, 75).addBox(-1.0F, 0.0F, -0.475F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.4189F)); + + PartDefinition bone3 = bone7.addOrReplaceChild("bone3", CubeListBuilder.create(), PartPose.offset(5.0F, -11.0F, -0.5F)); + + PartDefinition cube_r7 = bone3.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(66, 75).mirror().addBox(0.0F, 0.0F, -0.475F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, -0.4189F)); + + PartDefinition cube_r8 = bone3.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(66, 75).addBox(-1.0F, 0.0F, -0.475F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.4189F)); + + PartDefinition bone2 = bone7.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(5.0F, -22.0F, -0.5F)); + + PartDefinition cube_r9 = bone2.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(66, 75).mirror().addBox(0.0F, -5.0F, -0.475F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.4189F)); + + PartDefinition cube_r10 = bone2.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(66, 75).addBox(-1.0F, -5.0F, -0.475F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.0F, 0.0F, 0.0F, 0.0F, 0.0F, -0.4189F)); + + PartDefinition bone = bone7.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offset(-4.0F, -22.0F, -0.5F)); + + PartDefinition cube_r11 = bone.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(66, 75).mirror().addBox(0.0F, -5.0F, -0.475F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.4189F)); + + PartDefinition cube_r12 = bone.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(66, 75).addBox(-1.0F, -5.0F, -0.475F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.0F, 0.0F, 0.0F, 0.0F, 0.0F, -0.4189F)); + + PartDefinition bone10 = bone28.addOrReplaceChild("bone10", CubeListBuilder.create().texOffs(68, 33).addBox(8.0F, -37.0F, -1.75F, 2.0F, 37.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(46, 73).addBox(-8.5F, -33.25F, -3.5F, 3.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)) + .texOffs(74, 31).addBox(-7.5F, -33.225F, -2.5F, 16.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(68, 33).mirror().addBox(-10.0F, -37.0F, -1.75F, 2.0F, 37.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(58, 73).addBox(7.5F, -22.0F, -2.25F, 3.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition blackface = bone28.addOrReplaceChild("blackface", CubeListBuilder.create().texOffs(0, 40).addBox(-8.0F, -32.0F, -0.75F, 16.0F, 32.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 1.0F)); + + PartDefinition clock_hand = bone28.addOrReplaceChild("clock_hand", CubeListBuilder.create().texOffs(74, 75).addBox(-0.5F, -2.5F, 0.25F, 1.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, -37.0F, -1.275F)); + + return LayerDefinition.create(meshdefinition, 128, 128); + } + + + @Override + public void renderInteriorDoor(GlobalDoorBlockEntity doorBlockEntity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + bone28.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + doorOpen.visible = isDoorOpen; + doorClosed.visible = !isDoorOpen; + } + + public boolean isDoorOpen = false; + + @Override + public void setDoorPosition(boolean open) { + isDoorOpen = open; + } +} diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/MysticDoorModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/MysticDoorModel.java similarity index 85% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/MysticDoorModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/MysticDoorModel.java index a4de902bc..7a6605535 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/MysticDoorModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/MysticDoorModel.java @@ -1,4 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.door; +package whocraft.tardis_refined.client.model.blockentity.door.interior; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; @@ -6,10 +6,9 @@ import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.*; import net.minecraft.world.entity.Entity; -import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; -import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; +import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; -public class MysticDoorModel extends ShellModel { +public class MysticDoorModel extends ShellDoorModel { private final ModelPart right_door; private final ModelPart left_door; @@ -17,7 +16,6 @@ public class MysticDoorModel extends ShellModel { private final ModelPart root; public MysticDoorModel(ModelPart root) { - super(root); this.root = root; this.right_door = root.getChild("right_door"); this.left_door = root.getChild("left_door"); @@ -57,7 +55,6 @@ public static LayerDefinition createBodyLayer() { PartDefinition bone4 = bone3.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); PartDefinition bone5 = bone4.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); - splice(partdefinition); return LayerDefinition.create(meshdefinition, 128, 128); } @@ -68,6 +65,13 @@ public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, i left_door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); root_door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); } + @Override + public void renderInteriorDoor(GlobalDoorBlockEntity doorBlockEntity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + right_door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + left_door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + root_door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + @Override public ModelPart root() { return root; @@ -79,7 +83,7 @@ public void setupAnim(Entity entity, float limbSwing, float limbSwingAmount, flo } @Override - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { if (open) { this.left_door.yRot = -250f; this.right_door.yRot = 250f; @@ -89,14 +93,5 @@ public void setDoorOpen(boolean open) { } } - @Override - public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - - } - - @Override - public boolean isDoorModel() { - return true; - } } \ No newline at end of file diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/NukaDoorModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/NukaDoorModel.java similarity index 79% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/NukaDoorModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/NukaDoorModel.java index 5c5c664aa..d8efb111a 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/NukaDoorModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/NukaDoorModel.java @@ -1,6 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.door;// Made with Blockbench 4.5.2 -// Exported for Minecraft version 1.17 - 1.18 with Mojang mappings -// Paste this class into your mod and generate all required imports +package whocraft.tardis_refined.client.model.blockentity.door.interior; import com.mojang.blaze3d.vertex.PoseStack; @@ -10,16 +8,15 @@ import net.minecraft.client.model.geom.builders.*; import net.minecraft.world.entity.Entity; import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; -import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; +import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; -public class NukaDoorModel extends ShellModel { +public class NukaDoorModel extends ShellDoorModel { private final ModelPart root; private final ModelPart left_door; private final ModelPart right_door; private final ModelPart bb_main; public NukaDoorModel(ModelPart root) { - super(root); this.root = root; this.left_door = root.getChild("left_door"); this.right_door = root.getChild("right_door"); @@ -41,7 +38,7 @@ public static LayerDefinition createBodyLayer() { PartDefinition cube_r2 = bb_main.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(51, 47).addBox(-1.5F, -36.5F, -1.5F, 3.0F, 35.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(9.5F, 1.5F, 6.5F, 0.0F, -0.7854F, 0.0F)); - ShellModel.splice(partdefinition); + ShellModel.addMaterializationPart(partdefinition); return LayerDefinition.create(meshdefinition, 128, 128); } @@ -52,6 +49,11 @@ public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, i root.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); } + @Override + public void renderInteriorDoor(GlobalDoorBlockEntity doorBlockEntity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + + } + @Override public ModelPart root() { return root; @@ -63,7 +65,7 @@ public void setupAnim(Entity entity, float f, float g, float h, float i, float j } @Override - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { if (open) { this.left_door.yRot = -250f; this.right_door.yRot = 250f; @@ -73,13 +75,4 @@ public void setDoorOpen(boolean open) { } } - @Override - public boolean isDoorModel() { - return true; - } - - @Override - public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - - } } \ No newline at end of file diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/PagodaDoorModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/PagodaDoorModel.java similarity index 86% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/PagodaDoorModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/PagodaDoorModel.java index 9d1c0a727..98a776e6d 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/PagodaDoorModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/PagodaDoorModel.java @@ -1,6 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.door;// Made with Blockbench 4.6.4 -// Exported for Minecraft version 1.17 or later with Mojang mappings -// Paste this class into your mod and generate all required imports +package whocraft.tardis_refined.client.model.blockentity.door.interior; import com.mojang.blaze3d.vertex.PoseStack; @@ -10,9 +8,9 @@ import net.minecraft.client.model.geom.builders.*; import net.minecraft.world.entity.Entity; import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; -import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; +import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; -public class PagodaDoorModel extends ShellModel { +public class PagodaDoorModel extends ShellDoorModel { private final ModelPart root; private final ModelPart door; private final ModelPart bone10; @@ -23,7 +21,6 @@ public class PagodaDoorModel extends ShellModel { private final ModelPart bb_main; public PagodaDoorModel(ModelPart root) { - super(root); this.root = root; this.door = root.getChild("door"); this.bone10 = root.getChild("bone10"); @@ -78,44 +75,35 @@ public static LayerDefinition createBodyLayer() { PartDefinition bb_main = partdefinition.addOrReplaceChild("bb_main", CubeListBuilder.create().texOffs(0, 0).addBox(-9.0F, -38.0F, 5.0F, 18.0F, 38.0F, 3.0F, new CubeDeformation(0.0F)) .texOffs(0, 76).addBox(-9.0F, -0.025F, 3.0F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F)); - ShellModel.splice(partdefinition); + ShellModel.addMaterializationPart(partdefinition); return LayerDefinition.create(meshdefinition, 128, 128); } @Override - public ModelPart root() { - return root; + public void renderInteriorDoor(GlobalDoorBlockEntity doorBlockEntity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone10.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone9.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone13.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bone4.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + bb_main.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); } @Override - public void setupAnim(Entity entity, float f, float g, float h, float i, float j) { - + public ModelPart root() { + return root; } @Override - public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - - } + public void setupAnim(Entity entity, float f, float g, float h, float i, float j) { - @Override - public boolean isDoorModel() { - return true; } @Override - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { this.door.yRot = (open) ? -275f : 0; } - @Override - public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - bone10.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - bone9.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - bone13.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - bone4.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - bb_main.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - } } \ No newline at end of file diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/PhoneBoothDoorModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/PhoneBoothDoorModel.java similarity index 81% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/PhoneBoothDoorModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/PhoneBoothDoorModel.java index 04a198f06..5bb6c0f2c 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/PhoneBoothDoorModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/PhoneBoothDoorModel.java @@ -1,4 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.door; +package whocraft.tardis_refined.client.model.blockentity.door.interior; import com.mojang.blaze3d.vertex.PoseStack; @@ -8,10 +8,10 @@ import net.minecraft.client.model.geom.builders.*; import net.minecraft.world.entity.Entity; import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; -import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; +import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; import whocraft.tardis_refined.compat.ModCompatChecker; -public class PhoneBoothDoorModel extends ShellModel { +public class PhoneBoothDoorModel extends ShellDoorModel { private final ModelPart Door2; private final ModelPart bone5; @@ -20,7 +20,6 @@ public class PhoneBoothDoorModel extends ShellModel { private final ModelPart root; public PhoneBoothDoorModel(ModelPart root) { - super(root); this.root = root; this.Door2 = root.getChild("Door2"); this.bone5 = root.getChild("bone5"); @@ -49,15 +48,14 @@ public static LayerDefinition createBodyLayer() { PartDefinition bb_main = partdefinition.addOrReplaceChild("bb_main", CubeListBuilder.create().texOffs(40, 27).addBox(-8.5F, -40.0F, 7.225F, 17.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)) .texOffs(0, 79).addBox(-9.0F, -37.0F, 7.25F, 18.0F, 37.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F)); - ShellModel.splice(partdefinition); + ShellModel.addMaterializationPart(partdefinition); return LayerDefinition.create(meshdefinition, 128, 128); } - @Override - public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + public void renderInteriorDoor(GlobalDoorBlockEntity doorBlockEntity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { Door2.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); bone5.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); bone10.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); @@ -75,17 +73,7 @@ public void setupAnim(Entity entity, float f, float g, float h, float i, float j } @Override - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { this.Door2.yRot = (open) ? (ModCompatChecker.immersivePortals() ? 1.75f : -1.75f) : 0; } - - @Override - public boolean isDoorModel() { - return true; - } - - @Override - public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - - } } \ No newline at end of file diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/PoliceBoxDoorModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/PoliceBoxDoorModel.java similarity index 82% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/PoliceBoxDoorModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/PoliceBoxDoorModel.java index c37fc0077..82798e8fe 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/PoliceBoxDoorModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/PoliceBoxDoorModel.java @@ -1,4 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.door; +package whocraft.tardis_refined.client.model.blockentity.door.interior; import com.mojang.blaze3d.vertex.PoseStack; @@ -8,16 +8,15 @@ import net.minecraft.client.model.geom.builders.*; import net.minecraft.world.entity.Entity; import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; -import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; +import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; -public class PoliceBoxDoorModel extends ShellModel { +public class PoliceBoxDoorModel extends ShellDoorModel { private final ModelPart left_door; private final ModelPart right_door; private final ModelPart frame; public PoliceBoxDoorModel(ModelPart root) { - super(root); this.frame = root.getChild("frame"); this.left_door = root.getChild("left_door"); this.right_door = root.getChild("right_door"); @@ -49,14 +48,14 @@ public static LayerDefinition createBodyLayer() { .texOffs(19, 46).addBox(-10.0F, -37.0F, -11.0F, 2.0F, 35.0F, 2.0F, new CubeDeformation(0.0F)) .texOffs(19, 46).mirror().addBox(8.0F, -37.0F, -11.0F, 2.0F, 35.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(0.0F, 25.0F, 16.75F)); - ShellModel.splice(partdefinition); + ShellModel.addMaterializationPart(partdefinition); return LayerDefinition.create(meshdefinition, 128, 128); } @Override - public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + public void renderInteriorDoor(GlobalDoorBlockEntity doorBlockEntity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { left_door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); right_door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); frame.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); @@ -73,18 +72,8 @@ public void setupAnim(Entity entity, float f, float g, float h, float i, float j } @Override - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { this.right_door.yRot = (open) ? -275f : 0; } - @Override - public void renderShell(GlobalShellBlockEntity entity, boolean open,boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - - } - - @Override - public boolean isDoorModel() { - return true; - } - } \ No newline at end of file diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/PortalooDoorModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/PortalooDoorModel.java similarity index 71% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/PortalooDoorModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/PortalooDoorModel.java index 2097e777c..b01395145 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/PortalooDoorModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/PortalooDoorModel.java @@ -1,6 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.door;// Made with Blockbench 4.6.4 -// Exported for Minecraft version 1.17 or later with Mojang mappings -// Paste this class into your mod and generate all required imports +package whocraft.tardis_refined.client.model.blockentity.door.interior; import com.mojang.blaze3d.vertex.PoseStack; @@ -8,19 +6,17 @@ import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.*; -import net.minecraft.world.entity.Entity; import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; -import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; +import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; import whocraft.tardis_refined.compat.ModCompatChecker; -public class PortalooDoorModel extends ShellModel { +public class PortalooDoorModel extends ShellDoorModel { private final ModelPart bone; private final ModelPart Door; private final ModelPart root; public PortalooDoorModel(ModelPart root) { - super(root); this.root = root; this.bone = root.getChild("bone"); this.Door = root.getChild("Door"); @@ -45,14 +41,15 @@ public static LayerDefinition createBodyLayer() { .texOffs(47, 4).addBox(-13.0F, -10.5F, -1.0F, 12.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)) .texOffs(47, 7).addBox(-13.0F, 2.0F, -2.75F, 2.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(7.0F, 2.5F, 6.75F)); - ShellModel.splice(partdefinition); + ShellModel.addMaterializationPart(partdefinition); return LayerDefinition.create(meshdefinition, 128, 128); } + @Override - public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + public void renderInteriorDoor(GlobalDoorBlockEntity doorBlockEntity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); Door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); } @@ -63,22 +60,8 @@ public ModelPart root() { } @Override - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { this.Door.yRot = (open) ? (ModCompatChecker.immersivePortals() ? 1.75f : -1.75f) : 0; } - @Override - public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - - } - - @Override - public boolean isDoorModel() { - return true; - } - - @Override - public void setupAnim(Entity entity, float f, float g, float h, float i, float j) { - - } } \ No newline at end of file diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/PresentDoorModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/PresentDoorModel.java similarity index 78% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/PresentDoorModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/PresentDoorModel.java index 57285decc..bc54d30d3 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/PresentDoorModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/PresentDoorModel.java @@ -1,4 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.door; +package whocraft.tardis_refined.client.model.blockentity.door.interior; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; @@ -6,11 +6,10 @@ import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.*; import net.minecraft.world.entity.Entity; -import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; -import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; +import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; import whocraft.tardis_refined.compat.ModCompatChecker; -public class PresentDoorModel extends ShellModel { +public class PresentDoorModel extends ShellDoorModel { private final ModelPart root; private final ModelPart bone2; @@ -18,7 +17,6 @@ public class PresentDoorModel extends ShellModel { private final ModelPart bb_main; public PresentDoorModel(ModelPart root) { - super(root); this.root = root; this.bone2 = root.getChild("bone2"); this.door = root.getChild("door"); @@ -42,14 +40,11 @@ public static LayerDefinition createBodyLayer() { .texOffs(0, 0).addBox(-9.0F, -35.0F, 8.025F, 18.0F, 35.0F, 1.0F, new CubeDeformation(0.0F)) .texOffs(35, 45).mirror().addBox(8.0F, -35.0F, 7.0F, 1.0F, 35.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) .texOffs(42, 45).addBox(-9.0F, -36.0F, 7.0F, 18.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F)); - splice(partdefinition); - return LayerDefinition.create(meshdefinition, 128, 128); } - @Override - public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + public void renderInteriorDoor(GlobalDoorBlockEntity doorBlockEntity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { bone2.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); bb_main.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); @@ -61,20 +56,10 @@ public ModelPart root() { } @Override - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { this.door.xRot = (open) ? (ModCompatChecker.immersivePortals() ? -1.5f : 1.5F) : 0; } - @Override - public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - - } - - @Override - public boolean isDoorModel() { - return true; - } - @Override public void setupAnim(Entity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/ShellDoorModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/ShellDoorModel.java new file mode 100644 index 000000000..905508d7a --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/ShellDoorModel.java @@ -0,0 +1,32 @@ +package whocraft.tardis_refined.client.model.blockentity.door.interior; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.model.HierarchicalModel; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.Entity; +import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; +import whocraft.tardis_refined.patterns.ShellPattern; + +public abstract class ShellDoorModel extends HierarchicalModel { + + public abstract void renderInteriorDoor(GlobalDoorBlockEntity doorBlockEntity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha); + + @Override + public ModelPart root() { + return null; + } + + public abstract void setDoorPosition(boolean open); + + @Override + public void setupAnim(Entity entity, float f, float g, float h, float i, float j) { + throw new RuntimeException("Woah! You should not be calling this...how are you calling this?"); + } + + public ResourceLocation getInteriorDoorTexture(GlobalDoorBlockEntity globalDoorBlockEntity) { + ShellPattern pattern = globalDoorBlockEntity.pattern(); + return pattern.interiorDoorTexture().texture(); + } +} diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/VendingMachineDoorModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/VendingMachineDoorModel.java similarity index 74% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/VendingMachineDoorModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/VendingMachineDoorModel.java index 4a5e768fb..35950a6bf 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/VendingMachineDoorModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/VendingMachineDoorModel.java @@ -1,4 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.door; +package whocraft.tardis_refined.client.model.blockentity.door.interior; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; @@ -7,17 +7,16 @@ import net.minecraft.client.model.geom.builders.*; import net.minecraft.world.entity.Entity; import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; -import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; +import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; import whocraft.tardis_refined.compat.ModCompatChecker; -public class VendingMachineDoorModel extends ShellModel { +public class VendingMachineDoorModel extends ShellDoorModel { private final ModelPart root; private final ModelPart door; private final ModelPart bone11; public VendingMachineDoorModel(ModelPart root) { - super(root); this.root = root; this.door = root.getChild("door"); this.bone11 = root.getChild("bone11"); @@ -31,13 +30,13 @@ public static LayerDefinition createBodyLayer() { PartDefinition bone11 = partdefinition.addOrReplaceChild("bone11", CubeListBuilder.create().texOffs(58, 0).addBox(-7.0F, -35.0F, 0.0F, 14.0F, 6.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-10.0F, -32.0F, 2.0F, 20.0F, 36.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 20.0F, 6.0F)); - ShellModel.splice(partdefinition); + ShellModel.addMaterializationPart(partdefinition); return LayerDefinition.create(meshdefinition, 128, 128); } @Override - public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + public void renderInteriorDoor(GlobalDoorBlockEntity doorBlockEntity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); bone11.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); } @@ -48,19 +47,10 @@ public ModelPart root() { } @Override - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { this.door.xRot = (open) ? (ModCompatChecker.immersivePortals() ? -1.6f : 1.6F) : 0; } - @Override - public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - - } - - @Override - public boolean isDoorModel() { - return true; - } @Override public void setupAnim(Entity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/life/ArsEggModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/life/ArsEggModel.java index 984a54b4a..75351df95 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/life/ArsEggModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/life/ArsEggModel.java @@ -2,53 +2,98 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.animation.AnimationChannel; +import net.minecraft.client.animation.AnimationDefinition; +import net.minecraft.client.animation.Keyframe; +import net.minecraft.client.animation.KeyframeAnimations; import net.minecraft.client.model.HierarchicalModel; import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.*; +import net.minecraft.world.entity.AnimationState; import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.block.state.BlockState; +import whocraft.tardis_refined.common.block.life.ArsEggBlock; +import whocraft.tardis_refined.common.blockentity.life.ArsEggBlockEntity; public class ArsEggModel extends HierarchicalModel { - private final ModelPart bone; - private final ModelPart bone2; - private final ModelPart bb_main; + private final ModelPart Lamp; + private final ModelPart root; + + public static final AnimationDefinition SWINGING = AnimationDefinition.Builder.withLength(8.0F).looping() + .addAnimation("Lamp", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, -2.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 5.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(4.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 2.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(6.0F, KeyframeAnimations.degreeVec(0.0F, -5.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(8.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, -2.5F), AnimationChannel.Interpolations.CATMULLROM) + )) + .build(); + + public static final AnimationDefinition CRASHING = AnimationDefinition.Builder.withLength(7.875F).looping() + .addAnimation("Lamp", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, -6.7F, -0.79F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.degreeVec(0.4217F, 22.6276F, 2.087F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.degreeVec(-0.106F, -0.9725F, -7.5631F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(4.5F, KeyframeAnimations.degreeVec(-3.3138F, -8.9145F, 9.1782F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(6.0F, KeyframeAnimations.degreeVec(-0.102F, -10.1874F, 1.7066F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(7.5F, KeyframeAnimations.degreeVec(0.0F, -6.7F, -0.79F), AnimationChannel.Interpolations.CATMULLROM) + )) + .build(); + private final ModelPart clamp; + public ArsEggModel(ModelPart root) { - this.bone = root.getChild("bone"); - this.bone2 = root.getChild("bone2"); - this.bb_main = root.getChild("bb_main"); + this.Lamp = root.getChild("Lamp"); + this.clamp = Lamp.getChild("clamp"); + this.root = root; } public static LayerDefinition createBodyLayer() { MeshDefinition meshdefinition = new MeshDefinition(); PartDefinition partdefinition = meshdefinition.getRoot(); - PartDefinition bone = partdefinition.addOrReplaceChild("bone", CubeListBuilder.create().texOffs(0, 25).addBox(-9.0F, -1.5F, 0.0F, 18.0F, 16.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 9.0F, 0.0F, 0.0F, -0.7854F, 0.0F)); + PartDefinition Lamp = partdefinition.addOrReplaceChild("Lamp", CubeListBuilder.create(), PartPose.offset(0.0F, 11.0F, 0.0F)); - PartDefinition bone2 = partdefinition.addOrReplaceChild("bone2", CubeListBuilder.create().texOffs(0, 25).addBox(-9.0F, -1.5F, 0.0F, 18.0F, 16.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 9.0F, 0.0F, 0.0F, 0.7854F, 0.0F)); + PartDefinition clamp = Lamp.addOrReplaceChild("clamp", CubeListBuilder.create().texOffs(18, 20).addBox(-4.0F, -10.0F, -1.0F, 8.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(0, 17).addBox(-3.0F, -11.0F, -3.0F, 6.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)) + .texOffs(20, 23).addBox(-2.0F, -13.0F, -2.0F, 4.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 13.0F, 0.0F)); - PartDefinition bb_main = partdefinition.addOrReplaceChild("bb_main", CubeListBuilder.create().texOffs(0, 0).addBox(-6.0F, -13.0F, -6.0F, 12.0F, 12.0F, 12.0F, new CubeDeformation(0.0F)) - .texOffs(37, 0).addBox(-3.0F, -16.0F, -3.0F, 6.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F)); + PartDefinition cube_r1 = clamp.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(18, 17).addBox(-4.0F, -10.0F, -1.0F, 8.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 1.5708F, 0.0F)); + + PartDefinition bulb = Lamp.addOrReplaceChild("bulb", CubeListBuilder.create().texOffs(0, 0).addBox(-4.0F, -9.0F, -4.0F, 8.0F, 9.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 13.0F, 0.0F)); return LayerDefinition.create(meshdefinition, 64, 64); } + public void renderToBuffer(ArsEggBlockEntity arsEggBlockEntity, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + BlockState blockState = arsEggBlockEntity.getBlockState(); + + if (blockState.hasProperty(ArsEggBlock.ALIVE)) { + clamp.visible = blockState.getValue(ArsEggBlock.ALIVE); + } + + Lamp.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + @Override public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - bone.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - bone2.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - bb_main.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + Lamp.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); } @Override public ModelPart root() { - return this.bb_main; + return this.root; } @Override public void setupAnim(Entity entity, float f, float g, float h, float i, float j) { } + + public void doAnimation(AnimationState liveliness, AnimationDefinition animationDefinition, int animationCounter) { + this.animate(liveliness, animationDefinition, animationCounter); + } } \ No newline at end of file diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/FactoryShellModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/FactoryShellModel.java deleted file mode 100644 index fd791b5ff..000000000 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/FactoryShellModel.java +++ /dev/null @@ -1,90 +0,0 @@ -package whocraft.tardis_refined.client.model.blockentity.shell; - -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import net.minecraft.client.model.geom.ModelPart; -import net.minecraft.client.model.geom.PartPose; -import net.minecraft.client.model.geom.builders.*; -import net.minecraft.world.entity.Entity; -import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; - -public class FactoryShellModel extends ShellModel { - - private final ModelPart realRoot; - private final ModelPart root; - private final ModelPart leftDoor; - private final ModelPart rightDoor; - - public FactoryShellModel(ModelPart root) { - super(root); - this.realRoot = root; - this.root = root.getChild("root"); - this.leftDoor = this.root.getChild("left_door"); - this.rightDoor = this.root.getChild("right_door"); - } - - public static LayerDefinition createBodyLayer() { - MeshDefinition meshdefinition = new MeshDefinition(); - PartDefinition partdefinition = meshdefinition.getRoot(); - - PartDefinition root = partdefinition.addOrReplaceChild("root", CubeListBuilder.create().texOffs(0, 28).addBox(-10.0F, -3.0F, -8.0F, 20.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)) - .texOffs(0, 0).addBox(-10.0F, -44.0F, -8.0F, 20.0F, 7.0F, 20.0F, new CubeDeformation(0.0F)) - .texOffs(54, 57).addBox(-5.0F, -37.0F, -8.0F, 10.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)) - .texOffs(54, 52).addBox(-5.0F, -5.0F, -8.0F, 10.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)) - .texOffs(35, 52).addBox(-8.0F, -37.0F, -6.0F, 1.0F, 34.0F, 16.0F, new CubeDeformation(0.0F)) - .texOffs(95, 45).addBox(-7.0F, -37.0F, 9.0F, 14.0F, 34.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(0, 52).addBox(7.0F, -37.0F, -6.0F, 1.0F, 34.0F, 16.0F, new CubeDeformation(0.0F)) - .texOffs(19, 52).addBox(-7.0F, -37.0F, -6.0F, 14.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(19, 57).addBox(-7.0F, -5.0F, -6.0F, 14.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(81, 0).mirror().addBox(8.0F, -37.0F, -3.0F, 2.0F, 34.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(81, 0).addBox(-10.0F, -37.0F, -3.0F, 2.0F, 34.0F, 10.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, -2.0F)); - - PartDefinition left_door = root.addOrReplaceChild("left_door", CubeListBuilder.create().texOffs(70, 97).addBox(0.0F, -15.0F, -0.5F, 7.0F, 30.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(-7.0F, -20.0F, -5.6F)); - - PartDefinition right_door = root.addOrReplaceChild("right_door", CubeListBuilder.create().texOffs(95, 81).addBox(-7.0F, -15.0F, -0.5F, 7.0F, 30.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(7.0F, -20.0F, -5.6F)); - - PartDefinition bone = root.addOrReplaceChild("bone", CubeListBuilder.create().texOffs(70, 52).addBox(-1.0F, -17.0F, -5.0F, 2.0F, 34.0F, 10.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -20.0F, 11.0F, 0.0F, 1.5708F, 0.0F)); - - ShellModel.splice(partdefinition); - - - return LayerDefinition.create(meshdefinition, 128, 128); - } - - - @Override - public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - root.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - } - - @Override - public ModelPart root() { - return this.realRoot; - } - - @Override - public void setupAnim(Entity entity, float f, float g, float h, float i, float j) { - } - - @Override - public void setDoorOpen(boolean open) { - if (open) { - this.leftDoor.yRot = 250f; - this.rightDoor.yRot = -250f; - } else { - this.leftDoor.yRot = 0; - this.rightDoor.yRot = 0; - } - } - - @Override - public boolean isDoorModel() { - return false; - } - - @Override - public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - - handleAllAnimations(entity, root(), isBaseModel, open, poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - } -} \ No newline at end of file diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/PoliceBoxModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/PoliceBoxModel.java deleted file mode 100644 index ec7df4117..000000000 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/PoliceBoxModel.java +++ /dev/null @@ -1,159 +0,0 @@ -package whocraft.tardis_refined.client.model.blockentity.shell; - -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import net.minecraft.client.model.geom.ModelPart; -import net.minecraft.client.model.geom.PartPose; -import net.minecraft.client.model.geom.builders.*; -import net.minecraft.world.entity.Entity; -import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; - -public class PoliceBoxModel extends ShellModel { - private final ModelPart root; - private final ModelPart left_door; - private final ModelPart right_door; - private final ModelPart frame; - - public PoliceBoxModel(ModelPart root) { - super(root); - this.root = root; - this.frame = root.getChild("frame"); - this.left_door = root.getChild("left_door"); - this.right_door = root.getChild("right_door"); - } - - public static LayerDefinition createBodyLayer() { - MeshDefinition meshdefinition = new MeshDefinition(); - PartDefinition partdefinition = meshdefinition.getRoot(); - - PartDefinition left_door = partdefinition.addOrReplaceChild("left_door", CubeListBuilder.create().texOffs(0, 27).addBox(1.25F, -8.0F, -0.5F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(61, 36).addBox(1.25F, -22.0F, -1.0F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(0, 0).addBox(5.15F, -20.5F, -1.75F, 1.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(0, 27).addBox(1.25F, -15.0F, -0.5F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(13, 52).addBox(0.0F, -30.0F, 0.0F, 8.0F, 30.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(32, 64).addBox(7.5F, -30.0F, -0.5F, 1.0F, 30.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(-8.0F, 22.5F, -10.25F)); - - PartDefinition bone5 = left_door.addOrReplaceChild("bone5", CubeListBuilder.create().texOffs(0, 15).addBox(-2.5F, -6.0F, 0.65F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(3.75F, -23.0F, -0.75F)); - - PartDefinition right_door = partdefinition.addOrReplaceChild("right_door", CubeListBuilder.create().texOffs(0, 27).mirror().addBox(-6.25F, -8.0F, -0.5F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(0, 35).addBox(-6.25F, -22.0F, -0.5F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(0, 27).mirror().addBox(-6.25F, -15.0F, -0.5F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(13, 52).mirror().addBox(-8.0F, -30.0F, 0.0F, 8.0F, 30.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(0, 15).mirror().addBox(-6.25F, -29.0F, -0.1F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(8.0F, 22.5F, -10.25F)); - - PartDefinition frame = partdefinition.addOrReplaceChild("frame", CubeListBuilder.create().texOffs(32, 59).addBox(-8.0F, -33.5F, -10.75F, 16.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)) - .texOffs(0, 27).addBox(-10.0F, -41.0F, -10.0F, 20.0F, 4.0F, 20.0F, new CubeDeformation(0.0F)) - .texOffs(61, 27).addBox(-3.0F, -43.0F, -3.0F, 6.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(0, 7).addBox(-2.0F, -46.0F, -2.0F, 4.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(0, 0).addBox(-2.5F, -47.0F, -2.5F, 5.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)) - .texOffs(32, 52).addBox(-9.0F, -37.5F, -12.0F, 18.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) - .texOffs(0, 0).addBox(-12.0F, -2.0F, -12.0F, 24.0F, 2.0F, 24.0F, new CubeDeformation(0.0F)) - .texOffs(0, 97).mirror().addBox(-9.5F, -31.5F, -1.25F, 19.0F, 30.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(0, 117).mirror().addBox(-9.5F, -32.5F, -8.25F, 19.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(0.0F, 24.0F, 0.0F)); - - PartDefinition bone2 = frame.addOrReplaceChild("bone2", CubeListBuilder.create().texOffs(0, 52).mirror().addBox(8.0F, -39.0F, -11.0F, 3.0F, 37.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(0, 52).mirror().addBox(8.0F, -39.0F, 8.0F, 3.0F, 37.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(0, 52).addBox(-11.0F, -39.0F, 8.0F, 3.0F, 37.0F, 3.0F, new CubeDeformation(0.0F)) - .texOffs(0, 52).addBox(-11.0F, -39.0F, -11.0F, 3.0F, 37.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); - - PartDefinition bone6 = frame.addOrReplaceChild("bone6", CubeListBuilder.create().texOffs(32, 59).addBox(-8.0F, -33.5F, -10.75F, 16.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)) - .texOffs(32, 52).addBox(-9.0F, -37.5F, -12.0F, 18.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); - - PartDefinition bone7 = bone6.addOrReplaceChild("bone7", CubeListBuilder.create().texOffs(0, 27).addBox(-6.75F, -9.5F, -10.75F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(0, 27).addBox(-6.75F, -23.5F, -10.75F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(0, 27).addBox(-6.75F, -16.5F, -10.75F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(13, 52).addBox(-8.0F, -31.5F, -10.25F, 8.0F, 30.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(32, 64).addBox(-0.5F, -31.5F, -10.75F, 1.0F, 30.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); - - PartDefinition bone8 = bone7.addOrReplaceChild("bone8", CubeListBuilder.create().texOffs(0, 15).addBox(-2.5F, -6.0F, 0.65F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(-4.25F, -24.5F, -11.0F)); - - PartDefinition bone9 = bone6.addOrReplaceChild("bone9", CubeListBuilder.create().texOffs(0, 27).mirror().addBox(1.75F, -9.5F, -10.75F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(0, 27).mirror().addBox(1.75F, -23.5F, -10.75F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(0, 27).mirror().addBox(1.75F, -16.5F, -10.75F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(13, 52).mirror().addBox(0.0F, -31.5F, -10.25F, 8.0F, 30.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(32, 64).mirror().addBox(-0.5F, -31.5F, -10.75F, 1.0F, 30.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(0, 15).mirror().addBox(1.75F, -30.5F, -10.35F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(0.0F, 0.0F, 0.0F)); - - PartDefinition bone10 = frame.addOrReplaceChild("bone10", CubeListBuilder.create().texOffs(32, 59).addBox(-8.0F, -33.5F, -10.75F, 16.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)) - .texOffs(32, 52).addBox(-9.0F, -37.5F, -12.0F, 18.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); - - PartDefinition bone11 = bone10.addOrReplaceChild("bone11", CubeListBuilder.create().texOffs(0, 27).addBox(-6.75F, -9.5F, -10.75F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(0, 27).addBox(-6.75F, -23.5F, -10.75F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(0, 27).addBox(-6.75F, -16.5F, -10.75F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(13, 52).addBox(-8.0F, -31.5F, -10.25F, 8.0F, 30.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(32, 64).addBox(-0.5F, -31.5F, -10.75F, 1.0F, 30.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); - - PartDefinition bone12 = bone11.addOrReplaceChild("bone12", CubeListBuilder.create().texOffs(0, 15).addBox(-2.5F, -6.0F, 0.65F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(-4.25F, -24.5F, -11.0F)); - - PartDefinition bone13 = bone10.addOrReplaceChild("bone13", CubeListBuilder.create().texOffs(0, 27).mirror().addBox(1.75F, -9.5F, -10.75F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(0, 27).mirror().addBox(1.75F, -23.5F, -10.75F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(0, 27).mirror().addBox(1.75F, -16.5F, -10.75F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(13, 52).mirror().addBox(0.0F, -31.5F, -10.25F, 8.0F, 30.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(32, 64).mirror().addBox(-0.5F, -31.5F, -10.75F, 1.0F, 30.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(0, 15).mirror().addBox(1.75F, -30.5F, -10.35F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(0.0F, 0.0F, 0.0F)); - - PartDefinition bone14 = frame.addOrReplaceChild("bone14", CubeListBuilder.create().texOffs(32, 59).addBox(-8.0F, -33.5F, -10.75F, 16.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)) - .texOffs(32, 52).addBox(-9.0F, -37.5F, -12.0F, 18.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 1.5708F, 0.0F)); - - PartDefinition bone15 = bone14.addOrReplaceChild("bone15", CubeListBuilder.create().texOffs(0, 27).addBox(-6.75F, -9.5F, -10.75F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(0, 27).addBox(-6.75F, -23.5F, -10.75F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(0, 27).addBox(-6.75F, -16.5F, -10.75F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(13, 52).addBox(-8.0F, -31.5F, -10.25F, 8.0F, 30.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(32, 64).addBox(-0.5F, -31.5F, -10.75F, 1.0F, 30.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); - - PartDefinition bone16 = bone15.addOrReplaceChild("bone16", CubeListBuilder.create().texOffs(0, 15).addBox(-2.5F, -6.0F, 0.65F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(-4.25F, -24.5F, -11.0F)); - - PartDefinition bone17 = bone14.addOrReplaceChild("bone17", CubeListBuilder.create().texOffs(0, 27).mirror().addBox(1.75F, -9.5F, -10.75F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(0, 27).mirror().addBox(1.75F, -23.5F, -10.75F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(0, 27).mirror().addBox(1.75F, -16.5F, -10.75F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(13, 52).mirror().addBox(0.0F, -31.5F, -10.25F, 8.0F, 30.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(32, 64).mirror().addBox(-0.5F, -31.5F, -10.75F, 1.0F, 30.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(0, 15).mirror().addBox(1.75F, -30.5F, -10.35F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(0.0F, 0.0F, 0.0F)); - - ShellModel.splice(partdefinition); - - return LayerDefinition.create(meshdefinition, 128, 128); - } - - @Override - public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - poseStack.scale(1.05f, 1.05f, 1.05f); - poseStack.translate(0, -0.07, 0); - frame.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - left_door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - right_door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - } - - @Override - public ModelPart root() { - return this.root; - } - - @Override - public void setupAnim(Entity entity, float f, float g, float h, float i, float j) { - - } - - @Override - public void setDoorOpen(boolean open) { - this.right_door.yRot = (open) ? -275f : 0; - } - - @Override - public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - if (isBaseModel) { - poseStack.scale(1.05f, 1.05f, 1.05f); - poseStack.translate(0, -0.07, 0); - } - handleAllAnimations(entity,frame,isBaseModel, open, poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - - frame.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, this.getCurrentAlpha()); - left_door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, this.getCurrentAlpha()); - right_door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, this.getCurrentAlpha()); - } - - @Override - public boolean isDoorModel() { - return false; - } -} \ No newline at end of file diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/ShellEntry.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/ShellEntry.java new file mode 100644 index 000000000..342903d5c --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/ShellEntry.java @@ -0,0 +1,30 @@ +package whocraft.tardis_refined.client.model.blockentity.shell; + +import whocraft.tardis_refined.client.model.blockentity.door.interior.ShellDoorModel; + +public class ShellEntry { + + private ShellModel shellModel; + private ShellDoorModel shellDoorModel; + + public ShellEntry(ShellModel shellModel, ShellDoorModel shellDoorModel) { + this.shellModel = shellModel; + this.shellDoorModel = shellDoorModel; + } + + public ShellModel getShellModel() { + return shellModel; + } + + public void setShellModel(ShellModel shellModel) { + this.shellModel = shellModel; + } + + public ShellDoorModel getShellDoorModel() { + return shellDoorModel; + } + + public void setShellDoorModel(ShellDoorModel shellDoorModel) { + this.shellDoorModel = shellDoorModel; + } +} diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/ShellModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/ShellModel.java index a86591e31..cebdd34d4 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/ShellModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/ShellModel.java @@ -11,34 +11,32 @@ import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.CubeListBuilder; import net.minecraft.client.model.geom.builders.PartDefinition; -import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; -import whocraft.tardis_refined.TardisRefined; import whocraft.tardis_refined.client.TardisClientData; import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; import whocraft.tardis_refined.patterns.ShellPattern; public abstract class ShellModel extends HierarchicalModel { - public abstract void setDoorOpen(boolean open); - - public abstract boolean isDoorModel(); + public abstract void setDoorPosition(boolean open); public abstract void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha); - public ResourceLocation texture(GlobalShellBlockEntity entity, boolean isEmmissive) { - ShellPattern pattern = entity.pattern(); + + public ResourceLocation getShellTexture(ShellPattern pattern, boolean isEmmissive) { return texture(pattern, isEmmissive); } - public ResourceLocation texture(ShellPattern pattern, boolean isEmmissive) { - if (isDoorModel()) { - return pattern.interiorDoorTexture().texture(); - } + public ResourceLocation getShellTexture(GlobalShellBlockEntity shellBlockEntitys, boolean isEmmissive) { + ShellPattern pattern = shellBlockEntitys.pattern(); + return texture(pattern, isEmmissive); + } + + private ResourceLocation texture(ShellPattern pattern, boolean isEmmissive) { return isEmmissive ? pattern.exteriorDoorTexture().emissiveTexture() : pattern.exteriorDoorTexture().texture(); } + ModelPart fade_value; float initAlpha = 0; @@ -70,7 +68,7 @@ public void handleAllAnimations(GlobalShellBlockEntity entity, ModelPart root, b this.root().getAllParts().forEach(ModelPart::resetPose); TardisClientData reactions = TardisClientData.getInstance(entity.getTardisId()); - setDoorOpen(isDoorOpen); + setDoorPosition(isDoorOpen); if (reactions.isLanding()) { this.animate(reactions.LANDING_ANIMATION, MODEL_LAND, reactions.landingTime * ANIMATION_SPEED); @@ -91,7 +89,7 @@ public void handleSpecialAnimation(GlobalShellBlockEntity entity, PoseStack pose } - public static void splice(PartDefinition partDefinition) { + public static void addMaterializationPart(PartDefinition partDefinition) { partDefinition.addOrReplaceChild("fade_value", CubeListBuilder.create().texOffs(128, 128), PartPose.offset(-24.0F, 24.0F, 0.0F)); } diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/ShellModelCollection.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/ShellModelCollection.java index 8712c9a95..ad4c68a8d 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/ShellModelCollection.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/ShellModelCollection.java @@ -4,6 +4,8 @@ import net.minecraft.client.model.geom.EntityModelSet; import net.minecraft.resources.ResourceLocation; import whocraft.tardis_refined.client.ModelRegistry; +import whocraft.tardis_refined.client.model.blockentity.door.interior.*; +import whocraft.tardis_refined.client.model.blockentity.shell.shells.*; import whocraft.tardis_refined.common.tardis.themes.ShellTheme; import java.util.HashMap; @@ -13,10 +15,12 @@ public class ShellModelCollection { private static ShellModel factoryShellModel, policeBoxModel, phoneBoothModel, mysticModel, drifterModel, presentModel, vendingModel, briefcaseModel, groeningModel, bigBenModel, nukaModel, growthModel, - portalooModel, pagodaModel; + portalooModel, pagodaModel, liftModel, hieroglyphModel, castleShellModel; - public static Map SHELL_MODELS = new HashMap<>(); + private static ShellDoorModel factoryDoorModel, policeBoxDoorModel, phoneBoothDoorModel, mysticDoorModel, drifterDoorModel, presentDoorModel, vendingDoorModel, briefcaseDoorModel, + groeningDoorModel, bigBenDoorModel, nukaDoorModel, growthDoorModel, portalooDoorModel, pagodaDoorModel, liftDoorModel, hieroglyphDoorModel, castleDoorModel; + public static Map SHELL_MODELS = new HashMap<>(); public ShellModelCollection() { var context = Minecraft.getInstance().getEntityModels(); @@ -24,6 +28,8 @@ public ShellModelCollection() { } public void registerModels(EntityModelSet context){ + + // Shells factoryShellModel = new FactoryShellModel(context.bakeLayer((ModelRegistry.FACTORY_SHELL))); policeBoxModel = new PoliceBoxModel(context.bakeLayer((ModelRegistry.POLICE_BOX_SHELL))); phoneBoothModel = new PhoneBoothModel(context.bakeLayer((ModelRegistry.PHONE_BOOTH_SHELL))); @@ -38,21 +44,50 @@ public void registerModels(EntityModelSet context){ growthModel = new GrowthShellModel(context.bakeLayer((ModelRegistry.GROWTH_SHELL))); portalooModel = new PortalooShellModel(context.bakeLayer((ModelRegistry.PORTALOO_SHELL))); pagodaModel = new PagodaShellModel(context.bakeLayer((ModelRegistry.PAGODA_SHELL))); + liftModel = new LiftShellModel(context.bakeLayer((ModelRegistry.LIFT_SHELL))); + hieroglyphModel = new HieroglyphModel(context.bakeLayer((ModelRegistry.HIEROGLYPH_SHELL))); + castleShellModel = new CastleShellModel(context.bakeLayer((ModelRegistry.CASTLE_SHELL))); + + // Doors + factoryDoorModel = new FactoryDoorModel(context.bakeLayer((ModelRegistry.FACTORY_DOOR))); + policeBoxDoorModel = new PoliceBoxDoorModel(context.bakeLayer((ModelRegistry.POLICE_BOX_DOOR))); + phoneBoothDoorModel = new PhoneBoothDoorModel(context.bakeLayer((ModelRegistry.PHONE_BOOTH_DOOR))); + mysticDoorModel = new MysticDoorModel(context.bakeLayer((ModelRegistry.MYSTIC_DOOR))); + drifterDoorModel = new DrifterDoorModel(context.bakeLayer((ModelRegistry.DRIFTER_DOOR))); + presentDoorModel = new PresentDoorModel(context.bakeLayer((ModelRegistry.PRESENT_DOOR))); + vendingDoorModel = new VendingMachineDoorModel(context.bakeLayer((ModelRegistry.VENDING_DOOR))); + briefcaseDoorModel = new BriefcaseDoorModel(context.bakeLayer((ModelRegistry.BRIEFCASE_DOOR))); + groeningDoorModel = new GroeningDoorModel(context.bakeLayer((ModelRegistry.GROENING_DOOR))); + bigBenDoorModel = new BigBenDoorModel(context.bakeLayer((ModelRegistry.BIG_BEN_DOOR))); + nukaDoorModel = new NukaDoorModel(context.bakeLayer((ModelRegistry.NUKA_DOOR))); + growthDoorModel = new GrowthDoorModel(context.bakeLayer((ModelRegistry.GROWTH_DOOR))); + portalooDoorModel = new PortalooDoorModel(context.bakeLayer((ModelRegistry.PORTALOO_DOOR))); + pagodaDoorModel = new PagodaDoorModel(context.bakeLayer((ModelRegistry.PAGODA_DOOR))); + liftDoorModel = new LiftShellDoorModel(context.bakeLayer((ModelRegistry.LIFT_DOOR))); + hieroglyphDoorModel = new HieroglyphShellDoor(context.bakeLayer((ModelRegistry.HIEROGLYPH_DOOR))); + castleDoorModel = new CastleShellDoorModel(context.bakeLayer((ModelRegistry.CASTLE_DOOR))); + + registerShellEntry(ShellTheme.FACTORY.get(), factoryShellModel, factoryDoorModel); + registerShellEntry(ShellTheme.POLICE_BOX.get(), policeBoxModel, policeBoxDoorModel); + registerShellEntry(ShellTheme.PHONE_BOOTH.get(), phoneBoothModel, phoneBoothDoorModel); + registerShellEntry(ShellTheme.MYSTIC.get(), mysticModel, mysticDoorModel); + registerShellEntry(ShellTheme.DRIFTER.get(), drifterModel, drifterDoorModel); + registerShellEntry(ShellTheme.PRESENT.get(), presentModel, presentDoorModel); + registerShellEntry(ShellTheme.VENDING.get(), vendingModel, vendingDoorModel); + registerShellEntry(ShellTheme.BRIEFCASE.get(), briefcaseModel, briefcaseDoorModel); + registerShellEntry(ShellTheme.GROENING.get(), groeningModel, groeningDoorModel); + registerShellEntry(ShellTheme.BIG_BEN.get(), bigBenModel, bigBenDoorModel); + registerShellEntry(ShellTheme.NUKA.get(), nukaModel, nukaDoorModel); + registerShellEntry(ShellTheme.GROWTH.get(), growthModel, growthDoorModel); + registerShellEntry(ShellTheme.PORTALOO.get(), portalooModel, portalooDoorModel); + registerShellEntry(ShellTheme.PAGODA.get(), pagodaModel, pagodaDoorModel); + registerShellEntry(ShellTheme.LIFT.get(), liftModel, liftDoorModel); + registerShellEntry(ShellTheme.HIEROGLYPH.get(), hieroglyphModel, hieroglyphDoorModel); + registerShellEntry(ShellTheme.CASTLE.get(), castleShellModel, castleDoorModel); + } - SHELL_MODELS.put(ShellTheme.FACTORY.getId(), factoryShellModel); - SHELL_MODELS.put(ShellTheme.POLICE_BOX.getId(), policeBoxModel); - SHELL_MODELS.put(ShellTheme.PHONE_BOOTH.getId(), phoneBoothModel); - SHELL_MODELS.put(ShellTheme.MYSTIC.getId(), mysticModel); - SHELL_MODELS.put(ShellTheme.DRIFTER.getId(), drifterModel); - SHELL_MODELS.put(ShellTheme.PRESENT.getId(), presentModel); - SHELL_MODELS.put(ShellTheme.VENDING.getId(), vendingModel); - SHELL_MODELS.put(ShellTheme.BRIEFCASE.getId(), briefcaseModel); - SHELL_MODELS.put(ShellTheme.GROENING.getId(), groeningModel); - SHELL_MODELS.put(ShellTheme.BIG_BEN.getId(), bigBenModel); - SHELL_MODELS.put(ShellTheme.NUKA.getId(), nukaModel); - SHELL_MODELS.put(ShellTheme.GROWTH.getId(), growthModel); - SHELL_MODELS.put(ShellTheme.PORTALOO.getId(), portalooModel); - SHELL_MODELS.put(ShellTheme.PAGODA.getId(), pagodaModel); + public static void registerShellEntry(ShellTheme theme, ShellModel shellModel, ShellDoorModel shellDoorModel){ + SHELL_MODELS.put(ShellTheme.getKey(theme), new ShellEntry(shellModel, shellDoorModel)); } /** @@ -60,7 +95,7 @@ public void registerModels(EntityModelSet context){ * @param themeId The Shell theme Id. * @return Shell model tied with the shell theme. * **/ - public ShellModel getShellModel(ResourceLocation themeId) { + public ShellEntry getShellEntry(ResourceLocation themeId) { return SHELL_MODELS.get(themeId); } diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/BigBenShellModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/BigBenShellModel.java similarity index 98% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/BigBenShellModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/BigBenShellModel.java index 255748999..26e5baea3 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/BigBenShellModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/BigBenShellModel.java @@ -1,4 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.shell; +package whocraft.tardis_refined.client.model.blockentity.shell.shells; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; @@ -6,6 +6,7 @@ import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.*; import net.minecraft.world.entity.Entity; +import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; import java.util.Calendar; @@ -33,16 +34,11 @@ public class BigBenShellModel extends ShellModel { private final ModelPart bb_main; @Override - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { this.door.yRot = (open) ? -275f : 0; } - @Override - public boolean isDoorModel() { - return false; - } - @Override public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { handleAllAnimations(entity, root(), isBaseModel, open, poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); @@ -213,7 +209,7 @@ public static LayerDefinition createBodyLayer() { .texOffs(0, 103).addBox(-8.5F, -34.0F, 5.5F, 3.0F, 34.0F, 3.0F, new CubeDeformation(0.0F)) .texOffs(0, 103).mirror().addBox(5.5F, -34.0F, 5.5F, 3.0F, 34.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(0.0F, 24.0F, 0.0F)); - splice(partdefinition); + addMaterializationPart(partdefinition); return LayerDefinition.create(meshdefinition, 256, 256); } diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/BriefcaseShellModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/BriefcaseShellModel.java similarity index 92% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/BriefcaseShellModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/BriefcaseShellModel.java index 8eaddec2d..c4af2185a 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/BriefcaseShellModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/BriefcaseShellModel.java @@ -1,4 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.shell; +package whocraft.tardis_refined.client.model.blockentity.shell.shells; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; @@ -6,6 +6,7 @@ import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.*; import net.minecraft.world.entity.Entity; +import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; public class BriefcaseShellModel extends ShellModel { @@ -33,7 +34,7 @@ public static LayerDefinition createBodyLayer() { PartDefinition bb_main = partdefinition.addOrReplaceChild("bb_main", CubeListBuilder.create().texOffs(0, 21).addBox(-10.0F, -6.0F, -7.0F, 20.0F, 6.0F, 14.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-10.0F, -6.25F, -7.0F, 20.0F, 6.0F, 14.0F, new CubeDeformation(0.25F)).texOffs(55, 21).addBox(-5.0F, -4.25F, -10.0F, 10.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-8.0F, -7.5F, -8.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 0).mirror().addBox(5.0F, -7.5F, -8.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(0.0F, 24.0F, 0.0F)); - ShellModel.splice(partdefinition); + ShellModel.addMaterializationPart(partdefinition); return LayerDefinition.create(meshdefinition, 128, 128); } @@ -45,7 +46,7 @@ public ModelPart root() { } @Override - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { this.door.xRot = (open) ? -2f : 0f; } @@ -54,11 +55,6 @@ public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isB handleAllAnimations(entity, root(), isBaseModel, open, poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); } - @Override - public boolean isDoorModel() { - return false; - } - @Override public void setupAnim(Entity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/CastleShellModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/CastleShellModel.java new file mode 100644 index 000000000..06e210537 --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/CastleShellModel.java @@ -0,0 +1,283 @@ +package whocraft.tardis_refined.client.model.blockentity.shell.shells; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.world.entity.Entity; +import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; +import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; + +public class CastleShellModel extends ShellModel { + + private final ModelPart r_door; + private final ModelPart l_door; + private final ModelPart bone38; + private final ModelPart bone8; + private final ModelPart bone3; + private final ModelPart bone10; + private final ModelPart bone16; + private final ModelPart bone32; + private final ModelPart blackbox; + private final ModelPart bb_main; + private final ModelPart root; + + public CastleShellModel(ModelPart root) { + super(root); + this.r_door = root.getChild("r_door"); + this.l_door = root.getChild("l_door"); + this.bone38 = root.getChild("bone38"); + this.bone8 = root.getChild("bone8"); + this.bone3 = root.getChild("bone3"); + this.bone10 = root.getChild("bone10"); + this.bone16 = root.getChild("bone16"); + this.bone32 = root.getChild("bone32"); + this.blackbox = root.getChild("blackbox"); + this.bb_main = root.getChild("bb_main"); + this.root = root; + } + + + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + + PartDefinition r_door = partdefinition.addOrReplaceChild("r_door", CubeListBuilder.create().texOffs(48, 46).mirror().addBox(-0.25F, -16.0F, -0.5F, 8.0F, 32.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-7.5F, 8.0F, -13.5F, 0.0F, -1.5708F, 0.0F)); + + PartDefinition l_door = partdefinition.addOrReplaceChild("l_door", CubeListBuilder.create().texOffs(48, 46).addBox(-7.75F, -16.0F, -0.5F, 8.0F, 32.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(7.5F, 8.0F, -13.5F, 0.0F, 1.5708F, 0.0F)); + + PartDefinition bone38 = partdefinition.addOrReplaceChild("bone38", CubeListBuilder.create(), PartPose.offset(9.0F, -12.0F, -13.0F)); + + PartDefinition cube_r1 = bone38.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(64, 32).mirror().addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.2618F, -1.1781F, 0.0F)); + + PartDefinition cube_r2 = bone38.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(64, 32).addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-18.25F, 20.0F, 0.0F, -0.3491F, 1.0036F, 0.0F)); + + PartDefinition cube_r3 = bone38.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(64, 32).addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-19.0F, 12.0F, -0.75F, 0.1309F, 2.0071F, 0.0F)); + + PartDefinition cube_r4 = bone38.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(64, 32).addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-18.0F, 0.0F, 0.0F, -0.2618F, 1.1781F, 0.0F)); + + PartDefinition cube_r5 = bone38.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(64, 32).addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-15.0F, 0.25F, 0.0F, -0.6109F, 0.3491F, 0.0F)); + + PartDefinition cube_r6 = bone38.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(64, 32).addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-13.0F, 1.0F, 0.0F, -0.5236F, -0.2618F, 0.0F)); + + PartDefinition cube_r7 = bone38.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(64, 32).addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-9.0F, 0.0F, 0.0F, -0.5236F, -0.0436F, 0.0F)); + + PartDefinition cube_r8 = bone38.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(80, 73).addBox(-1.5F, -3.0F, -0.5F, 3.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-4.75F, 1.0F, -0.5F, 0.0F, 0.0F, 0.2182F)); + + PartDefinition cube_r9 = bone38.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(80, 67).addBox(-1.5F, -3.0F, -0.5F, 3.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-12.75F, 1.0F, -0.5F, 0.0F, 0.0F, -0.3054F)); + + PartDefinition cube_r10 = bone38.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(64, 32).addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-4.0F, 1.25F, 0.0F, -1.0472F, -0.48F, 0.0F)); + + PartDefinition cube_r11 = bone38.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(64, 32).addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-5.0F, 1.0F, 0.0F, -0.5672F, 0.0F, 0.0F)); + + PartDefinition bone39 = bone38.addOrReplaceChild("bone39", CubeListBuilder.create(), PartPose.offset(-21.0F, 34.5F, 5.75F)); + + PartDefinition cube_r12 = bone39.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(64, 32).addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(2.5F, 1.25F, -0.5F, -0.6981F, 1.4835F, 0.0F)); + + PartDefinition cube_r13 = bone39.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(80, 73).addBox(-1.5F, -3.0F, 0.0F, 3.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.6279F, 1.0782F, -0.6892F)); + + PartDefinition cube_r14 = bone39.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(64, 32).addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.5F, -0.75F, 2.5F, -0.0873F, 1.4835F, 0.0F)); + + PartDefinition cube_r15 = bone39.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(64, 32).addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.25F, 2.25F, 0.0F, -1.2217F, 1.4399F, 0.0F)); + + PartDefinition cube_r16 = bone39.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(64, 32).addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(2.5F, -0.5F, -1.75F, -0.3491F, 1.0036F, 0.0F)); + + PartDefinition cube_r17 = bone39.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(64, 32).addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(2.5F, -4.5F, -1.75F, 0.1309F, 1.3526F, 0.0F)); + + PartDefinition bone40 = bone38.addOrReplaceChild("bone40", CubeListBuilder.create(), PartPose.offset(3.0F, 34.5F, 5.75F)); + + PartDefinition cube_r18 = bone40.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(64, 32).mirror().addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-2.5F, 1.25F, -0.5F, -0.6981F, -1.4835F, 0.0F)); + + PartDefinition cube_r19 = bone40.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(80, 67).mirror().addBox(-1.5F, -3.0F, 0.0F, 3.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.6279F, -1.0782F, 0.6892F)); + + PartDefinition cube_r20 = bone40.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(64, 32).mirror().addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-0.5F, -0.75F, 2.5F, -0.0873F, -1.4835F, 0.0F)); + + PartDefinition cube_r21 = bone40.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(64, 32).mirror().addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-0.25F, 2.25F, 0.0F, -1.2217F, -1.4399F, 0.0F)); + + PartDefinition cube_r22 = bone40.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(64, 32).mirror().addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-2.5F, -9.25F, -6.5F, -0.9599F, -0.8727F, 0.0F)); + + PartDefinition cube_r23 = bone40.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(64, 32).mirror().addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-2.5F, -14.0F, -6.5F, 0.2618F, -1.2217F, 0.0F)); + + PartDefinition cube_r24 = bone40.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(64, 32).mirror().addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-2.5F, -5.0F, -6.5F, -0.5672F, -0.3927F, 0.0F)); + + PartDefinition cube_r25 = bone40.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(64, 32).mirror().addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-1.75F, -2.5F, -7.0F, 0.1309F, -0.9599F, 0.0F)); + + PartDefinition cube_r26 = bone40.addOrReplaceChild("cube_r26", CubeListBuilder.create().texOffs(64, 32).mirror().addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-2.5F, -0.5F, -1.75F, -0.3491F, -1.0036F, 0.0F)); + + PartDefinition cube_r27 = bone40.addOrReplaceChild("cube_r27", CubeListBuilder.create().texOffs(64, 32).mirror().addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-2.5F, -4.5F, -1.75F, 0.1309F, -1.3526F, 0.0F)); + + PartDefinition bone8 = partdefinition.addOrReplaceChild("bone8", CubeListBuilder.create().texOffs(35, 46).addBox(-10.5F, -36.0F, 7.0F, 3.0F, 36.0F, 3.0F, new CubeDeformation(0.0F)) + .texOffs(35, 46).mirror().addBox(7.5F, -36.0F, 7.0F, 3.0F, 36.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(48, 80).addBox(-2.5F, -36.0F, 5.0F, 5.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(33, 7).addBox(2.5F, -35.0F, 5.0F, 4.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(33, 0).addBox(6.5F, -36.0F, 5.0F, 4.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(33, 0).mirror().addBox(-10.5F, -36.0F, 5.0F, 4.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(33, 7).mirror().addBox(-6.5F, -35.0F, 5.0F, 4.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(0.0F, 24.0F, -20.0F)); + + PartDefinition bone = bone8.addOrReplaceChild("bone", CubeListBuilder.create().texOffs(33, 0).addBox(7.5F, -4.0F, 5.0F, 4.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(64, 25).addBox(7.5F, -8.0F, 5.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(33, 0).addBox(7.5F, -12.0F, 5.0F, 4.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(64, 25).addBox(7.5F, -16.0F, 5.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(80, 60).addBox(7.5F, -20.0F, 5.0F, 2.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(64, 25).addBox(7.5F, -24.0F, 5.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(80, 60).addBox(7.5F, -28.0F, 5.0F, 2.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(64, 25).addBox(7.5F, -32.0F, 5.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition bone2 = bone8.addOrReplaceChild("bone2", CubeListBuilder.create().texOffs(33, 0).mirror().addBox(-11.5F, -4.0F, 5.0F, 4.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(64, 25).mirror().addBox(-10.5F, -8.0F, 5.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(33, 0).mirror().addBox(-11.5F, -12.0F, 5.0F, 4.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(64, 25).mirror().addBox(-10.5F, -16.0F, 5.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(80, 60).mirror().addBox(-9.5F, -20.0F, 5.0F, 2.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(64, 25).mirror().addBox(-10.5F, -24.0F, 5.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(80, 60).mirror().addBox(-9.5F, -28.0F, 5.0F, 2.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(64, 25).mirror().addBox(-10.5F, -32.0F, 5.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition bone3 = partdefinition.addOrReplaceChild("bone3", CubeListBuilder.create().texOffs(77, 0).addBox(-7.5F, -42.0F, -13.0F, 15.0F, 10.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F)); + + PartDefinition bone4 = bone3.addOrReplaceChild("bone4", CubeListBuilder.create().texOffs(0, 0).addBox(-7.5F, -42.0F, -13.0F, 15.0F, 42.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0472F, 0.0F)); + + PartDefinition bone5 = bone4.addOrReplaceChild("bone5", CubeListBuilder.create().texOffs(0, 0).addBox(-7.5F, -42.0F, -13.0F, 15.0F, 42.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(80, 41).addBox(-5.5F, -32.0F, -14.0F, 11.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(80, 54).addBox(-6.5F, -21.0F, -15.0F, 13.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0472F, 0.0F)); + + PartDefinition bone28 = bone5.addOrReplaceChild("bone28", CubeListBuilder.create().texOffs(80, 73).addBox(0.5F, -25.0F, -6.5F, 3.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(80, 67).addBox(-5.25F, -25.0F, -6.75F, 3.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(80, 67).addBox(-1.25F, -23.0F, -6.75F, 3.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, -8.0F)); + + PartDefinition cube_r28 = bone28.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(64, 32).addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(4.0F, -21.0F, -6.0F, -0.6981F, -0.5236F, 0.0F)); + + PartDefinition cube_r29 = bone28.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(64, 32).addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-3.0F, -21.0F, -6.0F, -0.6981F, -0.5236F, 0.0F)); + + PartDefinition cube_r30 = bone28.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(64, 32).addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-4.0F, -21.0F, -6.0F, -0.6981F, 0.5672F, 0.0F)); + + PartDefinition cube_r31 = bone28.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(80, 73).addBox(-1.5F, -3.0F, -0.5F, 3.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-2.0F, -21.5F, -6.0F, 0.0F, 0.0F, -0.2618F)); + + PartDefinition cube_r32 = bone28.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(64, 32).addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(2.0F, -21.0F, -6.0F, -0.6981F, 0.0F, 0.0F)); + + PartDefinition bone6 = bone5.addOrReplaceChild("bone6", CubeListBuilder.create().texOffs(0, 0).addBox(-7.5F, -42.0F, -13.0F, 15.0F, 42.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0472F, 0.0F)); + + PartDefinition bone7 = bone6.addOrReplaceChild("bone7", CubeListBuilder.create().texOffs(0, 0).addBox(-7.5F, -42.0F, -13.0F, 15.0F, 42.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(80, 41).addBox(-5.5F, -32.0F, -14.0F, 11.0F, 11.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(80, 54).addBox(-6.5F, -21.0F, -15.0F, 13.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0472F, 0.0F)); + + PartDefinition bone29 = bone7.addOrReplaceChild("bone29", CubeListBuilder.create().texOffs(80, 73).addBox(0.5F, -25.0F, -6.5F, 3.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(80, 67).addBox(-5.25F, -25.0F, -6.75F, 3.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(80, 67).addBox(-1.25F, -23.0F, -6.75F, 3.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, -8.0F)); + + PartDefinition cube_r33 = bone29.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(64, 32).addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(4.0F, -21.0F, -6.0F, -0.6981F, -0.5236F, 0.0F)); + + PartDefinition cube_r34 = bone29.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(64, 32).addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-3.0F, -21.0F, -6.0F, -0.6981F, -0.5236F, 0.0F)); + + PartDefinition cube_r35 = bone29.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(64, 32).addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-4.0F, -21.0F, -6.0F, -0.6981F, 0.5672F, 0.0F)); + + PartDefinition cube_r36 = bone29.addOrReplaceChild("cube_r36", CubeListBuilder.create().texOffs(80, 73).addBox(-1.5F, -3.0F, -0.5F, 3.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-2.0F, -21.5F, -6.0F, 0.0F, 0.0F, -0.2618F)); + + PartDefinition cube_r37 = bone29.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(64, 32).addBox(-1.5F, 0.0F, -2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(2.0F, -21.0F, -6.0F, -0.6981F, 0.0F, 0.0F)); + + PartDefinition bone9 = bone7.addOrReplaceChild("bone9", CubeListBuilder.create().texOffs(0, 0).mirror().addBox(-7.5F, -42.0F, -13.0F, 15.0F, 42.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0472F, 0.0F)); + + PartDefinition bone10 = partdefinition.addOrReplaceChild("bone10", CubeListBuilder.create().texOffs(74, 15).addBox(-8.5F, -42.0F, -14.725F, 17.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F)); + + PartDefinition bone11 = bone10.addOrReplaceChild("bone11", CubeListBuilder.create().texOffs(74, 15).addBox(-8.5F, -42.0F, -14.725F, 17.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0472F, 0.0F)); + + PartDefinition bone12 = bone11.addOrReplaceChild("bone12", CubeListBuilder.create().texOffs(74, 15).addBox(-8.5F, -42.0F, -14.725F, 17.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0472F, 0.0F)); + + PartDefinition bone13 = bone12.addOrReplaceChild("bone13", CubeListBuilder.create().texOffs(74, 15).addBox(-8.5F, -42.0F, -14.725F, 17.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0472F, 0.0F)); + + PartDefinition bone14 = bone13.addOrReplaceChild("bone14", CubeListBuilder.create().texOffs(74, 15).addBox(-8.5F, -42.0F, -14.725F, 17.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0472F, 0.0F)); + + PartDefinition bone15 = bone14.addOrReplaceChild("bone15", CubeListBuilder.create().texOffs(74, 15).addBox(-8.5F, -42.0F, -14.725F, 17.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0472F, 0.0F)); + + PartDefinition bone16 = partdefinition.addOrReplaceChild("bone16", CubeListBuilder.create(), PartPose.offset(0.0F, 24.0F, 0.0F)); + + PartDefinition bone22 = bone16.addOrReplaceChild("bone22", CubeListBuilder.create().texOffs(33, 0).addBox(-7.5F, 0.0F, 0.0F, 15.0F, 1.0F, 13.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -42.0F, -13.0F, 0.6109F, 0.0F, 0.0F)); + + PartDefinition cube_r38 = bone22.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(64, 25).mirror().addBox(0.0F, 0.025F, 0.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-7.5F, 0.0F, 0.0F, 0.0F, 0.4407F, 0.0F)); + + PartDefinition cube_r39 = bone22.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(64, 25).addBox(-2.0F, 0.025F, 0.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(7.5F, 0.0F, 0.0F, 0.0F, -0.4407F, 0.0F)); + + PartDefinition bone17 = bone16.addOrReplaceChild("bone17", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0472F, 0.0F)); + + PartDefinition bone23 = bone17.addOrReplaceChild("bone23", CubeListBuilder.create().texOffs(33, 0).addBox(-7.5F, 0.0F, 0.0F, 15.0F, 1.0F, 13.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -42.0F, -13.0F, 0.6109F, 0.0F, 0.0F)); + + PartDefinition cube_r40 = bone23.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(64, 25).addBox(-2.0F, 0.025F, 0.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(7.5F, 0.0F, 0.0F, 0.0F, -0.4407F, 0.0F)); + + PartDefinition cube_r41 = bone23.addOrReplaceChild("cube_r41", CubeListBuilder.create().texOffs(64, 25).mirror().addBox(0.0F, 0.025F, 0.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-7.5F, 0.0F, 0.0F, 0.0F, 0.4407F, 0.0F)); + + PartDefinition bone18 = bone17.addOrReplaceChild("bone18", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0472F, 0.0F)); + + PartDefinition bone19 = bone18.addOrReplaceChild("bone19", CubeListBuilder.create().texOffs(33, 0).addBox(-7.5F, 0.0F, 0.0F, 15.0F, 1.0F, 13.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -42.0F, -13.0F, 0.6109F, 0.0F, 0.0F)); + + PartDefinition cube_r42 = bone19.addOrReplaceChild("cube_r42", CubeListBuilder.create().texOffs(64, 25).addBox(-2.0F, 0.025F, 0.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(7.5F, 0.0F, 0.0F, 0.0F, -0.4407F, 0.0F)); + + PartDefinition cube_r43 = bone19.addOrReplaceChild("cube_r43", CubeListBuilder.create().texOffs(64, 25).mirror().addBox(0.0F, 0.025F, 0.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-7.5F, 0.0F, 0.0F, 0.0F, 0.4407F, 0.0F)); + + PartDefinition bone20 = bone18.addOrReplaceChild("bone20", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0472F, 0.0F)); + + PartDefinition bone21 = bone20.addOrReplaceChild("bone21", CubeListBuilder.create().texOffs(33, 0).addBox(-7.5F, 0.0F, 0.0F, 15.0F, 1.0F, 13.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -42.0F, -13.0F, 0.6109F, 0.0F, 0.0F)); + + PartDefinition cube_r44 = bone21.addOrReplaceChild("cube_r44", CubeListBuilder.create().texOffs(64, 25).addBox(-2.0F, 0.025F, 0.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(7.5F, 0.0F, 0.0F, 0.0F, -0.4407F, 0.0F)); + + PartDefinition cube_r45 = bone21.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(64, 25).mirror().addBox(0.0F, 0.025F, 0.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-7.5F, 0.0F, 0.0F, 0.0F, 0.4407F, 0.0F)); + + PartDefinition bone24 = bone20.addOrReplaceChild("bone24", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0472F, 0.0F)); + + PartDefinition bone25 = bone24.addOrReplaceChild("bone25", CubeListBuilder.create().texOffs(33, 0).addBox(-7.5F, 0.0F, 0.0F, 15.0F, 1.0F, 13.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -42.0F, -13.0F, 0.6109F, 0.0F, 0.0F)); + + PartDefinition cube_r46 = bone25.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(64, 25).addBox(-2.0F, 0.025F, 0.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(7.5F, 0.0F, 0.0F, 0.0F, -0.4407F, 0.0F)); + + PartDefinition cube_r47 = bone25.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(64, 25).mirror().addBox(0.0F, 0.025F, 0.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-7.5F, 0.0F, 0.0F, 0.0F, 0.4407F, 0.0F)); + + PartDefinition bone26 = bone24.addOrReplaceChild("bone26", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0472F, 0.0F)); + + PartDefinition bone27 = bone26.addOrReplaceChild("bone27", CubeListBuilder.create().texOffs(33, 0).addBox(-7.5F, 0.0F, 0.0F, 15.0F, 1.0F, 13.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -42.0F, -13.0F, 0.6109F, 0.0F, 0.0F)); + + PartDefinition cube_r48 = bone27.addOrReplaceChild("cube_r48", CubeListBuilder.create().texOffs(64, 25).addBox(-2.0F, 0.025F, 0.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(7.5F, 0.0F, 0.0F, 0.0F, -0.4407F, 0.0F)); + + PartDefinition cube_r49 = bone27.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(64, 25).mirror().addBox(0.0F, 0.025F, 0.0F, 2.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-7.5F, 0.0F, 0.0F, 0.0F, 0.4407F, 0.0F)); + + PartDefinition bone32 = partdefinition.addOrReplaceChild("bone32", CubeListBuilder.create().texOffs(19, 30).addBox(-7.5F, -1.2F, -13.0F, 15.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 25.0F, 0.0F)); + + PartDefinition bone33 = bone32.addOrReplaceChild("bone33", CubeListBuilder.create().texOffs(19, 30).addBox(-7.5F, -1.2F, -13.0F, 15.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0472F, 0.0F)); + + PartDefinition bone34 = bone33.addOrReplaceChild("bone34", CubeListBuilder.create().texOffs(19, 30).addBox(-7.5F, -1.2F, -13.0F, 15.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0472F, 0.0F)); + + PartDefinition bone35 = bone34.addOrReplaceChild("bone35", CubeListBuilder.create().texOffs(19, 30).addBox(-7.5F, -1.2F, -13.0F, 15.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0472F, 0.0F)); + + PartDefinition bone36 = bone35.addOrReplaceChild("bone36", CubeListBuilder.create().texOffs(19, 30).addBox(-7.5F, -1.2F, -13.0F, 15.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0472F, 0.0F)); + + PartDefinition bone37 = bone36.addOrReplaceChild("bone37", CubeListBuilder.create().texOffs(19, 30).addBox(-7.5F, -1.2F, -13.0F, 15.0F, 1.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0472F, 0.0F)); + + PartDefinition blackbox = partdefinition.addOrReplaceChild("blackbox", CubeListBuilder.create().texOffs(67, 46).mirror().addBox(-9.0F, -33.0F, -6.0F, 1.0F, 33.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(67, 46).addBox(8.0F, -33.0F, -6.0F, 1.0F, 33.0F, 5.0F, new CubeDeformation(0.0F)) + .texOffs(33, 15).addBox(-8.0F, -34.0F, -9.0F, 16.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)) + .texOffs(0, 46).addBox(-8.0F, -33.0F, -1.0F, 16.0F, 33.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, -4.25F)); + + PartDefinition bb_main = partdefinition.addOrReplaceChild("bb_main", CubeListBuilder.create().texOffs(74, 79).addBox(-3.0F, -53.0F, -3.0F, 6.0F, 5.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F)); + addMaterializationPart(partdefinition); + return LayerDefinition.create(meshdefinition, 128, 128); + } + + @Override + public void setDoorPosition(boolean open) { + r_door.yRot = open ? (float) Math.toRadians(90) : (float) Math.toRadians(0); + l_door.yRot = open ? (float) Math.toRadians(-90) : (float) Math.toRadians(0); + } + + @Override + public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + handleAllAnimations(entity, root(), isBaseModel, open, poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + @Override + public ModelPart root() { + return root; + } + + @Override + public void setupAnim(Entity entity, float f, float g, float h, float i, float j) { + + } +} diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/DrifterShellModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/DrifterShellModel.java similarity index 98% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/DrifterShellModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/DrifterShellModel.java index 9233bd5e6..18db96594 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/DrifterShellModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/DrifterShellModel.java @@ -1,4 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.shell; +package whocraft.tardis_refined.client.model.blockentity.shell.shells; import com.mojang.blaze3d.vertex.PoseStack; @@ -7,6 +7,7 @@ import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.*; import net.minecraft.world.entity.Entity; +import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; public class DrifterShellModel extends ShellModel { @@ -159,7 +160,7 @@ public static LayerDefinition createBodyLayer() { PartDefinition bone24 = bone23.addOrReplaceChild("bone24", CubeListBuilder.create().texOffs(79, 11).addBox(-1.0F, 0.0F, 0.0F, 1.0F, 9.0F, 12.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -0.5F, -13.0F, 1.1781F, 0.0F, 0.0F)); - ShellModel.splice(partdefinition); + ShellModel.addMaterializationPart(partdefinition); return LayerDefinition.create(meshdefinition, 256, 256); } @@ -179,7 +180,7 @@ public ModelPart root() { } @Override - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { } @@ -192,11 +193,6 @@ public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isB door_closed.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, this.getCurrentAlpha()); } - @Override - public boolean isDoorModel() { - return false; - } - @Override public void setupAnim(Entity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/FactoryShellModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/FactoryShellModel.java new file mode 100644 index 000000000..778847697 --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/FactoryShellModel.java @@ -0,0 +1,82 @@ +package whocraft.tardis_refined.client.model.blockentity.shell.shells; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.world.entity.Entity; +import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; +import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; + +public class FactoryShellModel extends ShellModel { + + private final ModelPart realRoot; + private final ModelPart root; + private final ModelPart leftDoor; + private final ModelPart rightDoor; + + public FactoryShellModel(ModelPart root) { + super(root); + this.realRoot = root; + this.root = root.getChild("model_outline"); + this.leftDoor = this.root.getChild("left_door"); + this.rightDoor = this.root.getChild("right_door"); + } + + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + + PartDefinition model_outline = partdefinition.addOrReplaceChild("model_outline", CubeListBuilder.create().texOffs(0, 28).addBox(-10.0F, -3.0F, -8.0F, 20.0F, 3.0F, 20.0F, new CubeDeformation(0.0F)) + .texOffs(0, 0).addBox(-10.0F, -44.0F, -8.0F, 20.0F, 7.0F, 20.0F, new CubeDeformation(0.0F)) + .texOffs(81, 46).addBox(-5.0F, -37.0F, -8.0F, 10.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(61, 41).addBox(-5.0F, -5.0F, -8.0F, 10.0F, 2.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(79, 84).addBox(-8.0F, -37.0F, -6.0F, 1.0F, 34.0F, 3.0F, new CubeDeformation(0.0F)) + .texOffs(0, 52).addBox(-9.0F, -37.0F, 7.0F, 18.0F, 34.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(70, 84).addBox(7.0F, -37.0F, -6.0F, 1.0F, 34.0F, 3.0F, new CubeDeformation(0.0F)) + .texOffs(61, 32).addBox(-7.0F, -37.0F, -6.0F, 14.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(61, 37).addBox(-7.0F, -5.0F, -6.0F, 14.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(45, 52).mirror().addBox(8.0F, -37.0F, -3.0F, 2.0F, 34.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(45, 52).addBox(-10.0F, -37.0F, -3.0F, 2.0F, 34.0F, 10.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, -2.0F)); + + PartDefinition left_door = model_outline.addOrReplaceChild("left_door", CubeListBuilder.create().texOffs(81, 0).addBox(0.0F, -15.0F, -0.5F, 7.0F, 30.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(-7.0F, -20.0F, -5.6F)); + + PartDefinition right_door = model_outline.addOrReplaceChild("right_door", CubeListBuilder.create().texOffs(70, 52).addBox(-7.0F, -15.0F, -0.5F, 7.0F, 30.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(7.0F, -20.0F, -5.6F)); + addMaterializationPart(partdefinition); + return LayerDefinition.create(meshdefinition, 128, 128); + } + + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + root.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + @Override + public ModelPart root() { + return this.realRoot; + } + + @Override + public void setupAnim(Entity entity, float f, float g, float h, float i, float j) { + } + + @Override + public void setDoorPosition(boolean open) { + if (open) { + this.leftDoor.yRot = 250f; + this.rightDoor.yRot = -250f; + } else { + this.leftDoor.yRot = 0; + this.rightDoor.yRot = 0; + } + } + + @Override + public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + + handleAllAnimations(entity, root(), isBaseModel, open, poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } +} \ No newline at end of file diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/GroeningShellModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/GroeningShellModel.java similarity index 96% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/GroeningShellModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/GroeningShellModel.java index 6de57c2f0..c47f609e2 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/GroeningShellModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/GroeningShellModel.java @@ -1,4 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.shell; +package whocraft.tardis_refined.client.model.blockentity.shell.shells; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; @@ -6,6 +6,7 @@ import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.*; import net.minecraft.world.entity.Entity; +import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; public class GroeningShellModel extends ShellModel { @@ -55,7 +56,7 @@ public static LayerDefinition createBodyLayer() { PartDefinition cube_r7 = bone5.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(88, 9).addBox(-2.0F, 0.0F, 0.0F, 3.0F, 4.0F, 10.0F, new CubeDeformation(0.025F)), PartPose.offsetAndRotation(0.5F, -8.0F, -15.15F, 0.9599F, 0.0F, 0.0F)); - ShellModel.splice(partdefinition); + ShellModel.addMaterializationPart(partdefinition); return LayerDefinition.create(meshdefinition, 256, 256); } @@ -66,7 +67,7 @@ public ModelPart root() { } @Override - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { this.door.yRot = (open) ? -275f : 0; } @@ -75,11 +76,6 @@ public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isB handleAllAnimations(entity, root(), isBaseModel, open, poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); } - @Override - public boolean isDoorModel() { - return false; - } - @Override public void setupAnim(Entity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/GrowthShellModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/GrowthShellModel.java similarity index 97% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/GrowthShellModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/GrowthShellModel.java index 55475a20d..7c7c50880 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/GrowthShellModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/GrowthShellModel.java @@ -1,6 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.shell;// Made with Blockbench 4.5.2 -// Exported for Minecraft version 1.17 - 1.18 with Mojang mappings -// Paste this class into your mod and generate all required imports +package whocraft.tardis_refined.client.model.blockentity.shell.shells; import com.mojang.blaze3d.vertex.PoseStack; @@ -9,6 +7,7 @@ import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.*; import net.minecraft.world.entity.Entity; +import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; public class GrowthShellModel extends ShellModel { @@ -152,7 +151,7 @@ public static LayerDefinition createBodyLayer() { PartDefinition bone7 = bone6.addOrReplaceChild("bone7", CubeListBuilder.create().texOffs(21, 0).addBox(-6.5F, -21.0F, -11.275F, 13.0F, 21.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.0472F, 0.0F)); - ShellModel.splice(partdefinition); + ShellModel.addMaterializationPart(partdefinition); return LayerDefinition.create(meshdefinition, 256, 256); } @@ -168,7 +167,7 @@ public ModelPart root() { } @Override - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { } @@ -181,11 +180,6 @@ public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isB door_closed.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, this.getCurrentAlpha()); } - @Override - public boolean isDoorModel() { - return false; - } - @Override public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { door_closed.visible = true; diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/HieroglyphModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/HieroglyphModel.java new file mode 100644 index 000000000..7f03906f1 --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/HieroglyphModel.java @@ -0,0 +1,228 @@ +package whocraft.tardis_refined.client.model.blockentity.shell.shells; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.world.entity.Entity; +import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; +import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; + +public class HieroglyphModel extends ShellModel { + + + private final ModelPart door_closed; + private final ModelPart door_open; + private final ModelPart sides; + private final ModelPart bone6; + private final ModelPart pillars; + private final ModelPart bone18; + private final ModelPart bb_main; + private final ModelPart root; + + public HieroglyphModel(ModelPart root) { + super(root); + this.root = root; + this.door_closed = root.getChild("door_closed"); + this.door_open = root.getChild("door_open"); + this.sides = root.getChild("sides"); + this.bone6 = root.getChild("bone6"); + this.pillars = root.getChild("pillars"); + this.bone18 = root.getChild("bone18"); + this.bb_main = root.getChild("bb_main"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + + PartDefinition door_closed = partdefinition.addOrReplaceChild("door_closed", CubeListBuilder.create().texOffs(66, 69).addBox(-7.5F, -33.0F, -7.5F, 15.0F, 31.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(95, 98).addBox(-5.0F, -27.0F, -11.0F, 10.0F, 3.0F, 4.0F, new CubeDeformation(0.025F)) + .texOffs(0, 25).addBox(2.5F, -24.0F, -9.5F, 2.0F, 12.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(0, 25).mirror().addBox(-4.5F, -24.0F, -9.5F, 2.0F, 12.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(98, 33).addBox(-5.0F, -12.0F, -11.0F, 10.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(64, 33).addBox(-4.5F, -11.5F, -10.5F, 9.0F, 9.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F)); + + PartDefinition cube_r1 = door_closed.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(0, 13).addBox(-2.5F, -2.5F, -1.0F, 5.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -12.0F, -9.0F, 0.0F, 0.0F, 0.7854F)); + + PartDefinition cube_r2 = door_closed.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(99, 69).addBox(-5.0F, -5.0F, 0.0F, 10.0F, 5.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -27.0F, -11.0F, -0.5236F, 0.0F, 0.0F)); + + PartDefinition bone29 = door_closed.addOrReplaceChild("bone29", CubeListBuilder.create().texOffs(9, 25).addBox(-1.5F, 0.0F, 0.25F, 3.0F, 5.0F, 1.0F, new CubeDeformation(0.25F)), PartPose.offset(0.0F, -24.0F, -9.75F)); + + PartDefinition door_open = partdefinition.addOrReplaceChild("door_open", CubeListBuilder.create().texOffs(33, 69).addBox(5.5F, -33.0F, -7.5F, 15.0F, 33.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 60).addBox(5.5F, -33.0F, -6.5F, 15.0F, 33.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(95, 98).addBox(8.0F, -27.0F, -11.0F, 10.0F, 3.0F, 4.0F, new CubeDeformation(0.025F)) + .texOffs(9, 25).addBox(11.5F, -24.0F, -9.5F, 3.0F, 5.0F, 1.0F, new CubeDeformation(0.25F)) + .texOffs(0, 25).addBox(15.5F, -24.0F, -9.5F, 2.0F, 12.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(0, 25).mirror().addBox(8.5F, -24.0F, -9.5F, 2.0F, 12.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(98, 33).addBox(8.0F, -12.0F, -11.0F, 10.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(64, 33).addBox(8.5F, -11.5F, -10.5F, 9.0F, 9.0F, 3.0F, new CubeDeformation(0.0F)) + .texOffs(0, 49).addBox(-8.5F, -0.2F, -14.75F, 26.0F, 1.0F, 9.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(1.5F, 24.0F, -4.5F, 0.0F, -0.0873F, 0.0F)); + + PartDefinition cube_r3 = door_open.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(0, 13).addBox(-2.5F, -2.5F, -1.0F, 5.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(13.0F, -12.0F, -9.0F, 0.0F, 0.0F, 0.7854F)); + + PartDefinition cube_r4 = door_open.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(99, 69).addBox(-5.0F, -5.0F, 0.0F, 10.0F, 5.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(13.0F, -27.0F, -11.0F, -0.5236F, 0.0F, 0.0F)); + + PartDefinition sides = partdefinition.addOrReplaceChild("sides", CubeListBuilder.create().texOffs(66, 69).addBox(-7.5F, -33.0F, -7.5F, 15.0F, 31.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(95, 98).addBox(-5.0F, -27.0F, -11.0F, 10.0F, 3.0F, 4.0F, new CubeDeformation(0.025F)) + .texOffs(0, 25).addBox(2.5F, -24.0F, -9.5F, 2.0F, 12.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(0, 25).mirror().addBox(-4.5F, -24.0F, -9.5F, 2.0F, 12.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(98, 33).addBox(-5.0F, -12.0F, -11.0F, 10.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(9, 32).addBox(-2.0F, -16.0F, -10.0F, 2.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(15, 13).addBox(-0.25F, -15.0F, -9.5F, 1.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(15, 13).addBox(1.0F, -14.25F, -9.75F, 1.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(15, 13).addBox(-1.25F, -13.5F, -10.75F, 1.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(15, 13).addBox(0.5F, -13.5F, -10.5F, 1.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(64, 33).addBox(-4.5F, -11.5F, -10.5F, 9.0F, 9.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 24.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + + PartDefinition cube_r5 = sides.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(99, 69).addBox(-5.0F, -5.0F, 0.0F, 10.0F, 5.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -27.0F, -11.0F, -0.5236F, 0.0F, 0.0F)); + + PartDefinition bone30 = sides.addOrReplaceChild("bone30", CubeListBuilder.create().texOffs(9, 25).addBox(-1.5F, 0.0F, 1.25F, 3.0F, 5.0F, 1.0F, new CubeDeformation(0.25F)), PartPose.offset(0.0F, -24.0F, -9.75F)); + + PartDefinition bone = sides.addOrReplaceChild("bone", CubeListBuilder.create().texOffs(13, 0).addBox(-0.5F, 0.5F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(-1.0F, -17.5F, -9.0F)); + + PartDefinition bone23 = sides.addOrReplaceChild("bone23", CubeListBuilder.create().texOffs(13, 0).addBox(-0.5F, -0.5F, -0.075F, 1.0F, 1.0F, 1.0F, new CubeDeformation(-0.1F)) + .texOffs(13, 0).addBox(-0.9F, 0.5F, -0.925F, 1.0F, 1.0F, 1.0F, new CubeDeformation(-0.1F)) + .texOffs(13, 0).addBox(-2.75F, 0.5F, -1.175F, 1.0F, 1.0F, 1.0F, new CubeDeformation(-0.1F)), PartPose.offset(1.5F, -14.25F, -9.65F)); + + PartDefinition bone22 = sides.addOrReplaceChild("bone22", CubeListBuilder.create().texOffs(66, 69).addBox(-7.5F, -33.0F, -7.5F, 15.0F, 31.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(95, 98).addBox(-5.0F, -27.0F, -11.0F, 10.0F, 3.0F, 4.0F, new CubeDeformation(0.025F)) + .texOffs(0, 25).addBox(2.5F, -24.0F, -9.5F, 2.0F, 12.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(0, 25).mirror().addBox(-4.5F, -24.0F, -9.5F, 2.0F, 12.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(98, 33).addBox(-5.0F, -12.0F, -11.0F, 10.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(9, 32).addBox(-2.0F, -16.0F, -10.0F, 2.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(15, 13).addBox(-0.25F, -15.0F, -9.5F, 1.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(15, 13).addBox(1.0F, -14.25F, -9.75F, 1.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(15, 13).addBox(-1.25F, -13.5F, -10.75F, 1.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(15, 13).addBox(0.5F, -13.5F, -10.5F, 1.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(64, 33).addBox(-4.5F, -11.5F, -10.5F, 9.0F, 9.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + + PartDefinition cube_r6 = bone22.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(99, 69).addBox(-5.0F, -5.0F, 0.0F, 10.0F, 5.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -27.0F, -11.0F, -0.5236F, 0.0F, 0.0F)); + + PartDefinition bone31 = bone22.addOrReplaceChild("bone31", CubeListBuilder.create().texOffs(9, 25).addBox(-1.5F, 0.0F, 1.25F, 3.0F, 5.0F, 1.0F, new CubeDeformation(0.25F)), PartPose.offset(0.0F, -24.0F, -9.75F)); + + PartDefinition bone26 = bone22.addOrReplaceChild("bone26", CubeListBuilder.create().texOffs(13, 0).addBox(-0.5F, -0.5F, -0.075F, 1.0F, 1.0F, 1.0F, new CubeDeformation(-0.1F)) + .texOffs(13, 0).addBox(-0.9F, 0.5F, -0.925F, 1.0F, 1.0F, 1.0F, new CubeDeformation(-0.1F)) + .texOffs(13, 0).addBox(-2.75F, 0.5F, -1.175F, 1.0F, 1.0F, 1.0F, new CubeDeformation(-0.1F)), PartPose.offset(1.5F, -14.25F, -9.65F)); + + PartDefinition bone25 = bone22.addOrReplaceChild("bone25", CubeListBuilder.create().texOffs(13, 0).addBox(-0.5F, 0.5F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(-1.0F, -17.5F, -9.0F)); + + PartDefinition bone24 = bone22.addOrReplaceChild("bone24", CubeListBuilder.create().texOffs(66, 69).addBox(-7.5F, -33.0F, -7.5F, 15.0F, 31.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(95, 98).addBox(-5.0F, -27.0F, -11.0F, 10.0F, 3.0F, 4.0F, new CubeDeformation(0.025F)) + .texOffs(0, 25).addBox(2.5F, -24.0F, -9.5F, 2.0F, 12.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(0, 25).mirror().addBox(-4.5F, -24.0F, -9.5F, 2.0F, 12.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(98, 33).addBox(-5.0F, -12.0F, -11.0F, 10.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(9, 32).addBox(-2.0F, -16.0F, -10.0F, 2.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(15, 13).addBox(-0.25F, -15.0F, -9.5F, 1.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(15, 13).addBox(1.0F, -14.25F, -9.75F, 1.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(15, 13).addBox(-1.25F, -13.5F, -10.75F, 1.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(15, 13).addBox(0.5F, -13.5F, -10.5F, 1.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(64, 33).addBox(-4.5F, -11.5F, -10.5F, 9.0F, 9.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + + PartDefinition cube_r7 = bone24.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(99, 69).addBox(-5.0F, -5.0F, 0.0F, 10.0F, 5.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -27.0F, -11.0F, -0.5236F, 0.0F, 0.0F)); + + PartDefinition bone32 = bone24.addOrReplaceChild("bone32", CubeListBuilder.create().texOffs(9, 25).addBox(-1.5F, 0.0F, 1.25F, 3.0F, 5.0F, 1.0F, new CubeDeformation(0.25F)), PartPose.offset(0.0F, -24.0F, -9.75F)); + + PartDefinition bone27 = bone24.addOrReplaceChild("bone27", CubeListBuilder.create().texOffs(13, 0).addBox(-0.5F, -0.5F, -0.075F, 1.0F, 1.0F, 1.0F, new CubeDeformation(-0.1F)) + .texOffs(13, 0).addBox(-0.9F, 0.5F, -0.925F, 1.0F, 1.0F, 1.0F, new CubeDeformation(-0.1F)) + .texOffs(13, 0).addBox(-2.75F, 0.5F, -1.175F, 1.0F, 1.0F, 1.0F, new CubeDeformation(-0.1F)), PartPose.offset(1.5F, -14.25F, -9.65F)); + + PartDefinition bone28 = bone24.addOrReplaceChild("bone28", CubeListBuilder.create().texOffs(13, 0).addBox(-0.5F, 0.5F, 0.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(-1.0F, -17.5F, -9.0F)); + + PartDefinition bone6 = partdefinition.addOrReplaceChild("bone6", CubeListBuilder.create().texOffs(0, 40).addBox(1.25F, -40.0F, -8.5F, 6.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 40).mirror().addBox(-7.25F, -40.0F, -8.5F, 6.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(0.0F, 22.0F, 0.0F)); + + PartDefinition bone5 = bone6.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offsetAndRotation(-3.245F, -36.7704F, -8.0F, 0.0F, -0.0044F, 0.0F)); + + PartDefinition cube_r8 = bone5.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(33, 60).mirror().addBox(-0.55F, 0.0F, 0.0F, 8.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-3.755F, -0.2296F, -1.5F, 0.0F, 0.0F, -0.3491F)); + + PartDefinition bone2 = bone6.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offsetAndRotation(3.245F, -36.7704F, -8.0F, 0.0F, 0.0044F, 0.0F)); + + PartDefinition cube_r9 = bone2.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(33, 60).addBox(-7.45F, 0.0F, 0.0F, 8.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(3.755F, -0.2296F, -1.5F, 0.0F, 0.0F, 0.3491F)); + + PartDefinition bone7 = bone6.addOrReplaceChild("bone7", CubeListBuilder.create().texOffs(0, 40).addBox(1.25F, -40.0F, -8.5F, 6.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 40).mirror().addBox(-7.25F, -40.0F, -8.5F, 6.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + + PartDefinition bone8 = bone7.addOrReplaceChild("bone8", CubeListBuilder.create(), PartPose.offsetAndRotation(-3.245F, -36.7704F, -8.0F, 0.0F, -0.0044F, 0.0F)); + + PartDefinition cube_r10 = bone8.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(33, 60).mirror().addBox(-0.55F, 0.0F, 0.0F, 8.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-3.755F, -0.2296F, -1.5F, 0.0F, 0.0F, -0.3491F)); + + PartDefinition bone9 = bone7.addOrReplaceChild("bone9", CubeListBuilder.create(), PartPose.offsetAndRotation(3.245F, -36.7704F, -8.0F, 0.0F, 0.0044F, 0.0F)); + + PartDefinition cube_r11 = bone9.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(33, 60).addBox(-7.45F, 0.0F, 0.0F, 8.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(3.755F, -0.2296F, -1.5F, 0.0F, 0.0F, 0.3491F)); + + PartDefinition bone10 = bone7.addOrReplaceChild("bone10", CubeListBuilder.create().texOffs(0, 40).addBox(1.25F, -40.0F, -8.5F, 6.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 40).mirror().addBox(-7.25F, -40.0F, -8.5F, 6.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + + PartDefinition bone11 = bone10.addOrReplaceChild("bone11", CubeListBuilder.create(), PartPose.offsetAndRotation(-3.245F, -36.7704F, -8.0F, 0.0F, -0.0044F, 0.0F)); + + PartDefinition cube_r12 = bone11.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(33, 60).mirror().addBox(-0.55F, 0.0F, 0.0F, 8.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-3.755F, -0.2296F, -1.5F, 0.0F, 0.0F, -0.3491F)); + + PartDefinition bone12 = bone10.addOrReplaceChild("bone12", CubeListBuilder.create(), PartPose.offsetAndRotation(3.245F, -36.7704F, -8.0F, 0.0F, 0.0044F, 0.0F)); + + PartDefinition cube_r13 = bone12.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(33, 60).addBox(-7.45F, 0.0F, 0.0F, 8.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(3.755F, -0.2296F, -1.5F, 0.0F, 0.0F, 0.3491F)); + + PartDefinition bone13 = bone10.addOrReplaceChild("bone13", CubeListBuilder.create().texOffs(0, 40).addBox(1.25F, -40.0F, -8.5F, 6.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 40).mirror().addBox(-7.25F, -40.0F, -8.5F, 6.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + + PartDefinition bone14 = bone13.addOrReplaceChild("bone14", CubeListBuilder.create(), PartPose.offsetAndRotation(-3.245F, -36.7704F, -8.0F, 0.0F, -0.0044F, 0.0F)); + + PartDefinition cube_r14 = bone14.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(33, 60).mirror().addBox(-0.55F, 0.0F, 0.0F, 8.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-3.755F, -0.2296F, -1.5F, 0.0F, 0.0F, -0.3491F)); + + PartDefinition bone15 = bone13.addOrReplaceChild("bone15", CubeListBuilder.create(), PartPose.offsetAndRotation(3.245F, -36.7704F, -8.0F, 0.0F, 0.0044F, 0.0F)); + + PartDefinition cube_r15 = bone15.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(33, 60).addBox(-7.45F, 0.0F, 0.0F, 8.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(3.755F, -0.2296F, -1.5F, 0.0F, 0.0F, 0.3491F)); + + PartDefinition pillars = partdefinition.addOrReplaceChild("pillars", CubeListBuilder.create(), PartPose.offset(0.0F, 24.0F, 0.0F)); + + PartDefinition bone3 = pillars.addOrReplaceChild("bone3", CubeListBuilder.create().texOffs(0, 0).addBox(6.5F, -10.0F, -10.5F, 4.0F, 8.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(0, 95).addBox(7.0F, -41.0F, -10.0F, 3.0F, 31.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition bone4 = pillars.addOrReplaceChild("bone4", CubeListBuilder.create().texOffs(0, 0).mirror().addBox(-10.5F, -10.0F, -10.5F, 4.0F, 8.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(0, 95).mirror().addBox(-10.0F, -41.0F, -10.0F, 3.0F, 31.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition bone16 = pillars.addOrReplaceChild("bone16", CubeListBuilder.create().texOffs(0, 0).addBox(6.5F, -10.0F, 6.5F, 4.0F, 8.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(0, 95).addBox(7.0F, -41.0F, 7.0F, 3.0F, 31.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition bone17 = pillars.addOrReplaceChild("bone17", CubeListBuilder.create().texOffs(0, 0).mirror().addBox(-10.5F, -10.0F, 6.5F, 4.0F, 8.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(0, 95).mirror().addBox(-10.0F, -41.0F, 7.0F, 3.0F, 31.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition bone18 = partdefinition.addOrReplaceChild("bone18", CubeListBuilder.create().texOffs(98, 50).addBox(-7.5F, -34.0F, -9.5F, 15.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 22.0F, 0.0F)); + + PartDefinition bone19 = bone18.addOrReplaceChild("bone19", CubeListBuilder.create().texOffs(98, 50).addBox(-7.5F, -34.0F, -9.5F, 15.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + + PartDefinition bone20 = bone19.addOrReplaceChild("bone20", CubeListBuilder.create().texOffs(98, 50).addBox(-7.5F, -34.0F, -9.5F, 15.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + + PartDefinition bone21 = bone20.addOrReplaceChild("bone21", CubeListBuilder.create().texOffs(98, 50).addBox(-7.5F, -34.0F, -9.5F, 15.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + + PartDefinition bb_main = partdefinition.addOrReplaceChild("bb_main", CubeListBuilder.create().texOffs(0, 25).addBox(-10.5F, -2.0F, -10.5F, 21.0F, 2.0F, 21.0F, new CubeDeformation(0.0F)) + .texOffs(0, 0).addBox(-10.5F, -39.0F, -10.5F, 21.0F, 3.0F, 21.0F, new CubeDeformation(0.0F)) + .texOffs(58, 49).addBox(-6.5F, -45.0F, -6.5F, 13.0F, 6.0F, 13.0F, new CubeDeformation(0.0F)) + .texOffs(85, 0).addBox(-7.0F, -33.0F, -7.0F, 14.0F, 31.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F)); + addMaterializationPart(partdefinition); + return LayerDefinition.create(meshdefinition, 256, 256); + } + + @Override + public void setDoorPosition(boolean open) { + + } + + @Override + public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + handleAllAnimations(entity, root(), isBaseModel, open, poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + door_open.visible = open; + door_closed.visible = !open; + } + + @Override + public ModelPart root() { + return root; + } + + @Override + public void setupAnim(Entity entity, float f, float g, float h, float i, float j) { + + } +} diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/LiftShellModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/LiftShellModel.java new file mode 100644 index 000000000..6d8381db7 --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/LiftShellModel.java @@ -0,0 +1,188 @@ +package whocraft.tardis_refined.client.model.blockentity.shell.shells; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.world.entity.Entity; +import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; +import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; + +public class LiftShellModel extends ShellModel { + + + private final ModelPart root; + private final ModelPart doorOpen, doorClosed; + + public LiftShellModel(ModelPart root) { + super(root); + this.root = root; + ModelPart bone28 = root.getChild("bone28"); + this.doorOpen = bone28.getChild("door_open"); + this.doorClosed = bone28.getChild("door_closed"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + + PartDefinition bone28 = partdefinition.addOrReplaceChild("bone28", CubeListBuilder.create().texOffs(0, 63).addBox(-8.0F, -32.0F, 16.0F, 16.0F, 32.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 21).addBox(-9.0F, -35.0F, -1.0F, 18.0F, 3.0F, 18.0F, new CubeDeformation(0.025F)) + .texOffs(94, 33).addBox(-3.0F, -35.025F, 5.0F, 6.0F, 3.0F, 6.0F, new CubeDeformation(0.025F)) + .texOffs(0, 43).addBox(-9.0F, -1.0F, -1.0F, 18.0F, 1.0F, 18.0F, new CubeDeformation(0.025F)) + .texOffs(0, 0).addBox(-9.5F, -36.0F, -1.5F, 19.0F, 1.0F, 19.0F, new CubeDeformation(0.0F)) + .texOffs(80, 4).addBox(-5.5F, -40.5F, -1.025F, 11.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, -7.0F)); + + PartDefinition door_open = bone28.addOrReplaceChild("door_open", CubeListBuilder.create().texOffs(83, 96).addBox(5.0F, -32.0F, -1.0F, 3.0F, 32.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition door_closed = bone28.addOrReplaceChild("door_closed", CubeListBuilder.create().texOffs(92, 80).addBox(-8.0F, -32.0F, -1.0F, 16.0F, 32.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(92, 46).addBox(-8.0F, -32.0F, -0.25F, 16.0F, 32.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition bone7 = door_closed.addOrReplaceChild("bone7", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition bone6 = bone7.addOrReplaceChild("bone6", CubeListBuilder.create(), PartPose.offset(4.0F, -11.0F, -0.5F)); + + PartDefinition cube_r1 = bone6.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(14, 12).mirror().addBox(0.0F, -5.0F, -0.475F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(1.0F, -5.5F, 0.0F, 0.0F, 0.0F, 0.4189F)); + + PartDefinition cube_r2 = bone6.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(11, 21).mirror().addBox(0.0F, 0.0F, -0.475F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(1.0F, -5.5F, 0.0F, 0.0F, 0.0F, -0.4189F)); + + PartDefinition bone5 = bone7.addOrReplaceChild("bone5", CubeListBuilder.create(), PartPose.offset(-4.0F, -11.0F, -0.5F)); + + PartDefinition cube_r3 = bone5.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(14, 12).addBox(-1.0F, -5.0F, -0.475F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.0F, -5.5F, 0.0F, 0.0F, 0.0F, -0.4189F)); + + PartDefinition cube_r4 = bone5.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(11, 21).addBox(-1.0F, 0.0F, -0.475F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.0F, -5.5F, 0.0F, 0.0F, 0.0F, 0.4189F)); + + PartDefinition bone4 = bone7.addOrReplaceChild("bone4", CubeListBuilder.create(), PartPose.offset(-4.0F, -11.0F, -0.5F)); + + PartDefinition cube_r5 = bone4.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(11, 21).mirror().addBox(0.0F, 0.0F, -0.475F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, -0.4189F)); + + PartDefinition cube_r6 = bone4.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(11, 21).addBox(-1.0F, 0.0F, -0.475F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.4189F)); + + PartDefinition bone3 = bone7.addOrReplaceChild("bone3", CubeListBuilder.create(), PartPose.offset(5.0F, -11.0F, -0.5F)); + + PartDefinition cube_r7 = bone3.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(11, 21).mirror().addBox(0.0F, 0.0F, -0.475F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, -0.4189F)); + + PartDefinition cube_r8 = bone3.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(11, 21).addBox(-1.0F, 0.0F, -0.475F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.4189F)); + + PartDefinition bone2 = bone7.addOrReplaceChild("bone2", CubeListBuilder.create(), PartPose.offset(5.0F, -22.0F, -0.5F)); + + PartDefinition cube_r9 = bone2.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(11, 21).mirror().addBox(0.0F, -5.0F, -0.475F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.4189F)); + + PartDefinition cube_r10 = bone2.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(11, 21).addBox(-1.0F, -5.0F, -0.475F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.0F, 0.0F, 0.0F, 0.0F, 0.0F, -0.4189F)); + + PartDefinition bone = bone7.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offset(-4.0F, -22.0F, -0.5F)); + + PartDefinition cube_r11 = bone.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(11, 21).mirror().addBox(0.0F, -5.0F, -0.475F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.4189F)); + + PartDefinition cube_r12 = bone.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(11, 21).addBox(-1.0F, -5.0F, -0.475F, 1.0F, 5.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.0F, 0.0F, 0.0F, 0.0F, 0.0F, -0.4189F)); + + PartDefinition bone13 = bone28.addOrReplaceChild("bone13", CubeListBuilder.create().texOffs(49, 91).addBox(-1.25F, -7.9546F, 2.8F, 1.0F, 21.0F, 5.0F, new CubeDeformation(0.0F)) + .texOffs(44, 63).addBox(-2.0F, -11.4546F, 0.75F, 3.0F, 29.0F, 1.0F, new CubeDeformation(-0.025F)) + .texOffs(44, 63).addBox(-2.0F, -11.4546F, -2.0F, 3.0F, 29.0F, 1.0F, new CubeDeformation(-0.025F)) + .texOffs(57, 47).addBox(-1.5F, -12.4546F, -7.0F, 1.0F, 32.0F, 16.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-9.5F, -19.5454F, 9.0F, 0.0F, 3.1416F, 0.0F)); + + PartDefinition bone26 = bone13.addOrReplaceChild("bone26", CubeListBuilder.create(), PartPose.offset(-0.5F, -7.4546F, 5.0F)); + + PartDefinition cube_r13 = bone26.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(0, 21).addBox(-0.25F, -2.0F, -2.0F, 1.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.25F, 0.0F, 0.0F, -0.6109F, 0.0F, 0.0F)); + + PartDefinition bone27 = bone13.addOrReplaceChild("bone27", CubeListBuilder.create(), PartPose.offset(-0.5F, 14.5454F, 5.0F)); + + PartDefinition cube_r14 = bone27.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(0, 0).addBox(-0.25F, -3.0F, -3.0F, 1.0F, 6.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.25F, 0.0F, 0.0F, -0.6109F, 0.0F, 0.0F)); + + PartDefinition bone24 = bone13.addOrReplaceChild("bone24", CubeListBuilder.create().texOffs(0, 30).addBox(-1.5F, -1.5F, -1.5F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(-0.5F, -9.4546F, -0.5F)); + + PartDefinition bone22 = bone13.addOrReplaceChild("bone22", CubeListBuilder.create(), PartPose.offset(-0.75F, -4.4546F, -4.0F)); + + PartDefinition cube_r15 = bone22.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(0, 0).addBox(-0.5F, -3.0F, -3.0F, 1.0F, 6.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.6109F, 0.0F, 0.0F)); + + PartDefinition bone21 = bone13.addOrReplaceChild("bone21", CubeListBuilder.create(), PartPose.offset(-0.5F, -8.4546F, -6.0F)); + + PartDefinition cube_r16 = bone21.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(0, 21).addBox(-0.25F, -2.0F, -2.0F, 1.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.25F, 0.0F, 0.0F, -0.6109F, 0.0F, 0.0F)); + + PartDefinition bone23 = bone13.addOrReplaceChild("bone23", CubeListBuilder.create(), PartPose.offset(-0.5F, -0.4546F, -6.0F)); + + PartDefinition cube_r17 = bone23.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(0, 21).addBox(-0.25F, -2.0F, -2.0F, 1.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.25F, 0.0F, 0.0F, -1.3526F, 0.0F, 0.0F)); + + PartDefinition bone25 = bone13.addOrReplaceChild("bone25", CubeListBuilder.create().texOffs(0, 30).addBox(-1.5F, -1.5F, -1.5F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.25F)), PartPose.offset(-0.5F, 16.7954F, -0.5F)); + + PartDefinition bone12 = bone28.addOrReplaceChild("bone12", CubeListBuilder.create().texOffs(49, 91).addBox(-0.75F, -7.5F, 8.8F, 1.0F, 21.0F, 5.0F, new CubeDeformation(0.0F)) + .texOffs(44, 63).addBox(-1.5F, -11.0F, 6.75F, 3.0F, 29.0F, 1.0F, new CubeDeformation(-0.025F)) + .texOffs(44, 63).addBox(-1.5F, -11.0F, 4.0F, 3.0F, 29.0F, 1.0F, new CubeDeformation(-0.025F)) + .texOffs(57, 47).addBox(-1.0F, -12.0F, -1.0F, 1.0F, 32.0F, 16.0F, new CubeDeformation(0.0F)), PartPose.offset(9.0F, -20.0F, 1.0F)); + + PartDefinition bone20 = bone12.addOrReplaceChild("bone20", CubeListBuilder.create(), PartPose.offset(0.0F, -7.0F, 11.0F)); + + PartDefinition cube_r18 = bone20.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(0, 21).addBox(-0.5F, -2.0F, -2.0F, 1.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.6109F, 0.0F, 0.0F)); + + PartDefinition bone19 = bone12.addOrReplaceChild("bone19", CubeListBuilder.create(), PartPose.offset(0.0F, 15.0F, 11.0F)); + + PartDefinition cube_r19 = bone19.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(0, 0).addBox(-0.5F, -3.0F, -3.0F, 1.0F, 6.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.6109F, 0.0F, 0.0F)); + + PartDefinition bone17 = bone12.addOrReplaceChild("bone17", CubeListBuilder.create().texOffs(0, 30).addBox(-1.5F, -1.5F, -1.5F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, -9.0F, 5.5F)); + + PartDefinition bone15 = bone12.addOrReplaceChild("bone15", CubeListBuilder.create(), PartPose.offset(-0.25F, -4.0F, 2.0F)); + + PartDefinition cube_r20 = bone15.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(0, 0).addBox(-0.75F, -3.0F, -3.0F, 1.0F, 6.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.25F, 0.0F, 0.0F, -0.6109F, 0.0F, 0.0F)); + + PartDefinition bone14 = bone12.addOrReplaceChild("bone14", CubeListBuilder.create(), PartPose.offset(0.0F, -8.0F, 0.0F)); + + PartDefinition cube_r21 = bone14.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(0, 21).addBox(-0.5F, -2.0F, -2.0F, 1.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -0.6109F, 0.0F, 0.0F)); + + PartDefinition bone16 = bone12.addOrReplaceChild("bone16", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition cube_r22 = bone16.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(0, 21).addBox(-0.5F, -2.0F, -2.0F, 1.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, -1.3526F, 0.0F, 0.0F)); + + PartDefinition bone18 = bone12.addOrReplaceChild("bone18", CubeListBuilder.create().texOffs(0, 30).addBox(-1.5F, -1.5F, -1.5F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.25F)), PartPose.offset(0.0F, 17.25F, 5.5F)); + + PartDefinition bone11 = bone28.addOrReplaceChild("bone11", CubeListBuilder.create().texOffs(35, 63).addBox(8.0F, -37.0F, -2.0F, 2.0F, 37.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(35, 63).mirror().addBox(-10.0F, -37.0F, -2.0F, 2.0F, 37.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, 0.0F, 16.0F, 0.0F, 3.1416F, 0.0F)); + + PartDefinition bone10 = bone28.addOrReplaceChild("bone10", CubeListBuilder.create().texOffs(35, 63).addBox(8.0F, -37.0F, -2.0F, 2.0F, 37.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(0, 13).addBox(6.5F, -33.25F, -3.5F, 3.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)) + .texOffs(80, 0).addBox(-7.5F, -33.225F, -2.5F, 16.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(35, 63).mirror().addBox(-10.0F, -37.0F, -2.0F, 2.0F, 37.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(0, 51).addBox(-13.0F, -30.0F, -3.0F, 4.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 43).addBox(-10.5F, -22.0F, -2.5F, 3.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition bone9 = bone28.addOrReplaceChild("bone9", CubeListBuilder.create().texOffs(59, 3).addBox(0.0F, -5.433F, -9.0F, 1.0F, 3.0F, 18.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -38.067F, 8.0F, 0.0F, -1.5708F, 0.0F)); + + PartDefinition cube_r23 = bone9.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(55, 25).addBox(0.0F, 0.0F, -9.0F, 10.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-8.65F, 2.067F, 0.0F, 0.0F, 0.0F, -0.5236F)); + + PartDefinition cube_r24 = bone9.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(55, 25).mirror().addBox(-10.0F, 0.0F, -9.0F, 10.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(8.65F, 2.067F, 0.0F, 0.0F, 0.0F, 0.5236F)); + + PartDefinition bone8 = bone28.addOrReplaceChild("bone8", CubeListBuilder.create().texOffs(59, 3).addBox(8.65F, -7.5F, -9.0F, 1.0F, 3.0F, 18.0F, new CubeDeformation(0.0F)), PartPose.offset(-8.65F, -36.0F, 8.0F)); + + PartDefinition cube_r25 = bone8.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(55, 25).addBox(0.0F, 0.0F, -9.0F, 10.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, -0.5236F)); + + PartDefinition cube_r26 = bone8.addOrReplaceChild("cube_r26", CubeListBuilder.create().texOffs(55, 25).mirror().addBox(-10.0F, 0.0F, -9.0F, 10.0F, 2.0F, 18.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(17.3F, 0.0F, 0.0F, 0.0F, 0.0F, 0.5236F)); + + PartDefinition blackface = bone28.addOrReplaceChild("blackface", CubeListBuilder.create().texOffs(0, 97).addBox(-8.0F, -32.0F, -0.75F, 16.0F, 32.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 1.0F)); + + PartDefinition clock_hand = bone28.addOrReplaceChild("clock_hand", CubeListBuilder.create().texOffs(80, 11).addBox(-0.5F, -2.5F, 0.0F, 1.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, -37.0F, -1.275F)); + addMaterializationPart(partdefinition); + return LayerDefinition.create(meshdefinition, 256, 256); + } + + @Override + public void setDoorPosition(boolean open) { + + } + + @Override + public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + handleAllAnimations(entity, root(), isBaseModel, open, poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + doorOpen.visible = open; + doorClosed.visible = !open; + } + + @Override + public ModelPart root() { + return root; + } + + @Override + public void setupAnim(Entity entity, float f, float g, float h, float i, float j) { + + } +} diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/MysticShellModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/MysticShellModel.java similarity index 99% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/MysticShellModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/MysticShellModel.java index 131751251..b9fe749f7 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/MysticShellModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/MysticShellModel.java @@ -1,4 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.shell; +package whocraft.tardis_refined.client.model.blockentity.shell.shells; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; @@ -16,6 +16,7 @@ import net.minecraft.world.entity.Entity; import whocraft.tardis_refined.TardisRefined; import whocraft.tardis_refined.client.TardisClientData; +import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; @@ -979,7 +980,7 @@ public static LayerDefinition createBodyLayer() { .texOffs(44, 0).addBox(-6.9F, -35.9F, -7.0F, 14.0F, 1.0F, 8.0F, new CubeDeformation(-0.025F)) .texOffs(44, 0).addBox(-6.9F, -4.1F, -7.0F, 14.0F, 1.0F, 8.0F, new CubeDeformation(-0.025F)), PartPose.offset(0.0F, 24.0F, 0.0F)); - splice(partdefinition); + addMaterializationPart(partdefinition); return LayerDefinition.create(meshdefinition, 256, 256); } @@ -1012,7 +1013,7 @@ public void setupAnim(Entity entity, float limbSwing, float limbSwingAmount, flo } @Override - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { if (open) { this.left_door.yRot = 250f; this.right_door.yRot = -250f; @@ -1027,11 +1028,6 @@ public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isB handleAllAnimations(entity, root(), isBaseModel, open, poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); } - @Override - public boolean isDoorModel() { - return false; - } - @Override public void handleSpecialAnimation(GlobalShellBlockEntity entity, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float baseAlpha) { TardisClientData reactions = TardisClientData.getInstance(entity.getTardisId()); diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/NukaShellModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/NukaShellModel.java similarity index 98% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/NukaShellModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/NukaShellModel.java index fe4d39409..b49baa15b 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/NukaShellModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/NukaShellModel.java @@ -1,4 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.shell; +package whocraft.tardis_refined.client.model.blockentity.shell.shells; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; @@ -16,6 +16,7 @@ import net.minecraft.world.entity.Entity; import whocraft.tardis_refined.TardisRefined; import whocraft.tardis_refined.client.TardisClientData; +import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; public class NukaShellModel extends ShellModel { @@ -79,7 +80,7 @@ public class NukaShellModel extends ShellModel { AnimationChannel.Interpolations.LINEAR))).build(); @Override - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { if (open) { this.left_door.yRot = 250f; this.right_door.yRot = -250f; @@ -174,16 +175,11 @@ public static LayerDefinition createBodyLayer() { PartDefinition cube_r5 = bb_main.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(94, 125).addBox(-1.5F, -36.5F, -1.5F, 3.0F, 38.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(9.5F, -4.5F, -9.5F, 0.0F, -0.7854F, 0.0F)); - ShellModel.splice(partdefinition); + ShellModel.addMaterializationPart(partdefinition); return LayerDefinition.create(meshdefinition, 256, 256); } - @Override - public boolean isDoorModel() { - return false; - } - @Override public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { sign.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/PagodaShellModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/PagodaShellModel.java similarity index 97% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/PagodaShellModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/PagodaShellModel.java index 671fbcbc3..31c6a00d6 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/PagodaShellModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/PagodaShellModel.java @@ -1,6 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.shell;// Made with Blockbench 4.6.4 -// Exported for Minecraft version 1.17 or later with Mojang mappings -// Paste this class into your mod and generate all required imports +package whocraft.tardis_refined.client.model.blockentity.shell.shells; import com.mojang.blaze3d.vertex.PoseStack; @@ -9,6 +7,7 @@ import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.*; import net.minecraft.world.entity.Entity; +import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; public class PagodaShellModel extends ShellModel { @@ -146,7 +145,7 @@ public static LayerDefinition createBodyLayer() { .texOffs(23, 91).addBox(-9.0F, -33.0F, -9.0F, 18.0F, 1.0F, 18.0F, new CubeDeformation(0.0F)) .texOffs(0, 111).addBox(-8.0F, -0.025F, -8.0F, 16.0F, 1.0F, 16.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.0F)); - ShellModel.splice(partdefinition); + ShellModel.addMaterializationPart(partdefinition); return LayerDefinition.create(meshdefinition, 128, 128); } @@ -161,7 +160,7 @@ public ModelPart root() { return root; } - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { this.door.yRot = (open) ? -275f : 0; } @@ -171,11 +170,6 @@ public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isB handleAllAnimations(entity, root, isBaseModel, open, poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); } - @Override - public boolean isDoorModel() { - return false; - } - @Override public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/PhoneBoothModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/PhoneBoothModel.java similarity index 96% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/PhoneBoothModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/PhoneBoothModel.java index 1d8b4d566..ded74cf35 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/PhoneBoothModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/PhoneBoothModel.java @@ -1,4 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.shell; +package whocraft.tardis_refined.client.model.blockentity.shell.shells; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; @@ -6,6 +6,7 @@ import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.*; import net.minecraft.world.entity.Entity; +import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; public class PhoneBoothModel extends ShellModel { @@ -70,7 +71,7 @@ public static LayerDefinition createBodyLayer() { .texOffs(0, 0).addBox(-1.5F, 8.0F, -1.0F, 2.0F, 8.0F, 2.0F, new CubeDeformation(0.25F)) .texOffs(0, 23).addBox(-1.5F, -20.75F, -1.0F, 2.0F, 5.0F, 2.0F, new CubeDeformation(0.25F)), PartPose.offset(-7.5F, -18.0F, -8.0F)); - ShellModel.splice(partdefinition); + ShellModel.addMaterializationPart(partdefinition); return LayerDefinition.create(meshdefinition, 128, 128); @@ -93,12 +94,7 @@ public void setupAnim(Entity entity, float f, float g, float h, float i, float j } @Override - public boolean isDoorModel() { - return false; - } - - @Override - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { this.door.yRot = (open) ? 1.75f : 0; } diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/PoliceBoxModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/PoliceBoxModel.java new file mode 100644 index 000000000..50ed66fdf --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/PoliceBoxModel.java @@ -0,0 +1,170 @@ +package whocraft.tardis_refined.client.model.blockentity.shell.shells; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.world.entity.Entity; +import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; +import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; + +public class PoliceBoxModel extends ShellModel { + private final ModelPart root; + private final ModelPart left_door; + private final ModelPart right_door; + private final ModelPart frame; + + public PoliceBoxModel(ModelPart root) { + super(root); + this.root = root; + this.frame = root.getChild("tardis_frame"); + this.right_door = root.getChild("right_door"); + this.left_door = root.getChild("left_door"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + + PartDefinition tardis_frame = partdefinition.addOrReplaceChild("tardis_frame", CubeListBuilder.create(), PartPose.offset(0.0F, 24.0F, 0.0F)); + + PartDefinition bone = tardis_frame.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition frame = bone.addOrReplaceChild("frame", CubeListBuilder.create().texOffs(64, 41).addBox(-9.0F, -36.25F, -11.25F, 18.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(0, 28).addBox(-10.5F, -43.0F, -10.5F, 21.0F, 4.0F, 21.0F, new CubeDeformation(0.0F)) + .texOffs(0, 0).addBox(-3.0F, -45.0F, -3.0F, 6.0F, 2.0F, 6.0F, new CubeDeformation(0.0F)) + .texOffs(0, 16).addBox(-2.0F, -48.0F, -2.0F, 4.0F, 3.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(0, 9).addBox(-2.5F, -49.0F, -2.5F, 5.0F, 1.0F, 5.0F, new CubeDeformation(0.0F)) + .texOffs(64, 28).addBox(-10.5F, -39.5F, -12.5F, 21.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(0, 0).addBox(-12.5F, -2.0F, -12.5F, 25.0F, 2.0F, 25.0F, new CubeDeformation(0.0F)) + .texOffs(0, 54).addBox(-9.5F, -33.5F, -1.75F, 19.0F, 32.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(41, 54).addBox(-9.5F, -34.275F, -9.25F, 19.0F, 1.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition frame_r1 = frame.addOrReplaceChild("frame_r1", CubeListBuilder.create().texOffs(64, 28).addBox(-10.5F, -39.5F, -12.5F, 21.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 1.5708F, 0.0F)); + + PartDefinition frame_r2 = frame.addOrReplaceChild("frame_r2", CubeListBuilder.create().texOffs(64, 28).addBox(-10.5F, -39.5F, -12.5F, 21.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + + PartDefinition frame_r3 = frame.addOrReplaceChild("frame_r3", CubeListBuilder.create().texOffs(64, 28).addBox(-10.5F, -39.5F, -12.5F, 21.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + + PartDefinition bone3 = frame.addOrReplaceChild("bone3", CubeListBuilder.create().texOffs(64, 35).addBox(-9.0F, -36.25F, -11.25F, 18.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -1.5708F, 0.0F)); + + PartDefinition bone11 = bone3.addOrReplaceChild("bone11", CubeListBuilder.create().texOffs(0, 37).mirror().addBox(-6.5F, -8.5F, 0.25F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(0, 37).addBox(-6.5F, -16.0F, 0.25F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(76, 0).addBox(-6.5F, -23.5F, 0.25F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(19, 88).addBox(-7.5F, -32.0F, 0.75F, 8.0F, 32.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 28).addBox(-6.5F, -31.25F, 0.15F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(13, 16).addBox(-5.5F, -28.75F, 0.075F, 4.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(8.0F, -1.5F, -11.25F)); + + PartDefinition bone12 = bone3.addOrReplaceChild("bone12", CubeListBuilder.create().texOffs(0, 37).addBox(0.5F, -8.5F, 0.25F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(76, 0).addBox(0.5F, -16.0F, 0.25F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 37).addBox(0.5F, -23.5F, 0.25F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 88).addBox(-0.5F, -32.0F, 0.75F, 8.0F, 32.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(38, 107).addBox(7.5F, -32.0F, 0.25F, 1.0F, 32.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(-8.0F, -1.5F, -11.25F)); + + PartDefinition bone4 = bone12.addOrReplaceChild("bone4", CubeListBuilder.create().texOffs(0, 28).mirror().addBox(-3.25F, -8.25F, 0.9F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(13, 16).addBox(-2.25F, -5.75F, 0.825F, 4.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(3.75F, -23.0F, -0.75F)); + + PartDefinition bone6 = frame.addOrReplaceChild("bone6", CubeListBuilder.create().texOffs(64, 35).addBox(-9.0F, -36.25F, -11.25F, 18.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + + PartDefinition bone13 = bone6.addOrReplaceChild("bone13", CubeListBuilder.create().texOffs(76, 0).mirror().addBox(-6.5F, -8.5F, 0.25F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(0, 37).addBox(-6.5F, -16.0F, 0.25F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(76, 0).addBox(-6.5F, -23.5F, 0.25F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(19, 88).addBox(-7.5F, -32.0F, 0.75F, 8.0F, 32.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 28).addBox(-6.5F, -31.25F, 0.15F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(13, 16).addBox(-5.5F, -28.75F, 0.075F, 4.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(8.0F, -1.5F, -11.25F)); + + PartDefinition bone14 = bone6.addOrReplaceChild("bone14", CubeListBuilder.create().texOffs(0, 37).addBox(0.5F, -8.5F, 0.25F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 37).addBox(0.5F, -16.0F, 0.25F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(76, 0).addBox(0.5F, -23.5F, 0.25F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 88).addBox(-0.5F, -32.0F, 0.75F, 8.0F, 32.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(38, 107).addBox(7.5F, -32.0F, 0.25F, 1.0F, 32.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(-8.0F, -1.5F, -11.25F)); + + PartDefinition bone7 = bone14.addOrReplaceChild("bone7", CubeListBuilder.create().texOffs(0, 28).mirror().addBox(-3.25F, -8.25F, 0.9F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(13, 16).addBox(-2.25F, -5.75F, 0.825F, 4.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(3.75F, -23.0F, -0.75F)); + + PartDefinition bone8 = frame.addOrReplaceChild("bone8", CubeListBuilder.create().texOffs(64, 35).addBox(-9.0F, -36.25F, -11.25F, 18.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 1.5708F, 0.0F)); + + PartDefinition bone15 = bone8.addOrReplaceChild("bone15", CubeListBuilder.create().texOffs(0, 37).mirror().addBox(-6.5F, -8.5F, 0.25F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(76, 0).addBox(-6.5F, -16.0F, 0.25F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(76, 0).addBox(-6.5F, -23.5F, 0.25F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(19, 88).addBox(-7.5F, -32.0F, 0.75F, 8.0F, 32.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 28).addBox(-6.5F, -31.25F, 0.15F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(13, 16).addBox(-5.5F, -28.75F, 0.075F, 4.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(8.0F, -1.5F, -11.25F)); + + PartDefinition bone16 = bone8.addOrReplaceChild("bone16", CubeListBuilder.create().texOffs(76, 0).addBox(0.5F, -8.5F, 0.25F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 37).addBox(0.5F, -16.0F, 0.25F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 37).addBox(0.5F, -23.5F, 0.25F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 88).addBox(-0.5F, -32.0F, 0.75F, 8.0F, 32.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(38, 107).addBox(7.5F, -32.0F, 0.25F, 1.0F, 32.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(-8.0F, -1.5F, -11.25F)); + + PartDefinition bone9 = bone16.addOrReplaceChild("bone9", CubeListBuilder.create().texOffs(0, 28).mirror().addBox(-3.25F, -8.25F, 0.9F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(13, 16).addBox(-2.25F, -5.75F, 0.825F, 4.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(3.75F, -23.0F, -0.75F)); + + PartDefinition bone2 = frame.addOrReplaceChild("bone2", CubeListBuilder.create().texOffs(80, 64).addBox(8.5F, -41.0F, -11.5F, 3.0F, 39.0F, 3.0F, new CubeDeformation(0.0F)) + .texOffs(67, 64).addBox(-11.5F, -41.0F, -11.5F, 3.0F, 39.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition bone10 = frame.addOrReplaceChild("bone10", CubeListBuilder.create().texOffs(54, 64).addBox(8.5F, -41.0F, -11.5F, 3.0F, 39.0F, 3.0F, new CubeDeformation(0.0F)) + .texOffs(41, 64).addBox(-11.5F, -41.0F, -11.5F, 3.0F, 39.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); + + PartDefinition right_door = partdefinition.addOrReplaceChild("right_door", CubeListBuilder.create().texOffs(0, 37).mirror().addBox(-7.0F, -8.5F, -0.5F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(0, 37).addBox(-7.0F, -16.0F, -0.5F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(76, 0).addBox(-7.0F, -23.5F, -0.5F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(41, 54).addBox(-8.5F, -22.0F, -1.75F, 1.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(88, 47).addBox(-6.5F, -23.0F, -0.525F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(93, 98).addBox(-8.0F, -32.0F, 0.0F, 8.0F, 32.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(76, 9).addBox(-7.0F, -31.25F, -0.6F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(76, 18).addBox(-6.0F, -28.75F, -0.675F, 4.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(8.5F, 22.5F, -10.5F)); + + PartDefinition left_door = partdefinition.addOrReplaceChild("left_door", CubeListBuilder.create().texOffs(0, 37).addBox(1.0F, -8.5F, -0.5F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 37).addBox(1.0F, -16.0F, -0.5F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 37).addBox(1.0F, -23.5F, -0.5F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(90, 17).addBox(1.5F, -23.0F, -0.525F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 0).addBox(5.5F, -21.5F, -1.275F, 1.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(93, 64).addBox(0.0F, -32.0F, 0.0F, 8.0F, 32.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(45, 107).addBox(8.0F, -32.0F, -0.5F, 1.0F, 32.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(-8.5F, 22.5F, -10.5F)); + + PartDefinition bone5 = left_door.addOrReplaceChild("bone5", CubeListBuilder.create().texOffs(76, 9).mirror().addBox(-3.25F, -8.25F, 0.9F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(76, 18).addBox(-2.25F, -5.75F, 0.825F, 4.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(4.25F, -23.0F, -1.5F)); + addMaterializationPart(partdefinition); + return LayerDefinition.create(meshdefinition, 256, 256); + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + poseStack.scale(1.05f, 1.05f, 1.05f); + poseStack.translate(0, -0.07, 0); + frame.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + left_door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + right_door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + @Override + public ModelPart root() { + return this.root; + } + + @Override + public void setupAnim(Entity entity, float f, float g, float h, float i, float j) { + + } + + @Override + public void setDoorPosition(boolean open) { + this.right_door.yRot = (open) ? -275f : 0; + } + + @Override + public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + if (isBaseModel) { + poseStack.scale(1.05f, 1.05f, 1.05f); + poseStack.translate(0, -0.07, 0); + } + handleAllAnimations(entity,frame,isBaseModel, open, poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + + frame.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, this.getCurrentAlpha()); + left_door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, this.getCurrentAlpha()); + right_door.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, this.getCurrentAlpha()); + } + +} \ No newline at end of file diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/PortalooShellModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/PortalooShellModel.java similarity index 95% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/PortalooShellModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/PortalooShellModel.java index fa254de98..e78b95f4e 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/PortalooShellModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/PortalooShellModel.java @@ -1,4 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.shell;// Made with Blockbench 4.6.4 +package whocraft.tardis_refined.client.model.blockentity.shell.shells;// Made with Blockbench 4.6.4 // Exported for Minecraft version 1.17 or later with Mojang mappings // Paste this class into your mod and generate all required imports @@ -8,6 +8,7 @@ import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.*; import net.minecraft.world.entity.Entity; +import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; public class PortalooShellModel extends ShellModel { @@ -63,7 +64,7 @@ public static LayerDefinition createBodyLayer() { .texOffs(44, 25).addBox(1.0F, -10.5F, -1.0F, 12.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)) .texOffs(0, 0).addBox(11.0F, 2.0F, -2.5F, 2.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(-7.0F, 0.5F, -7.0F)); - ShellModel.splice(partdefinition); + ShellModel.addMaterializationPart(partdefinition); return LayerDefinition.create(meshdefinition, 128, 128); } @@ -80,7 +81,7 @@ public ModelPart root() { } @Override - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { this.door.yRot = (open) ? 1.75f : 0; } @@ -89,11 +90,6 @@ public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isB handleAllAnimations(entity, root, isBaseModel, open, poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); } - @Override - public boolean isDoorModel() { - return false; - } - @Override public void setupAnim(Entity entity, float f, float g, float h, float i, float j) { diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/PresentShellModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/PresentShellModel.java similarity index 94% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/PresentShellModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/PresentShellModel.java index 8bb7d0710..3e5ae0fde 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/PresentShellModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/PresentShellModel.java @@ -1,4 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.shell; +package whocraft.tardis_refined.client.model.blockentity.shell.shells; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; @@ -6,6 +6,7 @@ import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.*; import net.minecraft.world.entity.Entity; +import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; public class PresentShellModel extends ShellModel { @@ -15,7 +16,7 @@ public class PresentShellModel extends ShellModel { private final ModelPart door; @Override - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { this.door.xRot = (open) ? 1.5f :0; } @@ -24,11 +25,6 @@ public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isB handleAllAnimations(entity,root(),isBaseModel, open, poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); } - @Override - public boolean isDoorModel() { - return false; - } - public PresentShellModel(ModelPart root) { super(root); this.root = root; @@ -62,7 +58,7 @@ public static LayerDefinition createBodyLayer() { PartDefinition cube_r3 = bone4.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(81, 12).mirror().addBox(-8.0F, 0.0F, -4.0F, 10.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-1.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.5672F)); PartDefinition cube_r4 = bone4.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(81, 12).addBox(-2.0F, 0.0F, -4.0F, 10.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(1.0F, 0.0F, 0.0F, 0.0F, 0.0F, -0.5672F)); - splice(partdefinition); + addMaterializationPart(partdefinition); return LayerDefinition.create(meshdefinition, 128, 128); } diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/VendingMachineShellModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/VendingMachineShellModel.java similarity index 94% rename from common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/VendingMachineShellModel.java rename to common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/VendingMachineShellModel.java index 62bf28d24..705504639 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/VendingMachineShellModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/shell/shells/VendingMachineShellModel.java @@ -1,4 +1,4 @@ -package whocraft.tardis_refined.client.model.blockentity.shell; +package whocraft.tardis_refined.client.model.blockentity.shell.shells; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; @@ -6,6 +6,7 @@ import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.*; import net.minecraft.world.entity.Entity; +import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; public class VendingMachineShellModel extends ShellModel { @@ -31,7 +32,7 @@ public static LayerDefinition createBodyLayer() { PartDefinition bone11 = partdefinition.addOrReplaceChild("bone11", CubeListBuilder.create().texOffs(0, 49).addBox(-7.0F, -35.0F, -1.0F, 14.0F, 6.0F, 14.0F, new CubeDeformation(0.0F)).texOffs(0, 0).addBox(-10.0F, -32.0F, 2.0F, 20.0F, 36.0F, 12.0F, new CubeDeformation(0.0F)).texOffs(91, 0).addBox(-4.0F, -23.0F, 14.0F, 8.0F, 15.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(91, 17).addBox(-4.0F, -6.0F, 14.0F, 8.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(91, 23).addBox(-3.0F, -8.0F, 14.5F, 6.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).texOffs(76, 10).addBox(10.0F, -26.0F, 5.0F, 1.0F, 19.0F, 6.0F, new CubeDeformation(0.0F)).texOffs(76, 10).mirror().addBox(-11.0F, -26.0F, 5.0F, 1.0F, 19.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(0.0F, 20.0F, -7.0F)); - ShellModel.splice(partdefinition); + ShellModel.addMaterializationPart(partdefinition); return LayerDefinition.create(meshdefinition, 128, 128); } @@ -42,15 +43,10 @@ public ModelPart root() { } @Override - public void setDoorOpen(boolean open) { + public void setDoorPosition(boolean open) { this.door.xRot = (open) ? 1.6f : 0; } - @Override - public boolean isDoorModel() { - return false; - } - @Override public void renderShell(GlobalShellBlockEntity entity, boolean open, boolean isBaseModel, PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { handleAllAnimations(entity, root(), isBaseModel, open, poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); diff --git a/common/src/main/java/whocraft/tardis_refined/client/renderer/blockentity/console/GlobalConsoleRenderer.java b/common/src/main/java/whocraft/tardis_refined/client/renderer/blockentity/console/GlobalConsoleRenderer.java index ce2cdc050..1b9ba18c6 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/renderer/blockentity/console/GlobalConsoleRenderer.java +++ b/common/src/main/java/whocraft/tardis_refined/client/renderer/blockentity/console/GlobalConsoleRenderer.java @@ -8,16 +8,16 @@ import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; import whocraft.tardis_refined.client.TardisClientData; import whocraft.tardis_refined.client.model.blockentity.console.ConsoleModelCollection; import whocraft.tardis_refined.client.model.blockentity.console.ConsoleUnit; import whocraft.tardis_refined.client.model.blockentity.shell.ShellModelCollection; -import whocraft.tardis_refined.common.block.console.GlobalConsoleBlock; +import whocraft.tardis_refined.client.screen.selections.ShellSelectionScreen; import whocraft.tardis_refined.common.blockentity.console.GlobalConsoleBlockEntity; import whocraft.tardis_refined.common.tardis.themes.ConsoleTheme; import whocraft.tardis_refined.patterns.ShellPattern; +import whocraft.tardis_refined.patterns.ShellPatterns; import java.util.Objects; @@ -48,11 +48,11 @@ public void render(GlobalConsoleBlockEntity blockEntity, float partialTick, Pose } poseStack.popPose(); - if (theme == ConsoleTheme.CRYSTAL.getId()) { + if (theme.toString().equals(ConsoleTheme.CRYSTAL.getId().toString())) { renderHoloShell(crystalHolo,270, blockEntity, poseStack, bufferSource, packedLight, crystalHoloColor); } - if (theme == ConsoleTheme.INITIATIVE.getId()) { + if (theme.toString().equals(ConsoleTheme.INITIATIVE.getId().toString())) { renderHoloShell(initiativeHolo, -30 + 180, blockEntity, poseStack, bufferSource, packedLight, initiativeHoloColor); } } @@ -61,8 +61,11 @@ private void renderHoloShell(Vec3 offset, int rotation, GlobalConsoleBlockEntity if (blockEntity.getLevel().random.nextInt(20) != 0) { poseStack.pushPose(); TardisClientData reactions = TardisClientData.getInstance(blockEntity.getLevel().dimension()); - var model = ShellModelCollection.getInstance().getShellModel(reactions.getShellTheme()); - model.setDoorOpen(false); + ResourceLocation shellTheme = reactions.getShellTheme(); + ResourceLocation shellPattern = reactions.getShellPattern(); + + var model = ShellModelCollection.getInstance().getShellEntry(shellTheme).getShellModel(); + model.setDoorPosition(false); poseStack.mulPose(Axis.ZP.rotationDegrees(180F)); poseStack.translate(offset.x, offset.y, offset.z); @@ -74,8 +77,12 @@ private void renderHoloShell(Vec3 offset, int rotation, GlobalConsoleBlockEntity poseStack.mulPose(Axis.YP.rotationDegrees(rotation % 360)); } - ShellPattern pattern = reactions.shellPattern(); - model.renderToBuffer(poseStack, bufferSource.getBuffer(RenderType.entityTranslucent(pattern.exteriorDoorTexture().texture())), packedLight, OverlayTexture.NO_OVERLAY, (float) color.x, (float) color.y, (float) color.z, 0.25f); + if (ShellSelectionScreen.globalShellBlockEntity == null) { + ShellSelectionScreen.generateDummyGlobalShell(); + } + + ShellPattern pattern = ShellPatterns.getPatternOrDefault(shellTheme, shellPattern); + model.renderShell(ShellSelectionScreen.globalShellBlockEntity, false, true, poseStack, bufferSource.getBuffer(RenderType.entityTranslucent(pattern.exteriorDoorTexture().texture())), packedLight, OverlayTexture.NO_OVERLAY, (float) color.x, (float) color.y, (float) color.z, 0.25f); poseStack.popPose(); } } diff --git a/common/src/main/java/whocraft/tardis_refined/client/renderer/blockentity/door/BulkHeadDoorRenderer.java b/common/src/main/java/whocraft/tardis_refined/client/renderer/blockentity/door/BulkHeadDoorRenderer.java index 988f76edb..099fc5e7d 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/renderer/blockentity/door/BulkHeadDoorRenderer.java +++ b/common/src/main/java/whocraft/tardis_refined/client/renderer/blockentity/door/BulkHeadDoorRenderer.java @@ -11,7 +11,7 @@ import net.minecraft.world.level.block.state.BlockState; import whocraft.tardis_refined.TardisRefined; import whocraft.tardis_refined.client.ModelRegistry; -import whocraft.tardis_refined.client.model.blockentity.door.BulkHeadDoorModel; +import whocraft.tardis_refined.client.model.blockentity.door.interior.BulkHeadDoorModel; import whocraft.tardis_refined.common.block.door.GlobalDoorBlock; import whocraft.tardis_refined.common.blockentity.door.BulkHeadDoorBlockEntity; diff --git a/common/src/main/java/whocraft/tardis_refined/client/renderer/blockentity/door/GlobalDoorRenderer.java b/common/src/main/java/whocraft/tardis_refined/client/renderer/blockentity/door/GlobalDoorRenderer.java index 758b344b5..2f25e2342 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/renderer/blockentity/door/GlobalDoorRenderer.java +++ b/common/src/main/java/whocraft/tardis_refined/client/renderer/blockentity/door/GlobalDoorRenderer.java @@ -9,65 +9,22 @@ import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.state.BlockState; -import whocraft.tardis_refined.client.ModelRegistry; -import whocraft.tardis_refined.client.TardisClientData; -import whocraft.tardis_refined.client.model.blockentity.door.*; -import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; +import whocraft.tardis_refined.client.model.blockentity.door.interior.ShellDoorModel; +import whocraft.tardis_refined.client.model.blockentity.shell.ShellModelCollection; import whocraft.tardis_refined.common.block.door.GlobalDoorBlock; import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; import whocraft.tardis_refined.common.tardis.themes.ShellTheme; -import whocraft.tardis_refined.patterns.ShellPattern; - -import java.util.HashMap; -import java.util.Map; public class GlobalDoorRenderer implements BlockEntityRenderer, BlockEntityRendererProvider { - protected static ShellModel currentModel; - private static ShellModel factoryDoorModel, policeBoxModel, phoneBoothDoorModel, mysticDoorModel, drifterModel, presentModel, vendingModel, briefcaseModel, - groeningModel, bigBenModel, nukaModel, growthModel, portalooModel, pagodaModel; - - public static Map DOOR_MODELS = new HashMap<>(); - + protected static ShellDoorModel currentModel; public GlobalDoorRenderer(BlockEntityRendererProvider.Context context) { - this.registerModels(context); - } - public void registerModels(BlockEntityRendererProvider.Context context){ - factoryDoorModel = new FactoryDoorModel(context.bakeLayer((ModelRegistry.FACTORY_DOOR))); - policeBoxModel = new PoliceBoxDoorModel(context.bakeLayer((ModelRegistry.POLICE_BOX_DOOR))); - phoneBoothDoorModel = new PhoneBoothDoorModel(context.bakeLayer((ModelRegistry.PHONE_BOOTH_DOOR))); - mysticDoorModel = new MysticDoorModel(context.bakeLayer((ModelRegistry.MYSTIC_DOOR))); - drifterModel = new DrifterDoorModel(context.bakeLayer((ModelRegistry.DRIFTER_DOOR))); - presentModel = new PresentDoorModel(context.bakeLayer((ModelRegistry.PRESENT_DOOR))); - vendingModel = new VendingMachineDoorModel(context.bakeLayer((ModelRegistry.VENDING_DOOR))); - briefcaseModel = new BriefcaseDoorModel(context.bakeLayer((ModelRegistry.BRIEFCASE_DOOR))); - groeningModel = new GroeningDoorModel(context.bakeLayer((ModelRegistry.GROENING_DOOR))); - bigBenModel = new BigBenDoorModel(context.bakeLayer((ModelRegistry.BIG_BEN_DOOR))); - nukaModel = new NukaDoorModel(context.bakeLayer((ModelRegistry.NUKA_DOOR))); - growthModel = new GrowthDoorModel(context.bakeLayer((ModelRegistry.GROWTH_DOOR))); - portalooModel = new PortalooDoorModel(context.bakeLayer((ModelRegistry.PORTALOO_DOOR))); - pagodaModel = new PagodaDoorModel(context.bakeLayer((ModelRegistry.PAGODA_DOOR))); - - DOOR_MODELS.put(ShellTheme.FACTORY.getId(), factoryDoorModel); - DOOR_MODELS.put(ShellTheme.POLICE_BOX.getId(), policeBoxModel); - DOOR_MODELS.put(ShellTheme.PHONE_BOOTH.getId(), phoneBoothDoorModel); - DOOR_MODELS.put(ShellTheme.MYSTIC.getId(), mysticDoorModel); - DOOR_MODELS.put(ShellTheme.DRIFTER.getId(), drifterModel); - DOOR_MODELS.put(ShellTheme.PRESENT.getId(), presentModel); - DOOR_MODELS.put(ShellTheme.VENDING.getId(), vendingModel); - DOOR_MODELS.put(ShellTheme.BRIEFCASE.getId(), briefcaseModel); - DOOR_MODELS.put(ShellTheme.GROENING.getId(), groeningModel); - DOOR_MODELS.put(ShellTheme.BIG_BEN.getId(), bigBenModel); - DOOR_MODELS.put(ShellTheme.NUKA.getId(), nukaModel); - DOOR_MODELS.put(ShellTheme.GROWTH.getId(), growthModel); - DOOR_MODELS.put(ShellTheme.PORTALOO.getId(), portalooModel); - DOOR_MODELS.put(ShellTheme.PAGODA.getId(), pagodaModel); - } + @Override public void render(GlobalDoorBlockEntity blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay) { poseStack.pushPose(); @@ -81,8 +38,7 @@ public void render(GlobalDoorBlockEntity blockEntity, float partialTick, PoseSta // Render slightly off the wall to prevent z-fighting. poseStack.translate(0, 0, -0.01); - - currentModel = DOOR_MODELS.get(theme); + currentModel = ShellModelCollection.getInstance().getShellEntry(theme).getShellDoorModel(); if(theme == ShellTheme.POLICE_BOX.getId()){ poseStack.scale(1.05f, 1.05f, 1.05f); @@ -90,11 +46,8 @@ public void render(GlobalDoorBlockEntity blockEntity, float partialTick, PoseSta } - TardisClientData reactions = TardisClientData.getInstance(blockEntity.getLevel().dimension()); - ShellPattern shellPattern = reactions.shellPattern(); - - currentModel.setDoorOpen(isOpen); - currentModel.renderToBuffer(poseStack, bufferSource.getBuffer(RenderType.entityTranslucent(currentModel.texture(shellPattern, false))), packedLight, OverlayTexture.NO_OVERLAY, 1f, 1f, 1f, 1f); + currentModel.setDoorPosition(isOpen); + currentModel.renderInteriorDoor(blockEntity, isOpen, true, poseStack, bufferSource.getBuffer(RenderType.entityTranslucent(currentModel.getInteriorDoorTexture(blockEntity))), packedLight, OverlayTexture.NO_OVERLAY, 1f, 1f, 1f, 1f); poseStack.popPose(); } diff --git a/common/src/main/java/whocraft/tardis_refined/client/renderer/blockentity/life/ArsEggRenderer.java b/common/src/main/java/whocraft/tardis_refined/client/renderer/blockentity/life/ArsEggRenderer.java index f998afdd6..6157a8d62 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/renderer/blockentity/life/ArsEggRenderer.java +++ b/common/src/main/java/whocraft/tardis_refined/client/renderer/blockentity/life/ArsEggRenderer.java @@ -2,17 +2,25 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Axis; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.state.BlockState; import whocraft.tardis_refined.TardisRefined; import whocraft.tardis_refined.client.ModelRegistry; +import whocraft.tardis_refined.client.TardisClientData; import whocraft.tardis_refined.client.model.blockentity.life.ArsEggModel; +import whocraft.tardis_refined.common.block.life.ArsEggBlock; import whocraft.tardis_refined.common.blockentity.life.ArsEggBlockEntity; +import static whocraft.tardis_refined.client.model.blockentity.life.ArsEggModel.CRASHING; +import static whocraft.tardis_refined.client.model.blockentity.life.ArsEggModel.SWINGING; + public class ArsEggRenderer implements BlockEntityRenderer, BlockEntityRendererProvider { private final ArsEggModel arsEggModel; @@ -23,18 +31,41 @@ public ArsEggRenderer(BlockEntityRendererProvider.Context context) { this.arsEggModel = new ArsEggModel(context.bakeLayer(ModelRegistry.ARS_EGG)); } - @Override public void render(ArsEggBlockEntity blockEntity, float f, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, int j) { poseStack.pushPose(); poseStack.translate(0.5F, 1.475F, 0.5F); + poseStack.translate(0, 0.3, 0); + + BlockState blockState = blockEntity.getBlockState(); + + if(!blockState.getValue(ArsEggBlock.HANGING)){ + poseStack.translate(0, -0.3, 0); + } + poseStack.mulPose(Axis.ZP.rotationDegrees(180F)); - arsEggModel.renderToBuffer(poseStack, multiBufferSource.getBuffer(RenderType.entityTranslucent(arsEggTexture)), + arsEggModel.root().getAllParts().forEach(ModelPart::resetPose); + + + if(!blockEntity.getLiveliness().isStarted()) { + blockEntity.getLiveliness().start(12); + } + + if(blockState.getValue(ArsEggBlock.HANGING)){ + TardisClientData tardisClientData = TardisClientData.getInstance(Minecraft.getInstance().level.dimension()); + boolean crashingOrDanger = tardisClientData.isCrashing() || tardisClientData.isInDangerZone(); + int animationCounter = Minecraft.getInstance().player.tickCount; + arsEggModel.doAnimation(blockEntity.getLiveliness(), crashingOrDanger ? CRASHING : SWINGING, animationCounter); + } + + arsEggModel.renderToBuffer(blockEntity, poseStack, multiBufferSource.getBuffer(RenderType.entityTranslucent(arsEggTexture)), i, OverlayTexture.NO_OVERLAY, 1f, 1f, 1f, 1f); - arsEggModel.renderToBuffer(poseStack, multiBufferSource.getBuffer(RenderType.eyes(arsEggTextureEmissive)), - i, OverlayTexture.NO_OVERLAY, 1f, 1f, 1f, 0.1f); + if(blockState.getValue(ArsEggBlock.ALIVE)) { + arsEggModel.renderToBuffer(blockEntity, poseStack, multiBufferSource.getBuffer(RenderType.entityTranslucentEmissive(arsEggTextureEmissive)), + i, OverlayTexture.NO_OVERLAY, 1f, 1f, 1f, 1F); + } poseStack.popPose(); } diff --git a/common/src/main/java/whocraft/tardis_refined/client/renderer/blockentity/shell/GlobalShellRenderer.java b/common/src/main/java/whocraft/tardis_refined/client/renderer/blockentity/shell/GlobalShellRenderer.java index 8bb35dbc9..ecc3e5acc 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/renderer/blockentity/shell/GlobalShellRenderer.java +++ b/common/src/main/java/whocraft/tardis_refined/client/renderer/blockentity/shell/GlobalShellRenderer.java @@ -7,20 +7,14 @@ import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.core.Registry; -import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; -import whocraft.tardis_refined.TardisRefined; -import whocraft.tardis_refined.client.TardisClientData; import whocraft.tardis_refined.client.model.blockentity.shell.ShellModelCollection; import whocraft.tardis_refined.common.block.shell.GlobalShellBlock; import whocraft.tardis_refined.common.block.shell.RootedShellBlock; import whocraft.tardis_refined.common.block.shell.ShellBaseBlock; import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; -import whocraft.tardis_refined.common.tardis.themes.ShellTheme; import whocraft.tardis_refined.patterns.ShellPattern; public class GlobalShellRenderer implements BlockEntityRenderer, BlockEntityRendererProvider { @@ -51,20 +45,19 @@ public void render(GlobalShellBlockEntity blockEntity, float partialTick, PoseSt } } - var currentModel = ShellModelCollection.getInstance().getShellModel(theme); - TardisClientData reactions = TardisClientData.getInstance(blockEntity.getTardisId()); - ShellPattern pattern = reactions.shellPattern(); + var currentModel = ShellModelCollection.getInstance().getShellEntry(theme).getShellModel(); + ShellPattern pattern = blockEntity.pattern(); - currentModel.renderShell(blockEntity, isOpen, true, poseStack, bufferSource.getBuffer(RenderType.entityTranslucent(currentModel.texture(pattern, false))), packedLight, OverlayTexture.NO_OVERLAY, 1f, 1f, 1f, 1f); + currentModel.renderShell(blockEntity, isOpen, true, poseStack, bufferSource.getBuffer(RenderType.entityTranslucent(currentModel.getShellTexture(pattern, false))), packedLight, OverlayTexture.NO_OVERLAY, 1f, 1f, 1f, 1f); /*Emmissive*/ Boolean isRegenerating = blockstate.getValue(ShellBaseBlock.REGEN); if (pattern.exteriorDoorTexture().emissive()) { - currentModel.renderShell(blockEntity, isOpen, false, poseStack, bufferSource.getBuffer(RenderType.entityTranslucentEmissive(currentModel.texture(pattern, true))), 15728640, OverlayTexture.NO_OVERLAY, 1f, 1f, 1f, (isRegenerating) ? sine : 1f); + currentModel.renderShell(blockEntity, isOpen, false, poseStack, bufferSource.getBuffer(RenderType.entityTranslucentEmissive(currentModel.getShellTexture(pattern, true))), 15728640, OverlayTexture.NO_OVERLAY, 1f, 1f, 1f, (isRegenerating) ? sine : 1f); } else { if (isRegenerating) { - currentModel.renderShell(blockEntity, isOpen, false, poseStack, bufferSource.getBuffer(RenderType.entityTranslucentEmissive(currentModel.texture(pattern, false))), 15728640, OverlayTexture.NO_OVERLAY, 1f, 1f, 1f, sine); + currentModel.renderShell(blockEntity, isOpen, false, poseStack, bufferSource.getBuffer(RenderType.entityTranslucentEmissive(currentModel.getShellTexture(pattern, false))), 15728640, OverlayTexture.NO_OVERLAY, 1f, 1f, 1f, sine); } } diff --git a/common/src/main/java/whocraft/tardis_refined/client/screen/selections/ShellSelectionScreen.java b/common/src/main/java/whocraft/tardis_refined/client/screen/selections/ShellSelectionScreen.java index 312e42f0e..a9fc7ac24 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/screen/selections/ShellSelectionScreen.java +++ b/common/src/main/java/whocraft/tardis_refined/client/screen/selections/ShellSelectionScreen.java @@ -12,26 +12,30 @@ import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.resources.Resource; import net.minecraft.util.RandomSource; +import net.minecraft.world.level.Level; import whocraft.tardis_refined.TardisRefined; import whocraft.tardis_refined.client.TardisClientData; import whocraft.tardis_refined.client.model.blockentity.shell.ShellModel; import whocraft.tardis_refined.client.model.blockentity.shell.ShellModelCollection; import whocraft.tardis_refined.client.screen.components.GenericMonitorSelectionList; import whocraft.tardis_refined.client.screen.components.SelectionListEntry; +import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; import whocraft.tardis_refined.common.network.messages.ChangeShellMessage; import whocraft.tardis_refined.common.tardis.themes.ShellTheme; import whocraft.tardis_refined.constants.ModMessages; import whocraft.tardis_refined.patterns.ShellPattern; -import whocraft.tardis_refined.patterns.ShellPatternCollection; import whocraft.tardis_refined.patterns.ShellPatterns; +import whocraft.tardis_refined.registry.BlockRegistry; import java.util.List; -import java.util.Set; +import java.util.UUID; public class ShellSelectionScreen extends SelectionScreen { @@ -49,10 +53,21 @@ public class ShellSelectionScreen extends SelectionScreen { private List patternCollection; private Button patternButton; + public static GlobalShellBlockEntity globalShellBlockEntity; public ShellSelectionScreen() { super(Component.translatable(ModMessages.UI_SHELL_SELECTION)); this.themeList = ShellTheme.SHELL_THEME_REGISTRY.keySet().stream().toList(); + generateDummyGlobalShell(); + + } + + public static void generateDummyGlobalShell() { + globalShellBlockEntity = new GlobalShellBlockEntity(BlockPos.ZERO, BlockRegistry.GLOBAL_SHELL_BLOCK.get().defaultBlockState()); + assert Minecraft.getInstance().level != null; + globalShellBlockEntity.setLevel(Minecraft.getInstance().level); + ResourceKey generatedLevelKey = ResourceKey.create(Registries.DIMENSION, new ResourceLocation(TardisRefined.MODID, UUID.randomUUID().toString())); + globalShellBlockEntity.setTardisId(generatedLevelKey); } @Override @@ -121,6 +136,7 @@ public void render(GuiGraphics guiGraphics, int i, int j, float f) { /*Model*/ renderShell(guiGraphics, width / 2- 75, height / 2 - 20, 25F); + //renderShell(guiGraphics, width / 2, height / 2, 25F); double alpha = (100.0D - this.age * 3.0D) / 100.0D; @@ -135,21 +151,22 @@ public void render(GuiGraphics guiGraphics, int i, int j, float f) { @Override public void renderBackground(GuiGraphics guiGraphics, int i, int j, float f) { - // super.renderBackground(guiGraphics, i, j, f); + // super.renderBackground(guiGraphics, i, j, f); } private void renderShell(GuiGraphics guiGraphics, int x, int y, float scale) { - ShellModel model = ShellModelCollection.getInstance().getShellModel(this.currentShellTheme); - model.setDoorOpen(false); + ShellModel model = ShellModelCollection.getInstance().getShellEntry(this.currentShellTheme).getShellModel(); + model.setDoorPosition(false); Lighting.setupForEntityInInventory(); PoseStack pose = guiGraphics.pose(); pose.pushPose(); pose.translate((float) x, y, 100.0F); pose.scale(-scale, scale, scale); pose.mulPose(Axis.XP.rotationDegrees(-15F)); - pose.mulPose(Axis.YP.rotationDegrees(System.currentTimeMillis() % 5400L / 15L)); - VertexConsumer vertexConsumer = guiGraphics.bufferSource().getBuffer(model.renderType(model.texture(pattern, false))); - model.renderToBuffer(pose, vertexConsumer, 15728880, OverlayTexture.NO_OVERLAY, 1.0F, 1.0F, 1.0F, 1.0F); + pose.mulPose(Axis.YP.rotationDegrees((float) (System.currentTimeMillis() % 5400L) / 15L)); + + VertexConsumer vertexConsumer = guiGraphics.bufferSource().getBuffer(model.renderType(model.getShellTexture(pattern, false))); + model.renderShell(globalShellBlockEntity, false, false, pose, vertexConsumer, 15728880, OverlayTexture.NO_OVERLAY, 1.0F, 1.0F, 1.0F, 1.0F); guiGraphics.flush(); pose.popPose(); Lighting.setupFor3DItems(); diff --git a/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/BuyUpgradeScreen.java b/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/BuyUpgradeScreen.java index 98d9bb57b..1532c4e7e 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/BuyUpgradeScreen.java +++ b/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/BuyUpgradeScreen.java @@ -14,6 +14,7 @@ import whocraft.tardis_refined.common.capability.upgrades.Upgrade; import whocraft.tardis_refined.common.network.messages.upgrades.C2SDisplayUpgradeScreen; import whocraft.tardis_refined.common.network.messages.upgrades.UnlockUpgradeMessage; +import whocraft.tardis_refined.constants.ModMessages; import java.util.List; import java.util.Objects; @@ -32,7 +33,7 @@ public BuyUpgradeScreen(Upgrade upgrade, boolean available, UpgradesScreen paren this.upgrade = upgrade; this.available = available; this.parentScreen = parentScreen; - this.text = Component.translatable("gui.tardis_refined.buy_ability"); + this.text = Component.translatable(ModMessages.UI_UPGRADES_BUY); } @Override @@ -67,7 +68,7 @@ public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partia for (int k = 0; k < lines.size(); k++) { FormattedCharSequence text = lines.get(k); int width = this.font.width(text); - guiGraphics.drawString(font, text, (int) (guiLeft + GUI_WIDTH / 2F - width / 2F), guiTop + 9 + k * 10, ChatFormatting.GOLD.getColor(), false); + guiGraphics.drawString(font, text, (int) (guiLeft + GUI_WIDTH / 2F - width / 2F), guiTop + 9 + k * 10, ChatFormatting.BLACK.getColor(), false); } super.render(guiGraphics, mouseX, mouseY, partialTick); diff --git a/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradeTab.java b/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradeTab.java index 4b998faaa..cc00b2e60 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradeTab.java +++ b/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradeTab.java @@ -48,18 +48,18 @@ public UpgradeTab(Minecraft minecraft, UpgradesScreen UpgradesScreen, UpgradeTab this.index = i; this.upgradeHandler = powerHolder; this.icon = new ItemStack(Items.COOKED_PORKCHOP); - this.title = Component.literal("its shy"); - this.populate(); + this.title = Component.literal(""); + this.populate(powerHolder); } - public void populate() { + public void populate(UpgradeHandler upgradeHandlerClient) { this.entries.clear(); this.connections.clear(); List root = new LinkedList<>(); // Create entry for each ability for (Upgrade upgrade : Upgrades.UPGRADE_REGISTRY.stream().toList()) { - var widget = new UpgradeWidget(this, this.minecraft, this.upgradeHandler, upgrade).setPosition(0, 0); + var widget = new UpgradeWidget(this, this.minecraft, upgradeHandlerClient, upgrade).setPosition(0, 0); this.entries.add(widget); var pos = upgrade.getScreenPosition(); diff --git a/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradeWidget.java b/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradeWidget.java index 1deff2bc4..2df5d34a0 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradeWidget.java +++ b/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradeWidget.java @@ -2,7 +2,6 @@ import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.ChatFormatting; -import net.minecraft.advancements.FrameType; import net.minecraft.client.Minecraft; import net.minecraft.client.StringSplitter; import net.minecraft.client.gui.Font; @@ -16,8 +15,6 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.util.FormattedCharSequence; import net.minecraft.util.Mth; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; import whocraft.tardis_refined.common.capability.upgrades.Upgrade; import whocraft.tardis_refined.common.capability.upgrades.UpgradeHandler; @@ -142,13 +139,15 @@ public void drawDisplayIcon(Minecraft mc, GuiGraphics guiGraphics, int x, int y) guiGraphics.renderFakeItem(this.upgradeEntry.getIcon(), x, y); } else { RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - guiGraphics.blit(UpgradesScreen.WIDGETS, x, y, 90, 133, 16, 16); + + //Display Lock6, + guiGraphics.blitSprite(UpgradesScreen.LOCKED, x - 5, y - 5, 26, 26); } } public void drawIcon(Minecraft mc, GuiGraphics guiGraphics, int x, int y) { RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - guiGraphics.blit(UpgradesScreen.WIDGETS, x - 13, y - 13, 0, this.upgradeEntry.isUnlocked(upgradeHandler) ? 128 : 154, 26, 26); + guiGraphics.blitSprite(UpgradesScreen.getFrame(upgradeEntry.getUpgradeType(), this.upgradeEntry.isUnlocked(upgradeHandler)), x - 13, y - 13, 26, 26); this.drawDisplayIcon(mc, guiGraphics, x - 8, y - 8); } @@ -213,9 +212,9 @@ public void drawHover(GuiGraphics guiGraphics, int i, int j, float f, int k, int } } - guiGraphics.blitSprite(advancementWidgetType.boxSprite(), 200, 26, 0, 0, q, p, n, 26); - guiGraphics.blitSprite(advancementWidgetType2.boxSprite(), 200, 26, 200 - o, 0, q + n, p, o, 26); - guiGraphics.blitSprite(advancementWidgetType3.frameSprite(FrameType.TASK), i + this.x + 3, j + this.y, 26, 26); + guiGraphics.blitSprite(UpgradesScreen.getBox(upgradeEntry.isUnlocked(upgradeHandler)), 200, 26, 0, 0, q, p, n, 26); + guiGraphics.blitSprite(UpgradesScreen.getBox(upgradeEntry.isUnlocked(upgradeHandler)), 200, 26, 200 - o, 0, q + n, p, o, 26); + guiGraphics.blitSprite(UpgradesScreen.getFrame(upgradeEntry.getUpgradeType(), upgradeEntry.isUnlocked(upgradeHandler)), i + this.x + 3, j + this.y, 26, 26); if (bl) { guiGraphics.drawString(this.minecraft.font, this.title, q + 5, j + this.y + 9, -1); if (component != null) { diff --git a/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradesScreen.java b/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradesScreen.java index f73089a72..43e5d2b85 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradesScreen.java +++ b/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradesScreen.java @@ -12,6 +12,7 @@ import whocraft.tardis_refined.TardisRefined; import whocraft.tardis_refined.common.capability.upgrades.Upgrade; import whocraft.tardis_refined.common.capability.upgrades.UpgradeHandler; +import whocraft.tardis_refined.constants.ModMessages; import java.util.ArrayList; import java.util.List; @@ -20,16 +21,24 @@ public class UpgradesScreen extends Screen { public static final ResourceLocation WINDOW = new ResourceLocation(TardisRefined.MODID, "textures/gui/upgrades/window.png"); public static final ResourceLocation TABS = new ResourceLocation(TardisRefined.MODID, "textures/gui/upgrades/tabs.png"); - public static final ResourceLocation WIDGETS = new ResourceLocation(TardisRefined.MODID, "textures/gui/upgrades/widgets.png"); public static final ResourceLocation BACKDROP = new ResourceLocation(TardisRefined.MODID, "textures/gui/upgrades/upgrades.png"); + public static final ResourceLocation MAIN_UPGRADE_LOCKED = new ResourceLocation(TardisRefined.MODID, "upgrades/gallifreyan_frame_unobtained"); + public static final ResourceLocation SUB_UPGRADE_LOCKED = new ResourceLocation(TardisRefined.MODID, "upgrades/upgrade_frame_unobtained"); + public static final ResourceLocation SUB_UPGRADE = new ResourceLocation(TardisRefined.MODID, "upgrades/upgrade_frame_obtained"); + public static final ResourceLocation MAIN_UPGRADE = new ResourceLocation(TardisRefined.MODID, "upgrades/gallifreyan_frame_obtained"); + public static final ResourceLocation LOCKED = new ResourceLocation(TardisRefined.MODID, "upgrades/lock"); + public static final ResourceLocation UNOBTAINED_BOX = new ResourceLocation(TardisRefined.MODID, "upgrades/box_unobtained"); + public static final ResourceLocation OBTAINED_BOX = new ResourceLocation(TardisRefined.MODID, "upgrades/box_obtained"); + + public static final int WINDOW_WIDTH = 256; public static final int WINDOW_HEIGHT = 173; private static final int WINDOW_INSIDE_X = 10; private static final int WINDOW_INSIDE_Y = 18; public static final int WINDOW_INSIDE_WIDTH = 234 - 10; public static final int WINDOW_INSIDE_HEIGHT = 169 - 46; - private static final Component TITLE = Component.translatable("gui.tardis_refined.upgrades"); + private static final Component TITLE = Component.translatable(ModMessages.UI_UPGRADES); private final List tabs = new ArrayList<>(); private final UpgradeHandler upgradeHandler; @Nullable @@ -231,4 +240,17 @@ public boolean isOverOverlayScreen(double mouseX, double mouseY) { } + public static ResourceLocation getFrame(Upgrade.UpgradeType upgradeType, boolean isUnlocked) { + if (isUnlocked) { + return upgradeType == Upgrade.UpgradeType.MAIN_UPGRADE ? MAIN_UPGRADE : SUB_UPGRADE; + } + return upgradeType == Upgrade.UpgradeType.MAIN_UPGRADE ? MAIN_UPGRADE_LOCKED : SUB_UPGRADE_LOCKED; + } + + public static ResourceLocation getBox(boolean isUnlocked) { + return isUnlocked ? OBTAINED_BOX : UNOBTAINED_BOX; + } + + + } diff --git a/common/src/main/java/whocraft/tardis_refined/client/sounds/LoopingSound.java b/common/src/main/java/whocraft/tardis_refined/client/sounds/LoopingSound.java new file mode 100644 index 000000000..599d98f3b --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/client/sounds/LoopingSound.java @@ -0,0 +1,108 @@ +package whocraft.tardis_refined.client.sounds; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.client.resources.sounds.AbstractTickableSoundInstance; +import net.minecraft.client.resources.sounds.SoundInstance; +import net.minecraft.client.sounds.SoundManager; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.NotNull; +import whocraft.tardis_refined.client.TardisClientData; +import whocraft.tardis_refined.common.util.TardisHelper; +import whocraft.tardis_refined.registry.DimensionTypes; +import whocraft.tardis_refined.registry.SoundRegistry; + +public class LoopingSound extends AbstractTickableSoundInstance { + + public static LoopingSound ARS_HUMMING = null; + public static LoopingSound FLIGHT_LOOP = null; + public static LoopingSound HUM_TEST = null; + + public LoopingSound(@NotNull SoundEvent soundEvent, SoundSource soundSource) { + super(soundEvent, soundSource, SoundInstance.createUnseededRandom()); + attenuation = Attenuation.NONE; + looping = true; + delay = 0; + volume = 0.5f; + } + + public void setVolume(float volume) { + this.volume = volume; + } + + @Override + public float getVolume() { + return volume; + } + + public void setPitch(float pitch) { + this.pitch = pitch; + } + + @Override + public float getPitch() { + return pitch; + } + + public void setLocation(Vec3 location) { + x = location.x; + y = location.y; + z = location.z; + } + + public void stopSound() { + Minecraft.getInstance() + .getSoundManager() + .stop(this); + } + + @Override + public void tick() { + LocalPlayer player = Minecraft.getInstance().player; + if(player == null) return; + + TardisClientData tardisClientData = TardisClientData.getInstance(Minecraft.getInstance().level.dimension()); + + if(this == LoopingSound.ARS_HUMMING) { + Vec3 playerVec = player.position(); + double distance = playerVec.distanceTo(new Vec3(x, y, z)); + double maxDistance = 11.0; + double fadeFactor = Math.max(1.0 - distance / maxDistance, 0.0); + float defaultVolume = 1.0f; + volume = (float) (fadeFactor * defaultVolume); + } + + if(this == LoopingSound.FLIGHT_LOOP){ + if (tardisClientData.isFlying() && !tardisClientData.isCrashing()) { + LoopingSound.FLIGHT_LOOP.setLocation(player.position()); + volume = 0.5F; + } else { + volume = 0F; + } + } + + if(this == LoopingSound.HUM_TEST){ + delay = 40; + volume = TardisHelper.isInArsArea(player.blockPosition()) ? 0 : 0.2F; + if(DimensionTypes.TARDIS == player.level().dimensionTypeId()){ + volume = 0.2F; + } else { + volume = 0.0F; + } + } + } + + + public static boolean shouldMinecraftMusicStop(SoundManager soundManager){ + return soundManager.isActive(FLIGHT_LOOP) || soundManager.isActive(ARS_HUMMING) || soundManager.isActive(HUM_TEST); + } + + public static void setupSounds(){ + LoopingSound.ARS_HUMMING = new LoopingSound(SoundRegistry.ARS_HUM.get(), SoundSource.AMBIENT); + LoopingSound.FLIGHT_LOOP = new LoopingSound(SoundRegistry.TARDIS_SINGLE_FLY.get(), SoundSource.AMBIENT); + LoopingSound.HUM_TEST = new LoopingSound(SoundRegistry.TEST_HUM.get(), SoundSource.AMBIENT); + } + +} diff --git a/common/src/main/java/whocraft/tardis_refined/command/TardisRefinedCommand.java b/common/src/main/java/whocraft/tardis_refined/command/TardisRefinedCommand.java index 622548f5e..4fd1cd489 100644 --- a/common/src/main/java/whocraft/tardis_refined/command/TardisRefinedCommand.java +++ b/common/src/main/java/whocraft/tardis_refined/command/TardisRefinedCommand.java @@ -4,8 +4,10 @@ import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import whocraft.tardis_refined.TardisRefined; -import whocraft.tardis_refined.command.sub.export.ExportDesktopCommand; import whocraft.tardis_refined.command.sub.InteriorCommand; +import whocraft.tardis_refined.command.sub.LevelCommand; +import whocraft.tardis_refined.command.sub.UpgradesCommand; +import whocraft.tardis_refined.command.sub.export.ExportDesktopCommand; import whocraft.tardis_refined.common.util.Platform; public class TardisRefinedCommand { @@ -13,10 +15,9 @@ public class TardisRefinedCommand { public static void register(CommandDispatcher dispatcher) { dispatcher.register(Commands.literal(TardisRefined.MODID).requires(commandSource -> commandSource.hasPermission(Platform.getServer().getOperatorUserPermissionLevel())) .then(InteriorCommand.register(dispatcher)) + .then(UpgradesCommand.register(dispatcher)) .then(Commands.literal("data").then(Commands.literal("export").then(ExportDesktopCommand.register(dispatcher)))) - - ); - + .then(Commands.literal("level").then(LevelCommand.register(dispatcher)))); } } diff --git a/common/src/main/java/whocraft/tardis_refined/command/arguments/UpgradeArgumentType.java b/common/src/main/java/whocraft/tardis_refined/command/arguments/UpgradeArgumentType.java new file mode 100644 index 000000000..c35e4147b --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/command/arguments/UpgradeArgumentType.java @@ -0,0 +1,45 @@ +package whocraft.tardis_refined.command.arguments; + +import com.mojang.brigadier.StringReader; +import com.mojang.brigadier.arguments.ArgumentType; +import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.mojang.brigadier.exceptions.DynamicCommandExceptionType; +import com.mojang.brigadier.suggestion.Suggestions; +import com.mojang.brigadier.suggestion.SuggestionsBuilder; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import whocraft.tardis_refined.common.capability.upgrades.Upgrade; +import whocraft.tardis_refined.common.capability.upgrades.Upgrades; + +import java.util.Collection; +import java.util.concurrent.CompletableFuture; + +public class UpgradeArgumentType implements ArgumentType { + + public static final DynamicCommandExceptionType INVALID_UPGRADE_EXCEPTION = new DynamicCommandExceptionType((UPGRADE) -> Component.translatable("argument.regeneration.upgrade.invalid", UPGRADE)); + + public static UpgradeArgumentType upgradeArgumentType() { + return new UpgradeArgumentType(); + } + + @Override + public Upgrade parse(StringReader reader) throws CommandSyntaxException { + ResourceLocation location = ResourceLocation.read(reader); + Upgrade upgrade = Upgrades.UPGRADE_DEFERRED_REGISTRY.getRegistry().get(location); + if (upgrade != null) { + return upgrade; + } + throw INVALID_UPGRADE_EXCEPTION.create(location); } + + @Override + public CompletableFuture listSuggestions(CommandContext context, SuggestionsBuilder builder) { + return SharedSuggestionProvider.suggestResource(Upgrades.UPGRADE_REGISTRY.keySet(), builder); + } + + @Override + public Collection getExamples() { + return ArgumentType.super.getExamples(); + } +} \ No newline at end of file diff --git a/common/src/main/java/whocraft/tardis_refined/command/sub/LevelCommand.java b/common/src/main/java/whocraft/tardis_refined/command/sub/LevelCommand.java new file mode 100644 index 000000000..62a1b481d --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/command/sub/LevelCommand.java @@ -0,0 +1,102 @@ +package whocraft.tardis_refined.command.sub; + +import com.mojang.brigadier.Command; +import com.mojang.brigadier.CommandDispatcher; +import com.mojang.brigadier.arguments.IntegerArgumentType; +import com.mojang.brigadier.builder.ArgumentBuilder; +import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.Commands; +import net.minecraft.commands.arguments.DimensionArgument; +import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerLevel; +import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.upgrades.UpgradeHandler; +import whocraft.tardis_refined.common.util.CommandHelper; + +public class LevelCommand { + + public static ArgumentBuilder register(CommandDispatcher dispatcher) { + return Commands.argument("dimension", DimensionArgument.dimension()).suggests(CommandHelper.SUGGEST_TARDISES) + .then(Commands.literal("get-points").executes(LevelCommand::getDimensionPoints)) + .then(Commands.literal("set-points").then(Commands.argument("points", IntegerArgumentType.integer()).executes(LevelCommand::setDimensionPoints))) + .then(Commands.literal("add-points").then(Commands.argument("points", IntegerArgumentType.integer()).executes(LevelCommand::addDimensionPoints))) + .then(Commands.literal("get-xp").executes(LevelCommand::getDimensionXp)) + .then(Commands.literal("set-xp").then(Commands.argument("xp", IntegerArgumentType.integer()).executes(LevelCommand::setDimensionXp))) + .then(Commands.literal("add-xp").then(Commands.argument("xp", IntegerArgumentType.integer()).executes(LevelCommand::addDimensionXp))); + + } + + private static int getDimensionPoints(CommandContext context) throws CommandSyntaxException { + ServerLevel dimension = DimensionArgument.getDimension(context, "dimension"); + + TardisLevelOperator.get(dimension).ifPresent(tardisLevelOperator -> { + int points = tardisLevelOperator.getUpgradeHandler().getUpgradePoints(); + context.getSource().sendSystemMessage(Component.literal("Tardis: " + dimension.toString().split(":")[1] + " levels: " + points)); + }); + + return Command.SINGLE_SUCCESS; + } + + private static int setDimensionPoints(CommandContext context) throws CommandSyntaxException { + ServerLevel dimension = DimensionArgument.getDimension(context, "dimension"); + int points = IntegerArgumentType.getInteger(context, "points"); + + TardisLevelOperator.get(dimension).ifPresent(tardisLevelOperator -> { + tardisLevelOperator.getUpgradeHandler().setUpgradePoints(points); + context.getSource().sendSystemMessage(Component.literal("Tardis: " + dimension.toString().split(":")[1] + " points set to " + points)); + }); + + return Command.SINGLE_SUCCESS; + } + + private static int addDimensionPoints(CommandContext context) throws CommandSyntaxException { + ServerLevel dimension = DimensionArgument.getDimension(context, "dimension"); + int points = IntegerArgumentType.getInteger(context, "points"); + + TardisLevelOperator.get(dimension).ifPresent(tardisLevelOperator -> { + UpgradeHandler upgradeHandler = tardisLevelOperator.getUpgradeHandler(); + upgradeHandler.setUpgradePoints(upgradeHandler.getUpgradePoints() + points); + context.getSource().sendSystemMessage(Component.literal("Tardis: " + dimension.toString().split(":")[1] + " points set to " + upgradeHandler.getUpgradePoints())); + }); + + return Command.SINGLE_SUCCESS; + } + + private static int addDimensionXp(CommandContext context) throws CommandSyntaxException { + ServerLevel dimension = DimensionArgument.getDimension(context, "dimension"); + int points = IntegerArgumentType.getInteger(context, "points"); + + TardisLevelOperator.get(dimension).ifPresent(tardisLevelOperator -> { + UpgradeHandler upgradeHandler = tardisLevelOperator.getUpgradeHandler(); + upgradeHandler.setUpgradeXP(upgradeHandler.getUpgradeXP() + points); + context.getSource().sendSystemMessage(Component.literal("Tardis: " + dimension.toString().split(":")[1] + " points set to " + upgradeHandler.getUpgradeXP())); + }); + + return Command.SINGLE_SUCCESS; + } + + private static int getDimensionXp(CommandContext context) throws CommandSyntaxException { + ServerLevel dimension = DimensionArgument.getDimension(context, "dimension"); + + TardisLevelOperator.get(dimension).ifPresent(tardisLevelOperator -> { + int xp = tardisLevelOperator.getUpgradeHandler().getUpgradeXP(); + context.getSource().sendSystemMessage(Component.literal("Tardis: " + dimension.toString().split(":")[1] + " xp: " + xp)); + }); + + return Command.SINGLE_SUCCESS; + } + + private static int setDimensionXp(CommandContext context) throws CommandSyntaxException { + ServerLevel dimension = DimensionArgument.getDimension(context, "dimension"); + int points = IntegerArgumentType.getInteger(context, "xp"); + + TardisLevelOperator.get(dimension).ifPresent(tardisLevelOperator -> { + tardisLevelOperator.getUpgradeHandler().setUpgradePoints(points); + context.getSource().sendSystemMessage(Component.literal("Tardis: " + dimension.toString().split(":")[1] + " xp set to " + points)); + }); + + return Command.SINGLE_SUCCESS; + } +} diff --git a/common/src/main/java/whocraft/tardis_refined/command/sub/UpgradesCommand.java b/common/src/main/java/whocraft/tardis_refined/command/sub/UpgradesCommand.java new file mode 100644 index 000000000..450da8364 --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/command/sub/UpgradesCommand.java @@ -0,0 +1,55 @@ +package whocraft.tardis_refined.command.sub; + +import com.mojang.brigadier.Command; +import com.mojang.brigadier.CommandDispatcher; +import com.mojang.brigadier.builder.ArgumentBuilder; +import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.Commands; +import net.minecraft.commands.arguments.DimensionArgument; +import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerLevel; +import whocraft.tardis_refined.command.arguments.UpgradeArgumentType; +import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.upgrades.Upgrade; +import whocraft.tardis_refined.common.util.CommandHelper; + +public class UpgradesCommand { + + public static ArgumentBuilder register(CommandDispatcher dispatcher) { + return Commands.literal("upgrades") + .then(Commands.literal("lock") + .then(Commands.argument("dimension", DimensionArgument.dimension()).suggests(CommandHelper.SUGGEST_TARDISES) + .then(Commands.argument("upgrade", UpgradeArgumentType.upgradeArgumentType()) + .executes(UpgradesCommand::setUpgradeLocked)))) + .then(Commands.literal("unlock") + .then(Commands.argument("dimension", DimensionArgument.dimension()).suggests(CommandHelper.SUGGEST_TARDISES) + .then(Commands.argument("upgrade", UpgradeArgumentType.upgradeArgumentType()) + .executes(UpgradesCommand::setUpgradeUnlocked)))); + } + + private static int setUpgradeLocked(CommandContext context) throws CommandSyntaxException { + ServerLevel dimension = DimensionArgument.getDimension(context, "dimension"); + Upgrade upgrade = context.getArgument("upgrade", Upgrade.class); + + TardisLevelOperator.get(dimension).ifPresent(tardisLevelOperator -> { + tardisLevelOperator.getUpgradeHandler().lockUpgrade(upgrade); + context.getSource().sendSystemMessage(Component.literal("Tardis: " + dimension.toString().split(":")[1] + " locked " + upgrade.getDisplayName())); + }); + + return Command.SINGLE_SUCCESS; + } + + private static int setUpgradeUnlocked(CommandContext context) throws CommandSyntaxException { + ServerLevel dimension = DimensionArgument.getDimension(context, "dimension"); + Upgrade upgrade = context.getArgument("upgrade", Upgrade.class); + + TardisLevelOperator.get(dimension).ifPresent(tardisLevelOperator -> { + tardisLevelOperator.getUpgradeHandler().unlockUpgrade(upgrade); + context.getSource().sendSystemMessage(Component.literal("Tardis: " + dimension.toString().split(":")[1] + " unlocked " + upgrade.getDisplayName())); + }); + + return Command.SINGLE_SUCCESS; + } +} diff --git a/common/src/main/java/whocraft/tardis_refined/common/block/RootPlantBlock.java b/common/src/main/java/whocraft/tardis_refined/common/block/RootPlantBlock.java index 7debd3a00..535eae0db 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/block/RootPlantBlock.java +++ b/common/src/main/java/whocraft/tardis_refined/common/block/RootPlantBlock.java @@ -1,7 +1,9 @@ package whocraft.tardis_refined.common.block; +import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleTypes; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; @@ -23,6 +25,7 @@ import net.minecraft.world.level.block.state.properties.IntegerProperty; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.Fluids; +import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; import org.jetbrains.annotations.NotNull; @@ -30,7 +33,7 @@ import whocraft.tardis_refined.common.block.shell.RootedShellBlock; import whocraft.tardis_refined.common.blockentity.shell.RootPlantBlockEntity; import whocraft.tardis_refined.common.capability.TardisLevelOperator; -import whocraft.tardis_refined.common.tardis.manager.TardisFlightEventManager; +import whocraft.tardis_refined.common.util.ClientHelper; import whocraft.tardis_refined.common.util.TardisHelper; import whocraft.tardis_refined.registry.BlockRegistry; import whocraft.tardis_refined.registry.DimensionTypes; @@ -87,12 +90,23 @@ public boolean isRandomlyTicking(BlockState blockState) { return !this.isMaxAge(blockState); } + @Override + public void animateTick(BlockState blockState, Level level, BlockPos blockPos, RandomSource randomSource) { + super.animateTick(blockState, level, blockPos, randomSource); + if (level.getBlockState(blockPos.below()).getBlock() == Blocks.MAGMA_BLOCK) { + ClientHelper.playParticle((ClientLevel) level, ParticleTypes.REVERSE_PORTAL, new Vec3(blockPos.getX() + 0.5, blockPos.getY(), blockPos.getZ() + 0.5), 0.0D, 0.1D, 0.0D); + } + } + @Override public void randomTick(BlockState blockState, ServerLevel serverLevel, BlockPos blockPos, RandomSource randomSource) { + int age = this.getAge(blockState); Direction facing = blockState.getValue(FACING); if (age < this.getMaxAge()) { + + if (serverLevel.getBlockState(blockPos.below()).getBlock() == Blocks.MAGMA_BLOCK) { if (randomSource.nextInt(6) == 0) { FluidState fluidState = serverLevel.getFluidState(blockPos); @@ -103,6 +117,15 @@ public void randomTick(BlockState blockState, ServerLevel serverLevel, BlockPos } else { serverLevel.removeBlock(blockPos, waterlogged); //Use removeBlock to allow us to keep any water source blocks since root block is now waterloggable. serverLevel.setBlock(blockPos, this.getStateForAging(age + 1, facing).setValue(WATERLOGGED, waterlogged), 3); + double d = blockState.getShape(serverLevel, blockPos).max(Direction.Axis.Y, 0.5, 0.5) + 0.03125; + + double g = randomSource.nextGaussian() * 0.02; + double h = randomSource.nextGaussian() * 0.02; + double j = randomSource.nextGaussian() * 0.02; + + for (int i = 0; i < 10; ++i) { + serverLevel.sendParticles(ParticleTypes.COMPOSTER, (double)blockPos.getX() + (double)0.13125f + (double)0.7375f * (double)randomSource.nextFloat(), (double)blockPos.getY() + d + (double)randomSource.nextFloat() * (1.0), (double)blockPos.getZ() + (double)0.13125f + (double)0.7375f * (double)randomSource.nextFloat(), 120, g,h,j, 0.005); + } } serverLevel.playSound(null, blockPos, SoundEvents.GROWING_PLANT_CROP, SoundSource.BLOCKS, 1, 1); diff --git a/common/src/main/java/whocraft/tardis_refined/common/block/console/GlobalConsoleBlock.java b/common/src/main/java/whocraft/tardis_refined/common/block/console/GlobalConsoleBlock.java index d328259d4..c39dd9f5d 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/block/console/GlobalConsoleBlock.java +++ b/common/src/main/java/whocraft/tardis_refined/common/block/console/GlobalConsoleBlock.java @@ -30,8 +30,6 @@ import whocraft.tardis_refined.common.capability.TardisLevelOperator; import whocraft.tardis_refined.common.tardis.manager.TardisPilotingManager; import whocraft.tardis_refined.common.util.ClientHelper; -import whocraft.tardis_refined.constants.ResourceConstants; -import whocraft.tardis_refined.patterns.ConsolePattern; import whocraft.tardis_refined.patterns.ConsolePatterns; @@ -137,8 +135,11 @@ public InteractionResult use(BlockState blockState, Level level, BlockPos blockP if (operatorOptional.isPresent()) { var operator = operatorOptional.get(); TardisPilotingManager pilotManager = operator.getPilotingManager(); + if (pilotManager.isOnCooldown()) { pilotManager.endCoolDown(); + + return InteractionResult.CONSUME_PARTIAL; } } diff --git a/common/src/main/java/whocraft/tardis_refined/common/block/device/ConsoleConfigurationBlock.java b/common/src/main/java/whocraft/tardis_refined/common/block/device/ConsoleConfigurationBlock.java index d9ef7ba11..1fac4025e 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/block/device/ConsoleConfigurationBlock.java +++ b/common/src/main/java/whocraft/tardis_refined/common/block/device/ConsoleConfigurationBlock.java @@ -89,6 +89,7 @@ public InteractionResult use(BlockState blockState, Level level, BlockPos blockP return InteractionResult.PASS; } + var offset = blockState.getValue(FACING).getNormal(); BlockPos consolePos = blockPos.offset(offset); BlockState consoleBlock = level.getBlockState(consolePos); diff --git a/common/src/main/java/whocraft/tardis_refined/common/block/door/BulkHeadDoorBlock.java b/common/src/main/java/whocraft/tardis_refined/common/block/door/BulkHeadDoorBlock.java index 3901f49c9..a6b6bbc0d 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/block/door/BulkHeadDoorBlock.java +++ b/common/src/main/java/whocraft/tardis_refined/common/block/door/BulkHeadDoorBlock.java @@ -2,10 +2,14 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityTicker; @@ -40,8 +44,12 @@ protected void createBlockStateDefinition(StateDefinition.Builder { + BlockEntity block = level.getBlockEntity(blockPos); + AestheticHandler aesthetics = tardisLevelOperator.getAestheticHandler(); + if(block instanceof GlobalDoorBlockEntity globalDoorBlockEntity){ + globalDoorBlockEntity.setShellTheme(aesthetics.getShellTheme()); + globalDoorBlockEntity.setPattern(aesthetics.shellPattern()); + globalDoorBlockEntity.sendUpdates(); + } + }); + } + } + @Override protected void createBlockStateDefinition(StateDefinition.Builder builder) { super.createBlockStateDefinition(builder); diff --git a/common/src/main/java/whocraft/tardis_refined/common/block/life/ArsEggBlock.java b/common/src/main/java/whocraft/tardis_refined/common/block/life/ArsEggBlock.java index cd990288a..a23131e55 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/block/life/ArsEggBlock.java +++ b/common/src/main/java/whocraft/tardis_refined/common/block/life/ArsEggBlock.java @@ -1,24 +1,116 @@ package whocraft.tardis_refined.common.block.life; import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.BaseEntityBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.level.material.Fluids; +import net.minecraft.world.level.pathfinder.PathComputationType; import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.shapes.BooleanOp; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; import org.jetbrains.annotations.Nullable; import whocraft.tardis_refined.common.blockentity.life.ArsEggBlockEntity; import whocraft.tardis_refined.common.capability.TardisLevelOperator; import whocraft.tardis_refined.common.network.messages.upgrades.S2CDisplayUpgradeScreen; +import whocraft.tardis_refined.common.util.TardisHelper; + +import java.util.stream.Stream; public class ArsEggBlock extends BaseEntityBlock { + + public static final BooleanProperty HANGING = BlockStateProperties.HANGING; + public static final BooleanProperty ALIVE = BooleanProperty.create("alive");; + public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; + + protected static final VoxelShape AABB = Shapes.join(Stream.of( + Block.box(4, 9, 7, 12, 10, 9), + Block.box(4, 9, 7, 12, 10, 9), + Block.box(5, 9, 5, 11, 11, 11), + Block.box(6, 11, 6, 10, 13, 10) + ).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get(), Block.box(4, 0, 4, 12, 9, 12), BooleanOp.OR); + + private static final VoxelShape NO_CLAMP_AABB = Block.box(4, 0, 4, 12, 9, 12); + + @Override + public VoxelShape getShape(BlockState blockState, BlockGetter blockGetter, BlockPos blockPos, CollisionContext collisionContext) { + return blockState.getValue(HANGING) ? AABB.move(0,0.3,0) : (blockState.getValue(ALIVE) ? AABB : NO_CLAMP_AABB); + } + + @Override + @Nullable + public BlockState getStateForPlacement(BlockPlaceContext blockPlaceContext) { + FluidState fluidState = blockPlaceContext.getLevel().getFluidState(blockPlaceContext.getClickedPos()); + Direction[] var3 = blockPlaceContext.getNearestLookingDirections(); + + for (Direction direction : var3) { + if (direction.getAxis() == Direction.Axis.Y) { + BlockState blockState = this.defaultBlockState().setValue(HANGING, direction == Direction.UP); + if (blockState.canSurvive(blockPlaceContext.getLevel(), blockPlaceContext.getClickedPos())) { + return blockState.setValue(WATERLOGGED, fluidState.getType() == Fluids.WATER).setValue(ALIVE, TardisHelper.isInArsArea(blockPlaceContext.getClickedPos())); + } + } + } + + return null; + } + public ArsEggBlock(Properties properties) { super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(HANGING, false).setValue(WATERLOGGED, false).setValue(ALIVE, true)); + } + + @Override + public boolean isPathfindable(BlockState blockState, BlockGetter blockGetter, BlockPos blockPos, PathComputationType pathComputationType) { + return false; + } + + @Override + public BlockState updateShape(BlockState blockState, Direction direction, BlockState blockState2, LevelAccessor levelAccessor, BlockPos blockPos, BlockPos blockPos2) { + if (blockState.getValue(WATERLOGGED)) { + levelAccessor.scheduleTick(blockPos, Fluids.WATER, Fluids.WATER.getTickDelay(levelAccessor)); + } + return getConnectedDirection(blockState).getOpposite() == direction && !blockState.canSurvive(levelAccessor, blockPos) ? Blocks.AIR.defaultBlockState() : super.updateShape(blockState, direction, blockState2, levelAccessor, blockPos, blockPos2); + } + + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(HANGING, WATERLOGGED, ALIVE); + } + + @Override + public boolean canSurvive(BlockState blockState, LevelReader levelReader, BlockPos blockPos) { + Direction direction = getConnectedDirection(blockState).getOpposite(); + return Block.canSupportCenter(levelReader, blockPos.relative(direction), direction.getOpposite()); + } + + @Override + public FluidState getFluidState(BlockState blockState) { + return blockState.getValue(WATERLOGGED) ? Fluids.WATER.getSource(false) : super.getFluidState(blockState); + } + + protected static Direction getConnectedDirection(BlockState blockState) { + return blockState.getValue(HANGING) ? Direction.DOWN : Direction.UP; } @Nullable @@ -31,8 +123,10 @@ public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) { public InteractionResult use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult) { if(player instanceof ServerPlayer serverPlayer){ TardisLevelOperator.get(serverPlayer.serverLevel()).ifPresent(tardisLevelOperator -> { - CompoundTag upgradeNbt = tardisLevelOperator.getUpgradeHandler().saveData(new CompoundTag()); - new S2CDisplayUpgradeScreen(upgradeNbt).send(serverPlayer); + if(TardisHelper.isInArsArea(blockPos)) { + CompoundTag upgradeNbt = tardisLevelOperator.getUpgradeHandler().saveData(new CompoundTag()); + new S2CDisplayUpgradeScreen(upgradeNbt).send(serverPlayer); + } }); } diff --git a/common/src/main/java/whocraft/tardis_refined/common/block/shell/GlobalShellBlock.java b/common/src/main/java/whocraft/tardis_refined/common/block/shell/GlobalShellBlock.java index 1f1c28053..81120f921 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/block/shell/GlobalShellBlock.java +++ b/common/src/main/java/whocraft/tardis_refined/common/block/shell/GlobalShellBlock.java @@ -43,14 +43,17 @@ public BlockState getStateForPlacement(@NotNull BlockPlaceContext blockPlaceCont return super.getStateForPlacement(blockPlaceContext); } - protected static final VoxelShape COLLISION = Block.box(0.0, 0.0, 0.0, 16.0, 8.0, 16.0); + //The collision box for the briefcase shell + //overrides the default collision shape from ShellBaseBlock.java + protected static final VoxelShape BRIEFCASE_COLLISION_SHAPE = Block.box(0.0, 0.0, 0.0, 16.0, 8.0, 16.0); + @Override public VoxelShape getCollisionShape(BlockState blockState, BlockGetter blockGetter, BlockPos blockPos, CollisionContext collisionContext) { if (blockGetter.getBlockEntity(blockPos) instanceof GlobalShellBlockEntity shellBlockEntity) { if (shellBlockEntity.theme() == ShellTheme.BRIEFCASE.getId()) - return COLLISION; + return BRIEFCASE_COLLISION_SHAPE; } return super.getCollisionShape(blockState, blockGetter, blockPos, collisionContext); } @@ -59,7 +62,7 @@ public VoxelShape getCollisionShape(BlockState blockState, BlockGetter blockGett public VoxelShape getShape(BlockState blockState, BlockGetter blockGetter, BlockPos blockPos, CollisionContext collisionContext) { if (blockGetter.getBlockEntity(blockPos) instanceof GlobalShellBlockEntity shellBlockEntity) { if(shellBlockEntity.theme() == ShellTheme.BRIEFCASE.getId()) - return COLLISION; + return BRIEFCASE_COLLISION_SHAPE; } return super.getShape(blockState, blockGetter, blockPos, collisionContext); } diff --git a/common/src/main/java/whocraft/tardis_refined/common/block/shell/RootedShellBlock.java b/common/src/main/java/whocraft/tardis_refined/common/block/shell/RootedShellBlock.java index c895280a0..bec1a12d5 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/block/shell/RootedShellBlock.java +++ b/common/src/main/java/whocraft/tardis_refined/common/block/shell/RootedShellBlock.java @@ -6,6 +6,8 @@ import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; @@ -29,8 +31,6 @@ import whocraft.tardis_refined.common.tardis.manager.TardisExteriorManager; import whocraft.tardis_refined.common.tardis.manager.TardisInteriorManager; import whocraft.tardis_refined.common.tardis.manager.TardisPilotingManager; -import whocraft.tardis_refined.common.tardis.themes.ShellTheme; -import whocraft.tardis_refined.patterns.ShellPatterns; import java.util.UUID; @@ -49,6 +49,13 @@ public InteractionResult use(BlockState blockState, Level level, BlockPos blockP this.setUpTardis(blockState, level, blockPos); + if (player != null) { + player.getMainHandItem().hurtAndBreak(1, player, arg2 -> arg2.broadcastBreakEvent(interactionHand)); + level.playSound(player, player.blockPosition(), SoundEvents.GROWING_PLANT_CROP, SoundSource.BLOCKS, 1.0f, 1.0f); + level.playSound(player, player.blockPosition(), SoundEvents.SLIME_JUMP, SoundSource.BLOCKS, 1.0f, 1.0f); + } + + return InteractionResult.SUCCESS; //Prevents processing the ShellBaseBlockEntity generating another UUID and causing a second dimension to be created } diff --git a/common/src/main/java/whocraft/tardis_refined/common/block/shell/ShellBaseBlock.java b/common/src/main/java/whocraft/tardis_refined/common/block/shell/ShellBaseBlock.java index c3fb19af6..60af3bcb5 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/block/shell/ShellBaseBlock.java +++ b/common/src/main/java/whocraft/tardis_refined/common/block/shell/ShellBaseBlock.java @@ -32,10 +32,10 @@ public abstract class ShellBaseBlock extends BaseEntityBlock implements SimpleWa public static final BooleanProperty REGEN = BooleanProperty.create("regen"); public static final BooleanProperty LOCKED = BooleanProperty.create("locked"); public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; - protected static final VoxelShape NORTH_AABB = Block.box(0.0D, 0.0D, 0.0D, 16.0D, 20.0D, 11.0D); - protected static final VoxelShape SOUTH_AABB = Block.box(0.0D, 0.0D, 2.0D, 16.0D, 20.0D, 16.0D); - protected static final VoxelShape WEST_AABB = Block.box(0.0D, 0.0D, 0.0D, 11.0D, 20.0D, 16.0D); - protected static final VoxelShape EAST_AABB = Block.box(2.0D, 0.0D, 0.0D, 16.0D, 20.0D, 16.0D); + protected static final VoxelShape NORTH_AABB = Block.box(0.0D, 0.0D, 0.0D, 16.0D, 30.0D, 11.0D); + protected static final VoxelShape SOUTH_AABB = Block.box(0.0D, 0.0D, 2.0D, 16.0D, 30.0D, 16.0D); + protected static final VoxelShape WEST_AABB = Block.box(0.0D, 0.0D, 0.0D, 11.0D, 30.0D, 16.0D); + protected static final VoxelShape EAST_AABB = Block.box(2.0D, 0.0D, 0.0D, 16.0D, 30.0D, 16.0D); public ShellBaseBlock(Properties properties) { super(properties); diff --git a/common/src/main/java/whocraft/tardis_refined/common/blockentity/console/GlobalConsoleBlockEntity.java b/common/src/main/java/whocraft/tardis_refined/common/blockentity/console/GlobalConsoleBlockEntity.java index 4922d85d5..2e82da13c 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/blockentity/console/GlobalConsoleBlockEntity.java +++ b/common/src/main/java/whocraft/tardis_refined/common/blockentity/console/GlobalConsoleBlockEntity.java @@ -1,6 +1,7 @@ package whocraft.tardis_refined.common.blockentity.console; import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.game.ClientGamePacketListener; @@ -194,8 +195,17 @@ public void tick(Level level, BlockPos blockPos, BlockState blockState, GlobalCo liveliness.start(12); } + if (level instanceof ServerLevel serverLevel) { TardisLevelOperator.get(serverLevel).ifPresent(x -> { + + if (x.getPilotingManager().isOnCooldown() && serverLevel.getGameTime() % 20 == 0) { + + serverLevel.sendParticles(ParticleTypes.CAMPFIRE_COSY_SMOKE, blockPos.getX(), blockPos.getY() + 1.0, blockPos.getZ(), 120, 2.0, 1.0, 2.0, 0.005); + serverLevel.sendParticles(ParticleTypes.CAMPFIRE_COSY_SMOKE, blockPos.getX(), blockPos.getY() + 1.0, blockPos.getZ(), 120, 2.0, 1.0, 2.0, 0.005); + serverLevel.sendParticles(ParticleTypes.CAMPFIRE_COSY_SMOKE, blockPos.getX(), blockPos.getY() + 1.0, blockPos.getZ(), 120, 2.0, 1.0, 2.0, 0.01); + } + if (x.getTardisFlightEventManager().isInDangerZone() && x.getLevel().getGameTime() % (20) == 0) { // Check if we're crashing and if its okay to explode the TARDIS a little. diff --git a/common/src/main/java/whocraft/tardis_refined/common/blockentity/door/AbstractEntityBlockDoor.java b/common/src/main/java/whocraft/tardis_refined/common/blockentity/door/AbstractEntityBlockDoor.java index 32e1e64ca..a831621f2 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/blockentity/door/AbstractEntityBlockDoor.java +++ b/common/src/main/java/whocraft/tardis_refined/common/blockentity/door/AbstractEntityBlockDoor.java @@ -119,6 +119,8 @@ public void onBlockPlaced() { } } + + @Override protected void saveAdditional(CompoundTag compoundTag) { super.saveAdditional(compoundTag); diff --git a/common/src/main/java/whocraft/tardis_refined/common/blockentity/door/BulkHeadDoorBlockEntity.java b/common/src/main/java/whocraft/tardis_refined/common/blockentity/door/BulkHeadDoorBlockEntity.java index 5ab9c812e..224d9f77b 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/blockentity/door/BulkHeadDoorBlockEntity.java +++ b/common/src/main/java/whocraft/tardis_refined/common/blockentity/door/BulkHeadDoorBlockEntity.java @@ -5,6 +5,7 @@ import net.minecraft.sounds.SoundSource; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityTicker; import net.minecraft.world.level.block.state.BlockState; @@ -20,27 +21,25 @@ public BulkHeadDoorBlockEntity(BlockPos blockPos, BlockState blockState) { @Override public void tick(Level level, BlockPos blockPos, BlockState blockState, BulkHeadDoorBlockEntity blockEntity) { - if (!blockState.getValue(BulkHeadDoorBlock.LOCKED)) { + if (!blockState.getValue(BulkHeadDoorBlock.LOCKED) && blockState.canSurvive(level, blockPos)) { Player player = level.getNearestPlayer(blockPos.getX(), blockPos.getY(), blockPos.getZ(), 2.5f, false); if (player != null) { - if (!blockState.getValue(BulkHeadDoorBlock.OPEN)) { - openDoor(level,blockPos,blockState); - } - } else { - if (blockState.getValue(BulkHeadDoorBlock.OPEN)) { - closeDoor(level,blockPos,blockState); - } + toggleDoor(level, blockPos, blockState, blockState.getValue(BulkHeadDoorBlock.OPEN)); } } } - public void openDoor(Level level, BlockPos blockPos, BlockState blockState) { + /** + * Toggles the state of the associated BulkHeadDoorBlock, opening or closing it. + * + * @param level The current world level. + * @param blockPos The position of the block entity in the world. + * @param blockState The current state of the associated BulkHeadDoorBlock. + * @param isOpen The current open state of the door. + */ + public void toggleDoor(Level level, BlockPos blockPos, BlockState blockState, boolean isOpen) { level.playSound(null, blockPos, SoundEvents.PISTON_CONTRACT, SoundSource.BLOCKS, 1, 1); - level.setBlock(blockPos, blockState.setValue(BulkHeadDoorBlock.OPEN, true), 2); + level.setBlock(blockPos, blockState.setValue(BulkHeadDoorBlock.OPEN, isOpen), Block.UPDATE_CLIENTS); } - public void closeDoor(Level level, BlockPos blockPos, BlockState blockState) { - level.playSound(null, blockPos, SoundEvents.PISTON_EXTEND, SoundSource.BLOCKS, 1, 1); - level.setBlock(blockPos, blockState.setValue(BulkHeadDoorBlock.OPEN, false), 2); - } } diff --git a/common/src/main/java/whocraft/tardis_refined/common/blockentity/door/GlobalDoorBlockEntity.java b/common/src/main/java/whocraft/tardis_refined/common/blockentity/door/GlobalDoorBlockEntity.java index c97d56c32..304e68c98 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/blockentity/door/GlobalDoorBlockEntity.java +++ b/common/src/main/java/whocraft/tardis_refined/common/blockentity/door/GlobalDoorBlockEntity.java @@ -2,17 +2,20 @@ import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.game.ClientGamePacketListener; +import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; +import org.jetbrains.annotations.Nullable; import whocraft.tardis_refined.common.block.door.GlobalDoorBlock; -import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; import whocraft.tardis_refined.common.capability.TardisLevelOperator; import whocraft.tardis_refined.common.tardis.themes.ShellTheme; import whocraft.tardis_refined.constants.NbtConstants; -import whocraft.tardis_refined.constants.ResourceConstants; import whocraft.tardis_refined.patterns.ShellPattern; import whocraft.tardis_refined.patterns.ShellPatterns; import whocraft.tardis_refined.registry.BlockEntityRegistry; @@ -21,12 +24,31 @@ public class GlobalDoorBlockEntity extends AbstractEntityBlockDoor { - private ResourceLocation shellTheme; + private ResourceLocation shellTheme = ShellTheme.FACTORY.getId(); + private ShellPattern basePattern; public GlobalDoorBlockEntity(BlockPos blockPos, BlockState blockState) { super(BlockEntityRegistry.GLOBAL_DOOR_BLOCK.get(), blockPos, blockState); } + public ShellPattern pattern() { + ShellPattern defaultBasePattern = ShellPatterns.DEFAULT; + return this.basePattern == null ? defaultBasePattern : this.basePattern; + } + + public GlobalDoorBlockEntity setPattern(ShellPattern basePattern) { + this.basePattern = basePattern; + this.setChanged(); + this.level.sendBlockUpdated(this.getBlockPos(), this.getBlockState(), this.getBlockState(), Block.UPDATE_ALL); + return this; + } + + public void sendUpdates() { + level.updateNeighbourForOutputSignal(worldPosition, getBlockState().getBlock()); + level.sendBlockUpdated(worldPosition, level.getBlockState(worldPosition), level.getBlockState(worldPosition), 3); + setChanged(); + } + public ResourceLocation theme(){ if (this.shellTheme == null){ this.shellTheme = ShellTheme.FACTORY.getId(); @@ -39,26 +61,55 @@ public void setShellTheme(ResourceLocation shellTheme){ this.setChanged(); } + @Override + public CompoundTag getUpdateTag() { + CompoundTag compoundTag = new CompoundTag(); + saveAdditional(compoundTag); + return compoundTag; + } + + @Nullable + @Override + public Packet getUpdatePacket() { + return ClientboundBlockEntityDataPacket.create(this); + } + @Override public void load(CompoundTag pTag) { super.load(pTag); if (pTag.contains(NbtConstants.THEME)) { - ResourceLocation themeId = new ResourceLocation(pTag.getString(NbtConstants.PATTERN)); + ResourceLocation themeId = new ResourceLocation(pTag.getString(NbtConstants.THEME)); this.shellTheme = themeId; } + if (pTag.contains(NbtConstants.PATTERN)) { + ResourceLocation currentPattern = new ResourceLocation(pTag.getString(NbtConstants.PATTERN)); + if (ShellPatterns.doesPatternExist( this.shellTheme, currentPattern)) { + this.basePattern = ShellPatterns.getPatternOrDefault(this.shellTheme, currentPattern); + } + } + if (this.shellTheme == null){ this.shellTheme = this.theme(); } + + if (this.basePattern == null) { + this.basePattern = pattern(); + } } + + @Override protected void saveAdditional(CompoundTag pTag) { super.saveAdditional(pTag); if (this.shellTheme != null) { pTag.putString(NbtConstants.THEME, this.shellTheme.toString()); } + if (this.basePattern != null) { + pTag.putString(NbtConstants.PATTERN, this.basePattern.id().toString()); + } } @@ -83,6 +134,8 @@ public void onRightClick(BlockState blockState, TardisInternalDoor door, Player } } + + public void onAttemptEnter(Level level, Player player) { if (!level.isClientSide()) { Optional operator = TardisLevelOperator.get((ServerLevel) level); diff --git a/common/src/main/java/whocraft/tardis_refined/common/blockentity/life/ArsEggBlockEntity.java b/common/src/main/java/whocraft/tardis_refined/common/blockentity/life/ArsEggBlockEntity.java index ebd73f35d..133a9845c 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/blockentity/life/ArsEggBlockEntity.java +++ b/common/src/main/java/whocraft/tardis_refined/common/blockentity/life/ArsEggBlockEntity.java @@ -1,6 +1,7 @@ package whocraft.tardis_refined.common.blockentity.life; import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.AnimationState; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import whocraft.tardis_refined.registry.BlockEntityRegistry; @@ -10,4 +11,10 @@ public class ArsEggBlockEntity extends BlockEntity { public ArsEggBlockEntity(BlockPos blockPos, BlockState blockState) { super(BlockEntityRegistry.ARS_EGG.get(), blockPos, blockState); } + + private AnimationState liveliness = new AnimationState(); + + public AnimationState getLiveliness() { + return liveliness; + } } diff --git a/common/src/main/java/whocraft/tardis_refined/common/blockentity/shell/ShellBaseBlockEntity.java b/common/src/main/java/whocraft/tardis_refined/common/blockentity/shell/ShellBaseBlockEntity.java index fe3885845..9ddf37b81 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/blockentity/shell/ShellBaseBlockEntity.java +++ b/common/src/main/java/whocraft/tardis_refined/common/blockentity/shell/ShellBaseBlockEntity.java @@ -39,11 +39,11 @@ public ShellBaseBlockEntity(BlockEntityType blockEntityType, BlockPos blockPo super(blockEntityType, blockPos, blockState); } - public ResourceKey getTardisId(){ + public ResourceKey getTardisId() { return this.TARDIS_ID; } - public void setTardisId(ResourceKey levelKey){ + public void setTardisId(ResourceKey levelKey) { this.TARDIS_ID = levelKey; this.setChanged(); this.level.sendBlockUpdated(this.getBlockPos(), this.getBlockState(), this.getBlockState(), Block.UPDATE_ALL); @@ -53,7 +53,7 @@ public void setTardisId(ResourceKey levelKey){ public void load(CompoundTag pTag) { super.load(pTag); if (pTag.contains(NbtConstants.TARDIS_ID)) - this.TARDIS_ID = ResourceKey.create(Registries.DIMENSION, new ResourceLocation(pTag.getString(NbtConstants.TARDIS_ID))); + this.TARDIS_ID = ResourceKey.create(Registries.DIMENSION, new ResourceLocation(pTag.getString(NbtConstants.TARDIS_ID))); } @Override @@ -80,7 +80,7 @@ public ClientboundBlockEntityDataPacket getUpdatePacket() { } public boolean shouldSetup() { - if (!this.level.isClientSide()){ + if (!this.level.isClientSide()) { if (this.TARDIS_ID != null) { return false; } @@ -101,8 +101,8 @@ public void onAttemptEnter(BlockState blockState, Level level, BlockPos blockPos UpgradeHandler upgradeHandler = cap.getUpgradeHandler(); if (cap.isTardisReady() && (blockState.getValue(ShellBaseBlock.OPEN) || cap.getPilotingManager().endFlight() && Upgrades.MATERIALIZE_AROUND.get().isUnlocked(upgradeHandler))) { - if (cap.getExteriorManager().getCurrentTheme() != null) { - ResourceLocation theme = cap.getExteriorManager().getCurrentTheme(); + if (cap.getAestheticHandler().getShellTheme() != null) { + ResourceLocation theme = cap.getAestheticHandler().getShellTheme(); if (ModCompatChecker.immersivePortals()) { if (ImmersivePortals.exteriorHasPortalSupport(theme)) { diff --git a/common/src/main/java/whocraft/tardis_refined/common/capability/TardisLevelOperator.java b/common/src/main/java/whocraft/tardis_refined/common/capability/TardisLevelOperator.java index ed2aca24a..232caf7ee 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/capability/TardisLevelOperator.java +++ b/common/src/main/java/whocraft/tardis_refined/common/capability/TardisLevelOperator.java @@ -21,7 +21,6 @@ import whocraft.tardis_refined.common.tardis.ExteriorShell; import whocraft.tardis_refined.common.tardis.TardisArchitectureHandler; import whocraft.tardis_refined.common.tardis.manager.*; -import whocraft.tardis_refined.common.tardis.themes.ShellTheme; import whocraft.tardis_refined.compat.ModCompatChecker; import whocraft.tardis_refined.compat.portals.ImmersivePortals; import whocraft.tardis_refined.constants.NbtConstants; @@ -43,6 +42,7 @@ public class TardisLevelOperator { private final TardisClientData tardisClientData; private final UpgradeHandler upgradeHandler; private final TardisHADSManager tardisHADSManager; + private final AestheticHandler aestheticHandler; public TardisLevelOperator(Level level) { this.level = level; @@ -54,6 +54,7 @@ public TardisLevelOperator(Level level) { this.tardisClientData = new TardisClientData(level.dimension()); this.upgradeHandler = new UpgradeHandler(this); this.tardisHADSManager = new TardisHADSManager(this); + this.aestheticHandler = new AestheticHandler(this); } public UpgradeHandler getUpgradeHandler() { @@ -68,6 +69,10 @@ public TardisHADSManager getTardisHADSManager() { return tardisHADSManager; } + public AestheticHandler getAestheticHandler() { + return aestheticHandler; + } + @ExpectPlatform public static Optional get(ServerLevel level) { throw new AssertionError(); @@ -89,6 +94,7 @@ public CompoundTag serializeNBT() { compoundTag = this.tardisFlightEventManager.saveData(compoundTag); compoundTag = this.upgradeHandler.saveData(compoundTag); compoundTag = this.tardisHADSManager.saveData(compoundTag); + compoundTag = this.aestheticHandler.saveData(compoundTag); return compoundTag; } @@ -111,8 +117,7 @@ public void deserializeNBT(CompoundTag tag) { this.tardisWaypointManager.loadData(tag); this.upgradeHandler.loadData(tag); this.tardisHADSManager.loadData(tag); - - + this.aestheticHandler.loadData(tag); tardisClientData.sync(); } @@ -132,11 +137,12 @@ public void tick(ServerLevel level) { tardisClientData.setThrottleDown(pilotingManager.shouldThrottleBeDown()); tardisClientData.setIsLanding(exteriorManager.isLanding()); tardisClientData.setIsTakingOff(exteriorManager.isTakingOff()); - tardisClientData.setShellTheme(exteriorManager.getCurrentTheme()); //Use the exterior manager's theme ID, the piloting manager's reference is almost always null, not sure why. tardisClientData.setInDangerZone(tardisFlightEventManager.isInDangerZone()); tardisClientData.setFlightShakeScale(tardisFlightEventManager.dangerZoneShakeScale()); tardisClientData.setIsOnCooldown(pilotingManager.isOnCooldown()); - tardisClientData.setShellPattern(exteriorManager.shellPattern()); + tardisClientData.setShellTheme(aestheticHandler.getShellTheme()); + tardisClientData.setShellPattern(aestheticHandler.shellPattern().id()); + tardisClientData.sync(); } } @@ -195,8 +201,10 @@ public boolean exitTardis(Player player) { return false; } - if(getExteriorManager().getCurrentTheme() != null) { - ResourceLocation theme = getExteriorManager().getCurrentTheme(); + + + if(aestheticHandler.getShellTheme() != null) { + ResourceLocation theme = aestheticHandler.getShellTheme(); if(ModCompatChecker.immersivePortals() && !(this.internalDoor instanceof RootShellDoorBlockEntity)) { if(ImmersivePortals.exteriorHasPortalSupport(theme)) { return false; @@ -243,9 +251,10 @@ public void setDoorClosed(boolean closeDoor) { } public void setShellTheme(ResourceLocation theme, boolean setupTardis) { - this.getExteriorManager().setShellTheme(theme, setupTardis); - this.getInteriorManager().setShellTheme(theme, setupTardis); - this.getPilotingManager().setCurrentExteriorTheme(theme); + this.getAestheticHandler().setShellTheme(theme, setupTardis, getExteriorManager().getLastKnownLocation()); + tardisClientData.setShellTheme(theme); + tardisClientData.setShellPattern(aestheticHandler.shellPattern().id()); + tardisClientData.sync(); TardisEvents.SHELL_CHANGE_EVENT.invoker().onShellChange(this, theme, setupTardis); } diff --git a/common/src/main/java/whocraft/tardis_refined/common/capability/upgrades/IncrementUpgrade.java b/common/src/main/java/whocraft/tardis_refined/common/capability/upgrades/IncrementUpgrade.java new file mode 100644 index 000000000..84c5c4c2f --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/common/capability/upgrades/IncrementUpgrade.java @@ -0,0 +1,28 @@ +package whocraft.tardis_refined.common.capability.upgrades; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; + +import java.util.function.Supplier; + +public class IncrementUpgrade extends Upgrade{ + + int incrementAmount = 0; + + public IncrementUpgrade(Supplier icon, ResourceLocation translationKey, UpgradeType upgradeType) { + super(icon, translationKey, upgradeType); + } + + public IncrementUpgrade(Supplier icon, Supplier parent, ResourceLocation translationKey, UpgradeType upgradeType) { + super(icon, parent, translationKey, upgradeType); + } + + public int getIncrementAmount() { + return incrementAmount; + } + + public IncrementUpgrade setIncrementAmount(int incrementAmount) { + this.incrementAmount = incrementAmount; + return this; + } +} diff --git a/common/src/main/java/whocraft/tardis_refined/common/capability/upgrades/Upgrade.java b/common/src/main/java/whocraft/tardis_refined/common/capability/upgrades/Upgrade.java index 2764bb560..4a60cceed 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/capability/upgrades/Upgrade.java +++ b/common/src/main/java/whocraft/tardis_refined/common/capability/upgrades/Upgrade.java @@ -16,11 +16,15 @@ public class Upgrade { private final Supplier parent; + private final UpgradeType upgradeType; private int cost = 1; private boolean posSet = false; private int posX = 0, posY = 0; private final Supplier icon; + public enum UpgradeType { + MAIN_UPGRADE, SUB_UPGRADE; + } private ResourceLocation translationKey; /** @@ -28,10 +32,11 @@ public class Upgrade { * @param icon * @param translationKey - Requires the namespace of your mod (e.g. my_mod_id) and the registry object (E.g. explorer) to be used for display names and translation keys */ - public Upgrade(Supplier icon, ResourceLocation translationKey) { + public Upgrade(Supplier icon, ResourceLocation translationKey, UpgradeType upgradeType) { this.icon = icon; this.parent = null; this.translationKey = translationKey; + this.upgradeType = upgradeType; } /** @@ -40,10 +45,11 @@ public Upgrade(Supplier icon, ResourceLocation translationKey) { * @param parent - the parent Upgrade object before we can unlock this current upgrade * @param translationKey - Requires the namespace of your mod (e.g. my_mod_id) and the registry object (E.g. explorer) to be used for display names and translation keys */ - public Upgrade(Supplier icon, Supplier parent, ResourceLocation translationKey) { + public Upgrade(Supplier icon, Supplier parent, ResourceLocation translationKey, UpgradeType upgradeType) { this.icon = icon; this.parent = parent; this.translationKey = translationKey; + this.upgradeType = upgradeType; } public ItemStack getIcon() { @@ -55,6 +61,10 @@ public Upgrade setSkillPointsRequired(int cost) { return this; } + public UpgradeType getUpgradeType() { + return upgradeType; + } + /** * Currently, the Tardis has a XP system, every successful flight event supplies a certain amount of Tardis XP * 50 Tardis XP becomes 1 skill point diff --git a/common/src/main/java/whocraft/tardis_refined/common/capability/upgrades/UpgradeHandler.java b/common/src/main/java/whocraft/tardis_refined/common/capability/upgrades/UpgradeHandler.java index 9c8ad9098..3f23dde43 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/capability/upgrades/UpgradeHandler.java +++ b/common/src/main/java/whocraft/tardis_refined/common/capability/upgrades/UpgradeHandler.java @@ -5,14 +5,18 @@ import net.minecraft.nbt.StringTag; import net.minecraft.nbt.Tag; import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; import net.minecraft.util.Mth; import org.jetbrains.annotations.NotNull; +import whocraft.tardis_refined.api.event.TardisEvents; import whocraft.tardis_refined.common.capability.TardisLevelOperator; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import static whocraft.tardis_refined.common.tardis.TardisArchitectureHandler.generateArsTree; + public class UpgradeHandler { // TODO max xp per point might change, set to 50 for testing @@ -21,7 +25,7 @@ public class UpgradeHandler { @NotNull private final TardisLevelOperator tardisLevelOperator; private int upgradeXP = 0; - private int upgradePoints = 1000; + private int upgradePoints = 0; private int overallTardisPoints = 0; private final List unlockedUpgrades = new ArrayList<>(); @@ -29,6 +33,33 @@ public UpgradeHandler(@NotNull TardisLevelOperator tardisLevelOperator) { this.tardisLevelOperator = tardisLevelOperator; } + public double calculateProgress() { + int totalUpgrades = Upgrades.UPGRADE_DEFERRED_REGISTRY.getRegistry().size(); + int unlockedCount = unlockedUpgrades.size(); + + if (totalUpgrades == 0) { + return 0.0; + } + + return ((double) unlockedCount / totalUpgrades) * 100.0; + } + + public String getProgressLevel() { + double progress = calculateProgress(); + + if (progress >= 80.0) { + return "five"; + } else if (progress >= 60.0) { + return "four"; + } else if (progress >= 40.0) { + return "three"; + } else if (progress >= 20.0) { + return "two"; + } else { + return "one"; + } + } + @Override public String toString() { return "UpgradeHandler{" + @@ -70,7 +101,7 @@ public void addUpgradeXP(int upgradeXP) { this.upgradeXP = XP_PER_UPGRADE_POINT - Mth.abs(this.upgradeXP); } - this.upgradePoints = Mth.clamp(this.upgradePoints, 0, 99); + this.upgradePoints = Mth.clamp(this.upgradePoints, 0, Integer.MAX_VALUE); } @@ -79,8 +110,7 @@ public int getNeededXPForNextPoint() { } public void setUpgradePoints(int upgradePoints) { - this.upgradePoints = Mth.clamp(upgradePoints, 0, 99); - + this.upgradePoints = Mth.clamp(upgradePoints, 0, Integer.MAX_VALUE); } public int getUpgradePoints() { @@ -125,6 +155,13 @@ public void unlockUpgrade(Upgrade upgrade) { this.unlockedUpgrades.add(upgrade); upgrade.onUnlocked(this.tardisLevelOperator, this); + + if(this.tardisLevelOperator.getLevel() instanceof ServerLevel serverLevel) { + generateArsTree(serverLevel); + } + + TardisEvents.UPGRADE_UNLOCKED.invoker().onUpgradeUnlock(this.tardisLevelOperator, upgrade); + } } diff --git a/common/src/main/java/whocraft/tardis_refined/common/capability/upgrades/Upgrades.java b/common/src/main/java/whocraft/tardis_refined/common/capability/upgrades/Upgrades.java index a3f03bd7f..e0db8a3d9 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/capability/upgrades/Upgrades.java +++ b/common/src/main/java/whocraft/tardis_refined/common/capability/upgrades/Upgrades.java @@ -20,55 +20,55 @@ public class Upgrades { /** Global instance of the Console Theme custom registry created by Tardis Refined*/ public static final Registry UPGRADE_REGISTRY = UPGRADE_DEFERRED_REGISTRY.getRegistry(); + // Base Upgrades + public static final RegistrySupplier TARDIS_XP = UPGRADE_DEFERRED_REGISTRY.register("tardis_xp", () -> new Upgrade(Items.GLASS_BOTTLE::getDefaultInstance, RegistryHelper.makeKey("tardis_xp"), Upgrade.UpgradeType.MAIN_UPGRADE) + .setSkillPointsRequired(50).setPosition(0, 0)); - // Base - public static final RegistrySupplier TARDIS_XP = UPGRADE_DEFERRED_REGISTRY.register("tardis_xp", () -> new Upgrade(Items.GLASS_BOTTLE::getDefaultInstance, RegistryHelper.makeKey("tardis_xp")) - .setSkillPointsRequired(50).setPosition(0, -1)); + // Chameleon Circuit Upgrades + public static final RegistrySupplier ARCHITECTURE_SYSTEM = UPGRADE_DEFERRED_REGISTRY.register("architecture_system", () -> new Upgrade(BlockRegistry.ARS_EGG.get().asItem()::getDefaultInstance, TARDIS_XP, RegistryHelper.makeKey("architecture_system"), Upgrade.UpgradeType.MAIN_UPGRADE) + .setSkillPointsRequired(50).setPosition(1, 0)); - // Chameleon Circuit - public static final RegistrySupplier ARCHITECTURE_SYSTEM = UPGRADE_DEFERRED_REGISTRY.register("architecture_system", () -> new Upgrade(BlockRegistry.ARS_EGG.get().asItem()::getDefaultInstance, TARDIS_XP, RegistryHelper.makeKey("architecture_system")) - .setSkillPointsRequired(50).setPosition(0, 1)); + public static final RegistrySupplier CHAMELEON_CIRCUIT_SYSTEM = UPGRADE_DEFERRED_REGISTRY.register("chameleon_circuit_system", () -> new Upgrade(BlockRegistry.ROOT_SHELL_BLOCK.get().asItem()::getDefaultInstance, ARCHITECTURE_SYSTEM, RegistryHelper.makeKey("chameleon_circuit_system"), Upgrade.UpgradeType.SUB_UPGRADE) + .setSkillPointsRequired(50).setPosition(2, 0)); + + public static final RegistrySupplier INSIDE_ARCHITECTURE = UPGRADE_DEFERRED_REGISTRY.register("inside_architecture", () -> new Upgrade(BlockRegistry.TERRAFORMER_BLOCK.get().asItem()::getDefaultInstance, ARCHITECTURE_SYSTEM, RegistryHelper.makeKey("inside_architecture"), Upgrade.UpgradeType.SUB_UPGRADE) + .setSkillPointsRequired(50).setPosition(3, 0)); - public static final RegistrySupplier CHAMELEON_CIRCUIT_SYSTEM = UPGRADE_DEFERRED_REGISTRY.register("chameleon_circuit_system", () -> new Upgrade(BlockRegistry.ROOT_SHELL_BLOCK.get().asItem()::getDefaultInstance, ARCHITECTURE_SYSTEM, RegistryHelper.makeKey("chameleon_circuit_system")) - .setSkillPointsRequired(50).setPosition(-1, 1)); + // Defense Upgrades + public static final RegistrySupplier DEFENSE_SYSTEM = UPGRADE_DEFERRED_REGISTRY.register("defense_system", () -> new Upgrade(Items.DIAMOND_SWORD::getDefaultInstance, TARDIS_XP, RegistryHelper.makeKey("defense_system"), Upgrade.UpgradeType.MAIN_UPGRADE) + .setSkillPointsRequired(50).setPosition(0, 1)); - public static final RegistrySupplier INSIDE_ARCHITECTURE = UPGRADE_DEFERRED_REGISTRY.register("inside_architecture", () -> new Upgrade(BlockRegistry.TERRAFORMER_BLOCK.get().asItem()::getDefaultInstance, ARCHITECTURE_SYSTEM, RegistryHelper.makeKey("inside_architecture")) + public static final RegistrySupplier HOSTILE_DISPLACEMENT = UPGRADE_DEFERRED_REGISTRY.register("hostile_displacement", () -> new Upgrade(Items.ZOMBIE_HEAD::getDefaultInstance, DEFENSE_SYSTEM, RegistryHelper.makeKey("hostile_displacement"), Upgrade.UpgradeType.SUB_UPGRADE) .setSkillPointsRequired(50).setPosition(1, 1)); - // Defense - public static final RegistrySupplier DEFENSE_SYSTEM = UPGRADE_DEFERRED_REGISTRY.register("defense_system", () -> new Upgrade(Items.DIAMOND_SWORD::getDefaultInstance, TARDIS_XP, RegistryHelper.makeKey("defense_system")) - .setSkillPointsRequired(50).setPosition(0, -2)); + public static final RegistrySupplier MATERIALIZE_AROUND = UPGRADE_DEFERRED_REGISTRY.register("materialize_around", () -> new Upgrade(Items.GLASS_PANE::getDefaultInstance, DEFENSE_SYSTEM, RegistryHelper.makeKey("materialize_around"), Upgrade.UpgradeType.SUB_UPGRADE) + .setSkillPointsRequired(50).setPosition(2, 1)); - public static final RegistrySupplier HOSTILE_DISPLACEMENT = UPGRADE_DEFERRED_REGISTRY.register("hostile_displacement", () -> new Upgrade(Items.ZOMBIE_HEAD::getDefaultInstance, DEFENSE_SYSTEM, RegistryHelper.makeKey("hostile_displacement")) - .setSkillPointsRequired(50).setPosition(0, -3)); + // Navigation Upgrades + public static final RegistrySupplier NAVIGATION_SYSTEM = UPGRADE_DEFERRED_REGISTRY.register("navigation_system", () -> new Upgrade(Items.COMPASS::getDefaultInstance, TARDIS_XP, RegistryHelper.makeKey("navigation_system"), Upgrade.UpgradeType.MAIN_UPGRADE) + .setSkillPointsRequired(50).setPosition(0, 2)); - public static final RegistrySupplier MATERIALIZE_AROUND = UPGRADE_DEFERRED_REGISTRY.register("materialize_around", () -> new Upgrade(Items.GLASS_PANE::getDefaultInstance, DEFENSE_SYSTEM, RegistryHelper.makeKey("materialize_around")) - .setSkillPointsRequired(50).setPosition(0, -4)); + public static final RegistrySupplier EXPLORER = UPGRADE_DEFERRED_REGISTRY.register("explorer", () -> new IncrementUpgrade(Items.COMPASS::getDefaultInstance, NAVIGATION_SYSTEM, RegistryHelper.makeKey("explorer"), Upgrade.UpgradeType.SUB_UPGRADE).setIncrementAmount(1000) + .setSkillPointsRequired(50).setPosition(1, 2)); - // Navigation - public static final RegistrySupplier NAVIGATION_SYSTEM = UPGRADE_DEFERRED_REGISTRY.register("navigation_system", () -> new Upgrade(Items.COMPASS::getDefaultInstance, TARDIS_XP, RegistryHelper.makeKey("navigation_system")) - .setSkillPointsRequired(50).setPosition(0, 2)); + public static final RegistrySupplier EXPLORER_II = UPGRADE_DEFERRED_REGISTRY.register("explorer_ii", () -> new IncrementUpgrade(Items.COMPASS::getDefaultInstance, EXPLORER, RegistryHelper.makeKey("explorer_ii"), Upgrade.UpgradeType.SUB_UPGRADE).setIncrementAmount(2500) + .setSkillPointsRequired(50).setPosition(2, 2)); - public static final RegistrySupplier EXPLORER = UPGRADE_DEFERRED_REGISTRY.register("explorer", () -> new Upgrade(Items.COMPASS::getDefaultInstance, NAVIGATION_SYSTEM, RegistryHelper.makeKey("explorer")) - .setSkillPointsRequired(50).setPosition(-1, 3)); + public static final RegistrySupplier EXPLORER_III = UPGRADE_DEFERRED_REGISTRY.register("explorer_iii", () -> new IncrementUpgrade(Items.COMPASS::getDefaultInstance, EXPLORER_II, RegistryHelper.makeKey("explorer_iii"), Upgrade.UpgradeType.SUB_UPGRADE).setIncrementAmount(5000) + .setSkillPointsRequired(50).setPosition(3, 2)); - public static final RegistrySupplier EXPLORER_II = UPGRADE_DEFERRED_REGISTRY.register("explorer_ii", () -> new Upgrade(Items.COMPASS::getDefaultInstance, EXPLORER, RegistryHelper.makeKey("explorer_ii")) + public static final RegistrySupplier DIMENSION_TRAVEL = UPGRADE_DEFERRED_REGISTRY.register("dimension_travel", () -> new Upgrade(Blocks.NETHER_BRICKS.asItem()::getDefaultInstance, NAVIGATION_SYSTEM, RegistryHelper.makeKey("dimension_travel"), Upgrade.UpgradeType.SUB_UPGRADE) .setSkillPointsRequired(50).setPosition(0, 3)); - public static final RegistrySupplier EXPLORER_III = UPGRADE_DEFERRED_REGISTRY.register("explorer_iii", () -> new Upgrade(Items.COMPASS::getDefaultInstance, EXPLORER_II, RegistryHelper.makeKey("explorer_iii")) + public static final RegistrySupplier WAYPOINTS = UPGRADE_DEFERRED_REGISTRY.register("waypoints", () -> new Upgrade(Items.MAP::getDefaultInstance, NAVIGATION_SYSTEM, RegistryHelper.makeKey("waypoints"), Upgrade.UpgradeType.SUB_UPGRADE) .setSkillPointsRequired(50).setPosition(1, 3)); - public static final RegistrySupplier DIMENSION_TRAVEL = UPGRADE_DEFERRED_REGISTRY.register("dimension_travel", () -> new Upgrade(Blocks.NETHER_BRICKS.asItem()::getDefaultInstance, NAVIGATION_SYSTEM, RegistryHelper.makeKey("dimension_travel")) - .setSkillPointsRequired(50).setPosition(0, 4)); - - public static final RegistrySupplier WAYPOINTS = UPGRADE_DEFERRED_REGISTRY.register("waypoints", () -> new Upgrade(Items.MAP::getDefaultInstance, NAVIGATION_SYSTEM, RegistryHelper.makeKey("waypoints")) - .setSkillPointsRequired(50).setPosition(-1, 5)); + public static final RegistrySupplier COORDINATE_INPUT = UPGRADE_DEFERRED_REGISTRY.register("coordinate_input", () -> new Upgrade(Items.FILLED_MAP::getDefaultInstance, WAYPOINTS, RegistryHelper.makeKey("coordinate_input"), Upgrade.UpgradeType.SUB_UPGRADE) + .setSkillPointsRequired(50).setPosition(2, 3)); - public static final RegistrySupplier COORDINATE_INPUT = UPGRADE_DEFERRED_REGISTRY.register("coordinate_input", () -> new Upgrade(Items.FILLED_MAP::getDefaultInstance, WAYPOINTS, RegistryHelper.makeKey("coordinate_input")) - .setSkillPointsRequired(50).setPosition(0, 5)); + public static final RegistrySupplier LANDING_PAD = UPGRADE_DEFERRED_REGISTRY.register("landing_pad", () -> new Upgrade(BlockRegistry.LANDING_PAD.get().asItem()::getDefaultInstance, NAVIGATION_SYSTEM, RegistryHelper.makeKey("landing_pad"), Upgrade.UpgradeType.SUB_UPGRADE) + .setSkillPointsRequired(50).setPosition(3, 3)); - public static final RegistrySupplier LANDING_PAD = UPGRADE_DEFERRED_REGISTRY.register("landing_pad", () -> new Upgrade(BlockRegistry.LANDING_PAD.get().asItem()::getDefaultInstance, NAVIGATION_SYSTEM, RegistryHelper.makeKey("landing_pad")) - .setSkillPointsRequired(50).setPosition(0, 6)); } diff --git a/common/src/main/java/whocraft/tardis_refined/common/entity/ControlEntity.java b/common/src/main/java/whocraft/tardis_refined/common/entity/ControlEntity.java index 70468a413..bb82b777d 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/entity/ControlEntity.java +++ b/common/src/main/java/whocraft/tardis_refined/common/entity/ControlEntity.java @@ -1,6 +1,7 @@ package whocraft.tardis_refined.common.entity; import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; import net.minecraft.network.chat.Component; @@ -264,10 +265,10 @@ private void handleControlSizeAndPositionAdjustment(Player player){ } } - private boolean isDesktopWaitingToGenerate(TardisLevelOperator operator, ServerLevel serverLevel){ + public boolean isDesktopWaitingToGenerate(TardisLevelOperator operator){ if (!(this.controlSpecification.control().getControl() instanceof MonitorControl)) { if (operator.getInteriorManager().isWaitingToGenerate()) { - serverLevel.playSound(null, this.blockPosition(), SoundEvents.NOTE_BLOCK_BIT.value(), SoundSource.BLOCKS, 100F, (float) (0.1 + (serverLevel.getRandom().nextFloat() * 0.5))); + operator.getLevel().playSound(null, this.blockPosition(), SoundEvents.NOTE_BLOCK_BIT.value(), SoundSource.BLOCKS, 100F, (float) (0.1 + (level().getRandom().nextFloat() * 0.5))); return true; } } @@ -277,17 +278,21 @@ private boolean isDesktopWaitingToGenerate(TardisLevelOperator operator, ServerL private void handleLeftClick(Player player, ServerLevel serverLevel){ TardisLevelOperator.get(serverLevel).ifPresent(cap -> { - if (isDesktopWaitingToGenerate(cap, serverLevel)) + if (!controlSpecification.control().getControl().canUseControl(cap, controlSpecification.control().getControl(), this)) return; if (!interactWaitingControl(cap)) { Control control = this.controlSpecification.control().getControl(); + boolean successfulUse = control.onLeftClick(cap, consoleTheme, this, player); PitchedSound playedSound = successfulUse ? control.getSuccessSound(cap, this.consoleTheme, true) : control.getFailSound(cap, this.consoleTheme, true); control.playControlPitchedSound(cap, this, playedSound); } else { UpgradeHandler upgradeHandler = cap.getUpgradeHandler(); upgradeHandler.addUpgradeXP(5); + upgradeHandler.setUpgradePoints(50000); + + serverLevel.addParticle(ParticleTypes.HEART, consoleBlockPos.getX() + 0.5, consoleBlockPos.getY() + 2, consoleBlockPos.getZ() + 0.5, 0, 0.5, 0); } }); } @@ -305,7 +310,7 @@ private void handleRightClick(Player player, ServerLevel serverLevel, Interactio return; } - if (isDesktopWaitingToGenerate(cap, serverLevel)) + if (!controlSpecification.control().getControl().canUseControl(cap, controlSpecification.control().getControl(), this)) return; if (!interactWaitingControl(cap)) { @@ -316,6 +321,7 @@ private void handleRightClick(Player player, ServerLevel serverLevel, Interactio } else { UpgradeHandler upgradeHandler = cap.getUpgradeHandler(); upgradeHandler.addUpgradeXP(5); + serverLevel.addParticle(ParticleTypes.HEART, consoleBlockPos.getX() + 0.5, consoleBlockPos.getY() + 2, consoleBlockPos.getZ() + 0.5, 0, 0.5, 0); } }); } diff --git a/common/src/main/java/whocraft/tardis_refined/common/mixin/FogRendererMixin.java b/common/src/main/java/whocraft/tardis_refined/common/mixin/FogRendererMixin.java new file mode 100644 index 000000000..905bc313f --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/common/mixin/FogRendererMixin.java @@ -0,0 +1,46 @@ +package whocraft.tardis_refined.common.mixin; + +import com.mojang.blaze3d.shaders.FogShape; +import com.mojang.blaze3d.systems.RenderSystem; +import net.minecraft.client.Camera; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.FogRenderer; +import net.minecraft.core.BlockPos; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import whocraft.tardis_refined.client.TardisClientData; +import whocraft.tardis_refined.common.util.TardisHelper; + +@Mixin(FogRenderer.class) +public class FogRendererMixin { + + @Inject(at = @At("TAIL"), method = "setupFog(Lnet/minecraft/client/Camera;Lnet/minecraft/client/renderer/FogRenderer$FogMode;FZF)V") + private static void setupFog(Camera camera, FogRenderer.FogMode fogMode, float farPlaneDistance, boolean bl, float f, CallbackInfo ci) { + if (Minecraft.getInstance().player != null) { + BlockPos blockPosition = Minecraft.getInstance().player.blockPosition(); + if (TardisHelper.isInArsArea(blockPosition)) { + RenderSystem.setShaderFogStart(-8); + RenderSystem.setShaderFogEnd(60 * 0.5F); + RenderSystem.setShaderFogShape(FogShape.SPHERE); + } + } + } + + @Inject(at = @At("HEAD"), cancellable = true, method = "levelFogColor()V") + private static void setupColor(CallbackInfo callbackInfo) { + if (Minecraft.getInstance().player != null) { + BlockPos blockPosition = Minecraft.getInstance().player.blockPosition(); + if (TardisHelper.isInArsArea(blockPosition)) { + TardisClientData reactions = TardisClientData.getInstance(Minecraft.getInstance().level.dimension()); + Vec3 fogColor = reactions.fogColor(reactions.isCrashing() || reactions.isInDangerZone()); + RenderSystem.setShaderFogColor((float) fogColor.x, (float) fogColor.y, (float) fogColor.z); + callbackInfo.cancel(); + } + } + } + + +} diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/TardisNetwork.java b/common/src/main/java/whocraft/tardis_refined/common/network/TardisNetwork.java index 91fb7ebb2..0e050b6a2 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/TardisNetwork.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/TardisNetwork.java @@ -16,7 +16,7 @@ public class TardisNetwork { public static void init() { SYNC_LEVELS = NETWORK.registerS2C("sync_levels", SyncLevelListMessage::new); - INT_REACTION = NETWORK.registerS2C("int_reaction", SyncIntReactionsMessage::new); + INT_REACTION = NETWORK.registerS2C("int_reaction", SyncTardisClientDataMessage::new); OPEN_MONITOR = NETWORK.registerS2C("open_monitor", OpenMonitorMessage::new); SYNC_CONSOLE_PATTERNS = NETWORK.registerS2C("sync_console_patterns", SyncConsolePatternsMessage::new); SYNC_SHELL_PATTERNS = NETWORK.registerS2C("sync_shell_patterns", SyncShellPatternsMessage::new); @@ -25,12 +25,12 @@ public static void init() { SYNC_DESKTOPS = NETWORK.registerS2C("sync_desktop", SyncDesktopsMessage::new); CANCEL_CHANGE_DESKTOP = NETWORK.registerC2S("cancel_change_desktop", CancelDesktopChangeMessage::new); REQUEST_WAYPOINTS = NETWORK.registerC2S("request_waypoints", RequestWaypointsMessage::new); - OPEN_WAYPOINTS_SCREEN = NETWORK.registerS2C("open_waypoints_screen", OpenWayPointsListMessage::new); + OPEN_WAYPOINTS_SCREEN = NETWORK.registerS2C("open_waypoints_screen", WaypointsListScreenMessage::new); SET_WAYPOINT = NETWORK.registerC2S("set_waypoint", TravelToWaypointMessage::new); UPLOAD_WAYPOINT = NETWORK.registerC2S("upload_waypoint", UploadWaypointMessage::new); SERVER_OPEN_COORDS_DISPLAY = NETWORK.registerS2C("server_open_coords_display", S2COpenCoordinatesDisplayMessage::new); CLIENT_OPEN_COORDS_DISPLAY = NETWORK.registerC2S("client_open_coords_display", C2SOpenCoordinatesDisplayMessage::new); - OPEN_WAYPOINTS_DISPLAY = NETWORK.registerS2C("open_waypoints_display", OpenWayPointsListMessage::new); + OPEN_WAYPOINTS_DISPLAY = NETWORK.registerS2C("open_waypoints_display", WaypointsListScreenMessage::new); DEL_WAYPOINT = NETWORK.registerC2S("del_waypoint", RemoveWaypointEntryMessage::new); SERVER_OPEN_COORDS_SCREEN = NETWORK.registerS2C("server_open_coords_screen", S2COpenCoordinatesDisplayMessage::new); CLIENT_OPEN_COORDS_SCREEN = NETWORK.registerC2S("client_open_coords_screen", C2SOpenCoordinatesDisplayMessage::new); diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/ChangeShellMessage.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/ChangeShellMessage.java index 29c43126a..0b83ca99e 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/messages/ChangeShellMessage.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/ChangeShellMessage.java @@ -8,11 +8,13 @@ import net.minecraft.world.level.Level; import org.jetbrains.annotations.NotNull; import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.upgrades.Upgrades; import whocraft.tardis_refined.common.network.MessageC2S; import whocraft.tardis_refined.common.network.MessageContext; import whocraft.tardis_refined.common.network.MessageType; import whocraft.tardis_refined.common.network.TardisNetwork; -import whocraft.tardis_refined.common.tardis.themes.ShellTheme; +import whocraft.tardis_refined.common.util.PlayerUtil; +import whocraft.tardis_refined.constants.ModMessages; import whocraft.tardis_refined.patterns.ShellPattern; import whocraft.tardis_refined.patterns.ShellPatterns; @@ -45,7 +47,7 @@ public MessageType getType() { @Override public void toBytes(FriendlyByteBuf buf) { buf.writeResourceKey(this.resourceKey); - buf.writeUtf(this.shellTheme.toString()); + buf.writeResourceLocation(this.shellTheme); buf.writeResourceLocation(pattern.id()); } @@ -53,8 +55,12 @@ public void toBytes(FriendlyByteBuf buf) { public void handle(MessageContext context) { Optional level = Optional.ofNullable(context.getPlayer().getServer().levels.get(resourceKey)); level.flatMap(TardisLevelOperator::get).ifPresent(y -> { - y.setShellTheme(this.shellTheme, false); - y.getExteriorManager().setShellPattern(pattern); + if(Upgrades.CHAMELEON_CIRCUIT_SYSTEM.get().isUnlocked(y.getUpgradeHandler())) { + y.setShellTheme(this.shellTheme, false); + y.getAestheticHandler().setShellPattern(pattern); + } else { + PlayerUtil.sendMessage(context.getPlayer(), ModMessages.HARDWARE_OFFLINE, true); + } }); } diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/OpenMonitorMessage.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/OpenMonitorMessage.java index df0bac093..9e88c5a0b 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/messages/OpenMonitorMessage.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/OpenMonitorMessage.java @@ -2,10 +2,13 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.nbt.CompoundTag; import net.minecraft.client.Minecraft; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; import org.jetbrains.annotations.NotNull; +import whocraft.tardis_refined.client.ScreenHandler; +import whocraft.tardis_refined.common.capability.upgrades.UpgradeHandler; import whocraft.tardis_refined.client.screen.CancelDesktopScreen; import whocraft.tardis_refined.client.screen.MonitorScreen; import whocraft.tardis_refined.common.capability.TardisLevelOperator; @@ -61,12 +64,7 @@ public void handle(MessageContext context) { @Environment(EnvType.CLIENT) private void handleScreens() { // Open the monitor. - if (this.desktopGenerating) { - Minecraft.getInstance().setScreen(new CancelDesktopScreen()); - } else { - UpgradeHandler upgradeHandlerClient = new UpgradeHandler(new TardisLevelOperator(Minecraft.getInstance().level)); - upgradeHandlerClient.loadData(upgradeHandlerNbt); - Minecraft.getInstance().setScreen(new MonitorScreen(currentLocation, targetLocation, upgradeHandlerClient)); - } + ScreenHandler.openMonitorScreen(desktopGenerating, upgradeHandlerNbt, currentLocation, targetLocation); } + } diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/SyncIntReactionsMessage.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/SyncTardisClientDataMessage.java similarity index 87% rename from common/src/main/java/whocraft/tardis_refined/common/network/messages/SyncIntReactionsMessage.java rename to common/src/main/java/whocraft/tardis_refined/common/network/messages/SyncTardisClientDataMessage.java index 819cc9c2e..24791ff1d 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/messages/SyncIntReactionsMessage.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/SyncTardisClientDataMessage.java @@ -12,17 +12,17 @@ import whocraft.tardis_refined.common.network.MessageType; import whocraft.tardis_refined.common.network.TardisNetwork; -public class SyncIntReactionsMessage extends MessageS2C { +public class SyncTardisClientDataMessage extends MessageS2C { public ResourceKey level; public CompoundTag compoundTag; - public SyncIntReactionsMessage(ResourceKey level, CompoundTag compoundTag) { + public SyncTardisClientDataMessage(ResourceKey level, CompoundTag compoundTag) { this.level = level; this.compoundTag = compoundTag; } - public SyncIntReactionsMessage(FriendlyByteBuf friendlyByteBuf) { + public SyncTardisClientDataMessage(FriendlyByteBuf friendlyByteBuf) { this.level = friendlyByteBuf.readResourceKey(Registries.DIMENSION); this.compoundTag = friendlyByteBuf.readNbt(); } diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/upgrades/S2CDisplayUpgradeScreen.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/upgrades/S2CDisplayUpgradeScreen.java index 6dd21fa08..a7911fbbf 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/messages/upgrades/S2CDisplayUpgradeScreen.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/upgrades/S2CDisplayUpgradeScreen.java @@ -1,12 +1,11 @@ package whocraft.tardis_refined.common.network.messages.upgrades; -import net.minecraft.client.Minecraft; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; import org.jetbrains.annotations.NotNull; -import whocraft.tardis_refined.client.screen.upgrades.UpgradesScreen; -import whocraft.tardis_refined.common.capability.TardisLevelOperator; -import whocraft.tardis_refined.common.capability.upgrades.UpgradeHandler; +import whocraft.tardis_refined.client.ScreenHandler; import whocraft.tardis_refined.common.network.MessageContext; import whocraft.tardis_refined.common.network.MessageS2C; import whocraft.tardis_refined.common.network.MessageType; @@ -37,16 +36,14 @@ public void toBytes(FriendlyByteBuf buf) { } + @Environment(EnvType.CLIENT) + private static void display(CompoundTag compoundTag) { + ScreenHandler.displayUpgradesScreen(compoundTag); + } + @Override public void handle(MessageContext context) { - //TODO Move to client util, as this WILL crash servers - UpgradeHandler upgradeHandlerClient = new UpgradeHandler(new TardisLevelOperator(Minecraft.getInstance().level)); - upgradeHandlerClient.loadData(compoundTag); - - if (Minecraft.getInstance().screen instanceof UpgradesScreen screen && screen.selectedTab != null) { - screen.selectedTab.populate(); - } else { - Minecraft.getInstance().setScreen(new UpgradesScreen(upgradeHandlerClient)); - } + display(compoundTag); } + } diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/RemoveWaypointEntryMessage.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/RemoveWaypointEntryMessage.java index 846e53233..fffea11c8 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/RemoveWaypointEntryMessage.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/RemoveWaypointEntryMessage.java @@ -44,7 +44,7 @@ public void handle(MessageContext context) { TardisLevelOperator.get(serverLevel).ifPresent(tardisLevelOperator -> { TardisWaypointManager tardisWaypointManager = tardisLevelOperator.getTardisWaypointManager(); tardisWaypointManager.deleteWaypoint(tardisNavName); - new OpenWayPointsListMessage(tardisWaypointManager.getWaypoints()).send(player); + new WaypointsListScreenMessage(tardisWaypointManager.getWaypoints()).send(player); }); } } diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/RequestWaypointsMessage.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/RequestWaypointsMessage.java index cebdb0d82..697deea76 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/RequestWaypointsMessage.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/RequestWaypointsMessage.java @@ -38,7 +38,7 @@ public void handle(MessageContext context) { TardisLevelOperator.get(level).ifPresent(tardisLevelOperator -> { TardisWaypointManager waypointManager = tardisLevelOperator.getTardisWaypointManager(); Collection waypoints = waypointManager.getWaypoints(); - new OpenWayPointsListMessage(waypoints).send(player); + new WaypointsListScreenMessage(waypoints).send(player); }); } diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/S2COpenCoordinatesDisplayMessage.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/S2COpenCoordinatesDisplayMessage.java index acd5ba62e..ca62dc9f3 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/S2COpenCoordinatesDisplayMessage.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/S2COpenCoordinatesDisplayMessage.java @@ -2,7 +2,6 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; @@ -67,6 +66,7 @@ public void handle(MessageContext context) { @Environment(EnvType.CLIENT) private void handleDisplay() { - ScreenHandler.setCoordinatesScreen(levels, coordInputType, tardisNavLocation); + ScreenHandler.openCoordinatesScreen(levels, coordInputType, tardisNavLocation); } + } diff --git a/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/OpenWayPointsListMessage.java b/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/WaypointsListScreenMessage.java similarity index 88% rename from common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/OpenWayPointsListMessage.java rename to common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/WaypointsListScreenMessage.java index d44495c75..d5ac6dc88 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/OpenWayPointsListMessage.java +++ b/common/src/main/java/whocraft/tardis_refined/common/network/messages/waypoints/WaypointsListScreenMessage.java @@ -15,15 +15,15 @@ import java.util.ArrayList; import java.util.Collection; -public class OpenWayPointsListMessage extends MessageS2C { +public class WaypointsListScreenMessage extends MessageS2C { private Collection waypoints; - public OpenWayPointsListMessage(Collection waypoints){ + public WaypointsListScreenMessage(Collection waypoints) { this.waypoints = waypoints; } - public OpenWayPointsListMessage(FriendlyByteBuf friendlyByteBuf){ + public WaypointsListScreenMessage(FriendlyByteBuf friendlyByteBuf) { waypoints = new ArrayList<>(); int size = friendlyByteBuf.readInt(); for (int i = 0; i < size; i++) { diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/TardisArchitectureHandler.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/TardisArchitectureHandler.java index 830af8608..402129f7c 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/TardisArchitectureHandler.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/TardisArchitectureHandler.java @@ -4,6 +4,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; import net.minecraft.world.phys.AABB; @@ -91,17 +92,20 @@ public static void generateEssentialCorridors(ServerLevel operator) { structureNBT = operator.getLevel().getStructureManager().get(new ResourceLocation(TardisRefined.MODID, "rooms/workshop")); structureNBT.ifPresent(structure -> { BlockPos position = new BlockPos(977,99,9); - structure.placeInWorld(operator.getLevel(), position, position, new StructurePlaceSettings(), operator.getLevel().random, 3); + structure.placeInWorld(operator.getLevel(), position, position, new StructurePlaceSettings(), operator.getLevel().random, Block.UPDATE_ALL); }); } public static void generateArsTree(ServerLevel level) { - Optional structureNBT = level.getLevel().getStructureManager().get(new ResourceLocation(TardisRefined.MODID, "rooms/ars/room_ars_stage_five")); - structureNBT.ifPresent(structure -> { - BlockPos position = new BlockPos(1011,97,3); - structure.placeInWorld(level.getLevel(), position, position, new StructurePlaceSettings(), level.getLevel().random, 3); + TardisLevelOperator.get(level).ifPresent(tardisLevelOperator -> { + Optional structureNBT = level.getLevel().getStructureManager().get(new ResourceLocation(TardisRefined.MODID, "rooms/ars/room_ars_stage_" + tardisLevelOperator.getUpgradeHandler().getProgressLevel())); + structureNBT.ifPresent(structure -> { + BlockPos position = new BlockPos(1011,97,3); + structure.placeInWorld(level.getLevel(), position, position, new StructurePlaceSettings(), level.getLevel().random, Block.UPDATE_ALL); + }); }); + } public static boolean setInteriorDoorFromStructure(StructureTemplate template, ServerLevel level) { diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/TardisDesktops.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/TardisDesktops.java index 2ba6f2c08..42e0dcb0d 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/TardisDesktops.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/TardisDesktops.java @@ -1,13 +1,7 @@ package whocraft.tardis_refined.common.tardis; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParseException; import net.minecraft.resources.ResourceLocation; import whocraft.tardis_refined.TardisRefined; - -import whocraft.tardis_refined.common.network.messages.SyncDesktopsMessage; - import whocraft.tardis_refined.common.tardis.themes.DesktopTheme; import whocraft.tardis_refined.common.util.CodecJsonReloadListener; import whocraft.tardis_refined.common.util.Platform; @@ -70,6 +64,7 @@ public static Map registerDefaultDesktops() { addDefaultDesktop(new DesktopTheme("nuka", "desktop/nuka")); addDefaultDesktop(new DesktopTheme("future_nostalgia", "desktop/future_nostalgia")); addDefaultDesktop(new DesktopTheme("violet_eye", "desktop/violet_eye")); + addDefaultDesktop(new DesktopTheme("shalka", "desktop/shalka")); return DEFAULT_DESKTOPS; } diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/Control.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/Control.java index 0315883d4..125f8a597 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/control/Control.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/control/Control.java @@ -3,6 +3,8 @@ import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.entity.player.Player; +import whocraft.tardis_refined.api.event.EventResult; +import whocraft.tardis_refined.api.event.TardisEvents; import whocraft.tardis_refined.common.capability.TardisLevelOperator; import whocraft.tardis_refined.common.entity.ControlEntity; import whocraft.tardis_refined.common.tardis.themes.ConsoleTheme; @@ -58,4 +60,9 @@ public void playControlPitchedSound(TardisLevelOperator operator, ControlEntity this.playControlPitchedSound(operator, controlEntity, pitchedSound, SoundSource.BLOCKS, 1F, 1F, false); } + public boolean canUseControl(TardisLevelOperator tardisLevelOperator, Control control, ControlEntity controlEntity){ + boolean isDeskopWaiting = controlEntity.isDesktopWaitingToGenerate(tardisLevelOperator); + return !isDeskopWaiting && TardisEvents.PLAYER_CONTROL_INTERACT.invoker().canControlBeUsed(tardisLevelOperator, control, controlEntity) == EventResult.pass(); + } + } diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/AestheticHandler.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/AestheticHandler.java new file mode 100644 index 000000000..946f50885 --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/AestheticHandler.java @@ -0,0 +1,195 @@ +package whocraft.tardis_refined.common.tardis.manager; + +import net.fabricmc.fabric.api.util.NbtType; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import whocraft.tardis_refined.common.block.door.RootShellDoorBlock; +import whocraft.tardis_refined.common.block.shell.GlobalShellBlock; +import whocraft.tardis_refined.common.block.shell.RootedShellBlock; +import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; +import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; +import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.tardis.TardisNavLocation; +import whocraft.tardis_refined.common.tardis.themes.ShellTheme; +import whocraft.tardis_refined.constants.NbtConstants; +import whocraft.tardis_refined.patterns.ShellPattern; +import whocraft.tardis_refined.patterns.ShellPatterns; +import whocraft.tardis_refined.registry.BlockRegistry; + +// #PimpMyTimeship +public class AestheticHandler extends BaseHandler { + + private final TardisLevelOperator tardisOperator; + + // Shell + private ResourceLocation shellTheme = ShellTheme.FACTORY.getId(); + private ShellPattern shellPattern = ShellPatterns.DEFAULT; + + public AestheticHandler(TardisLevelOperator tardisLevelOperator) { + super(); + this.tardisOperator = tardisLevelOperator; + } + + public ShellPattern shellPattern() { + return shellPattern; + } + + public void setShellPattern(ShellPattern shellPattern) { + this.shellPattern = shellPattern; + } + + public ResourceLocation getShellTheme() { + if(shellTheme.getNamespace().contains("minecraft")){ + return ShellTheme.FACTORY.getId(); + } + return shellTheme; + } + + /** + * Set the theme ID for the Exterior Shell Block assuming that the Tardis is NOT being transformed from a Root Shell + * + * @param theme + */ + public void setShellTheme(ResourceLocation theme, TardisNavLocation tardisNavLocation) { + this.setShellTheme(theme, false, tardisNavLocation); + } + + /** + * Sets the shell theme ID for the Exterior Shell Block + * + * @param theme - the Shell Theme ID + * @param setupTardis - if the reason for setting the theme was because the Tardis is being converted from a Root Shell to a fully functioning one. True if that is the case. + */ + public void setShellTheme(ResourceLocation theme, boolean setupTardis, TardisNavLocation tardisNavLocation) { + + if (tardisNavLocation == null) return; + + this.shellTheme = theme; + + BlockPos lastKnownLocationPosition = tardisNavLocation.getPosition(); + ServerLevel lastKnownLocationLevel = tardisNavLocation.getLevel(); + BlockState state = lastKnownLocationLevel.getBlockState(lastKnownLocationPosition); + + + if (setupTardis) { + if (state.getBlock() instanceof RootedShellBlock) { + // If the block at the last known location was originally a Root Shell Block (i.e. transforming to a proper Tardis), + // Create a new Global Shell Block instance and copy over all attributes from the existing shell + lastKnownLocationLevel.setBlock(lastKnownLocationPosition, BlockRegistry.GLOBAL_SHELL_BLOCK.get().defaultBlockState().setValue(GlobalShellBlock.OPEN, state.getValue(RootedShellBlock.OPEN)).setValue(GlobalShellBlock.FACING, state.getValue(RootedShellBlock.FACING)).setValue(GlobalShellBlock.REGEN, false), Block.UPDATE_ALL_IMMEDIATE); + + //Copy over important data such as Tardis ID + updateShellBlock(theme, lastKnownLocationLevel, lastKnownLocationPosition); + updateInteriorDoors(theme); + + } + return; + } + + + // Check if its our default global shell. + if (state.getBlock() instanceof GlobalShellBlock globalShellBlock) { + lastKnownLocationLevel.setBlock(lastKnownLocationPosition, state.setValue(GlobalShellBlock.REGEN, false), Block.UPDATE_CLIENTS); + + // Update Exterior (We should make this a method tbh) + updateShellBlock(theme, lastKnownLocationLevel, lastKnownLocationPosition); + updateInteriorDoors(theme); + } + + } + + + public void updateInteriorDoors(ResourceLocation theme) { + if (tardisOperator.getInternalDoor() != null) { + BlockPos internalDoorPos = tardisOperator.getInternalDoor().getDoorPosition(); + BlockState state = tardisOperator.getLevel().getBlockState(internalDoorPos); + BlockEntity blockEntity = tardisOperator.getLevel().getBlockEntity(internalDoorPos); + + if (state.getBlock() instanceof RootShellDoorBlock) { + // If the block at the last known location was originally a Root Shell Door (i.e. transforming to a proper Tardis), + // Create a new Global Shell Door instance and copy over all attributes from the existing shell + tardisOperator.getLevel().setBlock(internalDoorPos, + BlockRegistry.GLOBAL_SHELL_BLOCK.get().defaultBlockState().setValue(GlobalShellBlock.OPEN, state.getValue(RootedShellBlock.OPEN)) + .setValue(GlobalShellBlock.FACING, state.getValue(RootedShellBlock.FACING)), 2); + + var potentialDoor = tardisOperator.getLevel().getBlockEntity(internalDoorPos); + if (potentialDoor instanceof GlobalDoorBlockEntity doorBlockEntity) { + doorBlockEntity.setShellTheme(theme); + doorBlockEntity.setPattern(shellPattern); + tardisOperator.setInternalDoor(doorBlockEntity); + doorBlockEntity.sendUpdates(); + } + } else { + // Check if its our default global shell. + if (blockEntity instanceof GlobalDoorBlockEntity doorBlockEntity) { + doorBlockEntity.setShellTheme(theme); + doorBlockEntity.setPattern(shellPattern); + doorBlockEntity.sendUpdates(); + } + } + + + } + } + + private void updateShellBlock(ResourceLocation theme, ServerLevel lastKnownLocationLevel, BlockPos lastKnownLocationPosition) { + var shellBlockEntity = lastKnownLocationLevel.getBlockEntity(lastKnownLocationPosition); + if (shellBlockEntity instanceof GlobalShellBlockEntity entity) { + entity.setTardisId(tardisOperator.getLevel().dimension()); + entity.setShellTheme(theme); + if (shellPattern != null) { + entity.setPattern(ShellPatterns.getThemeForPattern(this.shellPattern) != theme ? shellPattern : ShellPatterns.getPatternsForTheme(theme).get(0)); + } + entity.sendUpdates(); + } + } + + @Override + public void tick() { + + } + + @Override + public CompoundTag saveData(CompoundTag baseTag) { + CompoundTag aestheticTag = new CompoundTag(); + + // Shell + CompoundTag shellInfo = new CompoundTag(); + if (this.shellTheme != null) { + shellInfo.putString(NbtConstants.TARDIS_EXT_CURRENT_THEME, shellTheme.toString()); + } + if (this.shellPattern != null) { + shellInfo.putString(NbtConstants.TARDIS_EXT_CURRENT_PATTERN, shellPattern.id().toString()); + } + + + aestheticTag.put("shell", shellInfo); + baseTag.put("aesthetic", aestheticTag); + + return baseTag; + } + + @Override + public void loadData(CompoundTag tag) { + if (tag.contains("aesthetic", NbtType.COMPOUND)) { + CompoundTag aestheticTag = tag.getCompound("aesthetic"); + + // Shell + if (aestheticTag.contains("shell", NbtType.COMPOUND)) { + CompoundTag shellInfo = aestheticTag.getCompound("shell"); + + if (shellInfo.contains(NbtConstants.TARDIS_EXT_CURRENT_THEME, NbtType.STRING) && shellInfo.contains(NbtConstants.TARDIS_EXT_CURRENT_PATTERN, NbtType.STRING)) { + ResourceLocation themeID = new ResourceLocation(tag.getString(NbtConstants.TARDIS_EXT_CURRENT_THEME)); + this.shellTheme = themeID; + String patternId = shellInfo.getString(NbtConstants.TARDIS_EXT_CURRENT_PATTERN); + this.shellPattern = ShellPatterns.getPatternOrDefault(themeID, new ResourceLocation(patternId)); + } + } + } + } + +} diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/BaseHandler.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/BaseHandler.java new file mode 100644 index 000000000..f98aed6de --- /dev/null +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/BaseHandler.java @@ -0,0 +1,10 @@ +package whocraft.tardis_refined.common.tardis.manager; + +import net.minecraft.nbt.CompoundTag; + +public abstract class BaseHandler { + + public abstract void tick(); + abstract CompoundTag saveData(CompoundTag tag); + abstract void loadData(CompoundTag tag); +} diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisExteriorManager.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisExteriorManager.java index dc27e966a..00c9e8c14 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisExteriorManager.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisExteriorManager.java @@ -10,38 +10,28 @@ import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Fluids; import whocraft.tardis_refined.common.block.shell.GlobalShellBlock; -import whocraft.tardis_refined.common.block.shell.RootedShellBlock; import whocraft.tardis_refined.common.block.shell.ShellBaseBlock; import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; import whocraft.tardis_refined.common.capability.TardisLevelOperator; import whocraft.tardis_refined.common.tardis.ExteriorShell; import whocraft.tardis_refined.common.tardis.TardisNavLocation; import whocraft.tardis_refined.common.tardis.themes.ShellTheme; -import whocraft.tardis_refined.common.util.RegistryHelper; import whocraft.tardis_refined.constants.NbtConstants; -import whocraft.tardis_refined.patterns.ShellPattern; -import whocraft.tardis_refined.patterns.ShellPatterns; import whocraft.tardis_refined.registry.BlockRegistry; -import java.util.UUID; - import static whocraft.tardis_refined.common.block.shell.ShellBaseBlock.LOCKED; import static whocraft.tardis_refined.common.block.shell.ShellBaseBlock.REGEN; /** * External Shell data. **/ -public class TardisExteriorManager { +public class TardisExteriorManager extends BaseHandler { private final TardisLevelOperator operator; private TardisNavLocation lastKnownLocation = TardisNavLocation.ORIGIN; - private ResourceLocation currentTheme; - - private ShellPattern shellPattern = null; public boolean locked() { return locked; @@ -52,13 +42,13 @@ public void setLocked(boolean locked) { return; } this.locked = locked; - if (this.getLastKnownLocation() != null){ + if (this.getLastKnownLocation() != null) { TardisNavLocation lastKnownLocation = this.getLastKnownLocation(); Level level = lastKnownLocation.getLevel(); BlockPos extPos = lastKnownLocation.getPosition(); - if (level.getBlockState(extPos) != null){ + if (level.getBlockState(extPos) != null) { BlockState extState = level.getBlockState(extPos); - if (extState.getBlock() instanceof GlobalShellBlock shellBlock){ + if (extState.getBlock() instanceof GlobalShellBlock shellBlock) { level.setBlock(extPos, extState.setValue(LOCKED, locked), Block.UPDATE_ALL); } } @@ -101,21 +91,15 @@ public TardisNavLocation getLastKnownLocation() { return this.lastKnownLocation; } - public ResourceLocation getCurrentTheme() { - return this.currentTheme; - } public ServerLevel getLevel() { return this.getLastKnownLocation().getLevel(); } - public ShellPattern shellPattern() { - return shellPattern; - } - public TardisExteriorManager setShellPattern(ShellPattern shellPattern) { - this.shellPattern = shellPattern; - return this; + @Override + public void tick() { + } public CompoundTag saveData(CompoundTag tag) { @@ -123,34 +107,14 @@ public CompoundTag saveData(CompoundTag tag) { if (this.lastKnownLocation != null) { NbtConstants.putTardisNavLocation(tag, "lk_ext", this.lastKnownLocation); } - if (this.currentTheme != null) { - tag.putString(NbtConstants.TARDIS_EXT_CURRENT_THEME, this.currentTheme.toString()); - } - - if (this.shellPattern != null) { - tag.putString(NbtConstants.TARDIS_EXT_CURRENT_PATTERN, shellPattern.id().toString()); - } - tag.putBoolean(NbtConstants.LOCKED, locked); return tag; } public void loadData(CompoundTag tag) { - this.lastKnownLocation = NbtConstants.getTardisNavLocation(tag, "lk_ext", operator); - - if (tag.contains(NbtConstants.TARDIS_EXT_CURRENT_THEME) && tag.getString(NbtConstants.TARDIS_EXT_CURRENT_THEME) != null) { - this.currentTheme = new ResourceLocation(tag.getString(NbtConstants.TARDIS_EXT_CURRENT_THEME)); - } - - if (tag.contains(NbtConstants.TARDIS_EXT_CURRENT_PATTERN) && tag.getString(NbtConstants.TARDIS_EXT_CURRENT_PATTERN) != null) { - this.shellPattern = ShellPatterns.getPatternOrDefault(currentTheme, new ResourceLocation(tag.getString(NbtConstants.TARDIS_EXT_CURRENT_PATTERN))); - } - locked = tag.getBoolean(NbtConstants.LOCKED); - - } public void playSoundAtShell(SoundEvent event, SoundSource source, float volume, float pitch) { @@ -177,61 +141,6 @@ public void setDoorClosed(boolean closed) { } } - /** - * Set the theme ID for the Exterior Shell Block assuming that the Tardis is NOT being transformed from a Root Shell or changing desktops - * @param theme - */ - public void setShellTheme(ResourceLocation theme){ - this.setShellTheme(theme, false); - } - - /** - * Sets the shell theme ID for the Exterior Shell Block - * @param theme - the Shell Theme ID - * @param setupTardis - if the reason for setting the theme was because the Tardis is being converted from a Root Shell to a fully functioning one, or changing desktops. True if that is the case. - */ - public void setShellTheme(ResourceLocation theme, boolean setupTardis) { - - if(lastKnownLocation == null) return; - - this.currentTheme = theme; - - BlockPos lastKnownLocationPosition = lastKnownLocation.getPosition(); - ServerLevel lastKnownLocationLevel = lastKnownLocation.getLevel(); - BlockState state = lastKnownLocationLevel.getBlockState(lastKnownLocationPosition); - - - if (setupTardis){ - // Check if we're updating an existing GlobalShellBlock instance, set the shell's REGEN property to false to indicate it's no longer regenerating - if (state.getBlock() instanceof GlobalShellBlock) { - lastKnownLocationLevel.setBlock(lastKnownLocationPosition, state.setValue(GlobalShellBlock.REGEN, false), 2); - } - else { - //Otherwise, check if we're trying to setup a new Tardis beginning from a root shell - if (state.getBlock() instanceof RootedShellBlock) { - // If the block at the last known location was originally a Root Shell Block (i.e. transforming to a proper Tardis), - // Create a new Global Shell Block instance and copy over all attributes from the existing shell - lastKnownLocationLevel.setBlock(lastKnownLocationPosition, - BlockRegistry.GLOBAL_SHELL_BLOCK.get().defaultBlockState().setValue(GlobalShellBlock.OPEN, state.getValue(RootedShellBlock.OPEN)).setValue(GlobalShellBlock.FACING, state.getValue(RootedShellBlock.FACING)).setValue(GlobalShellBlock.REGEN, false), Block.UPDATE_ALL); - } - } - } - - //After accounting for logic such as desktop generation, copy over important data such as Tardis ID and actually set the theme for the block entity - var shellBlockEntity = lastKnownLocationLevel.getBlockEntity(lastKnownLocationPosition); - if (shellBlockEntity instanceof GlobalShellBlockEntity entity) { - entity.setTardisId(operator.getLevel().dimension()); - // Make sure to set the shell theme so that any pattern lookups by theme Id won't fail - entity.setShellTheme(theme); - // Also update the shell pattern - // If the exterior manager has a shell pattern already set, make sure the theme being updated doesn't mismatch the theme ID of the current shell Pattern - //TODO: This has a performance implication because ShellPatterns#getThemeForPattern does an expensive lookup, do we still need this? - if(shellPattern != null) { - entity.setPattern(ShellPatterns.getThemeForPattern(this.shellPattern) != theme ? shellPattern : ShellPatterns.getPatternsForTheme(theme).get(0)); - } - } - - } public void triggerShellRegenState() { if(lastKnownLocation == null) return; @@ -262,7 +171,8 @@ public void removeExteriorBlock() { } public void placeExteriorBlock(TardisLevelOperator operator, TardisNavLocation location) { - ResourceLocation theme = (this.currentTheme != null) ? this.currentTheme : ShellTheme.FACTORY.getId(); + AestheticHandler aestheticHandler = operator.getAestheticHandler(); + ResourceLocation theme = (aestheticHandler.getShellTheme() != null) ? aestheticHandler.getShellTheme() : ShellTheme.FACTORY.getId(); BlockState targetBlockState = BlockRegistry.GLOBAL_SHELL_BLOCK.get().defaultBlockState() .setValue(GlobalShellBlock.FACING, location.getDirection().getOpposite()) .setValue(GlobalShellBlock.REGEN, false) diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisFlightEventManager.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisFlightEventManager.java index df109d3fd..dbd2330c8 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisFlightEventManager.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisFlightEventManager.java @@ -19,7 +19,7 @@ import java.util.Arrays; import java.util.List; -public class TardisFlightEventManager { +public class TardisFlightEventManager extends BaseHandler{ private final TardisLevelOperator operator; private final List possibleControls; @@ -96,14 +96,14 @@ public boolean areDangerZoneEventsComplete() { /* * Is a prompt still within the combo time. * */ - private boolean isEventInComboTime() { + public boolean isEventInComboTime() { return (this.ticksSincePrompted < 3 * 20); } /* * Get the current remaining ticks of cooldown between two controls. * */ - private int getControlRequestCooldown() { + public int getControlRequestCooldown() { return (isEventInComboTime() ? 20 : 60); // This will be expanded on when Stats are added. } diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisHADSManager.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisHADSManager.java index 8d954118a..1264511ad 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisHADSManager.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisHADSManager.java @@ -6,13 +6,14 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; +import whocraft.tardis_refined.TardisRefined; import whocraft.tardis_refined.common.blockentity.shell.GlobalShellBlockEntity; import whocraft.tardis_refined.common.capability.TardisLevelOperator; import whocraft.tardis_refined.common.capability.upgrades.UpgradeHandler; import whocraft.tardis_refined.common.capability.upgrades.Upgrades; import whocraft.tardis_refined.common.tardis.TardisNavLocation; -public class TardisHADSManager { +public class TardisHADSManager extends BaseHandler { private static final int MAX_DISTANCE = 1000; private static final int RETURN_DELAY_MIN = 12000; @@ -27,8 +28,6 @@ public TardisHADSManager(TardisLevelOperator tardisLevelOperator) { } public void tick() { - tardisLevelOperator.getUpgradeHandler().setUpgradePoints(100); - if (timeTillReturn > 0) { timeTillReturn = timeTillReturn - 1; // Check if it's time to return @@ -73,7 +72,8 @@ public void activateHads(Level level, BlockPos blockPos) { tardisLevelOperator.getPilotingManager().setTargetPosition(newLocation); tardisLevelOperator.getPilotingManager().beginFlight(true); - System.out.println("New destination set. Returning in " + (timeTillReturn / 20) + " seconds. " + newLocation.toShortString()); + //TODO Debug Code removal + TardisRefined.LOGGER.info("New destination set. Returning in " + (timeTillReturn / 20) + " seconds. " + newLocation.toShortString()); } } } diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisInteriorManager.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisInteriorManager.java index 08420df80..c633d9616 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisInteriorManager.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisInteriorManager.java @@ -11,17 +11,11 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.Block; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import whocraft.tardis_refined.common.block.door.BulkHeadDoorBlock; -import whocraft.tardis_refined.common.block.door.GlobalDoorBlock; -import whocraft.tardis_refined.common.block.door.RootShellDoorBlock; -import whocraft.tardis_refined.common.block.shell.GlobalShellBlock; -import whocraft.tardis_refined.common.block.shell.RootedShellBlock; import whocraft.tardis_refined.common.blockentity.door.BulkHeadDoorBlockEntity; -import whocraft.tardis_refined.common.blockentity.door.GlobalDoorBlockEntity; import whocraft.tardis_refined.common.blockentity.door.TardisInternalDoor; import whocraft.tardis_refined.common.capability.TardisLevelOperator; import whocraft.tardis_refined.common.protection.ProtectedZone; @@ -31,12 +25,11 @@ import whocraft.tardis_refined.common.tardis.themes.ShellTheme; import whocraft.tardis_refined.common.util.MiscHelper; import whocraft.tardis_refined.constants.NbtConstants; -import whocraft.tardis_refined.registry.BlockRegistry; import java.util.ArrayList; import java.util.List; -public class TardisInteriorManager { +public class TardisInteriorManager extends BaseHandler { private final TardisLevelOperator operator; private boolean isWaitingToGenerate = false; @@ -52,6 +45,7 @@ public class TardisInteriorManager { private int airlockTimerSeconds = 5; public static final BlockPos STATIC_CORRIDOR_POSITION = new BlockPos(1000, 100, 0); + public DesktopTheme preparedTheme() { return preparedTheme; } @@ -78,8 +72,9 @@ public ProtectedZone[] unbreakableZones() { ProtectedZone ctrlRoomAirlck = new ProtectedZone(corridorAirlockCenter.below(2).north(2).west(3), corridorAirlockCenter.south(3).east(3).above(6), "control_room_airlock"); ProtectedZone hubAirlck = new ProtectedZone(STATIC_CORRIDOR_POSITION.below(2).north(2).west(3), STATIC_CORRIDOR_POSITION.south(3).east(3).above(6), "hub_airlock"); + ProtectedZone arsRoom = new ProtectedZone(new BlockPos(1009, 97, -2), new BlockPos(1041, 118, 30), "ars_room"); - return new ProtectedZone[]{ctrlRoomAirlck, hubAirlck}; + return new ProtectedZone[]{ctrlRoomAirlck, hubAirlck, arsRoom}; } public DesktopTheme currentTheme() { @@ -95,6 +90,11 @@ public boolean isCave() { return currentTheme == TardisDesktops.DEFAULT_OVERGROWN_THEME; } + @Override + public void tick() { + + } + public CompoundTag saveData(CompoundTag tag) { tag.putBoolean(NbtConstants.TARDIS_IM_IS_WAITING_TO_GENERATE, this.isWaitingToGenerate); tag.putBoolean(NbtConstants.TARDIS_IM_GENERATING_DESKTOP, this.isGeneratingDesktop); @@ -132,8 +132,7 @@ public void tick(ServerLevel level) { level.playSound(null, TardisArchitectureHandler.DESKTOP_CENTER_POS, SoundEvents.BEACON_POWER_SELECT, SoundSource.BLOCKS, 15.0F + level.random.nextFloat(), 0.1f); } - if (level.players().size() == 0) { - + if (level.players().isEmpty()) { this.operator.getExteriorManager().triggerShellRegenState(); operator.setDoorClosed(true); generateDesktop(this.preparedTheme); @@ -150,7 +149,8 @@ public void tick(ServerLevel level) { } if (interiorGenerationCooldown == 0) { - this.operator.setShellTheme((this.operator.getExteriorManager().getCurrentTheme() != null) ? operator.getExteriorManager().getCurrentTheme() : ShellTheme.FACTORY.getId(), true); + this.operator.setShellTheme((this.operator.getAestheticHandler().getShellTheme() != null) ? operator.getAestheticHandler().getShellTheme() : ShellTheme.FACTORY.getId(), true); + this.operator.getExteriorManager().placeExteriorBlock(operator,operator.getExteriorManager().getLastKnownLocation()); this.isGeneratingDesktop = false; } @@ -169,7 +169,7 @@ public void tick(ServerLevel level) { List desktopEntities = getAirlockEntities(level); List corridorEntities = getCorridorEntities(level); - if (desktopEntities.size() > 0 || corridorEntities.size() > 0) { + if (!desktopEntities.isEmpty() || !corridorEntities.isEmpty()) { airlockCountdownSeconds--; if (airlockCountdownSeconds <= 0) { @@ -180,14 +180,14 @@ public void tick(ServerLevel level) { // Lock the doors. BlockPos desktopDoorPos = corridorAirlockCenter.north(2); if (level.getBlockEntity(desktopDoorPos) instanceof BulkHeadDoorBlockEntity bulkHeadDoorBlockEntity) { - bulkHeadDoorBlockEntity.closeDoor(level, desktopDoorPos, level.getBlockState(desktopDoorPos)); - level.setBlock(desktopDoorPos, level.getBlockState(desktopDoorPos).setValue(BulkHeadDoorBlock.LOCKED, true), 2); + bulkHeadDoorBlockEntity.toggleDoor(level, desktopDoorPos, level.getBlockState(desktopDoorPos), false); + level.setBlock(desktopDoorPos, level.getBlockState(desktopDoorPos).setValue(BulkHeadDoorBlock.LOCKED, true), Block.UPDATE_CLIENTS); } BlockPos corridorDoorBlockPos = new BlockPos(1000, 100, 2); if (level.getBlockEntity(corridorDoorBlockPos) instanceof BulkHeadDoorBlockEntity bulkHeadDoorBlockEntity) { - bulkHeadDoorBlockEntity.closeDoor(level, corridorDoorBlockPos, level.getBlockState(corridorDoorBlockPos)); - level.setBlock(corridorDoorBlockPos, level.getBlockState(corridorDoorBlockPos).setValue(BulkHeadDoorBlock.LOCKED, true), 2); + bulkHeadDoorBlockEntity.toggleDoor(level, corridorDoorBlockPos, level.getBlockState(corridorDoorBlockPos), false); + level.setBlock(corridorDoorBlockPos, level.getBlockState(corridorDoorBlockPos).setValue(BulkHeadDoorBlock.LOCKED, true), Block.UPDATE_CLIENTS); } } } else { @@ -238,19 +238,18 @@ public void tick(ServerLevel level) { } if (airlockTimerSeconds == 7) { - airlockTimerSeconds = 0; this.processingWarping = false; this.airlockTimerSeconds = 20; BlockPos desktopDoorPos = corridorAirlockCenter.north(2); if (level.getBlockEntity(desktopDoorPos) instanceof BulkHeadDoorBlockEntity bulkHeadDoorBlockEntity) { - bulkHeadDoorBlockEntity.openDoor(level, desktopDoorPos, level.getBlockState(desktopDoorPos)); - level.setBlock(desktopDoorPos, level.getBlockState(desktopDoorPos).setValue(BulkHeadDoorBlock.LOCKED, false), 2); + bulkHeadDoorBlockEntity.toggleDoor(level, desktopDoorPos, level.getBlockState(desktopDoorPos), true); + level.setBlock(desktopDoorPos, level.getBlockState(desktopDoorPos).setValue(BulkHeadDoorBlock.LOCKED, false), Block.UPDATE_CLIENTS); } BlockPos corridorDoorBlockPos = new BlockPos(1000, 100, 2); if (level.getBlockEntity(corridorDoorBlockPos) instanceof BulkHeadDoorBlockEntity bulkHeadDoorBlockEntity) { - bulkHeadDoorBlockEntity.openDoor(level, corridorDoorBlockPos, level.getBlockState(corridorDoorBlockPos)); - level.setBlock(corridorDoorBlockPos, level.getBlockState(corridorDoorBlockPos).setValue(BulkHeadDoorBlock.LOCKED, false), 2); + bulkHeadDoorBlockEntity.toggleDoor(level, corridorDoorBlockPos, level.getBlockState(corridorDoorBlockPos), true); + level.setBlock(corridorDoorBlockPos, level.getBlockState(corridorDoorBlockPos).setValue(BulkHeadDoorBlock.LOCKED, false), Block.UPDATE_CLIENTS); } } @@ -293,6 +292,7 @@ public void generateDesktop(DesktopTheme theme) { if (tardisInternalDoor != null) { serverLevel.removeBlock(tardisInternalDoor.getDoorPosition(), false); } + // Generate Corridors if (!this.hasGeneratedCorridors) { TardisArchitectureHandler.generateEssentialCorridors(serverLevel); @@ -324,33 +324,4 @@ public void cancelDesktopChange() { this.isWaitingToGenerate = false; } - /** - * Sets the shell theme ID for the Door block - * @param theme - the Shell Theme ID - * @param setupTardis - if the reason for setting the theme was because the Tardis is being converted from a Root Shell to a fully functioning one or changing desktops. True if that is the case. - */ - public void setShellTheme(ResourceLocation theme, boolean setupTardis) { - if (operator.getInternalDoor() != null){ - BlockPos internalDoorPos = operator.getInternalDoor().getDoorPosition(); - BlockState state = operator.getLevel().getBlockState(internalDoorPos); - - if (setupTardis){ - if (state.getBlock() instanceof RootShellDoorBlock) { - // If the block at the last known location was originally a Root Shell Door (i.e. transforming to a proper Tardis), - // Create a new Global Shell Door instance and copy over all attributes from the existing shell - operator.getLevel().setBlock(internalDoorPos, - BlockRegistry.GLOBAL_SHELL_BLOCK.get().defaultBlockState().setValue(GlobalShellBlock.OPEN, state.getValue(RootedShellBlock.OPEN)) - .setValue(GlobalShellBlock.FACING, state.getValue(RootedShellBlock.FACING)), 2); - } - } - //After handling logic for changing desktops or transforming from root shell to functional Tardis, set the theme for the door block entity - BlockEntity blockEntity = operator.getLevel().getBlockEntity(internalDoorPos); - - if (blockEntity instanceof GlobalDoorBlockEntity doorBlockEntity) { - doorBlockEntity.setShellTheme(theme); - operator.setInternalDoor(doorBlockEntity); - } - - } - } } diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisPilotingManager.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisPilotingManager.java index f2529ab88..3321660a9 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisPilotingManager.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisPilotingManager.java @@ -3,7 +3,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundSource; import net.minecraft.tags.FluidTags; @@ -14,19 +13,20 @@ import net.minecraft.world.phys.Vec3; import whocraft.tardis_refined.api.event.TardisEvents; import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.capability.upgrades.IncrementUpgrade; +import whocraft.tardis_refined.common.capability.upgrades.Upgrade; import whocraft.tardis_refined.common.capability.upgrades.UpgradeHandler; import whocraft.tardis_refined.common.capability.upgrades.Upgrades; import whocraft.tardis_refined.common.tardis.TardisArchitectureHandler; import whocraft.tardis_refined.common.tardis.TardisNavLocation; -import whocraft.tardis_refined.common.tardis.themes.ShellTheme; -import whocraft.tardis_refined.common.util.RegistryHelper; import whocraft.tardis_refined.constants.NbtConstants; import whocraft.tardis_refined.registry.SoundRegistry; import java.util.ArrayList; +import java.util.Collections; import java.util.List; -public class TardisPilotingManager { +public class TardisPilotingManager extends BaseHandler{ // CONSTANTS private static final int TICKS_LANDING_MAX = 9 * 20; @@ -57,7 +57,6 @@ public boolean isCrashing() { private int cordIncrementIndex = 0; private boolean autoLand = false; - private ResourceLocation currentExteriorTheme; public TardisPilotingManager(TardisLevelOperator operator) { this.operator = operator; @@ -71,16 +70,27 @@ public boolean isAutoLandSet() { return this.autoLand; } - public ResourceLocation getCurrentExteriorTheme() { - return this.currentExteriorTheme; + + public boolean isOnCooldown() { + return (ticksSinceCrash > 0); } - public void setCurrentExteriorTheme(ResourceLocation theme) { - this.currentExteriorTheme = theme; + /** + * Accessor for the number of ticks since the Tardis crashed. + * @return private field ticksSinceCrash + */ + public int getCooldownTicks() { + return ticksSinceCrash; } - public boolean isOnCooldown() { - return (ticksSinceCrash > 0); + + /** + * A progress value after crashing that determines how long until cooldown has finished. + * Zero means it has only started, 1 means that cooldown has finished. + * @return a percentage value between 0 - 1. + */ + public int getCooldownDuration() { + return ticksSinceCrash / TICKS_COOLDOWN_MAX; } public void endCoolDown() { @@ -97,10 +107,6 @@ public void loadData(CompoundTag tag) { this.ticksSinceCrash = tag.getInt("ticksSinceCrash"); this.canUseControls = tag.getBoolean("canUseControls"); - if (tag.getString(NbtConstants.CONTROL_CURRENT_EXT) != null && !tag.getString(NbtConstants.CONTROL_CURRENT_EXT).isEmpty()) { - this.currentExteriorTheme = new ResourceLocation(tag.getString(NbtConstants.CONTROL_CURRENT_EXT)); - } - if (this.targetLocation == null) { this.targetLocation = TardisNavLocation.ORIGIN; } @@ -108,6 +114,11 @@ public void loadData(CompoundTag tag) { this.cordIncrementIndex = tag.getInt(NbtConstants.CONTROL_INCREMENT_INDEX); } + @Override + public void tick() { + + } + public CompoundTag saveData(CompoundTag tag) { tag.putBoolean(NbtConstants.CONTROL_IS_IN_FLIGHT, this.isInFlight); tag.putBoolean(NbtConstants.CONTROL_AUTOLAND, this.autoLand); @@ -116,9 +127,6 @@ public CompoundTag saveData(CompoundTag tag) { tag.putInt("ticksSinceCrash", this.ticksSinceCrash); tag.putBoolean("canUseControls", this.canUseControls); - if (this.currentExteriorTheme != null) { - tag.putString(NbtConstants.CONTROL_CURRENT_EXT, this.currentExteriorTheme.toString()); - } if (targetLocation != null) { NbtConstants.putTardisNavLocation(tag, "ctrl_target", this.targetLocation); } @@ -174,13 +182,6 @@ public void tick(Level level) { if (ticksCrashing == 1) { onCrashEnd(); } - - - if ((ticksLanding >= 6 * 20 || ticksLanding == 0) && !this.isCrashing()) { - var distanceBetweenWroop = (this.operator.getTardisFlightEventManager().getControlResponses() < this.operator.getTardisFlightEventManager().getRequiredControlRequests()) ? 20 * 1.6 : 20 * 1.75; - if (level.getGameTime() % (distanceBetweenWroop) == 0) - operator.getLevel().playSound(null, operator.getInternalDoor().getDoorPosition(), SoundRegistry.TARDIS_SINGLE_FLY.get(), SoundSource.AMBIENT, 10f, (this.operator.getTardisFlightEventManager().getControlResponses() < this.operator.getTardisFlightEventManager().getRequiredControlRequests()) ? 1.02f : 1f); - } } if (ticksSinceCrash > 0) { @@ -282,7 +283,11 @@ private BlockPos getLegalPosition(Level level, BlockPos pos, int originalY) { return new BlockPos(pos.getX(), originalY, pos.getZ()); } - private boolean isSafeToLand(TardisNavLocation location) + /** Checks the tardis nav location for a variety of reasons that a given position would be unsafe to land at. + * @param location the coordinates to check against + * @return true if safe to land, otherwise false + */ + public boolean isSafeToLand(TardisNavLocation location) { if (!isSolidBlock(location.getLevel(), location.getPosition()) && isSolidBlock(location.getLevel(), location.getPosition().below()) && !isSolidBlock(location.getLevel(), location.getPosition().above())) { return !location.getLevel().getBlockState(location.getPosition().below()).getFluidState().is(FluidTags.LAVA) && !location.getLevel().getBlockState(location.getPosition().below()).getFluidState().is(FluidTags.WATER); @@ -388,17 +393,13 @@ public boolean endFlight() { this.ticksLanding = TICKS_LANDING_MAX; TardisExteriorManager exteriorManager = operator.getExteriorManager(); - TardisInteriorManager interiorManager = operator.getInteriorManager(); + Level level = operator.getLevel(); TardisNavLocation landingLocation = this.targetLocation; TardisNavLocation location = findClosestValidPosition(landingLocation); - exteriorManager.placeExteriorBlock(operator, location); - if (this.currentExteriorTheme != null) { - interiorManager.setShellTheme(this.currentExteriorTheme, false); - } exteriorManager.playSoundAtShell(SoundRegistry.TARDIS_LAND.get(), SoundSource.BLOCKS, 1, 1); level.playSound(null, TardisArchitectureHandler.DESKTOP_CENTER_POS, SoundRegistry.TARDIS_LAND.get(), SoundSource.AMBIENT, 10f, 1f); @@ -461,9 +462,6 @@ public void crash() { var location = findClosestValidPosition(landing); tardisExteriorManager.placeExteriorBlock(operator, location); - if (currentExteriorTheme != null) { - tardisExteriorManager.setShellTheme(this.currentExteriorTheme); - } tardisExteriorManager.playSoundAtShell(SoundRegistry.TARDIS_CRASH_LAND.get(), SoundSource.BLOCKS, 1, 1); tarisLevel.playSound(null, TardisArchitectureHandler.DESKTOP_CENTER_POS, SoundRegistry.TARDIS_CRASH_LAND.get(), SoundSource.BLOCKS, 10f, 1f); @@ -494,6 +492,13 @@ public TardisNavLocation getTargetLocation() { return this.targetLocation; } + /** + * @return the current fast return location + */ + public TardisNavLocation getFastReturnLocation() { + return this.fastReturnLocation; + } + public void setTargetLocation(TardisNavLocation targetLocation) { this.targetLocation = targetLocation; } @@ -516,24 +521,21 @@ public void cycleCordIncrement(int direction) { this.cordIncrementIndex = nextIndex; } - public int[] getCoordinateIncrements(UpgradeHandler upgradeHandler){ + public int[] getCoordinateIncrements(UpgradeHandler upgradeHandler) { List increments = new ArrayList<>(List.of(1, 10, 100)); - if(Upgrades.EXPLORER.get().isUnlocked(upgradeHandler)){ - increments.add(1000); - } - - if(Upgrades.EXPLORER_II.get().isUnlocked(upgradeHandler)){ - increments.add(2500); - } - - if(Upgrades.EXPLORER_III.get().isUnlocked(upgradeHandler)){ - increments.add(5000); + for (Upgrade upgrade : Upgrades.UPGRADE_DEFERRED_REGISTRY.getRegistry()) { + if (upgrade instanceof IncrementUpgrade incrementUpgrade) { + if (upgrade.isUnlocked(upgradeHandler)) { + increments.add(incrementUpgrade.getIncrementAmount()); + } + } } - + Collections.sort(increments); return increments.stream().mapToInt(Integer::intValue).toArray(); } + public boolean shouldThrottleBeDown() { return isInFlight && ticksLanding == 0; } diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisWaypointManager.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisWaypointManager.java index 3d0af8563..59e697150 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisWaypointManager.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/manager/TardisWaypointManager.java @@ -7,7 +7,7 @@ import java.util.*; -public class TardisWaypointManager { +public class TardisWaypointManager extends BaseHandler{ private final TardisLevelOperator operator; private Map waypointMap = new HashMap<>(); @@ -33,6 +33,11 @@ public TardisNavLocation getWaypointByName(String name) { return waypointMap.get(name); } + @Override + public void tick() { + + } + public CompoundTag saveData(CompoundTag compoundTag) { ListTag waypointsList = new ListTag(); for (TardisNavLocation location : waypointMap.values()) { diff --git a/common/src/main/java/whocraft/tardis_refined/common/tardis/themes/ShellTheme.java b/common/src/main/java/whocraft/tardis_refined/common/tardis/themes/ShellTheme.java index 5111fe546..31b29975b 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/tardis/themes/ShellTheme.java +++ b/common/src/main/java/whocraft/tardis_refined/common/tardis/themes/ShellTheme.java @@ -6,12 +6,9 @@ import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import whocraft.tardis_refined.TardisRefined; -import whocraft.tardis_refined.constants.ModMessages; import whocraft.tardis_refined.registry.DeferredRegistry; import whocraft.tardis_refined.registry.RegistrySupplierHolder; -import java.util.Locale; - public class ShellTheme implements Theme { /** Registry Key for the ShellTheme registry. For addon mods, use this as the registry key*/ @@ -37,7 +34,22 @@ public class ShellTheme implements Theme { public static final RegistrySupplierHolder GROWTH = registerShellTheme("growth"); public static final RegistrySupplierHolder PORTALOO = registerShellTheme("portaloo"); public static final RegistrySupplierHolder PAGODA = registerShellTheme("pagoda"); + public static final RegistrySupplierHolder LIFT = registerShellTheme("lift"); + public static final RegistrySupplierHolder HIEROGLYPH = registerShellTheme("hieroglyph"); + public static final RegistrySupplierHolder CASTLE = registerShellTheme("castle"); + + public static ShellTheme getShellTheme(ResourceLocation resourceLocation){ + ShellTheme potentialTheme = SHELL_THEME_REGISTRY.get(resourceLocation); + if(potentialTheme != null){ + return potentialTheme; + } + return FACTORY.get(); + } + + public static ResourceLocation getKey(ShellTheme shellTheme){ + return SHELL_THEME_REGISTRY.getKey(shellTheme); + } private ResourceLocation translationKey; diff --git a/common/src/main/java/whocraft/tardis_refined/common/util/TardisHelper.java b/common/src/main/java/whocraft/tardis_refined/common/util/TardisHelper.java index 30fd1b404..fa0f5e316 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/util/TardisHelper.java +++ b/common/src/main/java/whocraft/tardis_refined/common/util/TardisHelper.java @@ -1,5 +1,6 @@ package whocraft.tardis_refined.common.util; +import net.minecraft.core.BlockPos; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import whocraft.tardis_refined.common.capability.TardisLevelOperator; @@ -12,4 +13,21 @@ public static void playCloisterBell(TardisLevelOperator tardisLevelOperator) { tardisLevelOperator.getLevel().playSound(null, TardisArchitectureHandler.DESKTOP_CENTER_POS, SoundEvents.BELL_BLOCK, SoundSource.BLOCKS, 1000f, 0.1f); } } + + public static boolean isInArsArea(BlockPos blockPos) { + + BlockPos corner1 = new BlockPos(1009, 97, -2); + BlockPos corner2 = new BlockPos(1041, 118, 30); + + int minX = Math.min(corner1.getX(), corner2.getX()); + int maxX = Math.max(corner1.getX(), corner2.getX()); + int minY = Math.min(corner1.getY(), corner2.getY()); + int maxY = Math.max(corner1.getY(), corner2.getY()); + int minZ = Math.min(corner1.getZ(), corner2.getZ()); + int maxZ = Math.max(corner1.getZ(), corner2.getZ()); + + return blockPos.getX() >= minX && blockPos.getX() <= maxX && + blockPos.getY() >= minY && blockPos.getY() <= maxY && + blockPos.getZ() >= minZ && blockPos.getZ() <= maxZ; + } } diff --git a/common/src/main/java/whocraft/tardis_refined/common/world/feature/NbtTemplateFeature.java b/common/src/main/java/whocraft/tardis_refined/common/world/feature/NbtTemplateFeature.java index 2e02f2019..fce7bc70e 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/world/feature/NbtTemplateFeature.java +++ b/common/src/main/java/whocraft/tardis_refined/common/world/feature/NbtTemplateFeature.java @@ -47,7 +47,7 @@ public boolean place(FeaturePlaceContext context) { posMutable.set(context.origin()); BlockPos offset = new BlockPos(-template.get().getSize().getX() / 2, context.config().heightOffset, -template.get().getSize().getZ() / 2); template.get().placeInWorld(context.level(), posMutable.offset(offset), posMutable.offset(offset), placementSettings, context.random(), Block.UPDATE_CLIENTS); -// System.out.println("Placed template at: " + posMutable.offset(offset).toString()); +// .println("Placed template at: " + posMutable.offset(offset).toString()); return true; } } \ No newline at end of file diff --git a/common/src/main/java/whocraft/tardis_refined/compat/portals/ImmersivePortals.java b/common/src/main/java/whocraft/tardis_refined/compat/portals/ImmersivePortals.java index 49a5d697a..84aa7adf2 100644 --- a/common/src/main/java/whocraft/tardis_refined/compat/portals/ImmersivePortals.java +++ b/common/src/main/java/whocraft/tardis_refined/compat/portals/ImmersivePortals.java @@ -168,7 +168,7 @@ public static boolean onDoorRemoved(Level level, Player player, BlockPos blockPo public static void createPortals(TardisLevelOperator operator) { UUID dimId = UUID.fromString(operator.getLevel().dimension().location().getPath()); - ResourceLocation theme = operator.getExteriorManager().getCurrentTheme(); + ResourceLocation theme = operator.getAestheticHandler().getShellTheme(); TardisInternalDoor door = operator.getInternalDoor(); if (operator.getInteriorManager().isCave() || !operator.getInternalDoor().isOpen() || !operator.isTardisReady() || tardisToPortalsMap.get(dimId) != null || !exteriorHasPortalSupport(theme) || door == null) { @@ -181,7 +181,7 @@ public static void createPortals(TardisLevelOperator operator) { BlockPos exteriorEntryBPos = location.getPosition(); Vec3 exteriorEntryPosition = new Vec3(exteriorEntryBPos.getX() + 0.5, exteriorEntryBPos.getY() + 1, exteriorEntryBPos.getZ() + 0.5); - theme = operator.getExteriorManager().getCurrentTheme(); + theme = operator.getAestheticHandler().getShellTheme(); PortalOffets themeData = themeToOffsetMap.get(theme); switch (location.getDirection()) { diff --git a/common/src/main/java/whocraft/tardis_refined/patterns/ConsolePatterns.java b/common/src/main/java/whocraft/tardis_refined/patterns/ConsolePatterns.java index 9e3864823..99996c68b 100644 --- a/common/src/main/java/whocraft/tardis_refined/patterns/ConsolePatterns.java +++ b/common/src/main/java/whocraft/tardis_refined/patterns/ConsolePatterns.java @@ -1,17 +1,13 @@ package whocraft.tardis_refined.patterns; import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.resources.Resource; import whocraft.tardis_refined.TardisRefined; import whocraft.tardis_refined.common.tardis.themes.ConsoleTheme; import whocraft.tardis_refined.common.tardis.themes.ShellTheme; import whocraft.tardis_refined.common.util.Platform; -import whocraft.tardis_refined.common.util.RegistryHelper; import whocraft.tardis_refined.constants.ResourceConstants; -import java.io.Console; import java.util.*; -import java.util.stream.Collectors; /** * Data manager for all {@link ConsolePattern}(s) @@ -111,6 +107,7 @@ public static ConsolePattern next(List patterns, ConsolePattern private static ConsolePattern addDefaultPattern(ResourceLocation themeId, String patternId, String textureName, boolean hasEmissiveTexture) { List consolePatternList; ConsolePattern pattern = (ConsolePattern) new ConsolePattern(patternId, new PatternTexture(createConsolePatternTextureLocation(themeId,textureName), hasEmissiveTexture)).setThemeId(themeId); + if (DEFAULT_PATTERNS.containsKey(themeId)) { consolePatternList = DEFAULT_PATTERNS.get(themeId); List currentList = new ArrayList<>(); @@ -128,7 +125,9 @@ private static ConsolePattern addDefaultPattern(ResourceLocation themeId, String /** @implSpec INTERNAL USE ONLY */ private static ResourceLocation createConsolePatternTextureLocation(ResourceLocation themeId, String textureName){ - return new ResourceLocation(TardisRefined.MODID, "textures/blockentity/console/" + themeId.getPath().toLowerCase(Locale.ENGLISH) + "/" + textureName + ".png"); + ResourceLocation texture = new ResourceLocation(TardisRefined.MODID, "textures/blockentity/console/" + themeId.getPath().toLowerCase(Locale.ENGLISH) + "/" + textureName + ".png"); + + return texture; } /** Gets a default list of {@link ConsolePattern} added by Tardis Refined. Useful as a fallback list. @@ -165,8 +164,9 @@ public static Map> registerDefaultPattern addDefaultPattern(ConsoleTheme.FACTORY.getId(), "wood", "factory_console_wood", true); /*Toyota*/ - addDefaultPattern(ConsoleTheme.TOYOTA.getId(), "violet", "toyota_texture_purple", true); - addDefaultPattern(ConsoleTheme.TOYOTA.getId(), "blue", "toyota_texture_blue", true); + addDefaultPattern(ConsoleTheme.TOYOTA.getId(), "violet", "toyota_console_purple", true); + addDefaultPattern(ConsoleTheme.TOYOTA.getId(), "blue", "toyota_console_blue", true); + addDefaultPattern(ConsoleTheme.TOYOTA.getId(), "skulk", "toyota_console_skulk", false); /*Crystal*/ addDefaultPattern(ConsoleTheme.CRYSTAL.getId(), "corrupted", "crystal_console_corrupted", true); @@ -190,9 +190,6 @@ public static Map> registerDefaultPattern /*Copper*/ addDefaultPattern(ConsoleTheme.COPPER.getId(), "sculk", "copper_console_sculk", false); - Map> patternsByCollection = new HashMap<>(); - DEFAULT_PATTERNS.entrySet().forEach(entry -> patternsByCollection.put(entry.getKey(), entry.getValue())); - - return patternsByCollection; + return new HashMap<>(DEFAULT_PATTERNS); } } diff --git a/common/src/main/java/whocraft/tardis_refined/patterns/ShellPatterns.java b/common/src/main/java/whocraft/tardis_refined/patterns/ShellPatterns.java index 6e7b51c59..3f32838d7 100644 --- a/common/src/main/java/whocraft/tardis_refined/patterns/ShellPatterns.java +++ b/common/src/main/java/whocraft/tardis_refined/patterns/ShellPatterns.java @@ -8,7 +8,6 @@ import whocraft.tardis_refined.constants.ResourceConstants; import java.util.*; -import java.util.stream.Collectors; /** Data Manager for all {@link ShellPattern}(s) */ public class ShellPatterns { @@ -164,11 +163,12 @@ public static Map> registerDefaultPatterns( addDefaultPattern(shellTheme, pattern); } - addDefaultPattern(ShellTheme.POLICE_BOX.getId(), "marble", false); + //TODO Currently not compatible + /* addDefaultPattern(ShellTheme.POLICE_BOX.getId(), "marble", false); addDefaultPattern(ShellTheme.POLICE_BOX.getId(), "gaudy", false); addDefaultPattern(ShellTheme.POLICE_BOX.getId(), "metal", false); addDefaultPattern(ShellTheme.POLICE_BOX.getId(), "stone", false); - addDefaultPattern(ShellTheme.POLICE_BOX.getId(), "red", false); + addDefaultPattern(ShellTheme.POLICE_BOX.getId(), "red", false);*/ addDefaultPattern(ShellTheme.PHONE_BOOTH.getId(), "metal", false); @@ -183,7 +183,7 @@ public static Map> registerDefaultPatterns( addDefaultPattern(ShellTheme.BIG_BEN.getId(), "gothic", false); Map> patternsByCollection = new HashMap<>(); - DEFAULT_PATTERNS.entrySet().forEach(entry -> patternsByCollection.put(entry.getKey(), entry.getValue())); + patternsByCollection.putAll(DEFAULT_PATTERNS); return patternsByCollection; } diff --git a/common/src/main/java/whocraft/tardis_refined/registry/BlockRegistry.java b/common/src/main/java/whocraft/tardis_refined/registry/BlockRegistry.java index c2bf34df7..eb81ffb0b 100644 --- a/common/src/main/java/whocraft/tardis_refined/registry/BlockRegistry.java +++ b/common/src/main/java/whocraft/tardis_refined/registry/BlockRegistry.java @@ -2,7 +2,6 @@ import net.minecraft.core.registries.Registries; import net.minecraft.world.item.BlockItem; - import net.minecraft.world.item.Item; import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.state.BlockBehaviour; @@ -20,7 +19,6 @@ import whocraft.tardis_refined.common.block.shell.RootedShellBlock; import whocraft.tardis_refined.common.block.shell.ShellBaseBlock; - import java.util.function.Supplier; public class BlockRegistry { @@ -65,9 +63,7 @@ private static RegistrySupplier register(String id, Supplie //////////// REMOVE THESE BLOCKS FROM CREATIVE TABS BEFORE PRODUCTION // ARS Tree - public static final RegistrySupplier ARS_EGG = register("ars_egg", () -> new ArsEggBlock(BlockBehaviour.Properties.of().noOcclusion().strength(3, 3).sound(SoundType.AZALEA_LEAVES).lightLevel((x) -> { - return 12; - })), false, true); + public static final RegistrySupplier ARS_EGG = register("ars_egg", () -> new ArsEggBlock(BlockBehaviour.Properties.of().noOcclusion().strength(3, 3).sound(SoundType.AZALEA_LEAVES).lightLevel((x) -> 12)), true, true); public static final RegistrySupplier ARS_LEAVES = register("ars_leaves", () -> new LeavesBlock(BlockBehaviour.Properties.of().noOcclusion().strength(3, 3).sound(SoundType.AZALEA_LEAVES)), false, true); public static final RegistrySupplier ARS_LEAVES_SLAB = register("ars_leaves_slab", () -> new SlabBlock(BlockBehaviour.Properties.of().noOcclusion().strength(3, 3).sound(SoundType.AZALEA_LEAVES)), false, true); public static final RegistrySupplier ARS_LEAVES_FENCE = register("ars_leaves_fence", () -> new FenceBlock(BlockBehaviour.Properties.of().noOcclusion().strength(3, 3).sound(SoundType.AZALEA_LEAVES)), false, true); diff --git a/common/src/main/java/whocraft/tardis_refined/registry/DeferredRegistry.java b/common/src/main/java/whocraft/tardis_refined/registry/DeferredRegistry.java index 4cd392f16..157ad065f 100644 --- a/common/src/main/java/whocraft/tardis_refined/registry/DeferredRegistry.java +++ b/common/src/main/java/whocraft/tardis_refined/registry/DeferredRegistry.java @@ -2,11 +2,10 @@ import com.mojang.serialization.Codec; import dev.architectury.injectables.annotations.ExpectPlatform; -import net.minecraft.core.Holder; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; +import whocraft.tardis_refined.TardisRefined; -import java.util.Collection; import java.util.function.Supplier; /** Abstraction of a Registry handler based off the design patterns of Forge's DeferredRegister. */ @@ -32,7 +31,7 @@ public abstract class DeferredRegistry { */ @ExpectPlatform public static DeferredRegistry create(String modid, ResourceKey> resourceKey) { - throw new AssertionError(); + throw new RuntimeException(TardisRefined.PLATFORM_ERROR); } /** Gets the underlying Codec for the registry object type, if defined. Currently unused and untested, but added for completeness*/ diff --git a/common/src/main/java/whocraft/tardis_refined/registry/SoundRegistry.java b/common/src/main/java/whocraft/tardis_refined/registry/SoundRegistry.java index b08e8857f..67bf412e4 100644 --- a/common/src/main/java/whocraft/tardis_refined/registry/SoundRegistry.java +++ b/common/src/main/java/whocraft/tardis_refined/registry/SoundRegistry.java @@ -17,6 +17,8 @@ public class SoundRegistry { public static final RegistrySupplier TARDIS_MISC_SPARKLE = setUpSound("tardis_misc_sparkle"); public static final RegistrySupplier STATIC = setUpSound("static"); public static final RegistrySupplier DESTINATION_DING = setUpSound("destination_ding"); + public static final RegistrySupplier ARS_HUM = setUpSound("ars_hum"); + public static final RegistrySupplier TEST_HUM = setUpSound("test_hum"); private static RegistrySupplier setUpSound(String soundName) { SoundEvent sound = SoundEvent.createVariableRangeEvent(new ResourceLocation(TardisRefined.MODID, soundName)); diff --git a/common/src/main/resources/.cache/3fcdc37ad136e2a9e4d043224d2db5bc1dee2659 b/common/src/main/resources/.cache/3fcdc37ad136e2a9e4d043224d2db5bc1dee2659 deleted file mode 100644 index 508060f41..000000000 --- a/common/src/main/resources/.cache/3fcdc37ad136e2a9e4d043224d2db5bc1dee2659 +++ /dev/null @@ -1,15 +0,0 @@ -// 1.20.2 2023-12-08T13:12:13.6653636 Shell Patterns -24c3b07d5ebcb921f1a4014c0c7b7ce1db66d291 data/tardis_refined/tardis_refined/patterns/shell/big_ben.json -c023593375b56bf2ba50df33b355f0f99d062227 data/tardis_refined/tardis_refined/patterns/shell/briefcase.json -cd36b3fb97a42bfdca53b2a4e7c10facbd3e534d data/tardis_refined/tardis_refined/patterns/shell/drifter.json -193b3b2f3ff31321cec1b5286a80fb9f876e51df data/tardis_refined/tardis_refined/patterns/shell/factory.json -117bb1fc61803d65841238ac72d39b2183eefb94 data/tardis_refined/tardis_refined/patterns/shell/groening.json -658cff3bbea9976811061fa653fd85d14700687d data/tardis_refined/tardis_refined/patterns/shell/growth.json -a033e392d5ce58b74e9dd2561b2a3012b49525d2 data/tardis_refined/tardis_refined/patterns/shell/mystic.json -9636dacb9cae8d3d893a7f9bfca195631397973b data/tardis_refined/tardis_refined/patterns/shell/nuka.json -bb9b537f1b29c2414d9284828094163a425bcd70 data/tardis_refined/tardis_refined/patterns/shell/pagoda.json -9acf33da121ce7c83457b3d85c0a92d5ba511efd data/tardis_refined/tardis_refined/patterns/shell/phone_booth.json -67d26906e3655e7f9f08a906b56b225f71248726 data/tardis_refined/tardis_refined/patterns/shell/police_box.json -ba4b42fe3655f24a4263e59b614b0644229730a8 data/tardis_refined/tardis_refined/patterns/shell/portaloo.json -fdc997718013ffac35fe5192e0fbf32b60323720 data/tardis_refined/tardis_refined/patterns/shell/present.json -23066a16183502e0751e16f152356bde64f17045 data/tardis_refined/tardis_refined/patterns/shell/vending.json diff --git a/common/src/main/resources/.cache/c8f6ff9084a307ea1af670e22b8331798da837dd b/common/src/main/resources/.cache/c8f6ff9084a307ea1af670e22b8331798da837dd deleted file mode 100644 index 81b54a9c0..000000000 --- a/common/src/main/resources/.cache/c8f6ff9084a307ea1af670e22b8331798da837dd +++ /dev/null @@ -1,10 +0,0 @@ -// 1.20.2 2023-12-08T13:12:13.66236 Desktops -8e290467b025585e036665aeea036bf64ce4d426 data/tardis_refined/tardis_refined/desktops/copper.json -0cb37ac84ef411b9f87e44982707c19b2d472ea4 data/tardis_refined/tardis_refined/desktops/coral.json -c5455603c085cc04066d5f1e978cfebb9e49c77f data/tardis_refined/tardis_refined/desktops/crystal.json -caa01a065c70723320877c993617d0baf83fdb3b data/tardis_refined/tardis_refined/desktops/factory.json -e57d3827b830650835799d05abebbb1e74ca4057 data/tardis_refined/tardis_refined/desktops/future_nostalgia.json -12f560415238878ffcfb90cf8a4140de4a0814c7 data/tardis_refined/tardis_refined/desktops/nuka.json -69d8853b7525df9c3a5cd116f5d2cb945b096ef3 data/tardis_refined/tardis_refined/desktops/toyota.json -87d3c88c292d764642f3799405284d65dacd5e9e data/tardis_refined/tardis_refined/desktops/victorian.json -12a0c0450520bdf8619b12ee5404962ca43152e5 data/tardis_refined/tardis_refined/desktops/violet_eye.json diff --git a/common/src/main/resources/.cache/fb1d1450e45f24c16ff9548196e396cd1616c0aa b/common/src/main/resources/.cache/fb1d1450e45f24c16ff9548196e396cd1616c0aa deleted file mode 100644 index c819ac7e5..000000000 --- a/common/src/main/resources/.cache/fb1d1450e45f24c16ff9548196e396cd1616c0aa +++ /dev/null @@ -1,10 +0,0 @@ -// 1.20.2 2023-12-08T13:12:13.6643619 Console Patterns -2f482aa36f9bc5c30c7906230e20e11bb5cdb3c6 data/tardis_refined/tardis_refined/patterns/console/copper.json -80cef81ade3d59acf7c629be03ca07ceb29b4e45 data/tardis_refined/tardis_refined/patterns/console/coral.json -51ac36a16e84686df192a41a2c1dc966e266c836 data/tardis_refined/tardis_refined/patterns/console/crystal.json -48a1bed0f7c2bf7cd844873b4eb4e11e4166bd99 data/tardis_refined/tardis_refined/patterns/console/factory.json -64fc65e5823a648314b73165d693eab62a85208c data/tardis_refined/tardis_refined/patterns/console/initiative.json -0bd91ac43a05c679ec7386cccaa85956f785625a data/tardis_refined/tardis_refined/patterns/console/myst.json -a8045d394dd1b80fcaa677ebb72e05dc33b18bf5 data/tardis_refined/tardis_refined/patterns/console/nuka.json -0e55fb4cab79ccaa85601c19661b33ab5557b3e9 data/tardis_refined/tardis_refined/patterns/console/toyota.json -c694be5c89584cf128d98c962e0f739b7098fe5a data/tardis_refined/tardis_refined/patterns/console/victorian.json diff --git a/common/src/main/resources/assets/tardis_refined/lang/en_us.json b/common/src/main/resources/assets/tardis_refined/lang/en_us.json deleted file mode 100644 index 73c3a32de..000000000 --- a/common/src/main/resources/assets/tardis_refined/lang/en_us.json +++ /dev/null @@ -1,124 +0,0 @@ -{ - "block.tardis_refined.air_lock_generator": "Air Lock Generator", - "block.tardis_refined.ars_egg": "ARS Egg", - "block.tardis_refined.ars_leaves": "ARS Leaves", - "block.tardis_refined.ars_leaves_fence": "ARS Fence", - "block.tardis_refined.ars_leaves_slab": "ARS Slab", - "block.tardis_refined.bulk_head_door": "Bulk Head Door", - "block.tardis_refined.console_configuration": "Console Configurator", - "block.tardis_refined.flight_detector": "Flight Detector", - "block.tardis_refined.growth_stone": "Growth Stone", - "block.tardis_refined.hardened_growth_stone": "Hardened Growth Stone", - "block.tardis_refined.internal_door_block": "Internal Door", - "block.tardis_refined.landing_pad": "Landing Pad", - "block.tardis_refined.root_plant": "Root Plant", - "block.tardis_refined.root_shell": "Root Shell", - "block.tardis_refined.root_shell_door": "Root Door", - "block.tardis_refined.tardis_console": "Console", - "block.tardis_refined.tardis_door": "Tardis Door", - "block.tardis_refined.tardis_shell": "TARDIS", - "block.tardis_refined.terraformer": "Terraformer", - "command.tardis_refined.dim_not_a_tardis": "§c%s is not a TARDIS Dimension!", - "command.tardis_refined.export_desktop.fail": "§cFailed to export desktop %s!", - "command.tardis_refined.export_desktop.in_progress": "Generating datapack for desktop %s, this may take some time depending on the structure's size...", - "command.tardis_refined.export_desktop.resource_pack": "§9To define the Desktop's preview image, please create a Resource Pack. See some example Resource Packs at: %s", - "command.tardis_refined.export_desktop.success": "§aSuccessfully exported desktop %s to datapack %s! Use the %s command to see changes.", - "command.tardis_refined.no_internal_door": "§cNo Internal Door found in dimension %s! Consider using the default teleport command %s", - "config.tardis_refined.banned_dimensions": "Banned Dimensions", - "config.tardis_refined.console_idle_animations": "Play idle console animations", - "config.tardis_refined.control_names": "Render control names?", - "config.tardis_refined.immersive_portals": "Immersive Portals Compatibility?", - "control.tardis_refined.cord_x": "X", - "control.tardis_refined.cord_y": "Y", - "control.tardis_refined.cord_z": "Z", - "control.tardis_refined.dimension": "Dimension", - "control.tardis_refined.door_toggle": "Door Toggle", - "control.tardis_refined.fast_return": "Fast Return", - "control.tardis_refined.increment": "Increment", - "control.tardis_refined.monitor": "Computer Bank", - "control.tardis_refined.random": "Randomizer", - "control.tardis_refined.rotate": "Direction", - "control.tardis_refined.throttle": "Throttle", - "entity.tardis_refined.console_control": "Generic Control", - "gui.tardis_refined.buy_ability": "Purchase Upgrade?", - "gui.tardis_refined.upgrades": "Tardis Upgrades", - "item.tardis_refined.drill": "Growth Drill", - "item.tardis_refined.keychain": "Tardis Keyset", - "item.tardis_refined.pattern_manipulator": "Pattern Manipulator", - "item.tardis_refined.tardis_key": "Tardis Key", - "itemGroup.tardis_refined": "Tardis Refined", - "itemGroup.tardis_refined.tardis_refined": "Tardis Refined", - "message.tardis_refined.exterior_cooldown": "You must wait %s seconds", - "message.tardis_refined.key_bound": "Key Bound to %s", - "message.tardis_refined.key_cycled": "Main: %s", - "message.tardis_refined.selected": "Selected: %s", - "shell.tardis_refined.big_ben": "Big Ben", - "shell.tardis_refined.briefcase": "Briefcase", - "shell.tardis_refined.drifter": "Drifter", - "shell.tardis_refined.factory": "Factory", - "shell.tardis_refined.groening": "Groening", - "shell.tardis_refined.growth": "Growth", - "shell.tardis_refined.mystic": "Mystic", - "shell.tardis_refined.nuka": "Nuka", - "shell.tardis_refined.pagoda": "Pagoda", - "shell.tardis_refined.phone_booth": "Phone Booth", - "shell.tardis_refined.police_box": "Police Box", - "shell.tardis_refined.portaloo": "Portaloo", - "shell.tardis_refined.present": "Present", - "shell.tardis_refined.vending": "Vending Machine", - "sound.pattern_manipulator.subtitle": "Pattern Manipulator activates", - "sound.static.subtitle": "Screen display static", - "sound.tardis_crash_land.subtitle": "TARDIS crash lands", - "sound.tardis_land.subtitle": "TARDIS lands", - "sound.tardis_misc_sparkle.subtitle": "TARDIS arriving", - "sound.tardis_single_fly.subtitle": "TARDIS flies", - "sound.tardis_takeoff.subtitle": "TARDIS takes off", - "sound.time_blast.subtitle": "Time Vortex blast", - "tooltip.tardis_refined.tardis_list": "Key Set:", - "ui.tardis_refined.desktop_selection": "DESKTOP CONFIGURATION", - "ui.tardis_refined.monitor.cancel_desktop": "Would you like to cancel the upcoming reconfiguration?", - "ui.tardis_refined.monitor.desktop": "DESKTOP CONFIGURATION", - "ui.tardis_refined.monitor.desktop_cancel": "Cancel Desktop Reconfiguration", - "ui.tardis_refined.monitor.desktop_cancel.title": "OPERATION IN PROGRESS", - "ui.tardis_refined.monitor.desktop_cancel_description": "Systems disabled as a Desktop reconfiguration has been scheduled.", - "ui.tardis_refined.monitor.external_shell": "EXTERNAL SHELL CONFIGURATION", - "ui.tardis_refined.monitor.issues": "Issues:", - "ui.tardis_refined.monitor.list.selection": "Currently selected: &s", - "ui.tardis_refined.monitor.main.destination": "Destination", - "ui.tardis_refined.monitor.main.gps": "GPS", - "ui.tardis_refined.monitor.main_title": "COMPUTER BANK", - "ui.tardis_refined.monitor.no.waypoints": "No Waypoints Saved!", - "ui.tardis_refined.monitor.upgrades": "UPGRADES", - "ui.tardis_refined.monitor.upload": "Upload", - "ui.tardis_refined.monitor.upload.coords": "COORD NAVIGATION", - "ui.tardis_refined.monitor.upload.waypoints": "WAYPOINT NAVIGATION", - "ui.tardis_refined.monitor.waypoint_name": "Waypoint Name:", - "ui.tardis_refined.monitor.waypoints": "WAYPOINTS", - "ui.tardis_refined.shell_selection": "EXTERNAL SHELL CONFIGURATION", - "upgrade.tardis_refined.architecture_system": "Architecture", - "upgrade.tardis_refined.architecture_system.description": "Enables TARDIS Architecture Upgrades", - "upgrade.tardis_refined.chameleon_circuit_system": "Chameleon Circuit", - "upgrade.tardis_refined.chameleon_circuit_system.description": "Allows the TARDIS to change it's shape", - "upgrade.tardis_refined.coordinate_input": "Coordinate Input", - "upgrade.tardis_refined.coordinate_input.description": "Allows the Pilot to input coordinates with the monitor", - "upgrade.tardis_refined.defense_system": "Defense System", - "upgrade.tardis_refined.defense_system.description": "Enables Defense Protocols", - "upgrade.tardis_refined.explorer": "Explorer I", - "upgrade.tardis_refined.explorer.description": "1000k Increment", - "upgrade.tardis_refined.explorer_ii": "Explorer II", - "upgrade.tardis_refined.explorer_ii.description": "2500k Increment", - "upgrade.tardis_refined.explorer_iii": "Explorer III", - "upgrade.tardis_refined.explorer_iii.description": "5000k Increment", - "upgrade.tardis_refined.hostile_displacement": "Hostile Action Displacement", - "upgrade.tardis_refined.hostile_displacement.description": "Enables the displacement of the TARDIS when attacked", - "upgrade.tardis_refined.inside_architecture": "Desktop Reconfiguration", - "upgrade.tardis_refined.inside_architecture.description": "Allows the Pilot to change the appearance of the TARDIS Desktop", - "upgrade.tardis_refined.materialize_around": "Materialize Around", - "upgrade.tardis_refined.materialize_around.description": "Allows the TARDIS to have entities enter while materalizing", - "upgrade.tardis_refined.navigation_system": "Navigation System", - "upgrade.tardis_refined.navigation_system.description": "Allows upgrades to the TARDIS Navigation System", - "upgrade.tardis_refined.tardis_xp": "System Upgrades", - "upgrade.tardis_refined.tardis_xp.description": "Allows upgrades to the TARDIS", - "upgrade.tardis_refined.waypoints": "Waypoints", - "upgrade.tardis_refined.waypoints.description": "Allows the Pilot to create saved locations" -} \ No newline at end of file diff --git a/common/src/main/resources/assets/tardis_refined/models/block/flight_detector.json b/common/src/main/resources/assets/tardis_refined/models/block/flight_detector.json index 5dc57bad3..ca2808e72 100644 --- a/common/src/main/resources/assets/tardis_refined/models/block/flight_detector.json +++ b/common/src/main/resources/assets/tardis_refined/models/block/flight_detector.json @@ -6,6 +6,7 @@ "1": "tardis_refined:block/flight_detector", "particle": "tardis_refined:block/flight_detector" }, + "render_type" : "cutout", "elements": [ { "from": [1, 0, 1], diff --git a/common/src/main/resources/assets/tardis_refined/sounds/tardis/ars/ars_hum.ogg b/common/src/main/resources/assets/tardis_refined/sounds/tardis/ars/ars_hum.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a1349ecfa84d8b8e13fb63ff6301b1deb71f7ec0 GIT binary patch literal 252423 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

88qIGvld%Yp{ZO5 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

rQ`;_air=cRFweuA~4(; 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/tardis_refined/sounds/tardis/test_hum.ogg b/common/src/main/resources/assets/tardis_refined/sounds/tardis/test_hum.ogg new file mode 100644 index 0000000000000000000000000000000000000000..22b2abf6bd75745f781819aca4d110f88736de9e GIT binary patch literal 61896 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�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 D6Ourp literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/tardis_refined/textures/blockentity/console/nuka/nuka emission.png b/common/src/main/resources/assets/tardis_refined/textures/blockentity/console/nuka/nuka emission.png index af69a97e00c453732e35a4d637067359064ad524..405b78d73ec45a81c2d4b6ab77b444e99ced3144 100644 GIT binary patch literal 2645 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 Ww10o3`}HT>hi`oqq#%-LG2! literal 728 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 C8Kmj} literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/tardis_refined/textures/blockentity/life/ars_egg.png b/common/src/main/resources/assets/tardis_refined/textures/blockentity/life/ars_egg.png index 7caedf6605323b6222cd75623011fc0d86e576aa..251452e6097e3aa2246412634009b562d4431c3f 100644 GIT binary patch delta 655 zcmV;A0&xAh1e^ts8Gi-<0063Kaozv`0%J);K~#90?bkhv6G0dU@PCfkBiS*l;UvhR zg^i!!TDc|%N<_gTSfuqU*;v?Eh=PS6Cz$3?uuu>zZEP&=;KD8|yPHdjwYbc(liS(N zCi^lA&#y|JXV}ck&die*GCY3zJnVFMVlD_g06<#)!~2)5tbgCA6U%BK26v-(Q;IwG zxis*sysk1Q0Jt0+=N8)S4gg>_3jkaWa-F=+cJef4#x5+Yw{c!axhBBuaQMr8ze!$4 zYi$9+b?vS4I?9}YAhx2O=SH6$`&`Pclh;w^1o-~H#CQ;R%G^46U9iD}XQ63!uUuJ0 z4Iu0JlTUAIt$!1k=v+JH&MrG&Cnh>4?(igK=j*fsAnF|F7C5&Mk5!ScQ&b0VZsA(@ zI{N+nsFQJJ=j$RBLfaNPO)Qk8YjE2_r-_9UE3(jOVxh#!Ds-AsC@G7O`$rE$tG5Sp zd0_dT3)h|k0FvTgJ|DLLU^p6wKTalz&pbFBK$R2D&VNoTEsT_c9 zyor<(U~)?uq=*4Xj1NcSFy2P>%!9*0^!fDfpDS(d0pYFNck%Aki%Q;vTz`kte0=*l z+5)OJzUMY)3;3}UJ1v$LZvy26xb`&humh40!KQA3*3qLU;jY=01~gw@PesIM7jxiddfSgb+dqA%qY@ p2qAD%PDHLkV1j#1IN|^R delta 556 zcmbQkx{GCkWIZzj1H;_yjcNS%G}r0G|-o zB|A@^eEn|P>fQAX6XWBGc3i%bpWl4!;p4Ql>X+YsOrEi5@{~n={qqa+x`8^byt&j0 zr1(pM{DS|Z0ER1fW-J6saTa*gM;0?M@ErzW#^d=bQh=_g_H=O!iEw{ArFUJk0#7UV zDXW`b{>p!!mvs5TQBIf1yJ!DseJJ@gq;A!glnKh88eCGM4m&6Lyb!Rd^4%f8v{Wo+ zovDq@fkY;*Gd?YP0U*w?jk6q{z4<%qz?QbxoHieK4q+e8*DG k^w6(BUEp7BQ|eDf_SPM9t$f0xf$_uO>FVdQ&MBb@00XB9V*mgE diff --git a/common/src/main/resources/assets/tardis_refined/textures/blockentity/life/ars_egg_emissive.png b/common/src/main/resources/assets/tardis_refined/textures/blockentity/life/ars_egg_emissive.png index 6194dd3685702f292774de52d390a331a3303169..eb74ca5a2e1634ecd91dc0b96dcd47feaca16218 100644 GIT binary patch delta 389 zcmaFFJe7HZWIY=L1H-D!!g~x1j4_@rjv*Cu-d@|7cgR45^+LC(eY29ycl}-8{x4tm zw<|1EU72fJ;0uNsELUc9Eh}4Et)_k5OGf=uwQ-8g{ylHM1|9B@i}|jov`&d3L8rc| zX2#QbfkBgJFPJWMO{ztJ?fP2Ng1sLj;x@lwleoyC=-`qd&c;yxz)ViD<;&IL%CnoK z3zEdy*1o!Mj+Nm<;m@PSm20o~t8FhnSoQmF_tQ^OcmJ^O=(X<)$*-x7Tm6RZhrngU z>;KofvYeBRGnsx}XE$S^=);E9%x5j)HF3eE^EH!TE89c$-scr5yS(sPC%x$Vwv_9sqfKGKpqebGbSpw!O= dJJ|n{yZby(s?jdDWMF_Zc)I$ztaD0e0s!BSw738O delta 467 zcmbQr{D^siWIZzj1H;_yjcNS%G}f0G|-o zB|A@^eEn|P>fJjo-#Pa1@yl;NfHJpv{HuTzdr6RA@P9C1kn(1B0}62#ctjR6Fz_7) zVaDV6D^h@#ID5J{hD5l(ozl(MtiV(6dfNHl|Hfy z6X-7FHkJ$|T z=jLiuycUuxDsH-~nWMkxt`(4TiRC-@%gI4@cN87eVt#2J>HRsa=JHl=`_?(d^@a;= zozj4U5zkvRk~**dxwUk@Q^b;_h%J)(K?m#FlWuGRG8}zwB^bvoaoU*XelfOsBA2Cz zEVq}weE7L=Z@tPows^1siDwEP>iiYa`>}NXm*8D(p>>Lk_w+w^ZT+uyfMdhfUAwP6 zSJ;#O@xrgBM{}bYIgd=a$`V^z?!&wM&IWEEgLip=ecM*YyAu+sx$fU@^?f&kX!Tz+h(ZboFyt=akR{0Fy+= AjsO4v diff --git a/common/src/main/resources/assets/tardis_refined/textures/blockentity/shell/castle/castle.png b/common/src/main/resources/assets/tardis_refined/textures/blockentity/shell/castle/castle.png new file mode 100644 index 0000000000000000000000000000000000000000..6769350f2bc9c48954ef07e689cb9c919917078b GIT binary patch literal 4564 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 U%y&LP=wCNrc*7V~qw5g$KWT7)xBvhE literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/tardis_refined/textures/blockentity/shell/factory/factory.png b/common/src/main/resources/assets/tardis_refined/textures/blockentity/shell/factory/factory.png index fc379497beb1ade1ae842bcc8dae8bd86549ee2f..4ff415bd95e091125cd5979e7c9004e0a8d786ff 100644 GIT binary patch delta 3572 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 My#hQNJffKY1F;Lc#{d8T literal 14445 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 diff --git a/common/src/main/resources/assets/tardis_refined/textures/blockentity/shell/hieroglyph/hieroglyph.png b/common/src/main/resources/assets/tardis_refined/textures/blockentity/shell/hieroglyph/hieroglyph.png new file mode 100644 index 0000000000000000000000000000000000000000..f98c8fd2dfb00059cbea32f491cd4bc8cad06c05 GIT binary patch literal 5366 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/tardis_refined/textures/blockentity/shell/lift/lift.png b/common/src/main/resources/assets/tardis_refined/textures/blockentity/shell/lift/lift.png new file mode 100644 index 0000000000000000000000000000000000000000..855b6c5e129e96c120c7ad4b05b34ffddf055a50 GIT binary patch literal 5343 zcmdT|_dA>4`+s7jMO$sr)+im(WpA~r%iep_qNqJmG(_;Owu%y?sKh9Wn6*mGdfP

D_jTX*dA*+ZMh2Q^+4vcWD}|{VR-6w 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 Ee~3Q~B>(^b literal 1862 zcma)7c{JOJ7XBgj#?mrsPdcj17^RzZLaIUyMQC+MtU;@tAeN>?TM3C&O7JRCEwxqc zQ^vGHZ7GUYC7ID$6RoOsVrvk@w4-nSe&@VD?!D)p?|kRnbI<+0OZW6}2CL|)0001X z`N{FzZY6&WC57GGg~0X$fFjt%@w9hB!Qun=G%aVX-Y9ZPJ33-}T?KIS7+BMw zD8^gB z-0=Bk#t(KQm{i5$ZhmVS&^9DTKI>DrUI4Y%R$uaWD=U0ibYfF6I(qe8>Rx_uC$1jN)@rMN`OSd=bpc?%u?&P4;J z%XGZzNh0FbTo7URZe=q9ejPsgi_4EqL^Azmi=cCc(Xp>ekcWGYFE!7I8h86R=4LCf zsu%ZlKf{)Y`wY81hso0VMsq3RzgKgbIxFWX_~&M|CGwfRH}!kI70MKxu-a^l)Xytq_rhi zXFEYU?wUG1Ltc1zOdT?%oy@jSO@P)i6h?$2-R%KQn_K!fx5y12ET}9}3fH}vSXC<1 zNQwL07g#|20^=Hw)`&uqCX#YB$xUD68h`k5`(1~W93lH^K+fXz`229{R_@;39^RyC zy4s)bdj|3W@*%Oi4gNHESh+QN%M!6II_uwb!)7%dM3j0#OI@Eu?nBMw!-yZWa&vw7 z4-&qAikqdk+j5$-at7qDj+f_8%Iz2;&>&&sJ&ftfNBa5A?fg0bz$YafWZ`BQ-k$*b zCib$9VcGN0RXubU+^k;?HdS@>sXl8`oY^64R5lY7oZH|>X)u*I@FHV2Jf54A+EwXv z#WcFoTxk7(QFOpnoh(ZnyKv$L_Kgj7 z4Wi7)wKio{t^RnK`)4c~=vA z43BPd!Pm3sS^W4R(PD66#NBo=y7OSMzc%I}ZN0}D;E?u5h=%NOA`car2>(a>2n8k= zjYGwm0N_;@BCI#G@ghad6~}6a{avY7eO+E)2I=EqX}rNg#3dLAsMXKK&B1!rT&T(D zcUx*6@XB>iRU|mQzqlnXz1`+8?uZWX6mE%clAW_{K$!c=Vk171zZjfy@x{J$2hZ4hGwrDkx%|?4dYs$H)>LZ zsLjfxb;&}w;)7UTyA8^;vcOz1gn#&~w~VR~0Li0#kwEF*IR?N|h jVbKj{pe30!@u?U0pRMI)d>GvQkARDlhvQ?1;FNy={FZ!8 diff --git a/common/src/main/resources/assets/tardis_refined/textures/blockentity/shell/police_box/police_box_emissive.png b/common/src/main/resources/assets/tardis_refined/textures/blockentity/shell/police_box/police_box_emissive.png index 36c85aed188c0c77cf8fb59ff64604bb80863c45..8e91eab5a9e938c31eb0e86becf3b9e903877530 100644 GIT binary patch literal 624 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJDHb59q?kcv5P@7R0GI7+ZT zm|x)1wB+>7AL_kg;TlUe1n4+*eF>XoCa-?~$fv zhxa*_gT93`Z$Dr8tTk3*+SB7_-hEI5S^xzOjbdrGjX||9zN#HxEPe6V|x;^{nr$x6iLic&RY_J9zQ+UX_#2A0`|#ZmeQ)@V(ppFaCId5Mw}a{RdNN z{b{QWr@ZLr58rNI?<2P>@#V=y{jmn>S?d}6&Ye?x9`EKkY5MHdmN#w+@&wGd#du-w zi}dpB#Zt^qH?poc_^Q3~;x7{!zpCcl_ao+h{TfrZ`_%i=Nh^Q-`+7S&ySMu1+PWFy z!O;yDE9P7+`yE&+ytn@Qw!($SYqENeJ&vi}?>EUNx^mX>Yfw)es9$V#VbM`h6aP}7 zfNt%Kc`Fwmh>CIC9KyH&Bq+)d6$1+D;R;MH=sO&r$dVM%xNb!1@J z*w6hZkrl}25AX?b{rczopr0PY=Jo&W#< diff --git a/common/src/main/resources/assets/tardis_refined/textures/gui/desktops/shalka.png b/common/src/main/resources/assets/tardis_refined/textures/gui/desktops/shalka.png new file mode 100644 index 0000000000000000000000000000000000000000..ee812abf7401064fc0772d990f370995197df318 GIT binary patch literal 167006 zcmaI7WpEuavn^_hW5>+Q4BO1i%*@Qp9J6C)=9rn8otVAN%)HIa?3eG{d+vQd-g#3s zHIk;+>Xy{1nr>+#l@ufqe&GH90|P^lmJ(9|0|QU^&kY0duLWtdAp73~$4y+zP1VuD z&C}S$98B2E(Zrls+TPgGT*chj%-ea)oDU2PlG0jD%S}sOj>pu|p27G(G7Mh!PXEwg zV0?mJPR6FT=5E9$=9bnD{G?Z1eWb+JX8fd@?D9k)>1w$=BhplYNkH6rrc(v zf&#>RUOfK@?9JVbiM{OY99((4_(}hZm*-#kKh2D!#Q!DYX3J0dzl_q7S0Wa5bTKF9 zW?%-GGBGg|b8<5nbD6Pmva_;r(-X5Wv9K~Su`;r-0+?BOnAmyP*opu5Mfy*niBTi;HuMu`r1;i?c{buri6Tad7@OR?N}V-QL{6?Z2^R{};>g zKVtvm4)#v}G>e(LSbLb8Nw_%L6aQDAd943uTUh@`zWY6 zX8OOI{<+V8ivP!T|5g5v^P4;T^LUqkuKiu(CJhWCVoF*}Sj}rKrpG#-Tsn!Ow9w-4 z5+yOy{hoVW^l^f4&xe*vo-YAB>^o>&We9N^5Kz+vM%h?ZBX4#Qk!g z50~8hiwjM@)+hJGjho(-ZQSh*KH0}*e7@n7u6Mk@(@V#@b|3u=I>@(GO`u&b@}0ZB zTjEpAfF?iq4dI-V@YN8=rwo6V)d1Fh;KJFU$3<{-yZS!#Hh)5VM#ib)uq4>|?yJi< zV*YwKa(C7H!Uu#HHB7-udrCFrz6p&6;za8Ss5vmbzgrqQA>QE&{`CL6*|+@Lvv4+h zHM{*F2%@}!)YlJidknrw@5Ug)uJ3PDatQ(99!NXC^yqy9{;U@W;Yuw5UR}kN?dQ0* z3l7(9jq%1y@{#`_5;V*+XuS=8>(X9g4IKfzpG-8ugVHSZbRNt8kn~jFvS+3u`r!>$QIn(TQl_W=);7&IX|bHnOOJFZtdjs0xb+qP z^{iu{mA7+u_UfX2W@zbG$^X0Y`JzMlNp9_~!qF^X?!n~T{`2{Pup(f}>}z}Jq3`SJ z6Xf{0hqdkZ_OW?#4GQ-Rc)c{0p;1td_qd*>0p4BiUVdIa3x3pnQM&p5dJwu_KC}=v zz%1(R;gjm=?i6)C?g*fB*YwoF)J`C0q~?{MLNd^bv-Hl!2j@oYcrV~95J zd-i+z$#7-i-3h9t)FooP5wPO0|8 zCXgvBSa|QOYZxefj#uYxaS4d|BchR(iC;=OQ1?5eX&NrQcM0-;fi%nZjcMN6H=yL1 zs)Ilx5ECQl&c`PDEGxam0ho8Rb#UP>&%>$$gywrY618ttw;tnc)AJyeDVel&8bkfh zkzM!AOT@-+lpC6;w(5C-D>Jvox5H9*jZXfx+a;|=JaR}#Pd>H1pQj&={vXkIFQkr) z@y2=nj}KVut@=y%lSF-Acbu%1o?V&_aI*xzh5X;syC`}MC`%Qm zZG&gK?M|FHf!t$Si+iD%tI`e_QCNRaskRKYxXF62&DjxIKdxW2u>{ABOWkGJ7~ZY) ze1JxZ4Fc-xL5HJb2B9A~^$qpf(wn+n+MFb>7B6T0L|fbG1P@0(waKX_%F zl1-LAP%CuoAFFn!B0Ap8y6`AH5qxULh!n89tM!TBNr3`1R3%!OvXS8{dSrhfLg6(n z4~0dc{NlT`kbJDtwvD2riqIg5CCdD~nAMa0#wgQZz?ENgyrOfWNhA|OohYf!3sAXI z`e0yMu1{?CkZt7A_85QBBvK@2o5jkEBUNN@G{k`7QCCS^=md7%_Z{<>`gj0CIw|4q zeF;8%!!>CuHtQ_Ch1}pBbJiwP{!){$$CIbMK_|tVH^)Ulo7M%Dh{Zngv=F)TG~>+! z>YsN5rm&5@?Skc#Gjt=$DbLOV_#*ykM}gnC>F>Ut1>fZx`p(Qvp+e@_QtMgj_VU}< zKX$XP#)0E-mA(Z#yY}nn2VIc>Qllo}Me8SF4Sv+0?@}J*;Yd za+crbmG^$rKWV{N`;SihzbJW(#^(U{3s^{>CF2>e@yqv79Th(G^ z(A&7B?7O;xUIWXX>kxtD3Oz%?65GkX~dANOR^ZMV=|H{Y!(YVhDZuA zM>BRu+44nvzCpmvWxKi0mlLWZ<)?7%&O;-HAWr0C5MA5IMp+@QYlR_DO8vfuDOjwl z9uB%(PiMF?^-j-aU=Ih?Pd9R9T=VPmt?c&g?QP&~o;1=iU~hwT*;1>welW`L=glXP z|Cjx$#1ObZYEiyRj7OEYM6$)kv3~6$REsl$%J)Q zEan)5hly28pKxFGjcWT`-~QM=tLvr4GE@jq!8Mv*#z)h*8ox>;*S#kE)yXh)o69>ahLtjaUWjShgw#bw6Vxc$>_h8&{F8Y?0_%c1x+Vs z!*igMS@}a1QOc@t?4W{VWg9hWnMur5sx&noACkVV_wNMXPQj%MYK>RhGP~+)EIg7h zhM%u@5v>%ujJzBkz1qKNUQTD!CiA`9KVEON4rRam=D)=h)KOzxSBuk5`d+;RjP0d- zg1{atoP4Ye5z@*MY$RgKJBUmWmq;Ral`y${V%rPhBaCpucommy8Q-H4Q`}sqD2fn0 zCG;AU+{YHOJ^ZJ*P5CD2V)23UG zkCh|JN30|7&U+Cs-J67g9Lx_Q7}b43-xu3Wt~jL2!_z=IvDO#Af})Du!)BTDBk!VF z*Qesf%}R;>_JdH7=?PEk(-5_RUSb5XJpaMv;da1`qyX%c$%dlC^pBg_atanXc=OQS zimy@R^#}~scPFYdON$oy`C?3L$2n8_Ac^LIQ2MYB2yLMvN5P&n(DP|Qd!rxNl>Eht z3vYPDr%}h`Zzw+O1|nfr)iLaEFH2MiNQNvecjl^go0#c=+ltPj|GrmZlnggh`EJMq zXbOxY0pt1t{B`*XM|IoV6nA%Cznx}oH#X)|ki7i8_0u}eZ@9JX=ul^MY9;IflUx+lIR=X?9xz|= z$+J9uOfdnT;^BCstL2feeSp}C>A-#6Ilufe2u=}^KFf`5uDjA-+|AEaq_E(G`<-~% zW|E;BHAJ03e_#GP!D8?4VaY7lh+Nur8hhImeRd4XlE)@(9%fM$-UXgadU@3Bl9F#9 z9ce{YQMs%Oj`KNlSKO9{D7u}uK>@FR9lX7M?YcT!3SOGU0s~kB@e|ECg-@R0w<|Kl zue-a&fAktQrWxtPze5J<*@0?r0|U#&slNvDrkYl0BZV*H?ttDH^n^^_El3nj@4Gj* zLj%(LaS`jZQ*TJyJ#vYixtbjJkM}MT?5YCX)GmAVZIm^@#uQ86b^+=a?qKzirI5U*5gRkn9#S))(g(e*Eu3vc2y){7>qwKCVbVO^F;kgT;vM4(u~|$!t1Qje&JM-0 z&1@*6^!>zo{`qYnh}348t8cQlE|QUMoupq;$s>sqgOgt#Kvwn1;^B<-H&_qQ!k<+S z$3zpe*#8l9FI&gH2Tj}&)Gl+|^{kDgG+s7;vb)*!LqApUeKO#!PVncu)_%+Fb-?@0 z$oAK~AW0huuF}k(?ajaQ&=WyhPBH9%ZGc9Jm4w@YW}$5LPYF@@&3>k=-)V#FQi7ey zCA+93sFkbX#(y-0fJ`bEoM{N_aFik|WH_pYV+r~a*dOR_x`j?OkW=~U@x$uvQIP$w zGe%WxA_D`{&q5M!15Qzcp1TD5-Zcfw`nc%9d`OYIv{<>qg2*e!P`~>61pPifkKO%O zk8nPf>=5vg6>M*sP!7VPP3lyOH!Vp0EWFiM>+p!%VyIF!zuEN{xM4}p!sgZE-^)55 zIk`BO%dOu{+pN;{$HJ)Z&xF6t=hHkYOI)qHd2)djWk6~3v_sbNBKtcPcjl=?rmDwZ zZj4t=rK_1#!BU5qpi{tU^!31oQZ>vrNieATk&>iL5R2BQ-^_C-I^<@d&0{DmYX0@* z>R8;g)}d^IBFss#Bvy+=MG?q9;}4a>IBHN_+BCfU&JFUA4u8vJq!^`L@|0=MZG;8d z3*<-l?d{VKMh-3x<7lXP9NW3Gb!?-`Ob;ohD{lS;cKET$W{QZ`l=lZ$?`xcK!`P0B zh+eYbo+^vmz)S_+XhsZ(AhH`2!P+7<`!}1u2fP@5m^WwwZ;3Cjc&LoOoW8t9VmZ<4DwQ#gWo*K9RN|%92meUd zL+mFCrJ=@a1sBGSWF?p2H2M9!F_r%P-NrkoR{dpHBZ)eefnp&;xo`_2gP{B=@-Alq zO&la(Erd-mkUr?1NB3e`$n97aN`ji`91FkrL#y$38A@rw@_|ucar@WvQCVY$|Hs3o z`J|wKFLsiM!82rQ(hll&zC|c3u9n%0!-f*3pL`mx){O$d0$A&ICF$vG9?7^a0p39( zrIyB_6fhBthiu2p7g$nEtA8wK&?u(gd9gMQK5qwB61Q*x)G%u8>A#3D49fFU=bRZT zAoS+!!x~!B0~1a2&2egHON{;8g^_K#)FfXUa>%}zjcFG%WA;JD-?JU-z2)&%S3^-F zbmr74z2(rgV&s}KQb-}HO>c?r8OWndAMVoQ_Oin7fu0(X?(NYVb*!YCfvr1gHW8JHId8zBqc5f)s5!kC0(*LH=Al33SZ5bwqcmsd z(@a-|>~3|>Qf98|-`yPeXvV)+p-Zx=FcFcVUX9br>6+i&-HnqBOy;X`ms+$1`}~qH z##dhS|Bf0Px5O;01t;9Xc!n7iI3Z#=50L|kN3$W~wc0io_+8N`NIG|u61FshF*#^o zTU8w7AWVKDF{s4f3?j&i4spw=s=R~4 zdrZQ}OB^!T*B9Hi;Cg09iv4&86QSS5T3XH8@Oe7?Uk2hWxnx{)vVE;uM}Fl9iXeK- zi+RH_mq9FCn|xE~nQu@V-G;;)1*Q%hc4XfzfRiY#qAvkE+ch^#ssi&{*fvF)9Roh4 zx%^a&k40LJX?ZlW+ym2! zoHcOKT^{bViibd{Kv#>DRE+8fUW>92eg{ge=V~=@D9ZKGcb#KDMh3t~nNdbTFTy>2 z!xT7Zt^P@+U5)%rlnzn7{QIFePFNolsXCdPl~XZx>Q?#X>@PWus}LAHJ%e$W5AQ%D zwvRz;Y7SW(EFVbr_^Kgtv25H^=c0uIzM$x+SXKt1;o(o)q<-w2G2$2Nm~kn(Wi(D= z19M@D4VeyTVHlGA&JxGofY-@sBB)HP=p1E_v!KAeCk2vUm=^nF0)98UntiYAF1xoE zUPkzzcL6V)&RJ)yg+coQT%ry~zxOB4t+d%NGeyaUQm8s7=Eb=gVW?O)Fq3TAA3abn zuhLBFc@Eo>d}uA{$gjRD$$6?gp=~t84SCtY8aFS8YM%{xvtF9y<@&M1wP-W!vxoPt zxeRf!Zwa^F`o-W%InirxlQ;N>rp z2CX7)|GN=Kez5cq-OC%n&$53p#`@K`GS-M_bIp2uKH)T01`_U_Y^Qkq{xDr~b@`T+ z6`ox_v`0Q{S$XL9^{>v{l)VlIZ4_uP)mLe|3cV>C>n_o{!n6Q?I*k)l5{5?2t;f=lxfS!;&W=le&^)wo$oY2fA zjmo5DuJ=2&@phYBXvPtr=lki{K$9IH%se8QVw!I_&6w`TG$R63fSTS$w1LL7s6nqE zqgdz3M{|jAF@cH2UR63+iNjp%!7Puj#}!z3hg)7sCXs^ewj5jj!Hf`kG`>tn_!#iA z{TY8-7w}xR%{c$=qmA(+i~J=k^sbw-T@BXW|8X(gWK>|xe;wok`4|wgF%qjUswvhf z(8}T?!|?V4DJ(U(YL;)!4UDSj3L>L|g5e;6G(HR$Qz^$O@1k1L333U2w>0Tt^>?L9 z;>L`Z?pjT{i|lZFsR?=x-W*C@g}O0@?_opaG@`Hs0J~TfKxu_elE${EIsLYHgIdcD zdpi?rLZA-=#X|4Xahn6y0c`d6OiI4<+X{B2p9#%yZ`s-;$~Vj(`p}g}rjIiVvLy%L z%20kNZu5UE;v>15ara>T_!Uz=u$@`;wx)rssrbz?iY_OR$fXbiW6Ka29Zav9h&p9!2nnoE)OLUot!7^0PyOu zSeEoLDY$gjDC=9O%f>vqBPIvGe@d`X#|V3qh3!T@w9Ua4ZjW9A%>i1JdFWf-CDO|s z4iX%O;>k-RGz$On8ch<%f-H}bn6ltVes{!zGDiQ!fQg4>^h=hVhAu;dr+fkb{Lgc| zrtL@{PccrPPi%zB_x#Vh?ff{|7+3FUQh>=G{WvQiofEFjQvyf7JR+YcAB{&H8m6z2 z?mFddtHp^9!LKN#F`#%>`oc8^gM=|aXp_5TiJ5$#!d#iJbHCd88&MRbaMdJ>?@iZ+ z9ry2Sw|40fc-#Q6WUOq8n;UqJknD~>+(|_lolp2DluNe zp&=i>fPf)Xa@ydG0Hza|SE0&V!ZZ!|=yt%{i{a-XaDMaV>g&^5oz#EXU%7QQ-1F&G zsPFk&>GC)};5h{MA;~G7|32We>+AaDE}6KfAqho7!wf6b^Z1we4Z-WyuE%btmZ?w#~wCD+m~}C#x>`>Qj*LY4<6;ym|tCn6~Va0BX3DyDG-*55WMh z?rQ(CL{fy2tNPyqa&&Ol5eL#!SCGRh?^1}^M`A@kz)A|=t;3Eq- zr_SG4b!6k&f;P7aWbNFAx0LkG_ZXDYI-%HE`^|S`yzT0*?2()$jW5Qtai3i6_d8so zT1h%2X#Ob1J_DXdfBV2q&5@E>G~PAkm4 zbpF!BZ+RTSldAe)pU3d@25U90@j8+<26LGXSA!R@{mkuPIY*!@bHW_KVV&cQ^+}QV z4PZB50uNaB`u^OG`yejbb)Y6yV)uHxSuuzL8j4OK2z4}s*SKjJf=mItfx7mQ@(qDo z^uQXP?_eD|qm?H|XIXt8yEkopuL3?B**OlOp zZ4=QNtUiSi$ZM(6EJ&jgvVXumyi7XXl`DDqkUlli{ik5bstt_c@I5}LG4fZieMZ7yP92|>$p>(Rb4XCgU0g%%C$4zQ%1 z2&GC0+hIvsbN`4aF5va%U-AY}>U42R3+Y>HqGkGFN3P5~+bf;_Hib3hCP5M&<)3)R z&bf=12ViDV(@YqW?;r05i=rd3mBwzf`|w;iVPjMIS>8NYfV`QYda8>eS+*vAFY}w` zX!Jy`#^{@$ZknpAP{?()bO)-TCm+4t{7HR;l901}G_Gg{SO?=tT*5>c{Q*sdmBfjh zZ}wYg+%ayr6#`-$VN;8WrW~*;obR}(UdYJ_{L-ZHbk547zufk$b^^~95_wQkXNd5M2W2E^v-(6@r zPKt(0fup|{#trHj9ece)UTMG=(I;j`=f>1GyHXS4w2<;NyC!uyjO8m6gi0kqtU2Dc zT#%zATZjhOozmW{gou#;59aWFV}s@5n2ZPk*eimzwdluh>t*Kto_+6o!1;WCze$l1 z^Qy#D_MQk$AiLGtn?q%DUiP5Sbe^aOWV1d?e6y^##?}$(%|cC*h$Do#Xvz^q6+Hwy zXf`_>k{ULyimPUT#D@aBU_R#57qBB{8&6YP+1^lgBySt>8wC_TPtOJRJ9Fk9L&r<# z=dRf~Q@6jRRTEyG_(}_nJ0e9PDb(07W5L zdNPnWtyqSO;2`yHPW0#$)WT{zW7zSO2Wc=|Aye$R(Par__ZN2V;_;#~JRJ>d9tOt@ z8?rG94X4IzN>WA&yjfykSacixp~QK%m=M5EU9hh2j3_5-vPlck*Jc3Myr<3m;IE zZOP_UGbc{V0MWOlf9Dua=yJv4R&FPabTxNUH|IP>{R%SLx^8A-@zq+KR60#9{85Nx zy@bY?*HVj$a)_1xart@wa#E5zkNCYDZ? z@jBc?Lj3fYY146RdI!6W?!2OtKc?mj0k4d%1h_0%)N@tcWecHkG)w3txeXhQ^&7=0 zud1yL&|s3GjlxdKlr_+n@+`!p6{cpecM;kXAP3wViF1YRE%pie)t!XxK=&_#SDPtN zp)8>&*ohL;T9d)oq^I}j60;=zM%D0I-5=$Ql+qL=kETjF z#A#Gr(I%T*trJ*lV!Be`SUS|TrlCyuyzuSt_05e6YKfrVQ{m@M-Ph^>ewi7mk2+*y z12Oqg7J|~olum;B>nPq*gaay;NOJKpBzDPUsIAOTU-?M3xw9cwqebHoo^Rn#o_EVc zq4P|Nl+)yr)L~z5`GiFtfq6i<77+&M+U}>1kM}dicpVRw)_9l>s7~Igq++hrV#=Ul z5kbST~4kQhK&vX1P91Hnu9$6QCY0 zGb$7pirb+#?5JPVb(A6OHFSnP)W*5^6G~yQ!>ts|4<@hdSDAYjPV@C$mfS+R!IxGG zYdJeF*)(x$(hNwfiS-Tr4w$Oqq%;fgyf*Tu^R&wTU(~-2ZOi^;3Rh+6JTSA7nT6v< zpJf+dS)>lw6e&ty)&==Lmj!(zM5||C!|28mW+4wc%Nm3im@u?C47fwJVP3U$#a5Bt z4Kn3iZ*Q|02@#K)n#aCZ3^B=6G-g%mMG-J=Qw7Pv){)aCqGA+dfwXI>Z6~6;IZM>! zUuLM$b-E+~$xkz*HJA9OZ$-Y~vLrP{&<7@Dg-GfQFWsaI5FJnT6IhXAB??c^N&b%o zIpD_AGGD}DW$6HFhyJ`1XA7?l_h;lgUBb%aBRR59UQ) z4JiiuLtlbgaSEfG^;*5v95V}^jy zBUu$+XQB1lTT7sXw}4@e^Jus)_`%pZNAcw6#~&zVhM_mq6)@{^&d90 zr>sgcbh$KaKl>;=@p38^q$?@Cb}BbXT8`=~rb54gskG3LtRUqxQdrOn^5h=HE2du& zv2Tgxblr$A{L0{|e=oDyVQ8IyeR5!?rGRC0zRo(mD6+;09+k38pBLL{x1IH%t{w4M zU#m7i4ZHXkE>LEROL;63I(DpXzn@>O$1|R1SfXmww3|(44XFjuW-h_MtLiiwI#oB7 zEB*pfC>n0{_;URy6738goRg=x;+c9xKB`3|lw6%vxIWT(YPE<+y{T_{lZZHds79v- z8iz^IdBgp}JhTWUhP9T8tY?vPl`Oi_mTI;Hn-lWtqqXggG+SJP2McIH8I7xVsrl33 ztWS6%QM$oJDmoEETTuV}&-i46A9F&pq_hI6yOL%SrS!OJtNivP=7+X_MrSeH{%!$q zKubr~^8GE-!xKI1em0EwU3gf0mXRBnj7_qU{J9B|{r0p`40xIbf--Dqs zpV3mPS1HUf#Mo}+N@%`OJ!8NbDy zv6217PQ~ajlv9^CNnmh{_)|=p_%BlziD4THjjRr-IjtitGJggw&w8Oc>p%-FDZE7q zew*h1?ni0ujAeP(EfZd3aX1n_0AV5qT@@{h+$on&Tsn+36+X(yT{&Fw+7QXN>53Zc zTS$x`A-zZsgA4gFX4#o!WR)XA=$D%9=9sx-P?caO0%?o|vCBU}A?iotpn9p(0e`-z zW_98mZ3)eD)<0ZsjL7^{Xy0P$qexQ6-%1O)^V43eCPu8oR)Gy1wfC{t9!?JQhq_2c zc4)lq#1|GM1uV#!2`l6Ip?y;77vfI<4OSt16;Ylm1`1qq+0Y@sGt(slEYtJAtJFD^Waza z^Al9KWFC#bl<20L?sL6hQD2M}2*JKVWiv5qPl{SI7VM+=eOx*PBw&Ue#X=gk@F^_{ zu&$PIkwpni&3BpeOa=mCtW1JbU|kiX7mHmsF=W`l=II*3>sZAD=4=F&2O=x;!N5u~ zl0ejP9Z>y1*qV2kQZbEVe*rZ9!|Mr`o1<8wHYdb;?BmbPo99a>A5XnFsY^sv*ep9i zYt~8)y4{oW!L-=0Mhv>l!)9tbm1^Q(oGGkk#ZKXL(*3ljCTQyOhZJl2LEkP_KpiK* z$1ozIE8nOXn71GWNTPG8d?gN*(5rGeAW)qiUNMH(VY&QHvq8${9%dMTV>53yw}>WS zoToFU8QnmsZ3JoVK!a$WUtolZj++cIu#ZN?_VnWiagBrQOENYtMcgH};6k1Ai1VPj zNA(Yo{qQhg9N#C4OgVqoYV8~l{d@|je;Q4fy|BKgUK-r~dhT?{Ivl*pn_4nBg#WSZ zgN7*MeZxJ!OkN@ZdWK;Vl(*ZZ=6nwi-}4i-JUD=hY^47%pX4bho1V>43JzXOYhEc9 z+b~BJ*LOoakQr8X0gtU5wr52~sw`-OSkDIiBwW_&`reX>BQxJ1!@TU#>hCm$y~J*N z0%127bq(U{Qxc%ci&u62hH0>*sALqq`C5J~Y!k>r* z&3pY9HLM?;5*7>_PRZF0I3h3fn; zik&2}l2c8uxumB0{>;J^JErw-Eq6F|0QT%cm}cAag@VaJ{&j-rdbw*WHHS{@5FTFf z8Qa3pdt4>)%o#@9;H=AN>3(rVM5$>EzHl@CA3&yzo@(4ur?|3gmUw}<`5AS%jdOYF zZ}lG}*jM#_3-q0A{#H;#07*6f@?R{kD9hDMN6>VCKPk=CPNH{BCx4IrJgrY&;r)H9 z8Sw7sp_gL=t;3Ez6Ou$6N{ab$lhn&2VV@98TLe4Tq?kghc>~3_IDl5^rmP=uU1=8@ zf1-q}Ucm4``1_anWYNx7`48k%xgUfC`f#J7WG9OX5Vp%C7KCmV$C#H>o1d4F{Hu&| zop4Ug?hIfB#zGz*UQOG?0WuVbz4W$}r;PQsDdQgLF z369^b;oM*)#4z9%4Lm63%DFm2v|TW4P0VYhS2r*jdh9ynFHt3ckF@NUFKmwSmZoIc zh?#Nt5M7JUKTX)RK}1llZalpPi@!d>taFZ=f9EW(L3Q<*FV6L|^CBk=C`s)6bT21! zxG~5XvQ;KI7ot29d+;)N8f-PM*;xj6;3`v=ublZPvmT1bG%t8)^oCT*U2;#BV!>r6 zEH-)yOlEGS_XC#(Xq1{0fS14LkMZg}1Tq~{^G7x@WWn=}XW*m!QA=26q$bE?w5b$J zQj_o!XI5A7%n9A27%bLaVKCb6p!cZ91W~+pLZ-?{k3ezE&_bGrj~UrNA`#%1`CQWu z#=w(OF*;gECK5wq%E@;>dYIXA$2C+D-zg9&py)ei)kiR9yIJ^i$?eQU)mK)R*zf^U zipwGDa!*6{=9R;Kv(eI2^y7m)RiJigMyqw1>Now?m@P$X46CK7U}Kdal&ZSImu)B8 ze=!O8LoivnWXtmk!=CK{=~<@||Ddn;Jp~qw>ONH^c3Dd z&9M%JBy=W>*EDHP7OHF$Qz$$xqxHv!%T49Qz3p48~C%XjWpTnc?U-B?sf zKiLH<#xdq3Jlwb#?BMQ`&~C@c;91;LB4Q3-iDe_ADbaWJ-$pYXX`(Ye+8qt<01jIL z!jdLM=b)rZ10mX|O`em%Tszs}PZ(=bO@byIX-s)2n~=6{at9lMO>6-=fy$Y7ufJ;R zTOj@9z4pX)d}_ksLTgSXs;E)+A9rB5rV7~QYyrIyx*tmCH^wNhHZsTjsJ6-N7;fjv z1rZMXJU*^?S>WxbVH89;l2J~n&-9%ZLaW^Cl-({~9pyf-e@5L`51M}o!1g)}p7AmD zY*J~<$)@SXPWo>s+KKIB4A_+Ix`L%&eg@7DCA|QFjM-w{nk}W zyH-hwFNz9;|CCXXW~(8uKj&|vrts=4j)IG=&U!lB09`csIZyczX6I6=MamRiDU7-` z#mY%>wh9?1Yal8MB?*EEV8cz--4xHV_pJUXlH+Ps+v9NQx&OSti`?3|^qk{fn0Tv} zl1E=^i`T11@wPFj64`*LC|Txc8)%zw;jwX776un#EqlyAJ%>$Ro0#cIMl>T>Waqve z8kQr&y~aHJg?F=(An~(`KfyqL+E1XVAkv+%1-4aNHBPxl?`#0gWKMW~nCxI_H-mtT z)iev?)83Dmn#mvmwvdC}{HkakOw<>bAq&yVvzE?#*6{0fVAJ{Y=B8!1*=!V6Ta)ZF zrv6qD+Hb@#ku$f`S>PDoh4~8B@of^0S?avGTa+ltjFR-(xo;9zoE9Gc@eFM za|R`&2UsjZ0j;+MAoXcEb~BBvJiTUPap2^c-X;JZm8Qd0d^S$nu#cV65+ds{$?tWU z`IctFYKqW(TI&>2`AlTu(e=NmDZzeES1kH_Dw;TF0`0ZMAWvVwE`mTN*{NOa$bR{7 z!&tlLmI4NM`tA~WSN#z(T*N}#@ksC+R=_iLn8B}X#<_R|=8{9AUX;8X;W}wsR;9KO z<>9!pPipm$RS0=8>X(7&Hi@=5sD$AVJAhm5OooA}ppQv3!B)M!vR>6OI2hC6(b+~X zL1HARkI4Rj4#$|bio>soHx_bs$fOduzOvPB@k>c{$cemk`_{q1O0zh^UlBgFgQ8rV zL-@=uO*#6;q4YopeaQu3sA}F>piYWcZo(i7Zwc@Wq3U`%}br$1j*G5qrVCZZU znm%7_73{go>5|_Tbw@p3lKBc>U`^vPgY^WY2vtl+g`KUsHVV@vwrqL#-;#l#{@tR4 z!HbpK_~a96GgPWw!U;xaY&tlPN`!dxd$Vh1=DOx@$3-lcXOBEYlV zaL(IwMoDH+a_8p23|1dY3~%*=BTO!cLo+UYBY-vJ>~h9}|1rtQ=1mu{?PM_9u*%SZ zIVWMenBD*l9s!LPYXLNes@5HZcIXVtG`GhnM~IdokCX{t(=&zZ2xWa}Lho`)^F18A zZd;(m=u&H7_(kY#tCtQHM%9va5GqW}ZQ$=#5?rsjnW<*6N}dUoMjLcbOBeOavTo;q z)=n8jNr5l=Y{0!7=+EQOfe=kK^h=G;6DmoMzaCnc>|2taauolZBNTdZgMN%XSEUX` z#R(x|aHLV*Pc@dxruCx4cx}sq-^c&)k3Kel*=yL&0!!^XvTc`P1vwiO1hr z^Zfa)B(%Ic&5qM3bV2+(dekK9`obhfzMMI$Ub zwFaB`{LG6bthszsZ1y4;IE(wUkuUfSGN03B6{H_+?)3LByYWm}NNbRg5; zbj?m?X)e$;$5XAC;9haT(?HE(>Eh55w_Fyos&oWBR95XyNk=W_X>W6B}W2N&dKi^%h?z`=!dDDw^(wTS#ro7zw6m~VQ(yg}`zA=G-^_a(<8ZoPe3P>D09wezp*u#un;=YG)Am_n!>5 zr57^+T<1#v(S!RpVe%hkdXqUGB|=nH!KQ&3h2t;OIHZuH^q`neV0Zh%6hbQaqEx0Y{VPe8n1%1h2}&^t(_ zO1K=_2xn4>h*&dNs}IqYS)HN*RzM~8gDo3rc~nk6=T;^mr%iY}jn7N4*mF`Ni@0jA zM!Q9LD-~S`WXzF(q3u%C6V(&F>4tlG$SapT1ydE{R4M*vjdrdrMng9~j91orw0JXiK?R$?8Py1569!Xh~#>=G@-mh(kU%Fq23g5Fb#; zKxLIL>cv6ADm)+GYe}yzRGjAwY#$#SVOU2QS--$g`Y*3@Opzoc7v! ztZ&+{@d|70`|*^}B`8o!rNnO|sQm-DlfK!0fQNf56H5qhL3z%j-Q=TJSEE>RTepd` zz9gsmV~^h>#KUe9AGI3pPbm+Kn$!{gGbY5&g%^V^+Pg)?UkuB(L&~_BuRnQl3cVr= zgt+?xH4n%J6N$_0PM>)gh+Sb}rYe0FZssgS8;h`}TZXATAq!L6tP)v0v;NBWAC&a2 z^Ki?nh}XS(Cv^W^@ALc(S1hh$$;D$}6wV3_37NQU3z<<1$ zjE#2Hhql1;vj)d?!nq6l_U(=hy;V)2>;zQ3814)~z#=kLA&{=(hMduaia5VcHf}56E$w#O` zRlycwSI|yxtsk}?8Fk=2DHwX4+WgkKE30&oQQ2Z^6%0v~X&-6x%h166mq4UMl@Ug` z45lphIV}!vqZmBGy2y6FxL<1g%f5JMQcHks12U%XFJIdn%dUu_r@_V`UUCN@=NtWC6O_vvK1fh8I8Ym zc;&?eQ?uiqLu-w=^o@!4j#f|H(&M34(nU-z)otY2KXOjo98X+7@1rQ+m8HAK-r9Y{ zUIq^Sl(LDA7}@_?O;REVY|IiN?1ZDygWG{84G~_~jzEkM$jVrLDWaI@D z%>pUpRVs2yLldi#wuwL1a-sBgV2~4%X+B zEo@>+KgE6%{0XOAZC19pJdQB4**aD4W*zP@oYPSz@n}wBzf`B&ub|@iA!0$;sdO3v zRIpMWcth+G=fehYEIcpK;9eZy9jXV7=eXyU(o5Z}1L3>>C5_RvB3L*Y2DKv%IeN3p zw^h~0M^rhMjB)ILNLI57F6>kycM?n5q{4ikfshnpGD9~=Kq#Qs@_l;IF%K$_G>hfO z=PdopK8jidaGNzXn`AuZB8oFP zktxQUl2ga)3?lRpxuclRX#tPFviu#*>`WVo)$1l^8 zYx-PpM{s2fT5bWtZ#*-c&-NfgEAXG`eg&ArD=pleSf+Jzh)D43V5E7$C$XE`R+l;MK<|J)~CpP zGB+Gf%0AdSj=eH3W78s(s&L69cv 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

rkjBQF+q?9Id~ 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 literal 2095 zcmb_ddu$X%99~2k9zDTYwP4hB2}vvN?fdR_)1xUpv=>+&?FomEz})Wab>(hnySu#y zQ87M9pdpGvG++c36Xg%n7!5>>z1VA{4?Dg)bQV5Aovb(dp z-+bTiHNV-gbn!!hsk5dM1QCdL#=7vc(Z43w;rpfycL(reiru-=C5UOa`PT$u+v`mP zQD>Toq?c3|DH_TKfsRrzSjgHKO%SbZ1siBd z&b1EgUb{Gl zJCFlOImpr)%W`B`4r(mViYfj9l4p5=VR?p?X*Q(rA%zpk%Al~EqZ>+B?7@l{ev48) zo@Xlzlh5aac_E0LG{ecV>~ruujS;k4v^-FtEq8X6AqHK|F>TL87U?sB6zcP$6gG9# zhpb(rwcJXaaKxAbuo*7M`aYF`x>m#4eNLtD%%pr#G4Le z#6lRjnkaH&h~}Un(Yhq^G>AwMS{GO@C5M2Z8!5lC%f+H}nl4Ubv9edXVQ*!Y zG0Ad$C_wY;K1ykR!l6!8KAYpj+?Mjla8P5QDGMuULH8GJ&nWmUuulGrc21m zL1&CpHgEv$LeO!el;NN(32ZxKYQT>Gle6^7-mc}0^bmQag089Kg5323cVmS#8kVa9 zH)aF;&w;C?O6vhu8sg5*P`-3hzVWsSbHL}NxM8U(l(KQZLb~JO*9-kalABRVc=H~J1tOmMS72K8`=Hk@ZPVq zV}|zGjC~h>lQzC-PwbtU`{QhP<2Uae+;~E2v`+2YgL*$+^zh1U?dtL^$G>~^-sGtr ztxrx(4+V4pK&1F{!}6gfJU;#F(&wvpw)EdOc#TIV;j&;eVqlq5| zhR;0qZhXrA5?VEwId^6jaA!kKShy10EweFN3nBr2=hPYUy%`u&dd?axfynV3L8?&)~rk!gGJxqS;v e#tl^^?#J`V{y~n%aQ7?zBfem9?EU$xpZyzE3AXV7 diff --git a/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/alt_hexagon_frame_obtained.mcmeta b/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/alt_hexagon_frame_obtained.mcmeta new file mode 100644 index 000000000..552ec0fd2 --- /dev/null +++ b/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/alt_hexagon_frame_obtained.mcmeta @@ -0,0 +1,9 @@ +{ + "gui": { + "scaling": { + "type": "tile" , + "width": 26, + "height": 26 + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/alt_hexagon_frame_obtained.png b/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/alt_hexagon_frame_obtained.png new file mode 100644 index 0000000000000000000000000000000000000000..ed8a77c0c282c109490eb2a97d4c5ccb6097c6d7 GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI13?%1G+4BcTF%}28J29*~C-V}>VM%xNb!1@J z*w6hZkrl}25AX?b1=0s{PEPh;?y8##WNSrhaR4dSk|4j}|3JX-dmCRcP=K?*BeIx* zf$tCqGm2_>H2?+UJY5_^G=kq=jOII_z~K@Yb?5)A( z^IY}14b%_h3jUhez_rnMfrBMO?v_%9OY>Lw3tin2zUp`7M@?b#AN9UG9$7jWMJfqQ eLOxP!zcOrm$5zN7z;+pE6N9I#pUXO@geCwbsZOE* literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/alt_hexagon_frame_unobtained.mcmeta b/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/alt_hexagon_frame_unobtained.mcmeta new file mode 100644 index 000000000..552ec0fd2 --- /dev/null +++ b/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/alt_hexagon_frame_unobtained.mcmeta @@ -0,0 +1,9 @@ +{ + "gui": { + "scaling": { + "type": "tile" , + "width": 26, + "height": 26 + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/alt_hexagon_frame_unobtained.png b/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/alt_hexagon_frame_unobtained.png new file mode 100644 index 0000000000000000000000000000000000000000..f569b5964833152909150a7cf1e50c5e71083140 GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI13?%1G+4BcTF%}28J29*~C-V}>VM%xNb!1@J z*w6hZkrl}25AX?b1=9cj|37x@SZHV{kj-^5>lct>EeY}q28#b@_`QuU7%0G5;1OBO zz`%D1gc(IOyc&Rlah@)YAsWGNFGlknP~dP0jJorG*69=39htit^9T5ZxB}?|IVWet?Q_*l1+rg7#?%5S){-E<;Qv6t@Ov9yFi?QAz$3Dl zfr0NZ2s0kfUy%Y7^!9Xd42f`md;K8q0Rx`H4og4&GroSaNuWYnph`3NkiaZn&qnb{ z!3oAi`^9T5ZxB_X06-ODGW-?d+VM%xNb!1@J z*w6hZkrl}25AX?b1=0*FjxsdOWUv6rF*r|TF#=MoB|(0{|ABzv_cp#@pa5rqM`SSr z1K%MKW)#)%Y5)o*c)B=-Xav8#07p;7D((}x}U(3EcRDTw%wPf|e9KpieAgxD*>wWoG i7U|7C?&t;ucLK6V*?N%!Q literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/exterior_frame_obtained.mcmeta b/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/exterior_frame_obtained.mcmeta new file mode 100644 index 000000000..552ec0fd2 --- /dev/null +++ b/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/exterior_frame_obtained.mcmeta @@ -0,0 +1,9 @@ +{ + "gui": { + "scaling": { + "type": "tile" , + "width": 26, + "height": 26 + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/exterior_frame_obtained.png b/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/exterior_frame_obtained.png new file mode 100644 index 0000000000000000000000000000000000000000..6ce4fa6d40c0670a61c17e5a57631a069bdb7983 GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI13?%1G+4BcTF%}28J29*~C-V}>VM%xNb!1@J z*w6hZkrl}25AX?b1=0s{PEPh;?y8##WNSrhaR4dSk|4j}|3JX-dmCRcP=K?*BeIx* zf$uN~Gak=hkpdJ<@N{tu(FlHf$x-Nl0tfQ}kstqOODC;({DpC^iMYvX^8jIseVaZo z=sgeQ{rb?OonxKsBPD@z@q#!1E?W8Qr01D`zm|P@sQxTiYsu<`If8|`L0XRr*ZcCX iEYh2O$m`?QS8Vq(Ssy=a-}4G+7lWs(pUXO@geCwudRS=y literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/exterior_frame_unobtained.mcmeta b/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/exterior_frame_unobtained.mcmeta new file mode 100644 index 000000000..552ec0fd2 --- /dev/null +++ b/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/exterior_frame_unobtained.mcmeta @@ -0,0 +1,9 @@ +{ + "gui": { + "scaling": { + "type": "tile" , + "width": 26, + "height": 26 + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/exterior_frame_unobtained.png b/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/exterior_frame_unobtained.png new file mode 100644 index 0000000000000000000000000000000000000000..70dbe29dffdff0c6952dbc224c14bbb08508f9f4 GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI13?%1G+4BcTF%}28J29*~C-V}>VM%xNb!1@J z*w6hZkrl}25AX?b1=9cj|37x@SZHV{kj-^5>lct>EeY}q28#b@_`QuU7%0G5;1OBO zz`%DHgc*_K}jnxp={we;2KMcGC0AzhBF~JXC)cthHqI!W_ZE+#sz-h3kF! jR~G5bKIHXr>npZVM%xNb!1@J z*w6hZkrl}25AX?b1=0s{PEPh;?y8##WNSrhaR4dSk|4j}|3JX-dmCRcP=K?*BeIx* zf$uN~Gak=hkpdKK@pN$v(Fi_!$(yf1L4f(f&w~HPx69Ic0`KhHz^zov*qe|o?kvXf z*m8Y(@ppx!kX}or?;R?IDUx1=T^o{KbuM4p5q+;|pWS0clP~u#`=#t(xYlvUsWs21 zcl@|L|60mVx5mXM^VFtPh2L9oZX%CwN>Xo8LW%r T_@_t$-NWGN>gTe~DWM4f>g;Hm literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/gallifreyan_frame_unobtained.png b/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/gallifreyan_frame_unobtained.png new file mode 100644 index 0000000000000000000000000000000000000000..0caf216b63dc87b3610994bd777e19b9df5acc00 GIT binary patch literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI13?%1G+4BcTF%}28J29*~C-V}>VM%xNb!1@J z*w6hZkrl}25AX?b1=9cj|37x@SZHV{kj-^5>lct>EeY}q28#b@_`QuU7%0G5;1OBO zz`%DHgc*s3Lo_{Unr(5IVlX+@Ws>1KBI5&~UHzlj-9d~EMnO*Ns3mgs-cRIiKpVM%xNb!1@J z*w6hZkrl|74)6(a1=6z?FKg?a+BaoRNli<2b9X{UW$%o+KykUY9%CTISrX(I{2vM! zg8eImK!ODxk;M!Qe1}1p@p%4<6rfJ*)c z=QzEN>vs6PX!_W)$ig|`HLIaW+HK|_`}=IW%tCa$co#nXRL%2G*6RxIgB}ZA6-$BR m-3xzLti0~N^L6=(@BCfm0##n^{PTd$V(@hJb6Mw<&;$VgAauw8 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/upgrade_frame_obtained.mcmeta b/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/upgrade_frame_obtained.mcmeta new file mode 100644 index 000000000..552ec0fd2 --- /dev/null +++ b/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/upgrade_frame_obtained.mcmeta @@ -0,0 +1,9 @@ +{ + "gui": { + "scaling": { + "type": "tile" , + "width": 26, + "height": 26 + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/upgrade_frame_obtained.png b/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/upgrades/upgrade_frame_obtained.png new file mode 100644 index 0000000000000000000000000000000000000000..4e5f09c7cabff207d1559c76e5cfa44317ad221b GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI13?%1G+4BcTF%}28J29*~C-V}>VM%xNb!1@J z*w6hZkrl}25AX?b1=0s{PEPh;?y8##WNSrhaR4dSk|4j}|3JX-dmCRcP=K?*BeIx* zf$uN~Gak=hkpdJ9^>lFz(Fopp&XA8mfrG^{__&peS++Ammg z(X~+K#e4iW6|GqionToh=&d;^S6<_%n_Hvq$`d!IP0|xy*_pZGTwC%Xwd2Qa7VM%xNb!1@J z*w6hZkrl}25AX?b1=9cj|37x@SZHV{kj-^5>lct>EeY}q28#b@_`QuU7%0G5;1OBO zz`%DHgc*cjbwj(JPlzi61H;R2KTf`WH*fKpzW(`zg@syLTB)h2QBhH*rl#`p^2Z)N zu5XyQWar7kyzXhMcLUWcJe&0jNC}n%`33(+0}QHbXC?t9ISV`@iy0XB4uLSEsD@Vq z0|T>TW=KRygs+cPa(=E};>Hzr%=K&?o-U3d6>)FpJ}go(!#bM zd?Jc(oeWwUS^w8P`ShoSe8#J|0%~^0>|1;K=&t=WzjM#OpP%r1$px1KW?SU#&oins zZ}aE!Wy#@x^L+odhWl@9A80;EIq=PMVQ0fz2PPEYDY@v*|+aJzqc&ig4Y4VMea|U-sUERNXmH$3JZU6Y` zlaX11j{gLEg$Gw(?KrqDZ^M?=@x8%M`8j_4lQREi-{k(EInH*DR=vxC^53(&e#zdc zU-yTX=|`H)oCZE$HlYGvhofv}HHz~^Km0lDU!VW_?P067F8y<}&U0xPZ2v#MCdffr z>zw=Fv&GvFZt}C!UJ!qAHSg;00a@$hPd{hPSy=Z!DAyt|4(M1lX5j<*TusZD*V$-X zIS~HY-`_;?49ku7Vjj`>kh!nt*4SwuI6XHkPkhSU*E*MfE@9C2Jr`=`asB*q)-BVQ z9k`R{{oJqq=bDDF{q-x&3jRxe7E)j|k@Pt5wLf9%&b!mj&HWU~nELG7jfRajbNsn7 zoDct8VQ*1xT?!Qb+ZC4^vA4acc<@dIUH#s@Umq6)Fvp+WzxQH_fpCKSIm3{e zz|wW)pMI`k&@YeL85>ZxZnMwx$@NTYOf181D#Y5)7rPKQi>Y|G?p*7qo0+2i{#$zM zz~A&U-VH1lQWO}k+c$+iD~q-&Kb6ipW#;W<=3}1<>@*kf@;+bu@4=n7S5Bt0e$lSl zn)p?Y>)cmAyZPc9T7UiZ-ulp`5*W?1czhW4OLBaXRuo5fNj<_TbaKgo^Zqv9^j$KH zW^iuce_k)4wQq&hb?cusVGYx**WS_7u)ZF-?6W6h*sM9Lb0(~t@6Vl~@7oBAjbbxE zo}P8M^Aj*%GW=Jp{qXNzKYOdxkF0-x=c+Mt&foyX5xG&MpuQk@W8<-fHol&~u>P-_ z5S=f74U`X3*KJ?=`LvDiU8Mu{ua2|U?KPg3`s^1lpY55nd}TDtn^*kj?)tR?wymRY|% zCpWTqG_ZUSDF|X(Q6rGy1x_qG8;-XC{RAxefaT(oW+#xM`UaK>Ge3RL4KQs@4z@6B zO^#eKONkL!5ZL%WT&5G^`|yTHpYOv6u~o}}=6Nvq2k+424h1U=wwTtsN)xDZdc5QV zRHZW-(1p@&od2K1cJ1gab4G7v#v`c{86Iu&U?_}Ksc+b!BjgYx#;Ks!%_1<}m8s*j e60$t4rR6a#cikEDk5Mh}mkjlT;1> delta 1013 zcmdlcI)#6NW0+!qPlzi61H;R2KTf`WH*fKpzW({g9zL#bn7Cx;$-=zuX{&bwWuJ>S z*8nN*k|4j}|8T(I<D{aK?q=>&{N&}q=hd`F_W13XzO4E^d;g#A7oHO@ z;>B|A!}sIo2s+vJ?DS*+&=n1_21G1Vlbfv46GUrx)XRHsvQ}*0vMtdBrW!9 zOyQW*T+bx3fMJ`k{o%LSAG8Yonbr6{s1c156|r8}u(#pY3PGUaqkdQ1bJW?mAH0`* z%c7$p`AT`4L(!&&uS=AHlB&+KH=CG5HXM=-Y+wS)oyg}p^mf}J*`0Sm95Imv4WjQl zm_!^-2DonnI%G|OJJ3F_HmgmntQrZe){E*HSObi%e7xTIySCN3Xn(NLm5I6<4vgA& z1c8p8w6HG+=-!BjeL$fpJf$hzTmc8T%3T<_7No3D-Y?1V&&`7d>7K za-ix4tCuD)Fzk}JRYVKe{}r&WJn;XsH6*rVeq6rcsAcHI#`@eLR(H*&pWukGpz_=ATu&p(J7uWi20=GemSAWRrW)dl=NoznA^yd6= zhT(n*P>W}`-fr5LNh@kI>JB18_z)ORz@NDgEu i*5OL%bH$LQy(B--(uFd|<+UHw9=zx`Luc{?E;Rt#Rg&!h diff --git a/common/src/main/resources/assets/tardis_refined/textures/gui/upgrades/widgets.png b/common/src/main/resources/assets/tardis_refined/textures/gui/upgrades/widgets.png deleted file mode 100644 index 9918a62c0855a5b91656233c4609c76649ce8c42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 786 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5Fq6g;1l8sq<8k~FlS9uR8$1A zj~zR_!>`15=%+i(^Q|tv5GM@-`TVI6I1Y=luQd&8uQ=e7W(y z>ZS8c`=>Jn|31$&^X7iB9ZC%hOdJX*M9qZN4s(t$95A*}C~rLT=02B=paTOVivS8? zcOv+}c>#tBHuonQ6K4LcZd67$254$?$7Bhh>!9Gk>3foE%y^g`ryNr2I@pz>{`Y_U z+Z{7q+dV|sS#D+B&oq9ODmP6wWRgYSV-RZTI3fSg{^x~hArIDX>V6?#;Pj)l^JVXi zGKKA2MNh74vweHgk`pLe;b?Fxv|*m8*uz7;wxx?0E^e{dkhMT_!QPa~vKVs^_&191EBE zA|g;P`N#1>sDq!T{Wp^@axb(P{yLwyZMU{z5BtQ7uUr{dZ4?u{Eu9WrIDc>*lbj}N z=WjEhT)ySAjrX~}iG0{2Je%oH?}aDqO6yx$4VaELEIXC7_5a1CO!^Ew35-@#odbU@ zm_1SdlYjrw{aeJ8*YQ^p|i!uunt~vxeR4?5p(j!&CxIB9ogZKlcX95O)eJ`-? z0I`>e8T?HKvKvma`qT^0i9L|5$l$g>;z9^#*l+n*tq)8G7?>`slW)cOdt7Cd2 VeRD74H_OQ&o~Nsy%Q~loCIF}PIM)CG diff --git a/common/src/main/resources/assets/tardis_refined/textures/gui/upgrades/window.png b/common/src/main/resources/assets/tardis_refined/textures/gui/upgrades/window.png index 9c6fcbb67edcfbdbc4b01daee08d994165c751e8..765b626fe83143bd78f0f3d8f71c4e4d9cc37224 100644 GIT binary patch delta 4008 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 V-@@yiBS-kK-gCe**TVC{e*w2=!KnZM literal 8999 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 diff --git a/common/src/main/resources/data/tardis_refined/structures/desktop/shalka.nbt b/common/src/main/resources/data/tardis_refined/structures/desktop/shalka.nbt new file mode 100644 index 0000000000000000000000000000000000000000..3933901f66021c4adfffc2504d8a2348d1dc782e GIT binary patch literal 285566 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 Fe*mAnP!a$D literal 0 HcmV?d00001 diff --git a/common/src/main/resources/data/tardis_refined/structures/rooms/ars/room_ars_stage_five.nbt b/common/src/main/resources/data/tardis_refined/structures/rooms/ars/room_ars_stage_five.nbt index 541b7bfdcf67870dbd5ef25055b0179716bc4bcd..3a30909d952c6561f585b0e19ddd25947ea3cb21 100644 GIT binary patch literal 54450 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

!s$$}?D2aXml9n#XSy`27#X&tre~>#nB> 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 literal 54201 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 diff --git a/common/src/main/resources/data/tardis_refined/structures/rooms/ars/room_ars_stage_four.nbt b/common/src/main/resources/data/tardis_refined/structures/rooms/ars/room_ars_stage_four.nbt index d3f4dac951f0e98fdef4b2aae59f680fcebfe905..58e69e6dbf0a272c2141da18f767bc5dd42d7226 100644 GIT binary patch literal 53331 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 I^w=N%58f;)&j0`b literal 53106 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 diff --git a/common/src/main/resources/data/tardis_refined/structures/rooms/ars/room_ars_stage_one.nbt b/common/src/main/resources/data/tardis_refined/structures/rooms/ars/room_ars_stage_one.nbt index 717b894874f28b5f208647bfe2f2419e2d28271a..27b9761ce19273c01be1ac47cca511aa8eab4987 100644 GIT binary patch delta 12395 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 X3_O#|EAyoTq1*peXmihX+&ljVOlBFK diff --git a/common/src/main/resources/data/tardis_refined/structures/rooms/ars/room_ars_stage_three.nbt b/common/src/main/resources/data/tardis_refined/structures/rooms/ars/room_ars_stage_three.nbt index cc81ae9ad16e428adaaf14da89560b82c328a56d..409bd5198fc26e8457a0d54b3d9a2821c89dd373 100644 GIT binary patch literal 52958 zcmeFad0f=j^*@}%D&JIvHYNd;C2gA6L`9IG0s_s?M%x6X6cs@>nIZ`Ys5lUYEeTDC zVSu)YvM7**Zw3YgB!qpFphGLm)UwK|Au@Fa7|l40ECbK`d}e?FL2Z70{&-%mr>{@t z&bjBFd+yoq{oI)t#s1F|%>Sl8>%ASIe>lbc=Cg17@mE)ppAC)glI`ps9@7ptD0Z;@ zsekF}{mLKOy3eKN{N}gb7v!nS{^!-#(&D*CYStEn{3Sm?J4RABW)wLc6{V0L-*Le< z>hARPWcgIJjjM7bYWl7sYEmhkI(}%{&B%DVetKLoJ?0cuYN0>X?cr`zJ(XTFwQSmc zGDIdnemBN;N?|)Sa)0{7)o`Pv?)S^qCr!K`s+Y9K)FXbd`;zPGM){?ks~csPDnGWc zN@;jM^trmwokmHq?~j?91bQ_m3`#Cl#+KpA!ds>x55BIDt4%*(?tn{=}L=W#=RV*{I8CcNbnP*b_r=tXjDkwmCaLX?re&;t+ra4I%GJfP$k#@#6AGlE z+z26SC~PV*qhLZ;Fyc{T7}wix8XQ&MsWf0ILb%L_>Co3k8$T-W*~YalJTjELnk77@ z7k0F+)2w@3`j);GFU_guasf*mDxdujWiiDUwaGKnoI27u?!9TEEmngQmwL1tdoT6q zG}c|(scmPSlW!}(P(9UJIKCBst46vb1dP-=+4T=TDp9VoYpOZRAM4m^KHU{xFg)dX zjC^Zph z@}U)`XJ6-f|BUtHnvT-MjnR4yF9^1NT(HV((}T^i^R{IDtHg=-u1R}996 zKQB1>Nx^xqO__QPuPo6VIg=Dq>tn6Wz4a{1;>w|Yre_^BnvMC(9BqvbI13J)H9hOi z^xIjf!W{P88(aTfIa zF4$y-;ZCz{M1NxI;5(iRIZ{n5_K|N~nrq;U+00UdB!WEzoe@ij!m(zH2A(?CV!eolRm$#^nJr--^9+dJUzWG1VXDlv!f7$1 zU1-Wl;*D7kA@UIO*Pz7DOYpBA<=$G!8vFK8waM8n|6$WnxvkrEXzh=Q8QHOX!A`-C zeR!O@;(<`%{=h?VKHSHC?ATZR>t+1v(qX-BShLCFJZ)=At46|joTo}UB7_e{e?a!{ z`EImanyhPTYkyv3?PzeiTUP0l{o;wRG=&}eR{=s9-?+ALM=;uHR|;6!FW%i0ZvZTx z6GI;HJj-Vi`SF*%8T1nAHIuf#mRbwLy35wp{X}N!usRG_wt?JGL%oU+OvenxJSD7S6~d&zWh~aJhd;8d zCWu!CryH=at>DK%*zM|R{HJu&ZE63(W4l7Vwso?kpzFx|q5tXA*nJ5c)E72f3O^(K z_K>m3*_GT|PqE4_J$6%OL-Hgk%8IJC|Jby&$s-BE$7(i4Cz)X-KRPkV8n7U*hYwFT zyU(si0z~=rkTi%T83*YlZTSKDda0B&6LJtv3|FMfcbLpeNwe9hMjONqo;7Xz>!GCr zZg?Wf0VaYzJT*Z~7dG`9S~loaYSV-4+FUe& zS+iI})s!m*gAK$P-c}i0Wt^54Q+9k~b#lYw!7v;>**jgmA zB~un-?@L!vBWITGo2$E2P6M;}(U~gy#e%K(IluG>`_IeCnJN_V)!!IN?mr40sxSjB zvkYN|=7Xl&{=N>e^Ss>fWI4_J$>9tFbdmf*Q@J%=u^2W&j}GOeP$dzZFgYB<^UK^L+Iw#lj_eC>XWB}%u~FAMriJOt z-F2dsq54BYZ07AZjD})GdBw7woy`rNR!J%KZ3 zaa{UKMuxGFp|Q4gLdA}IJ4aL?Z(l=5Y~U>PFsh%HlA%^Xa!UPX5Tah|n9RYqyMhKhYgwW4@=G)EeqKEWF}rmAFSe40y%qY~T1|lCi9`E1gb2w3ri+ z!M9bD`jP=kx_*(f+-y(JVh!kWZ0qylBnRapplWS5bN~lJ#YB`;E6=0EFC;SV=;xl z@Mdr$%O;(%K@3tX!e= z&ANNjT1l88sCE${_B3bxkZ|HOnT5}V2`ry0pN!^Pu&k#&!IDrwvRC*01l+05qM$YA=Mg+`O}0_#1Pd$>-tH76TjDZaqX<$>1FE>WGetF2o(ZEBT51?=o2L~d zM;;#Zn#!ojy$2ZgHiUZ@jCBmdp;x4{HIL`8)~->TQfpgsIvZQ<(XkU3Q#0342!aEL z;+)U>B9ReKpkbT8!GA{6>Pk|Z zactSE0GlULXc*i&>**;C7pC*ROY!m@IsP0aE#=VLn=+G9tXvH^BNy$gg;A$WS8*fu zq#EtD7H(nn$LQ{1DW0;kW(Af6iLbv~k(yg(vo37KrB1U;O{eb$MSQpRWHRS@H$j?z zK!PCc7e*`6Kji!5cBN<5T3qh52w&^!$aQNmiZ&e`xE#FCdRc2yeP>dX?J1l()p}?v zdq3b$oQx>(9ICk0v4%C(8ga4OEXr`)N}tt#GfEb9+q_D$EC2RpM?b{ul)kM+ypV{0 znyC-RmtG|Vo6 zhT>Y$YbNql7b(p6AzJG~mxg_-ffEYTIp=t z`?KLmC}i(7LSEd_nO=`m+I>T^G|G$3GEb{5(ZinNFB-SF9mdHuyU2_a;T!&cb6!DbiN6^}P09NY<_grkoqcFFSzJm{1B#N4ZMb+h`7Y zB)P;~7}Euw-_(bg@LVYmBYQ5h>su|qub0{j!bJnt5>G4herMj`3q}SPkdyynq_i=u zIfOBZ7~$>fezCWiFB%&T-j}<}m?eB7iL=d}mll@D7oF{Du0zg>9{9Gk%QMx-E_Zc1 zd-{ZzRpv;8xwdK1wnJr?&~eMaQE~OE6|a4TBy5$VU$ngH6Mj)`!UeB zYu63Mu6(B5uQS#20WhQ|Hk+`gy9_(h_+huU0+(xDa^7HX?&<*HP5#6U^4;9kk*5T! z85)XP-oE~KGV;Sc#nqLJs-tIB4YI-~XbMvG21eCgo)4&+?{f~3D=mug>&pT1T?oUyMej^_Iej0c3S9TG|?_!WJ0u>WR~ z%P#n|*tu$C?`+O)|EIVwj&J@Ar?|GY^7Ax*6JQFzBupO%QoHlBj(%^;H+@pzb1gk4 zEz{F?b?)FR)E)X$9%f7Xda5E0DMo*I8&XWrH{BE%uLTTr)*!-Pvxyw_^F(T;)a=nc zfEc{zFj8g%&<8?pAaSVj^`41;cNr$7WT5u>#@jc3^saO#qU5z=vbFew6G5h(&9|<# z>iZ|FP=?ONeo?bmuPo_Av%U19P&&YRvgkI}}Bfjp=LSYhtQI4IFPjU%t%K|uPqg~TR zzkm+`Xv#G)&%aRCHZC=$>gQ?&$#A3eyG~Q{{K{C?^vT!E^O0}Q7}?fa0JDcoG4$3} zH88?w8OAWhqf_K$#hdgA-ckk>f#cweE?FGk7HDtGUa1l zniB&)K*@@!DpMLLKLxF&+-VGTxHfsWM=4GWfog9(GP7Zb5t4OiPlWzNVg~-AWSY2d zP{w3jrc$DsiGct9o1vanj8DzYLSIA0U1^s#rPYp8VQHp9NVC@4*9JLWOVTNfs`F_J zzc{KD^b3&|-pZ(?oTyU91>yMUdYhcVGcc|EliH?I3~lL3hiwML^9D2V0;mv9Stc6o zJLNl4rgZN$Gq=qhC^yj874#{O3@JN?J)=feOwd-RqSmKZ$3_Cl#-PwN*X`>|w6C(w zl}wp*it1~T#EWI8zM~Z+`dR5sOx1QOgfi6TD^LSSeYg>}HLFHN>^si+(ZcZ)-|3I6 ztw{G8iu{B>7B;LSNZW2QT6vd3d9BY8-zj$?TQ4lHuGR841`}IiA|nNKT7UzDBJDpQ zrLx~kk$UA&M#)b~g1e&lC~G_`35iY-#*4@d7fZzm$X zyiw7FXOzik{BtbnA=6;jB$pEYz_*T zJxdW_m+RaHO*Cbv`A4oA9rM44)fQ&^)KJx>gCOL0P<|nv&(7r>tnVzen_+CNLQ{3F=Jdfo*LG=bc`;7-3 zM?T~^iGBtMJB?|EDiwP067#BhM4jB*)&e-rUa4ukvf-Ml_EB70V{Jl%AO>d82%2UV z!lIE9yWEM*EN2_56c2;OW`G+1Vr zo8MmGG4+u!+gu3yU{?q;Bek+e*Rrtu{t_2n`#X|S6GA;(VV!5q>UhdgQpI-Fv&xgy zPPsy9gKul2v=Foiv)Kb(=~C#gwfscf0lVDw9VdFV<5!}u$hIU}S%ytR@2o#EM-QWj zbhZj?b&+xrmrtL`@D$xSzE^dU8mv3D8s3?@wS)VtdEdX)9 zUbZXNCgAM5)EV>?FLKM*@e=lNaC_99)F&I?#I;s<`MOo5g_(}_#PW+2md19tucgN>;dx}%P-74RA zWbNUS+RpOTqzZY!mjXRr-`-Y>%dHisheL6065zG=u%3t)IdFv89lqBY7$z(fr*y>pYa}BHn3}L=vFT3Varwy?#ujVr*MW^p{ z`izQqf(IL^3e0Arl{muDphH5(VZ}ndu#qdBL0dq?QJU+Es|uLMzP5AcaxlwR9E2ru z0uMkyp~iy2GQD#muVb(&8JDkko1NBgf43K}4#gf?S9iFc39M=)FN0}5) zMHfgw;exw0FFxgS+-hmZD|b{6DytKOzo-p zu*FV!fFJF>`l2=yyucOpc-3?lHs8_^DjLNG|J*9qemj|?wV(AIi+LQSju`(6#(y?E zW+C7Ah2T{|^%|4W)c3Gv^&|ZWH)4Y)-UV?&3hk;Y_*jMX*VvREp*L`<$Hj9<^;BrH z`q@dG4MlcUpJq$#xNg{RI;wTnUzNluK}R>k(K#{pm9Ry6wCF+E!|5ottMbdi%t0U1 z!`P14?XZEaAni$$;32XxyqAzS2PD^BQki2gq8Joim;;?#Rak1+M@TR`GC&K2g-?(t zSQ&GB2TbH6`DD5u!bDW#<=O=c0LEVoa-3-K7AtRW zl~0|*`CHZcUaHC!nMT6DE@PGLuu9=Xm1Eb_7Z*VLlsVjFPG*^1Rf{XH@0|d}SZhTw zmERmAI=)d~KjHQL9#;LouX^ZB7}j+v^aN0c>Zz_b8MXeXK>8E-h6{|}Kfi+?@*8>T zX_db%{;xC?Mst|gcfGCiQm67+77K5OANtVFTIviO;WK*cZRZ}9>{b7U;V5FF$6I?D zt7GNdqc(CfbzIPq>|}|RC*4+ZRZr?JF7wz`W#-Akt#%0Y&gpupqPyn5$FQ$b45Bs( zUgD7()-;<5mUwuPd7mR~G5;>W;YHef(JULdfqcRkCjA?VMXpyHRmJm3HS$gPuM9ZcO$}yMca$l_L!lIY-i%Oa932q5ddG!Od21H zyZQHRA70_7kO~4ixYFG<6iLbz4P=ut8i6Ao>s8v@EIVl?~V4NOPxzUtrJ(vpHJd= zIBR;${I;WXw=iiZ{^{D8tLErtoAJv;MTY z+_BJqhvBHFQDU_Qc(520s^yuJw`=SNgX_cBCKbLvW@#c?7G!FYxJ>5nnYRL0R?=1s zhI+cM7-V}!uEHIUN}WdBEtOoFd{(ynHIoPLm~3Ari|`E48Vv9p(HcC01DeGy4NYFZ z)=9^>^B;wopc=2cmE3|Ms?8d-1z$(cHb?gARct>p)c0qN`%p|Xs@xV=2-LR^gKI85 z&c&!;qsxbIRnCCxt;M=-VY_Z-Dk2}Y=JDTMSJWRFGK^7kbmPjkhui^~W${sWCATD~ zZbA-?{kR*IIKQV$ls8H;z}FmiOW&_tDA3uP0z>Yn3s$)s#LWozQJg>I8t9$zw->qD zx#Y}C;cnl<3bKA|NiM<9HlNAJ*ZwcoGNYE-Zj$g)tjX0J$B&+2HZxIJ1nFwTd~76ex8rf{q^q*R zoQq9y9#pmhm(vmEYv&?9HIXS6=AR^dJz>#%L&1SK-+P*+cp2xhtf2{Pd4+oG7kMN# z34NXK^Y=-;vs=QF#rNEKmQ{&Me-sGJmPDvv`uujXvRmew9pyOC;p9rnS=mcAb$OP5 zk#LS=FDuJaHI=u!bnMtKVBfW0=$~q2C+}$=voJb8)6nl2yHVP#RnIovkr!Kg!fjQ& z#Ot`LZuCI8o_@!z8>PnRvgk~2sGSPOIa-P88zt+QZwQ`F)# zEM5|E948rx`xTCMRa>%T*gY&qbu6#`yjcgwNv*P9sQ+z0ixv9%(+U@94xUJI@yNxo zhP}7t?4oAIV|4JF|ojX*CO*kdV9$$AqA(Zi=D@ER7hI8n0MHrTS`>P6R=v zcx^bgt+N?#r=4am8@158SLP*;>aq}CBv)$VRR?&+F}HHev@_j^4qC^3A6K2=ZQ>P3 zQZnfYp+b=}%`_d;qG}gm%+kw~(4tf7k6;|^9^=YMFAr(X=wU{qp=%ctdA=!5%d5xD z8Ku?;aMCy~?$9IcDAx_Fb(G}b0-1+fRL8h@yqm%4=r5`+pURWB$wPAUBYT|i^%*By zK~d5c`1(9$t`q7_q^{#Ct5*pkJyx)4wnP{7e~6O(IGsvA-Erv3lFbMouOX{7^fjWI z7e6X6O;A7mKd-~>X$ntOz;-jJL@O8q~{Oasjp5S!}fQw z0L`!Kj2g6~Hd!t8VaPewHhB6wdmM@l-O23h-5=bnb-lK=;@nl-sKd92=2hJq1^B|| z5Z?YPqQO#?(S;#TvC*p+sIBo;BUpjlxMJ(a{E+KsUbm}in7ZFjSC;CV|ho>Y8~E&UyfkiQw=s~0j8lZ0hJ!#mOW$elqi z^CJ85AE$Kj`5m3`sj{_V$0B7xV0=_J-VHrcB$VZT#u6s0>Q3AhD4bum2USUcbSS34$CfngCeR`A6s_c18!?+HMj{2GUG#b8#xnC2 zx`deOsHMNM01jrc@%2bX;&7n(U%q>J?CXh+mb=orOOG&r;a}9d3s_InjP=Z0)qWkj z`Rbq7JD)slhF6%5p2ucy{%$5o{D*9S9`)_OW7q*RHiO;pJme(t>YO3Z?Clq33~b4Y zZe(VT8QILx;pbIey^-+x3e&bTB~y9$@FTXd*&PLlFYfhMU*K^J=&OeR(RUqr<-0ao zC5g3ju@b9qzK-UP{1bt4VK98)xPn2*b}GgI_v=@ix4>FwKFLGmSMzFesP6%jor}In z;`_?`)kgS3GY^z}Et9+eK4v~e^W*#FA?(S6#wK$mYno}>Tdp|tuDWb~@DWX12!F{v z%4y39WS;EAca{Fa^-1EF@=%_*e~0p9rYS>S6u)GXz`z&z;LhWmPQ(!JW2jUU-%SS5 z8OYp6s$vsMkxDtIHJZ#Y4WtX;qg3!JA*q_;>z)f?I3vUgk)*N0L1u-9Xr5VVCx4~` z84^tcG?5{Jb$!h8@7kb7+IuNa>ND3-yMN0GZ>d^-(lkp0SCJgHzH9M!nCodtnKtqHIx!C?c*}L|Wn%tk z4+VB0{a^|v6$1O#O2XbkB&ta;W8W?cL=6PUu7eqE1+MMlgp7Crkn~TTGk<508fF@gCb1;u9q+#|^TVFq$OA&iEinHU zVoD7p51>xQt~KC9RBIvfq7;?_;=tyGXp)G??omRZ$reZkdn629RlQn6sgKkg8QF~5 zv`HhdO=F5p6%^Q@wub<*3BU-7J&=$Aag2!S=6byr%%SdiGzm%Qs=1+&27h9tH%CZ8 zQtwEr2f4UVYAVbyABFu2$^g`y(&rwaoHss9M@SI>74XJGPkwBb*fqO<38tVN~ zhOYA4N`1t8Mz#-F@FN_av;kf;ur%Eg>V42x86b9D^E;U(Ed)Ny<>wDyk*}q}!z1Gr z1}}8gwUrk4^jAX)KRQ$~lK4-SFcY;@OHt;qrxyt2!S&16Q^*UXI9NlnRSKv)AmFFr z2Wn_hfS~4BPvJU{^fC{qIhIr~pT>yR1EBeHu@ma%#7N!R1#~tz@=9Xw? zux2el6g6VHW|n;*k2A6Tktu?Lk0u!`P&J`y$Hm0PhbC-@Q|$m$cd3n@qUl2Ge?Z9( zn5c#t7pVJz;PgOb!`Z$%f~bay5?`OqSByI?9^~feC{~h<%#KlKdyW48H}jRZDqrCo z5{p>m!)$i?G5IR}cpMJ;pYFI{yMMN6v7WmSrqJV!|JjdwB-78v~ zdh&fV#fp^K>=7|Z}+=xfL|?8$sVacLmja!uYUcWpSg%}q{T9r5`yVjjWn zX)^T<6zm=bl%GFMQ`{(_Gl>lpLDP@JxsGPkdozK5PyVqnFWW9agXqBp!jd)q~Tw8zotd?gpkTnz8AfXUzIU@SEGB!x{a z3e=#D&9Wv?b3$gfH;*f}?W4F4)7RjI!t1AOT2I4XOBwpHq8R4jHc zhBpH7+N^Eaqd6j2y`93X9|ESL?I_5*`aKxmVb zSWsvcQD_ClrGbdI7Orb6X+xD-CwGk@K3^c_VXyiW_JSzvJq#$ZSVL3P22vpzM9~@8 zxDXISAzPn9_F_Pabn`kHQ7!~NlFTga8*=in#W)tO4eyzMp4q)>#J~w<82y?cm1B^> z%$D#DGS+JgV6*k6CgPGn^A09s%^gh5*1C%pz;qg?SsfpwjP=mLhzPSM#&|oRadQ0o z;033TbVdyMYaRzn@Gcd_xazoW(XE3*wIP7km&C(W9)9Eih>XWEXMxP$B=L5#m;TbN z_f3%W&;@O7r}_KID1bi)#2OYo96DSyvX_`zs()tC;vzcww|ud&`=AMJ%YO9kda+H# z+?M09OyEpyBGqh5p8hS|8*1!G;Ise#5g?-5|5uIx52&_Ol%qoKF8t6alHSQQSa3<1 zH-0t|uRpT`LzBgavHv-n$gjTTJ@=6U?_qMJz%qDQ^{uNf34r>JuN7u6`gBXfPx4Zbi7Z2ZbK z1Ra5eg+AGPIAIChWlrqLgh`~Z8&y0kGwsFyxp%H-mV5xZg6Yq4(l0Biw#}RtrKU^$`Z=4G8-{g zCR0lM>-YPx!EtIEIA$Ltj-83)1we|_2l2XTP!@3~qJDoq4XJ9UMY;saKb(m|6v3|L~J#7{JW(4CXC#c>IgMt7qaFVEkYnIx{xJMWb}QGW6h{)hx$ZCDJ5 zAM~8*^m9Kw7H-?y7i8L&;O0CP{O?UH8=o;zJYRblgDt-yivJ{vyDBhfF(AIiGuH`) zPkYtx7Y2LNE0^xDmw4r+MB+Ol5lbYDM~JD%1NxsWQMlU4*?~djsZL(m`82+o#*dd1 zQ3;6Ji0%artC}MurojSBXM ztN01p@F+fEc=yhRy;hG0${H(@VM^{)@~7NivjUF z%yXUav8br}{rzENuF~#_+Xz zu#bTfi{54gh4mibBQPAyp$~Es5OWU!PHxNW4t)vZH%2p6_4ew)Og)MHrTr!0;Ia1y zij)oHN}E04N(+D#DXFtP{XPEF7}>Rmw4V;`+w^Nq*T&;luA@p>*%{Tag!pl?Brzdm zk$F4->_2+PXgH~)cE<(737~R@2(^Gv>#On88j1MHiZ+%9C6EX@#TlhddME8aR6yl6 ztFVq7&XAvB3?BrLLxyO-RFIFvQeRDpWum znx^Ja_xC~#&!;2pM19T5POrgLzBVB(-8KsHP)<^4k&!$!fo!A8J%8VEdEPJG*T2t? za{Qcb0tWtc|B8kGUg-a@c$Js9|Jg&lslD%eFWR_&-|g=E1wIa3{7g%BdKBHm6^lH0 z<70{Z$SH3?lIK3s?G{l!_K%TMv(0_?aSs!#tQH3hKOYGNe^CmPvYFi z`~q^7bvfiE^O^gAh8nd$)(jRcCC%PExVQYdxxq@er$Lf|H*(`PeoJGAaOn0sn>uX4cWiv6xMHWjrRM$r7io<-O4V7 zH(x21=@S$$1%6AXDbqpBk0IO1ZD&5&$*;DfV*@(u*jovzZaNv8wEe>sKh7lnJ)Kab zeNPsq(R`ckf8#|kpvHtSuQ{GZFT`&>Mek3T7ZM=m=87-dGr)*U0xqW+o+F^sabUXD zGQf_))i_omjX#;^>WTlZ0Pc(7Hw`Q!{m``fhMH_@IxJ#yh3 zQAOk&ZA9IPs58Lr1l-q3M@kL^{4HUw(FB6#Z;9p_(4?zh^p{4!^7he$R@9kEw*}Mw z1t8~50>1JfkS(MWyp5lFnY(Pb=nX^$$lTMw^+dgMHLPsiZ@!jo zqZ@Cp(`2#>;8|EmvJ=wkcG5x~0FqI}6bdFMJXMXI0`f`W1qvgL6nhqH>aCa2_r0?f zU&F9CTZqO?Gwp){pUrmi1MS#(d3e)7qPmGAzHFbb={)jfzYAWAG$r_PsNRq0r*Hl7 zTey#C;>Qu__X8uaqk10+Wxu^AP4yF+Ro(2P>mT+v_F^L_|H%U%!mDeh3m@15mak^E zfZfNF#oJtY_{0yW^Uj|ANGWz3ei=Et`yx_wKpnFMoE}4hJn`{Zxc!)}6@9&&{!<4& z$GG&1(qn67V>b77#;2e;8!+R3jbmn9)8^cmeysS)d@z%rrOw7o_paX=SQXqM1sG9kkAySf@>Y&6GSI zSDo$Tp~R+$cu)7Cax9H_e*lPAV`Je)liTqXrPqnb@>~c@_td%ks0s)J719?}A;l0a z0~gQ=d7H|n`9Qk*MVE3vLL}lA!Y-`d3q-XTbrF-GpF_wf&$k;D= z(>l-e4xZ{Z#epM%%6$lwMoUj8yvQyX0e}#A8uWK;1Uk*{>9emfqWxDHsZ>-9`%mj8 zV+p_}glW!vjW9{vN+^yc`0fLC$d+uP-b&P8EZ_RB)!$zb(4Iz0fSM9aH`NCo#={6p z1q?aYGJTQq7dqqnNjH(yd7nlwz!6D#I{s@bAt>eX8})Rmy_HV2v5C{q+r+}jvl>X9 zxNM7h|1@>J)OR%0D&!J=M;YvQ7vbTLj9f>E=;db?mw;lTx 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 z zIz7G^CNNTUM(!G?$R-iw`W}>#UK0p|ffIwX|wnuAqcPv6}^>Zg>o=Unq zi)y)ZB-P{oJ81e^h_I9hlYNYuC{NcdTTDFmB(9$kh)ByhjKDt=_#A;hC-68RoG2D^ zK6?TS%w~9ZTi1P1PQWV!+)qF^0&esMtJ?`2tCOofTOAR8OPH{HHp#6*z&wja^F9V) z$2lVWoCwEdDp$|0grDj=Cr<|;#0YoZdw8bcI>|cExA>2y#>vea8=ze!d2Bwr4E4)l|&DM8-}`*dk91KSw&11yUv}&IPqe+~|15P>U#P9>U5yisCcFwM$s8qn>;koU zZ_cii9@(C1nDI`zI%v(REWzT5h$AVKwA)HC!fKsuMAxNj7r(ZWcJ-pu|3_mEwL5?0 z;w!EuI5ETJ2m*pG`AR&UFi_7O-u^FQLg4t9s7iisqfWl@7u3m@cB1xv^#g{w=A*`) z{R?WG|BJ@BgT|G%Zbt(K_q9~qEL@$akQGRxVxJQ0-sL37L_-a!v4mg z{*YUTM&(DUudl1v2A?Zlr}4kmS+iVy)zru6I{@&eZW^(q~JIoixg50 zDL2sqlBYW=u^+%WsKvM+z_drvyjk%HFW^35;~0*^+KPYY$fCv5b4zIj{6h~actkiD zCb$>wm~XBf{He;Fq6Ca3+>4k--Pm06<+^o`DMtj>`R%O+G`RE&Eh;Qzc({SVECYQyv8^3+CF{)&wy?uOAv=_gU z*yK_l@GTLRv2_m>KQ|47f%uIy4SNy$nQoLj-pLgV24KpRBDnkYX;!XUw+zjMPw}Wy z_(l2T@DK()q(n_+t+n+jSMw9mGQ2#ya&QhBlus{m8+#v^VkBt%ziW)wf~aSfS4t~y zpZdV?dJDHR;L~gv_tVu>P+{~Rn?lrBH6<2fN$W_P^!OK;T0pykxdUv~5W=BlW1<5? z4v%?Y5(2ttFFhcPph;tn3k|>1^G6>Y?bKs|)EEomf3K>hp~n$!_#*6NqbB;E8>b*T zon{~Th||Pkv<3reiqqODh^VCT>1-Np7YeaV5f8Dplh3EMokF3J60rd&5vPkSu@0xB zoqrC!{p`VKD6@VXP0^Y%W(Hy^In|TB=-cz3*j?&Xt`2y?DaNopl^Tyft-vIlqw7oI zv(`T6;63wvan7_en47c8-1D<3bAuaArtl9XWD7nx3-yn#=C8*=wi# z*h=%18_HYgz}zXQj?D+vjYFVXx6Gj==Olrb6L{v2t$RybCp%AR-H@!$8ja z9}YR6kcW1c_1Jbnw%r@t0*#0FJBxwLIs#-RkU47zmQM_q6T_Lt&q>&~$BYm01>PkK z_$lvloTWsf1W88_X}}3GXj35rL&#V{3V_Tp!`A+dIJ=OjX@J=*0n8#Bux$h@B5sYu zEexR>@l+AdVdAL=Pk_xx zQ!&*X?VO1k-$fQ#DbZZ zv9x7HBBV7RSg8Z%$B6k~L4}1=DB1Uk`B9MUz@}m>=zfxYM8{d*Y@afCPz1S;GE5B#qHq`rxF<9`K=mD|OlrN558%t-{=R7Y?x z2L}Ig0QpoSK7cbZlc8z;gYye?PB16XP$BrhKq~J3{lSUZcnI{@FCLPlBZC093GkGO zL)?g|R>*Pr7zw@64CMr^Sh58VjmaLm`t5|6m{D|7zhy-%)$N+JuZ=aU<}l7rmK-Ar zbHde|8U;OkWCEZOU?Qj>g8LIfG}GhXP6#?cP$W{SPvLwNy*Z&qLgV#_gaF~*qmuq0 zY5)$r2*WieX8X^4XCj{0nUj$J8mSqXHj|L^n2DL6`66?IwULwYJUZDouxS9&xdczj zoUpGrI4*E@O~!{$bqh}t9Cy35XIl5i`CfUGL$1#7p7LgV#qTe#%J-U@vigY<)Ziz= zKL|X=<9@Y|>0?YEkE(}b_AzE3WA^d*4bOw>OP*)Ekeb1#Z$(YC)NODH4p^UYcdRiT zT_g`u`lF0?tYdJ$QybIAm_Ekp%V>}Cpc?V$XJbC-{yOykr4RgLpgon;FJj3jzon5P zE)*>bDYm&kxZR1+KH~`z8V`69{DZ(_Jnq-vm_Ekz@u(^|W*=krF=ii+-|+mpz6c_Q zwT%btMFm5>y_(Ei3yH3&rP?nkT@W3v9murL7BP+S0#Ac(TSIz!^g!>?Y@swH_Ds=H zHpcL_L8Xj6BXkkmD$Q%N6e@-TRn6bNeLsQ>f^?<2PNhuk)8V~v%) z$iNg?WwS#~$BODgh3NwQ?Y>H$Er0lSE8E`H5YgPsp)~qu$w(x|Cx%y#6vnC=)p?8!Xh-R8BmAn{L zi?&f)rA+sX?DLkqpEkbxn4j?6@c3>;06$n~o1f-qS<}kP|A;%)awi#1hVk9qIBnye ztm95m+$rg}Z9ZdJlO*zA!4FQ6T=kTTuWAIrJvi0N#8(~I4E`DJNul`a71pj@f~OjO zaGS)ZM1h%9K8=j<;%tDuHtG-2_xZ0X_@vstE3y_dh1p8Ldj5NV_~k) zR=~E4#J!aY_2sT**qF^FI^S7gdyTmZDuT{Dv-9z8so(w~j&xsjgDtYp`G2yAwu6m*1nw7mWoj+H1S|?%h z{$P7J*g{tTyiMCH<7`m0DQK@>DRoqo>Bjt?xAg8BhPcYDe_p@knUm7_SRRIUHHCs&Y)U8 zCsIGus17ysb*(ArQbdaT^~Fg^=l@|@9;K8T`if5rnC9ecniAxgksJFQbBo;| zE_QRjn-|pbL-Xm*Hih9%X>w&y5bG?G>Ru`k`_^A`Z0s5y+97$))u3OzS);OVx_+eK zpQ0kEbbEukD(t+oyxP9$kmy`m%p`|`Ev`pf=6e=Yh|U*h57jChm{!FXe~|nbA=0;Z z1w{{(Y1^k3_gOJ{(#H73`X71Fp4&S-pS3De*-4(W zipd%3?)h1IA^R)I^F4P$H7n2bs_H_SgH3H!Lo#Wsfu{&`H*7raSJ}|zbW+kU8XPx} zC}sVaH@lG)T4#vW5e#U-)1!_R3qNg3DRhTP%m;Z31EuCaZQnbO+f8kw%x z(E8CunK0e+d}vF-TLG_YI-~~uM!9y|X?BRwxE5aFKdZFmvv*sns|5mmV@qGN;%+1J zjpt{Dry@eT+SvC6;R^2RB|(@%<9;`k+1czWDUrlkp37Cgsw*tXX2Y~Yy*CtR?+o4& z8N{d9OUmOtUA!t+;T1Oa;-7~<(aCD3Z|xb5Nwk#nBl|CxNe6=*^Gf8uJKeUe;AW;$ z(s%bnKtAty&%%HXpE?gW$w{83&2_L!yHaAXn9Jn!yu4mtR~nzp7RqZ?>e9xrPS(aC P*#CL_&8!cef9C%H3U1C_ literal 52702 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%0DOPW?hN+o+1=YPh5Dhju%OH+W% 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 JdHwoV{{x>1T4VqK diff --git a/common/src/main/resources/data/tardis_refined/structures/rooms/ars/room_ars_stage_two.nbt b/common/src/main/resources/data/tardis_refined/structures/rooms/ars/room_ars_stage_two.nbt index a0763516ebf42dbf3c129522515ad3ea78830782..ed430039eb28ec6bc2f12e2797b59824b3eb622a 100644 GIT binary patch literal 52789 zcmd@7dstIf)(4Jv#;LrWzQVWd+ffvuGriCmDC6H2qv>-&wNRSkwh7d_e^8Kt6E&;(>=Y5{v zA77sbIOpuO)?Rz9wby0ueU481{_7#;pZVjCANFrlzJEmdKg-^D=6vq|96dhhD@#bJ zoEf@j>%hzBcDKLO@()pG$WN({{`t)dy5W==@BcQl@agb%F`SYoo9n#n>_kol=5rDg z-`payv$K=4%|DvW${4vMlzm1YXx6b!D*mwC-0S36YOYS(IV3TMn!C++*yd{u=gyh+ zuA%Hk+sD6CXYO+{w{)4a3Z-hB?!H|~iD8{iId(SPU2YQJJcX^a zc!oxQHr3lrU?lj67eh-{;k+SR~q-Ew-0UG=HrCMuG+rT(3+` z(Ilq}gRgl<-Edl1r(;f{O}BB^(6%s^;~ZXq#MBg_RXO1zgH^1k>95c&)%2b{!*Wx_ z%Sz;aWg+0D!(;rWaE4~+Z0b@sZ?ia~QQ{)hh}y${8Z>QcU34(0ZXI`icy4^g=6l`@ zC5OdDr`hKp3gsxfE9x|T#!F{jbW`nYEa_TWwqGgrF7UXY8z-CY_FYZ!&&=24#!Dkw z7YTyuQn?Rs!;$;C3bzzg1Ya?gNPGWKCcaqW;$FP({x21F8KoNYi_X4ovJ0|rN^0DT zMbh2{W%^%w$%i_YADQVF5FWNQA>s95Y9cQVf@vu5k%=8avB|46Tj@pJ%m20mHQf`xua)mq3%C2 z2Uw9lru2agbJU*g`<^WN&!!1xSDU`FPgM}a+Z+&@+Y-pt9{7cqz7egrJ_)Le<<6Jo#{c{c=gV3goHK)EL{DphoWF-7LCRCTg@!3@>a>(EI}gj>05*Gl8BoB*2tfbY5atlU$-lV z3Ys`S_GwaO)R>eOwc@6|V+v>9UfIp>J=*?~y1S0rJ$wg49W$3a?h2H82C&BH;cUP4 znNF5W7ad_7Iw;l07LML8pSL#~NSg!dWsYW|u1Yghx{EG!eKQic*utD3Q3|)ZKUXV` zU^(Q_@A)}08*X)CMEO5aS-LC6|~O=XX85@QhaVt#4B zvWjz-@w9|>|4_+(@UYV@n<32n^Mi$~QO|(hq1o)D7u_Tof&)SM+gRYuw4@22-}yjEj8*Ov`Sj}lEVqK8HgP_mEB#LhLBca7 ztR|%Azc|YrowV?=r}m|A6Me(+`u90?I)>}WgZ@md0pHzSU#mKdI3zbRaY&U$Wep~@B{sCG@bvQ#qD9fI zyWWlOcZ*@|46i^<-68%^qd-}B>NouJ;S|N>hw4l}?ni=I&cCz3QSO>$ZZ%!g#`HOb z&_$m{b9+C^tMX@e8aHfsUoMd^GXHc-(f0Tmo-MyByvAWppFG$cDe2cQH^j@?ZO>Pk znm9jXnGI)sowAHWPq4vK+QzQLtuBI5QBI-stNEmzvH zmZzj?zE|7l*ZI|j%X)nK-MzD_G8(&3dsen9Zyp^XFx7KNYa)C-ZtI3xb~Pnk>63{g z;v5SNnjfzwgs|r3*9CKw+q0R5bLQn&8fs6rK@>gQP%jmhfaSfJR&O&+)edp6GH`kwGfH(0TUga zO4v%In4KFRtsT4?QSAe(#lnmc!e>|J+u2l*#6tGjF&1ka+PTd~P*8~p+SnB5BY>9b zYx^+xBZ`Hgw*4}>b6P7*XtB{2<6g<2b{-nHSSUx`I4;dYAQH_dg!1}{W24)_rK!Ce zyJ^6@jnrMV;t*-2gSCh5LVhGM4n7WxmDuT@MS81@biMUGKWVX*gp@Z2b7aHA4y^e7 z2?mEw549cYe4(bcz9;pjySLMsj7FQ7P*Gu{mf=EE>!f&c{+xWf5RNiEyJ_fZ7CU`s zSR8Aofy}|K*L3E^%KYpsGm!PmEf9SW@bmRlL^>4LNvE2Gs87?uiS{m5vOlNCebMytAkJSEnT7k#N`qrYH- zJBUQIWi)CBa+lEKMkzh^@WA6C!u3`VoDw{$Zlo%&T~nkbG@b5@+4&P57^zGcy@9PJ zXX9>jTxp^K@{Eo*R6;0xJP(Da*}L zgmMJu_&+^{^2n!mNZ6#jSzn^qB^;L1xmJUh>l%QnP1qM9q+(x-G0YdONj-aRjJG9T)?b? zR@j&w(L*@j?~X2tYYZ_~m|bgFgZf%|or_Qvp53H9QQxEgUS$*NRFzShRb7+Rp|%fp zO39S}L8uckQKI^`yO@=bt37@F2O+@8{p)HOP3phTG6!hR0)O*BO)Ag~Cw>(dhD(|+ z!A@{G%))PGX;v^t@GI&M=5bW^2xBDLMIC}bOaVPY0oHa8S;qSV2dYpC+6}3)9(_)~ zf45TizC1Cb^s^gqOqKc8b4Kuc?RvOq`1*T9S$kbL{ zudg)@>Axl?IcufloQHV#5rpS5v9(u{e>>2b-{i@7`ZF)V(*sEMxqa{}jK6=G{QZ_l z{R??Pf@S99#c0%gOdR<>i^tynmwM*5%{z0%K7aO^S{T1)xs!SR{KiMqQY&Df-maBc z<28T(t*@JS_h9(BhXv=b@(Hi+36H1IkiJjr1``UzyCGrwr-ZWH?52o|SZrRX#sc(D zx@%V>crV@w64=7O$$uDFzbP(%W!(iQ|0|7a)E(Xd9^%F$3GVo%c*MS1(3|+b1XKk{ zzpL*!)D(ZpX{*DW;0S28EEp~HT*AKN-M%?4zfZTv_``GbpzGwt9>4y}rDK z@=hfUMgoK!aP@6+ZsNwlaG#&f_5gLDlV=|sVL0(uUKlPJO-GDt8vO{Kpne!lKh9`6 ze#umt9$F4fM|{C(+WXM7Gg|qIpUeq?r7qo|xrGq#w_N}OeZ|T%DnpE&cgEADS1zlS zq@4tJy+f%kKL%mTz~pzHi?MV zQmze@n}@j#oyUHt;>XUG3tG%i8xCfT`%O4D%0P!k=#g(FImQ-`IZo>ww8=u|JA_|T zdEQ7& ziBOFdD2Q+mBSIgG2(MX-uq=a-M-~%DHjfDQ`&@6@{jkJ`v|+!+1Vdp50NO6Km*03R zqKCtk#`@(5H}xZOHU|0UZ|Goh;!rW$dejj zp=?$JmmcRbk71OEC4@UckQ>b@S&Z;fEW+zT8f4NsW*M_bhg`>>kwC$BQh?@l&L}H5 z7s0QSeTM)ok-%}oR6VPC1s(#sk=!1+`YO~zid$urrhk;Qs6Zfff~=WrXfrY)N`oSd zgNeg0P(HLNZNBWSZUa*L!~HS}*qX?=kR%i!C|0~hXR0YnTo6B66)^!D`42Knie+fh z`tt8`;2}rbFEO>h41$F7zJ%zNt4;Zd{CM)svKq(X5_Z8(TQwH=KMGRAJeA;s7Urv6 z`976wgb1g6Z8n^}~q*9`v(Ii}{i9VJDs{IlWa>rFkWLv@WEnAKku zD5c5RJWFaUQMy6A(o3;L8XXMJ=iSOm0kU4RySU&}5~nKysourCtY)9I zr0zgd{NsM5(&UXX2%hb*>He!G+H6I9{V0e@F${Qk4c-9y$&DZ0)Ow4a3svmojk(%N zix<%;FW1WSaW~6YP6)R0e+;B(HBb^ctIKd zh*?JrpEPL~1>0OKQ9YC!KmVz+(ixjt}+ju?R z|L)Vo%COoWdwaNN{q@ap#+&ZqfF#3uU#+6B=j6o_42l0}tbMSix$7H%300q0zySt{ zmT}}B$QKHee{waGB9R@Oyi9c;Un0aRxDMM^0X^>GnZ^UCCC%POMDAK6pdx_ME1ZoBc|&kdg|w)Qg!stS}wxzY;rautVxa@qAbYY%^TN zb1riXi@L{@Dd zoFWHjlBDLOSGg#$2NbJ-z$S#=4cBQhj zuSB)Po>#byesbeGo+~SD-&Er;`~uJGGl*FI+<*gjpyO-WCF!Z!TVJxJz@Eq7ZpiEO z(3}2Ol)_Pj7G0Lu7AP}nB;RU2Y0}MxA)tkf$R9?;|~XK)WaL;hZ}$Er>35&_b7!{U7KbLs58-B?3iZH3kBbypIWx( zlUI7EJR3@wq~Eeh-jlMYe&nZJK5$h1>*g@75t%-;50|a4{s;D^IEr+1o8AN8VHx!-mf7?i6&r3~4kbl%^OfAuKV%4z$psSjEvzQ!9aqZyxxwa3B`P>cqjOoQc~h%aAQhWF z!cG`RQFkNpUjjQ8%!ai}7R&X6tos(1mF9C>PhOT<-$gZtXZ0%so4^_H?A8au{gNV#eoye?ssNZuDT7Ke6xUDDhplpt!5ca|RAf)*7 z3O^0^EK76V)T;hqEYd95@|*GVaashobxU55=p8aZvXUyy-cz7*Dq3)^5b9Fj9P7!MF=szPQ{vWa{7|T6 z-0Y|UY`F~G%HZ!|X)M~G=O}&%hOZ-Ar#ME&no&~*s2(35Yomm?3$Tm`{qbgAEK!nw z;#Svf9_SD-I0%i1bMC6`n+N89KKV)T7i1mF;9)HrU4CqP-t41FEa+NnoH0&}jGpSC z=}}T-l0GXjnaKWzoXc1+7uX*?%BZ>A94;f{7QhfSFqS>JTKK2=#RW={zwaKL2ugET z!TdFqQtzyKiz~>eDQ-#GI3mUP;6Id=u0SN*D;2x^BS`+NyGs0LZuJp_LXasB5oOe* zk831;t6N#=EEr<#_)#OFx=Ndu#{Ur;w*$P2vBajQDx5d-j;2wxZtvtTIEB4>Jf`WZh76XzB(W)k<2r^u*?-~8^X{hh9 z{7^_t+{#p&y6srX9Nm2!u{iA5FiGSKWKAQ29C-lC#vIy=pFWkgIq@ZZelA(2MQ$Tz zI^o7x0F70lW1so+aYIr7GHP_qXcs^&bZE`FY`;M24V5DJ z%m09gElpmClV)#l6v_}XU*rwUUV*zx`^|{oC)-bI#8D$ZI6H|ImSsW|oXe;wY}E`8 zUWKREygxRBXrXBIMw6dW<0aR85@hj4S{z)Mbkn4}W9er?r{g#J*oP?$GQXLm*NS|P z%(*AYwDTsY#^wac-ePPx>FF|7%%(BJvo|I^LiwE~l#O&HyOyh6>T5M%`2r!^=5vyP zMJ^U0H6Ha)ed1ka^~YM0`m)8|OWZBLRo`DM34gk5f2I_VrnnKZ&BE|5)f3F2icwcw zB41nVz3kMm8B zEapnh>?t>xG0BpT~fmQ1L^t zz5v9#{$NoXkFx<*NwjFcK+sT0tKzuJVk?uw0%pq`Gsl~#P{!Tn0i~CVkS*DcZZhk^ z+C~mPt!t3Q)<$?R{+})RY;@zmnEQ7?%m9Sr)xiiqt?@Q3Sip1i%Ze>av6$Z;Wi$Y_ zR7%rC;sJ-C#+fy4b>WD7xPI(htwmVsKicy|g-SP}T04MBZ6pw^A2)?uEpAdaa}>Yt z_2i}8L;z7Cc)$yXQPrhl=WzYP(|cj|#6F8`a}WkGv3Nvwg6K97{C~8|A+p zUuTv};}>EXu^S75n);r+q0QK;4EB(a{z`LI)$VAjs8)E0xoJR`@N8omLhaJ90LioNW4>PD-`y}@Q@<-IAuP?$&2kX;_E{XX37MZGx9PsTYbZ6W#vw;!)15U# z({~ofQ235HlKDB3-9yjDg-vmqsk>p`6m2K8+U@X2ji#jW<*+?ulH{tudI9kYYf+egpS)a+dRA07>5PLyV6S&quI zD$h+G?R_0NRcWFa0;a)895E#pANV{3W*pb^PH)o#o^+jn7Rt{1k53imwp_*1f1}p@ zKb3Rr1%*??BvZOC;ZExKW}ooEr8|BAxF+TQ#By{amNQQHK@J(;x%PjeZ#ItBKj`u1 z@v~xA3zuuQh5cs($_c_cU)ukPgkAq{B&;O~t3FvY=D2>jDaKYyqi$v`w@`rZe;`uH zC=Tcld(8jMu#Dq|!xC}t|In_$Zq(@yX__Xu{YojZcpoSBRn>ni>pW!T7tDVEsa^>_~? zQobH#S5+$x{I;D$X4EwEE7WsKK17~WzN z!u$<>Y?+;-T$5g>9lpA~`o*0aU2PrZ`*8c?_-#FIZ{yatlI@ChKH4(FD>IYc(DA2T zBW%E7Q%Q+Ur5)RRLUBq&g~J~M$~WSMQ~fI0e4Jol+hS=^(NuhyjeeYLvQ+K0UHXKZ zl{NEyOJl5VoqS8xxHZtyW7RX&0`35B7nbg7T))+P)TDbDMVh|mC0LQ=xA+t)BCIkd zSG!MfiGsLCe+&o8N=3amU~tdN5RN?1Rj4Y)YI+N>dYObPv<2eVuEklmV9RAo#EVz} zuF?NDG$aocT-(_QP!9)c=k4xVYK>2t8zB|P)4Gdmk^zK$R1x)rqv3J9wG0ufOK2ER zp;39@G?&Sn2>>gmfl%?pOB5k^I=l%_M=pKYJ2#Fh*-ER{N`?tolx#W!B};IEOabN5 zW}2Yf8YdT`z(Uqt7BAR2ZkEW-(wfwg;j5U;O;V!N(x=lSg1 zsDQ33U_^c6w>sP!aSPr^sD^hYb4>$)e#JG%WP1n#R;^tN3!dUKzmAc?J>)em&=}uhREw)r{)2`U>dO+^TI+ zDPS30JS`4B^k#J>=Y)P`gTYzp7niO4H6I0;t6$?9b?&)ZMg68${-Yl?dA@~pk>Dq= z&^GO*5gX8oT;`nu{?iAo{1x2=W1|ZTYN3!_2ug|3UjwozrC>cy7_dYM`UqoMzd)NL zAmviMK7eWG9Xlx zMpM7p)~HQm_uS*HIbG$?zEoFXmp0wV&)C;Rb?at~2~Pjtxp>(JUPd`tAxm#;spePv zL{7(NXP3Lm&qWiP9;40yF5cTjBBC`N7)rfac6UmmHGMkW%Yc^5L*=kgleRb~NFACR zKkFIdPd60;%b|QiPGMD1T2c-kOIo6CVov2wb0l1U=PK&kd%u{dnw!QYO5j1Cnlr`g zP~BgMv?lEhI&nOnL{FK9|7>B%*|6xBr=^o#iOfhih`pv?{NmQAo|;bOv|Wna@Y;jF z0ajQz)BIwjo6xUXrD(gn<^f*0Y#J2eT>t}KDkwJ=VR%z%f7&-nGX|Hntl}6xhnM56 zhQF&Rnz*hp*)fhUd}N%80A_nxlv0+S;NDiS*2jLU3=w7UCvD7D*|E`uktqp8+T5vA zBgvZ|hAwTtY#VBam+pJ0I6oudJrMOdE0>&{LEC)e3p7Y8T`1BdoY>!zacUnnd&`4M zup;00HiFRB*{XF7kyY!k-_w2`xWTE$4ejT#s@IfoORLrF9#YxYw7&%4=uSS5! zRCL<=2RuZ8#84q(mjH-(c5!~F9c->@T^~JG(5N7{Q~O96=b^^Fw;|Jn6C)t45yz)( zn@DvM80rtS>qL_tgR=e`bk2h;5F)@+C^5i*1ro;#z<~C^C>U%qxMXIi!a?U z)Au;dnY|;=gu$fy=wqle+n$B7Ol)P!PjU_bgGgMUNYdc55E%ePL?*EN3s+p%(sdYh z;|5qL#)TA<4aKBI-!#sjfIor=U<+Z2R}87KCstjxVt)_YlAT$r#*F}?oG7@o7kefe z(fH^|xrm*XAWXK0Y{<&!P95u%{H#e%q&8x?7&m4+wyLbn@7@|3vr-0(JjLXJFt$HF z(0f|D#DOuk`aNkpO?r_(qGzqmh3qIupoK^xXCuVSx`QuY$5?7Nw zf)&>mFGk{+(q&6xUm4OU_Pr z!vq!zAr|nv0}I6&t6*hCdLrx;(NJbPIYOce8{@H?cw8jF$Zv`u9H{sQWl ztD0hbsqOMTJ{-dZH1Wcjgt$D0dI?V^VYX%(y4xV?5qHzSN0>xEsJ)08`Kz-tjGsenh)da5%1HltUBR;Wj53 z!F`coWSx~xda0R$Ax4#x6*s18ACpI^+M?@$cZDC{VxegPy(123$M;gTwtniDv20(ev!fR_<0iWtS6XR+8fm>G&y zzNv3qg}knMG`U;AAp;uY*i*|b*7l|#?cU~q6VgrHU+x!VEZKwe(&bC>VX7Z$CqGk! z+i$hShd&}??*Ikc2YXzF4cBnHE|^dh*U$`^FWCc`A37Ihi7gJ~4{TM5TzcdzY8JgiY09=C2atNPLxg8Hj(ONFbjFi)4M3cnK@8>U<+pko&v!DrbEM9F!$~+G4*4~ zt1Ts;=Rl6qwz!swElW#e@ys0|g%Q_oK!QK&{u2HumSV_KntY>30HcHoAhce0f88;O ztTj7~JjU6%Pp%oTS~*3;$t>L`=h(lt5eP{P6GwEP=<%gG1H9{G5npSsiB5dgL*g`N za?3>FA3BDDb86LKc?;!-vxf)KY)6EXIfz7#T{NE+Vut%a@e5^0>fwr8pQ8L7OiA5(xm zLXl;xE}PssTAod+sTiNwe-3qw%dHsfGPONhg9omFsArInMQ6kLk3Y5C zQdt9r2zk5%pvWFa(eQ^d){0Ho=>>zcHqq+cQ^eqmpt{~NVtT?e;`Ak=HuEb~YD+$( zN^KWb2JsLPa^6KmkXf4`@0nk<4QW3`toab4o_CQ1f=8D?6`I;ba(syb!&4NF0K(<9 zeluO$M5>cW(DKW?ixk)IqD))ZFz|U75maVv!aSe(6-;Rc6~4P@0=z`A=P8OkAHr{d z^_$lzJUpd}4W>IcAi-#7eg(Upfz1ve!Hc~_k?1K@Hls)chBviKGE?Oe;PdO6l1oM?Ue21O-yK+RzawK zls;1tW^{+Z@-r$yV6kW!nX*+T3bCUWNalm-pU+)Kl3&vOgxuH81}1cOwKWw*3MKbf zt4)PH*2(|3s})*y9xWE{ug=0&7xX-Lm?k8O3qrDJe%eyms>YhGw6LyG#%m0whS8pO z8LwYP+i>t;x)Ns$Bzz2{QDF=BXjLJh^ak&iG6m~HH7D@8FAQR&Orf%4ol$jla+!i1 znVJ)wuBa|>jv7*-zUlh@yH4k}ZK|Qte`R-l7M1uhxFoS`JZeSr0{e9*1YmL;0fYS_(Eg;|zEm*YPC9`{l690t)T>!iz6w44!CthhzA@cd?N7 zE)M;(PI)&(I&H}3mS-KO5511Idy625v}8lUp{CuZ)|>ij7e=H-4=GNEmzM#q?FSi!0KBcqAity<W{dG#Z-(6si=U&_Nv$7+wmuZjbS)jz~*mSMy{> zBP3MrREl=HK;ZA80iFZC;TrIb+kl@|iEh{%(ai)f`mE~Q)D-w2pML{%{tkfJo(AY1 z0)2%j{+=j)NE}@RMFPVMz1Hn=!#muQ!~MiUMCn0~Hjlu1`@Y=b>luU6mK~gwZhXnm zFZSdoO$DddHx6I9jTOT~N<3?zXWe)fso4nBB%l^w*Wt^1!oE1PB#6=C6O5L8BD#u* zeokC8X<-&FV(>6K7(DJH9+wf1XqEO3oJ;pstTZm1bUf3-yzU)VxW!0&iXwwJq`F%R{+1EAMgtkLG~b#ttYbAiR=!LoeZYKJTlJH3|$jQ1f89$ zxW?SW8H1gmlA;EcYNFCfRMbR8M^sXXxoR56BrwC)LNfWS|H7vXWed$Vi5Ur9AXIe= zggSPDQ1lrP@(KZ=c_I+XBtjRMPcDzQ4_~>;-&q&AAp}BQ$TwIfril>wgvcgD0U^qW z110DiG@y@CMLQ8r< zXr2~?GLylm1>l>I$>hKAO>hHyk@c-T=V=v*Yapeh(TUE8j^k})_0 z-)|TOQJ$$iAzJaMyTGnMAW$4KmHBY^v)@Cs7)bn8QEi6Fn!~7Z zuCzz}>(|rmjlmBkJ4taW=`EZ}(hQzG0xplTj?fR|qT!zW?Yr+mCY{R33 z&9Buef-!X5x(FqbtL{@?qzxzDu;KE4hj-S)sT<}11b_C~&0q@eQ%!O49tu71iuw`Y z*s21v_@ppw3CDhoNp$R2M#p~nAvh#z(9p48fto|>Zd`J90ngUK^>#TSq);QOeq7wa6AbtE2?fQ}fRBgUenh@exj&m)iS$oKl z!z}Dz7I5TPem)1YFkC}wXWWLWHLa34Z8P4EKmoJqMElAZv>&NJVsUu`h~A*YVt`86 zWU{Vml(6IN_~01=91a4U0=7>(u=BT~web|NBM7^UuzvtHA}t-vv1)gsb{@6Y5cN=y zK^B0GSvkP^wt&pwNsuuhyRmNPp44{02*u6(3W}S7bEhcPXbFM9o>C-iH>9EM z_Ew(?fy&**74@PgNiH|GH2`{U50k!*4mzJYo=yLRg7z`;0WClw> zCIw*BC25gqulfqz1XH^swc8OH8zPfV-PF=>!@y0-m(0<#k@gh(zRF|yY${>u*2*2+ z+ahV03A(TgbqFw4;2S>EFFO`8Tq|A=Cp0_4T;C_&R}Drd)psd;2>5VC8zN!IgK@F z5az!@z#rrLw)ARY3vvk9!Gh}_UJ0&_j4`B(~H(d1G@3uG_T0@F*P-U^6(sLg`V0c;ynix@ItmF*l*1krCTmRf zK3wLDIN##~aXw|N@Q7BWQYurYn_K4Ndly3pk!JmV3>u+Ywg#bEc@&{q1FC&VpgQO~ zQkv1nV`+)>(PV>TB3${Kh{>bZ1E*^7(FQwijpLb+w%KGw`^bt$4?1d6eTkJr6nODg z4m5_yzUn9d)j2oxW@~?Qhy&JU2ColK#>Pb$SJu zjd#q(TtXsd7l1^}rWlD>`dVakwa1Xrg;DDHB@!{ebx6cUz?26tLVuqFMl|n8@_sdyKau!IYc{FZVA-GUl}tRZ)-3N^8%s2OWV0xZk#EKt@Y-BGG3gU*dd@sK704GGau5Dhg6NM{*} zF$8^#wNnj;26DR0N8pJqMpk@2WxfwnRq#Ig-B1hmj)ws?;7gERunwf3q$=;XR7Xw( z%irpGXYf;etb$Do^8j2yfX`A_kAoie3y{`-jc<)ducmWWXmcSVv#GCrXu~;6Dn{|1 zQ9!-g@e2Jn9!&?oLXEWo--<6kjQ=C0?Tr91_eaY|&n?yFUy1xPME;*3;d2QjGPhG! zU&G(Vh`y=;k2>(7d&EfikY&(TK(_0dj!Y(*b^OHdpxk!K%ZU@dQ-NdTVA~9om(Rk$s)kzL`Fy~uLc=p6)@Xo z0QyCNKgW~cZz9;%(^lo06HeAcN^-#WZ2|ls!5fGykI2>#ccCOq5u;P9_IdpF8|Juh z7JFEuyWEa%x3SAUCOQ1_wF>$V1NhuOVoBoUCqt*Nn}_z_=K=$DH@X0kE0{MNiesK> zR0m07EOV6PabF7p<6vc`LwQv5-*&Pyho?FWkD_ zZ}v{noN}yk5ZVqMF3grRW(E~pC|c{{AKv_@?7~G+2kI}+Ir+`?cQV#rzrC1qd`Hq; zVZdqMF`$Emi(HeFhg9Fp(Ms`+F=vO2)v}EeR%X!g-8t98GQ>SQ+&IB;OXmn(#Auow zY_AB9!^Vc5*jCe&s9LP5>vX0bHF3;La+R=)xJ#g14l% z7jTE36h@yJ{`+dLkhJqf^IRowH)m#tE~*#h`1_v;>6NME+ZXl9>htGlmDg8g=ruc> zImV>ZPY6wCI=kKuNzF1SL~nK4i&CWfY(r|47hXW;4EFUv=?>@aWr;3|N8e^Gy_Fi0 z8l!LDGH2_rdNglkoOy zk&>5eC;Ym4C-H3vrEj)F#^9s29K*vlLgV}CO=-2Yk&>%n<)Pc$+FW1E(FQHX+fMtM zes{LEBxOJSiF_2T52N+hFM>4(@MO!`@Q_$Zd=`Y4Kl~|yz1P2#!!xC?7MR1DmFzj% zAv+E)ts^QUZ%EuS$5RtuyeO($6%gvP-EtA$ER`R>P_iL&wMS^E2kzJeq#>Yg+-1+E zE8`!y5F)qc%3eVAe_fR8n)o)_d=`M38>eIE)YjK~0lmj}T@TC<-raBKtfwpBd^v_8?O(dTlkO+_N=sl3JwX47xF1 zzgUd7;55do*@*Ebkyw05ECm4blmRSHx#MQ*BY6BLdVGMS^$khuI&lf7ebNEK^ya+>s;}{2OJD+U+`|5erHj9Qm zlSrh4#K~HaXuAp$TepG45+X4XEMj=QI@F0BQM$^lH;uF*0n1_qSnh}c%l#E#S+@Z! z8y13PBb?=AFm-wm-%)po20no1sAQ5yHOZqBR8|s|BShsgQMo}>?gG2nNZ3Epn6?ww zmEd~)6>z;U8eIRb0$lIgfWe(#Xc_nzkas(#W&TzG?LGydR|x1c05yM0v?57}}8hezSfbu`3qj6r(>W6*z(G4S5S7+9w;1`F76*&YT& zw(7-^=Z5v@m`5GgP{*M(2oZ^1j*k1b3_V!}?iipg3o#>49)#anU!R|YBVwF}D0mg_ zNjRpm_3$}C1W*Eir~o)7&tf>AycY5tjs%iLAj=6vh!3yiXiZPv^_*z0CeK);O?&KK zt-$4!N3%GYksYZSbDQ*f2Vrzsv?r&73x6$c5VyFlx?;JQ6MqPfyLX8yAiQ}ij$BBS zC4UPdcl{EMkIeD>FkZGO>M2zL-TT!Q?Hc|Sg21eQ+ij!A{P$A!ubwe9<4SDC+>1_E z35W$0I{>5y=^TVJZ`T&>N_C5R$_ec@pZV35B;yAV`cowI54BnhVC4B; zbPl2KdI3UziSz;xL`N9ZJpe$1qJ}kn3mt|Ec3JOkg9Yt+0T%QUSMlm5CaA~ed%C&Og`)v2SG~r;W_Mg7r8DxCv?og4`ILHfIwisGrxlUTEOr% za0aBpANFfacKY7Qen?m=xEmH zRGX5yDeMvvg(fW%QATF!&-eqY8ENI1ru91z=Lnd^!JT%&9I`mRQ3r?RD`JBD-_*XV zXcsnv#y}dC&Im|WzR}{<#6!TR4E`yVid_DPXQulA$%~Zsk9g+ea9EW1&%l>$=;0PF zp!H`SgGZw9v8jW>R)QM)YbL7v-V#-|Gg0MlOjLP=i7I1JgNYeq(FIW_Y%JJVksFUz zCX@Q4z#7IXlrVf+>J)2+MdUgyv57)S$)PL^AOzu|M7M9E;57P2#uQ@_g;lVbAUFgS zDpRJ27UNo*PBBbq!W+61`=)?4$z$Ks1z3WIrA)a<$%a+5xDOMiGKJz1l___{Dl4}@ zOj<%3RnpchGLpI{i_=Yqkuv2$y~RkGGG&~+kCBg*DgS@)uJ^&*v?+n5OnKlC%#kP4<&8EF_TM#`9g1Iw|BBV>?9AuTy1$5(_44r3#T?+gPzu!x|}L zybjJ@)H|ky&vsR=bbf=6~C)y_sjaB?4XC;l3(!EYmHa5(|}XRiZqD+uga zfB`6euQurgPQzOO=>8G_vFilFx0@aCrP7SNbFlx0x8U=;zl0gau7fjQO4G!FY8_ij zI`?Qh{|BvDuSAQDf(5(3A1th#P9hDimJ(M_fUDj|z?b#|FrWM{Fz-ja6%cR!V1673 zZ-Zp4uLZ#IuxhXKMNblEza`EdraJz8gsk}?fYI=POJzyhp8$fX z7Vsr1tp)4gFP?p%9){NfC9DS3q9B_LRuU>?%95YyYlI~#OU4;Gc$CVL`(@X9 zR8*GS2XoVp!BUpoduaE-X3CQL5HWb3pofKPs4V$KS{juc%91CUvSfN)OwTYhd$V>_ zr&w2f2wcU#2W5Dlg>}p)>#!y3up#T10V6`Mqd`4{448ou^r!Av7e31KP-Qw_{s9Wb>imZ@Y6LFY?|!$ZVj198|*9BRPf$s};t zb_N64IsuHPQg;hx!W3;F0q@dr0Dh|fn|*WQ6XB=CRq#{rOL=0w!;``zrSMZLgPD8s zfAQo;Rt8sxeqD5waGQY})eBtDc;M!V$uq7ABZq$~;7lBmG+uIr796RF8}{xJC6k;+YLaj+GthtJmnlnw$NAZ8v_~LL`b& zzN`r(GNk}rxUqwiG53@hYiaMs&s!AreeaSGpY4{5x0}Cg+4^8n!$LIcB_3tCW$_!XlRNeO`8A1ooiA4Gn?ELoPhIxqlZD=k4k!9f_0_$vrG zezSJz?>P!PT5GXGs+x8) zDuEflkz7V8xeUVGPndOt*+rP!fk}R46o@;dH9Z2W45bMq!X(fJQlKxs{RfV5Euy&T z7<9p3izqJnlNFd<=`a?5qp8u08V^z9N}_RuCgB>IghxT6Z#)M>1P>eVKF&s3*v^d5LdM@e>(spMjyi*TGOi5eDKz ze9tGoZE3W7NX@T+?}=bbyRzFpLlD0|JW8uah{F))leOBCweBHneTCfVXRy}3*I}&* zMKEfgH%GuI_p$(y1&y~oN+ccziQe}?BK~EN5Pu31!9>CZB*@?`KyWx~^x;K9&Q zS^T1?G+^KnW~%@g4gSFBE<~rAH3afUW|jd6p7vfq&BGsqw+XZ;Vs#gGg0snOkh-5g z{6=yCypGlvKDjrEe6pq)Zm{JjTyOE33jHCIMuIK_b=*Q+Z&&?S_J%D-#PKm*>UnOsVn~O@7DWT?}fLU_cUjo zFS0v2Z{KRCH@to)WPK6+0*Ch(%GixN-J;k8l13oLBA<-ahSdNm6#^u9dB?g8@qY1% zIiB;h_J8CwaLDmzlE0rvVQ~qC#dn(#4Sy)2Rlp@A-tguINfL<{7j;D^iy+=Ds}T%Z zKSwY)z6?rTzmMvQ-%+4lNEqu0P*`+`ulky~z&=Co^E8M5hvx9#VGHw@VVds$9Mg39 zYD`n%^R91G1@k=q^9caJDCaMODRBtkX#)5M0Gj{uF(S<~WR{PE&fLAAllf=R83FS$ zH|_;*?XQEkQ=fsit*=n*+fBU9BHrc^Z%c@`tu%;HKvTyPzt-w;ZUB}|$G>wyJ1_A^v|uZsym(^xg%` z{Fi{aiZGoC^9c*4H4wPZe+k^LqCq;-AfKQ?K0<^14H?6)!J_vrE3i8~-yoNmrg1V2 z)Vd=SBC21n`-xc-dWihmLtt_4dth-Eu{e`hoIx!9iZt;MMuK=g4#Z;vC_w-gtNg)Y zhcj60{|LI*UD`M2q~YJoGTL}xv5$q3jDUIZm1NeZ3t>aC{xF^H0?LZ~C@V^Vv3cs^ zU~K(2U~E?|TLGGHka_x3H-*&AWpvYf1Knr`&`okOy7BWvHw6V}{zgm579byLwm9#? zL^lThm0o--|<@pziX4AdvD%}&p#zU-#3q_hExL2<98XVedx%eF# z;F0pZc&q-l`rJxUO2*viZI|H@cOQaB^t>_vk9h3}JmM@bc*Lm68z|5LrPvDu z^6%R&!z*7q0zZ6iC35K9?RAxK)>l}RonISV1ZO>~B8&3!N?ry5^@TNW^8tV@mo^om zZGcf*bS=Rxs&fAL?KrtZM8K;fR=Q7MXYTTp+BoOf`MXuDa&yWL!zke;eF_n{5=lh; zpFl(%OCch0EJPHqbdhjFYWf$c3&L19gtg=S)oVx?M?UFy=B!-WAyYY9F8nj{c4UVN zT|)QeRKU5P4^GPz?_cfOf7>`9c9Io3&pCND4gst7#*$7Za^d3bP6rvRyP{qvQeiN0 zY?4eGq*0aXbcRNGTlIasEU3>DzP@b>eEmszT==4x3_%KR^}Z+!^1v&aq0TL&PC3*W zCAuMZU!=m1Ab)2^O9)v@^${3AN*`Fct$b2gng@#s_JqZVqhK-dEwGs0V`MRF3AmVm z1N&}kF2w7E+`MR0AG|8nKMjj%V!T5}cA1Rq2%)@2D7l2IX6UyxLnCR15|Rb1@3!1FTQ_Xl3)8B54feM` z7sH+J0o(HCB5R13#>p1-=G;J-Uj##?MM4HFCZ z^f5{4c}R(NmIy4iySwH2%km*RS{>!&f@|Sx@M^2cvp@e4oc70;;MczSH=N&QIKNEy z(@&IH10D3KSoOe|{#Q~n^xYBIcY(g=`uHpGINIiDpqP&w#}r9EfLeI^3wt ze2YYJjzqDWL@|rz>^z!eUL>>V9LS6SrMW2~p#pZAiC=o5;)ycTnWs1_-5~4da-fnY zUV};=A(i}w^!PsMv6l2029;RAzQ4t970f0mOAMO|W&$a4lmN=1%;0?ts8#VaY8V>I za~KM!lG%olLTX7N1k(JQ5rq&~naOeWC;(YUD2bvm?l8ooUICh&*`QhN z3W2N-5f4>4<8Gm-UdEO$QYjw(y68Fq))U}C0$k{d&IxeN$uppcGmx#4NB=enK&saT zEQ;E811a0p@8FDT55pOyuYfa}DZj4#KvhuI7DThZ46{Efg1mL3c=*irq13lqB|03V zT>*dO(t2HfP?hGZQl#K4+hOFwnpZ1sAq{^_*nJ@SX--3Nz3w`^jL1ci?Ft{IjkyF? zp3Mp}AN1w;q49`nj}dTiy{t(K5@Pznj`Jyem(vtW9~-E zH!I2MOv!vUywfZfB`W@`1_Au-weFf}hrreo)eI=`w9%~;VS6%8) ziTO6(`vjyiC<|lW7GU~ zsv6c0f3*r)%T(oDUxn2X6jGSIIP3%uieM!bD|39D$$^5)BgExvG>vj;8hIe}jX)uO zwyGS<5If_g6g$I@$c+t8AhddODYP!Sy!Go6sCdIqxBYb9oUMxxR8=T4)GMHF7--jV z(tD@;xV zu1K6CtT{*vQwuxZ%FwSDpPQpS8HbZ{TW;8fH=qA5vpV)i*y8!`=3giQ{A@B}_uL7{(K(wj4SYmq3@D(l@50xB1Gqr?fY7k+R5k>@I$VM<&96ykT`Up(6h-$hr zGQS8iKiR7=zk&lWH~__FfSS?*25JT2t$zG%*F_ebV}!GoaEb{hfN+lgiCn;1;G8@* zLi(6^nDfG85qB9M6m zvIHQUtKPETCMvl*rPj6hcnm{`;*HSfW2N8*&2_= zVfaFJ4U%AsZ_AZAs9#AaBMlhfy(u(aDHHqK#CoRr5=9Isjs|q&3vhe+uVCcJN8om) zGih@bjXa;Y^(MeA-gC5hq$yA0T>vK~CoB!z65a0hr&hg(P|62b_wm?;C zxJA>>th~*;32;4IoGDv%g_A)SbF_TS)DphW|5Ik_dr7LVn6W5vm75C76aQ{PBK%xd zh%QvH6O(uBc8+HfgE8aDGSjR#rFyT|5kg)%U&0@G09OI^^!`_H4L?|yckF2z{qny+ z!TUdig6Dr$ud7wfiT{AK`(KQ~qIbJ_WhTFO5m3HFbp#KTG51v}pbppTba4J3Q&REj z4yA@1)@RSaVZHuOBplBN*A!yFpOHddA%*Pz?z&v5N(+g4o?OD~5S$8@5&rHR=MK z+IiiZ#vAoKQutSq(SKK4^jVzS*eyfoS#tBQlAHe+!yaoJ1-0guVN&0=7ol_lx1!u^ zDp5v=z&xKP^L+iENFpGIP~v`EFqiV>l%?(dClat%ZroOBu5Wp4iEL6)Un5ppK}U&wZAT-aNJO=sS2Heh`9 z`w+pfYRc{Kmx={B@hCU8QMqxILVWFE!(Pfc9xID}n%lvVB4}vyF5thL#s4x)?$t9B z{!)Y`-+<(m|;Is=h`&T>tmFa=g@CR&=lC>b3&WWFi_*M6=GrH5Nd`x znD#&rsCyDdyc{VCQR+57Ot&;>tE%KU%#NLe$+z4_vB39*((UTdG0f2Aay<)vz!7 z*hf}*vTEx$-n(F(9I>ZT(hS=08j^2!HTmPW&=EY#Gm4BjA~Ys^u<3^8t2-}Td;IGj zM~jCtEw5>Z|JRx5)AB z4i%Zd5!LpE+FOKBds(PACWU}%>|2Dfo(ObjLQ|hrXgj_Ka}IUAbs_HviVcA6z~VR{ zZ|N$8ycI*pE9?a1^{oNG-FSQmdEuW7sD+SsFGAi-7xIQW!`1wavDT#470@bzNKXWj zp$H;{$)5w5Y!EaNd%N6PCI(}lgGA^A?aZ5gfMq7qA;Jr4NmMGF*KKku-7>gZNu0*JTK!6 z`;{Ds@b8TLJ!+1rh7v3=eAJGGcjkSVKctO>mmoA#*B(%y$+)DBzs28Gw@z_f%1Gm z&bD9(omnV!7NIwoUysvuAk+ac?(=fFLKGsydN-(xzb)sC=*|=JGGnSbz2*w!H9x*a zHU*&+)C$b4rN%@0TOf z`zPp9%FCcjLD>MLqIE#01iI^-OvoQgE1dDmI9dqX*T~KifI8z9pf1Z9I`7iwjd3Dj z+uI97I+F?Z(o_NV($_XZW)=%%7DEMe->VBg8x7tVGcrMm9-Qa!b93Pw7mEe5h`m6T zS|m$X1>~{~$a=ZZXkef#13pv<;Jy}iVaRJx^1HrO#bD>`>79fY%Yp5Cu z1EIseV(nyLdf{j?9XtfsY*ohOYM(bHo7MBZ) z7NY^JfV#R|C-Tuhs1|q+G1}N>5d&lku!cLMhY^nmzWU5QkRDVdHy2bSFc4IP%T0hC z_U@2&USy5xnZ4_9CO_C&t$)a=>PA0RAwDgcsE z3eB5;KA--pp_62_>}6mz zFB@28teYGwn49!>b7HMJ7_IT9XQI6uImd7$;@1uMcw=|{nS;NmLlYGe9mTnaDo&Km za9%$So1_1YR9HNoEHV~Stn1R9M0s`NvJq6p0M_LJ+s@c?T)mlw@h1;Pv$I3H}O zaOt9v#duVAiJP}@4oukui@Rnu{pDzhy7eKWc@YOBv zi6c8}rd6Gf-r4?s;mSDQiG2p$0%8pvd2RaLOcq0rSKdbfgVJzx|Ky5FEp!UBY7zx9 zV>EV?DO}?+X58=d5llSqiFuPNKr3pdWlXMs7%qBe$m9yp?fX)N@hVTL$0$RdQjgKt zGNm3<>TwU0`K{Drf#~7`cBU~$bI0+(Q_f>j9^|*0{`(9yrecfH(a2P6F)CP{QjaP1 zxCf&AzpF=8KP5wJmHSm7L}uxp;L>>(Yq8=>M^Ar z_t>?XQjaP1_+P8X74}(&x~_+T+YLDd^>WhIjVE!5{(4Q2b)cWrq}cUTJ#KHrf-J>8 zI8LkU*?h9IrZp|5uiHwKEqfheg{3{H*wWq?$RE&>G4diy{6741YuUwcx`WxTTR?x@ zrb~On?x(rhUw=bW^tb$&j+=`~olHXYRf^4YbC={~kd2givH63yYDDrBOO=^sDXC(A z1=n!vW*&F&G$Z#TB2qS(YG>s(+1shi1UVfpr)jF{JXxiosx%IPlx__RBLeJxbe9@y zqHWzGzQ<`w-k|abz+{`0%J=qY_&!hHcQMU^Hw6^NF?2h# zQ%&6rU8(EmMpZD+m};u23VwyIj^t6*>Y}7*3H->MKS6TW54`MPHuNZ&4e$9gbal)I zG5k1!d9Bu9-eCJNnJu`OH&}fYEA$s(h3#_=C@KuY zqZRU^!a;^Er-Pw8mAw`X>Rn!;*kPMvS+v94iFs-Kp_C?brB@;9}sN7|n$50zBG3%k(Hi*P6}dQI^#B!L3U8 zBx)M*skR^+TWqOe=-QQ!L^dB&$%dfHsC1VCyEl=|(ec=zWFj zxK-n?3E+M0uDKAyx6Glo6V3htCP|V$OpI$VREYM{Mz@v%yu_@plz0R>y8B77S>fmd z)s@qhx8za*Zuy$eBl=roL}WdQlLc7;U-B3VIo;OCQFgWzC$_4wWP4k87;WjGEw%1) z)fxt&a6Ip*!;KeMy%n|P8opU2B?ee#4<=oo2{y95#mjWH?iDs}?=|9Bg2D6vvA_g;%-;B%q#de&UMmZwr>>k{rD8@@-JD8R4DN+oE zt~|^^^IlRa_HV^MRVd88JZ{I$)oQybTZ5%^bf3_u?AktRD#exf&>rZ^+#(1Vr}v^(BvdfKWV zIK8W8W6DrMHIGXunE1dzXLDU$Dy^xbAO5|t!0o%YAARV*iu&gL literal 52544 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 QS-8rdf9jt92YYk#$p8QV literal 0 HcmV?d00001 diff --git a/common/src/main/resources/tardis_refined-common.mixins.json b/common/src/main/resources/tardis_refined-common.mixins.json index 791a6211e..14d4c7e5a 100644 --- a/common/src/main/resources/tardis_refined-common.mixins.json +++ b/common/src/main/resources/tardis_refined-common.mixins.json @@ -9,6 +9,7 @@ "PortalMixin" ], "client": [ + "FogRendererMixin" ], "injectors": { "defaultRequire": 1 diff --git a/common/src/main/resources/tardis_refined.accesswidener b/common/src/main/resources/tardis_refined.accesswidener index a077de846..173383525 100644 --- a/common/src/main/resources/tardis_refined.accesswidener +++ b/common/src/main/resources/tardis_refined.accesswidener @@ -8,4 +8,6 @@ extendable method net/minecraft/world/entity/Entity getBoundingBox ()Lnet/minecr accessible class net/minecraft/core/particles/SimpleParticleType accessible class net/minecraft/core/particles/SimpleParticleType$1 accessible method net/minecraft/server/MinecraftServer wrapRunnable (Ljava/lang/Runnable;)Lnet/minecraft/server/TickTask; -accessible field net/minecraft/server/level/ServerLevel dragonFight Lnet/minecraft/world/level/dimension/end/EndDragonFight; \ No newline at end of file +accessible field net/minecraft/server/level/ServerLevel dragonFight Lnet/minecraft/world/level/dimension/end/EndDragonFight; +accessible method net/minecraft/client/particle/SuspendedParticle (Lnet/minecraft/client/multiplayer/ClientLevel;Lnet/minecraft/client/particle/SpriteSet;DDDDDD)V +accessible field net/minecraft/client/particle/Particle gravity F diff --git a/fabric/build.gradle b/fabric/build.gradle index 8c4501b35..3f65b0b15 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -74,6 +74,7 @@ dependencies { modCompileOnly "com.terraformersmc:modmenu:${rootProject.mod_menu_version}" modCompileOnly "curse.maven:jei-238222:${rootProject.jei_fabric_version}" + modImplementation "curse.maven:huge-structure-blocks-474114:4803539" // Forge Config API Port modApi "fuzs.forgeconfigapiport:forgeconfigapiport-fabric:${rootProject.forge_config_api_port_version}" @@ -85,24 +86,24 @@ dependencies { modImplementation ("com.github.iPortalTeam.ImmersivePortalsMod:q_misc_util:v4.0.3-mc1.20.2") modImplementation ("com.github.iPortalTeam.ImmersivePortalsMod:build:v4.0.3-mc1.20.2") - /* // If working on Immersive Portals, change modCompileOnlyApi to modImplementation for the following two entries, this will enable Immersive Portals in Dev - modCompileOnlyApi("com.github.iPortalTeam.ImmersivePortalsMod:imm_ptl_core:${rootProject.immersive_portals_version}") { - exclude(group: "net.fabricmc.fabric-api") - transitive(false) - } - modCompileOnlyApi("com.github.iPortalTeam.ImmersivePortalsMod:q_misc_util:${rootProject.immersive_portals_version}") { - exclude(group: "net.fabricmc.fabric-api") - transitive(false) - } - //Immersive Portals Dependency, not listed on their repo but required for 1.19+ versions - modCompileOnlyApi("com.github.LlamaLad7:MixinExtras:${rootProject.mixin_extras_version}") { - exclude(group: "net.fabricmc.fabric-api") - transitive(false) - } - //Immersive Portals Dependency, not listed on their repo but required for 1.19+ versions - modCompileOnlyApi("me.shedaniel.cloth:cloth-config-fabric:${rootProject.cloth_config_fabric_version}") { - exclude(group: "net.fabricmc.fabric-api") - }*/ + /* // If working on Immersive Portals, change modCompileOnlyApi to modImplementation for the following two entries, this will enable Immersive Portals in Dev + modCompileOnlyApi("com.github.iPortalTeam.ImmersivePortalsMod:imm_ptl_core:${rootProject.immersive_portals_version}") { + exclude(group: "net.fabricmc.fabric-api") + transitive(false) + } + modCompileOnlyApi("com.github.iPortalTeam.ImmersivePortalsMod:q_misc_util:${rootProject.immersive_portals_version}") { + exclude(group: "net.fabricmc.fabric-api") + transitive(false) + } + //Immersive Portals Dependency, not listed on their repo but required for 1.19+ versions + modCompileOnlyApi("com.github.LlamaLad7:MixinExtras:${rootProject.mixin_extras_version}") { + exclude(group: "net.fabricmc.fabric-api") + transitive(false) + } + //Immersive Portals Dependency, not listed on their repo but required for 1.19+ versions + modCompileOnlyApi("me.shedaniel.cloth:cloth-config-fabric:${rootProject.cloth_config_fabric_version}") { + exclude(group: "net.fabricmc.fabric-api") + }*/ // Immersive Portals End @@ -173,14 +174,19 @@ components.java { publishing { publications { - mavenFabric(MavenPublication) { - artifactId = rootProject.archives_base_name + "-" + project.name + mavenForge(MavenPublication) { + artifactId = archives_base_name + "_" + project.name from components.java } } - // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. repositories { - // Add repositories to publish to here. + maven { + url = "https://maven.craig.software/repository/whocraft/" + credentials { + username = project.findProperty("MAVEN_REPO_USERNAME") ?: System.getenv("MAVEN_REPO_USERNAME") ?: "" + password = project.findProperty("MAVEN_REPO_PASSWORD") ?: System.getenv("MAVEN_REPO_PASSWORD") ?: "" + } + } } } \ No newline at end of file diff --git a/fabric/src/main/java/whocraft/tardis_refined/common/network/fabric/NetworkManagerImpl.java b/fabric/src/main/java/whocraft/tardis_refined/common/network/fabric/NetworkManagerImpl.java index dc5090233..4b741b5b3 100644 --- a/fabric/src/main/java/whocraft/tardis_refined/common/network/fabric/NetworkManagerImpl.java +++ b/fabric/src/main/java/whocraft/tardis_refined/common/network/fabric/NetworkManagerImpl.java @@ -11,6 +11,7 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.Entity; import net.minecraft.world.level.block.entity.BlockEntity; +import whocraft.tardis_refined.TardisRefined; import whocraft.tardis_refined.common.network.MessageC2S; import whocraft.tardis_refined.common.network.MessageS2C; import whocraft.tardis_refined.common.network.MessageType; @@ -25,7 +26,7 @@ public NetworkManagerImpl(ResourceLocation channelName) { var msgId = buf.readUtf(); if (!this.toServer.containsKey(msgId)) { - System.out.println("Unknown message id received on server: " + msgId); + TardisRefined.LOGGER.error("Unknown message id received on server: " + msgId); return; } @@ -49,7 +50,7 @@ private void registerClient() { var msgId = buf.readUtf(); if (!this.toClient.containsKey(msgId)) { - System.out.println("Unknown message id received on client: " + msgId); + TardisRefined.LOGGER.error("Unknown message id received on client: " + msgId); return; } @@ -62,7 +63,7 @@ private void registerClient() { @Override public void sendToServer(MessageC2S message) { if (!this.toServer.containsValue(message.getType())) { - System.out.println("Message type not registered: " + message.getType().getId()); + TardisRefined.LOGGER.error("Message type not registered: " + message.getType().getId()); return; } @@ -75,7 +76,7 @@ public void sendToServer(MessageC2S message) { @Override public void sendToPlayer(ServerPlayer player, MessageS2C message) { if (!this.toClient.containsValue(message.getType())) { - System.out.println("Message type not registered: " + message.getType().getId()); + TardisRefined.LOGGER.error("Message type not registered: " + message.getType().getId()); return; } diff --git a/fabric/src/main/java/whocraft/tardis_refined/fabric/TardisRefinedFabric.java b/fabric/src/main/java/whocraft/tardis_refined/fabric/TardisRefinedFabric.java index d086eec79..f824a5b82 100644 --- a/fabric/src/main/java/whocraft/tardis_refined/fabric/TardisRefinedFabric.java +++ b/fabric/src/main/java/whocraft/tardis_refined/fabric/TardisRefinedFabric.java @@ -2,8 +2,10 @@ import fuzs.forgeconfigapiport.api.config.v3.ForgeConfigRegistry; import net.fabricmc.api.ModInitializer; +import net.fabricmc.fabric.api.command.v2.ArgumentTypeRegistry; import net.fabricmc.fabric.api.resource.IdentifiableResourceReloadListener; import net.fabricmc.fabric.api.resource.ResourceManagerHelper; +import net.minecraft.commands.synchronization.SingletonArgumentInfo; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.PackType; import net.minecraft.server.packs.resources.PreparableReloadListener; @@ -12,6 +14,7 @@ import net.neoforged.fml.config.ModConfig; import whocraft.tardis_refined.TRConfig; import whocraft.tardis_refined.TardisRefined; +import whocraft.tardis_refined.command.arguments.UpgradeArgumentType; import whocraft.tardis_refined.common.tardis.TardisDesktops; import whocraft.tardis_refined.common.util.fabric.PlatformImpl; import whocraft.tardis_refined.common.world.fabric.TRFabricBiomeModifiers; @@ -64,6 +67,9 @@ public void onInitialize() { ForgeConfigRegistry.INSTANCE.register(TardisRefined.MODID, ModConfig.Type.CLIENT, TRConfig.CLIENT_SPEC); ForgeConfigRegistry.INSTANCE.register(TardisRefined.MODID, ModConfig.Type.SERVER, TRConfig.SERVER_SPEC); + ArgumentTypeRegistry.registerArgumentType(new ResourceLocation(TardisRefined.MODID, "upgrades"), UpgradeArgumentType.class, SingletonArgumentInfo.contextFree(UpgradeArgumentType::upgradeArgumentType)); + + register(SERVER_DATA, new ResourceLocation(TardisRefined.MODID, TardisRefined.MODID + "/" + "console_patterns"), ConsolePatterns.getReloadListener()); register(SERVER_DATA, new ResourceLocation(TardisRefined.MODID, TardisRefined.MODID + "/" + "desktops"), TardisDesktops.getReloadListener()); diff --git a/fabric/src/main/java/whocraft/tardis_refined/fabric/TardisRefinedFabricClient.java b/fabric/src/main/java/whocraft/tardis_refined/fabric/TardisRefinedFabricClient.java index 9318b4dec..0e700ba5f 100644 --- a/fabric/src/main/java/whocraft/tardis_refined/fabric/TardisRefinedFabricClient.java +++ b/fabric/src/main/java/whocraft/tardis_refined/fabric/TardisRefinedFabricClient.java @@ -7,6 +7,7 @@ import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry; import net.minecraft.client.renderer.RenderType; import net.minecraft.world.level.block.Block; +import whocraft.tardis_refined.TardisRefined; import whocraft.tardis_refined.client.ModelRegistry; import whocraft.tardis_refined.client.ParticleGallifrey; import whocraft.tardis_refined.client.TRParticles; @@ -24,7 +25,6 @@ import whocraft.tardis_refined.registry.BlockEntityRegistry; import whocraft.tardis_refined.registry.BlockRegistry; import whocraft.tardis_refined.registry.EntityRegistry; -import whocraft.tardis_refined.registry.RegistrySupplier; public class TardisRefinedFabricClient implements ClientModInitializer { @Override @@ -40,6 +40,7 @@ public void onInitializeClient() { private void particles() { ParticleFactoryRegistry.getInstance().register(TRParticles.GALLIFREY.get(), (ParticleGallifrey.Provider::new)); + ParticleFactoryRegistry.getInstance().register(TRParticles.ARS_LEAVES.get(), (ParticleGallifrey.ARSVinesParticle::new)); } private void establishBlockEntityRenderers() { @@ -55,8 +56,10 @@ private void establishBlockEntityRenderers() { BlockEntityRendererRegistry.register(BlockEntityRegistry.CONSOLE_CONFIGURATION.get(), ConsoleConfigurationRenderer::new); /*Required to Render Transparency*/ - for (Block entry : BlockRegistry.BLOCKS.getRegistry().stream().toList()) { - BlockRenderLayerMap.INSTANCE.putBlock(entry, RenderType.cutout()); + for (Block block : BlockRegistry.BLOCKS.getRegistry()) { + if(BlockRegistry.BLOCKS.getRegistry().getKey(block).getNamespace().contains(TardisRefined.MODID)){ + BlockRenderLayerMap.INSTANCE.putBlock(block, RenderType.cutout()); + } } } diff --git a/fabric/src/main/java/whocraft/tardis_refined/registry/fabric/DeferredRegistryImpl.java b/fabric/src/main/java/whocraft/tardis_refined/registry/fabric/DeferredRegistryImpl.java index 2ca6b4bbd..5704a6f18 100644 --- a/fabric/src/main/java/whocraft/tardis_refined/registry/fabric/DeferredRegistryImpl.java +++ b/fabric/src/main/java/whocraft/tardis_refined/registry/fabric/DeferredRegistryImpl.java @@ -32,12 +32,9 @@ public static class Impl extends DeferredRegistry { private final String modid; private final WritableRegistry registry; - - private ResourceKey> registryKey; - private final boolean isCustom; - private final boolean syncToClient; + private ResourceKey> registryKey; public Impl(String modid, ResourceKey> resourceKey) { this.modid = modid; @@ -52,8 +49,8 @@ public Impl(String modid, ResourceKey> resourceKey, boolean syncToCl this.registryKey = resourceKey; this.isCustom = true; this.syncToClient = syncToClient; - this.registry = syncToClient ? (MappedRegistry)FabricRegistryBuilder.createSimple(resourceKey).attribute(RegistryAttribute.SYNCED).buildAndRegister() : (MappedRegistry)FabricRegistryBuilder.createSimple(resourceKey).buildAndRegister(); - + this.registry = syncToClient ? (MappedRegistry) FabricRegistryBuilder.createSimple(resourceKey).attribute(RegistryAttribute.SYNCED).buildAndRegister() : (MappedRegistry) FabricRegistryBuilder.createSimple(resourceKey).buildAndRegister(); + } @Override @@ -72,7 +69,7 @@ public RegistrySupplier register(String id, Supplier supplie public RegistrySupplierHolder registerHolder(String id, Supplier sup) { ResourceLocation registeredId = new ResourceLocation(this.modid, id); Registry.register(this.registry, registeredId, sup.get()); //Need to call this to register the object - RegistrySupplierHolder registryHolder = RegistrySupplierHolder.create(this.registryKey, registeredId); //Create the holder, it will automatically bind the underlying value when the object is registered + RegistrySupplierHolder registryHolder = RegistrySupplierHolder.create(this.registryKey, registeredId); //Create the holder, it will automatically bind the underlying value when the object is registered return registryHolder; } diff --git a/forge/build.gradle b/forge/build.gradle index 110ff639d..6015237a1 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -145,17 +145,22 @@ tasks.withType(JavaCompile) { options.encoding = "UTF-8" options.release = 17 } - publishing { publications { mavenForge(MavenPublication) { - artifactId = archives_base_name + "-" + project.name + artifactId = archives_base_name + "_" + project.name from components.java } } - // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. repositories { - // Add repositories to publish to here. + maven { + url = "https://maven.craig.software/repository/whocraft/" + credentials { + username = project.findProperty("MAVEN_REPO_USERNAME") ?: System.getenv("MAVEN_REPO_USERNAME") ?: "" + password = project.findProperty("MAVEN_REPO_PASSWORD") ?: System.getenv("MAVEN_REPO_PASSWORD") ?: "" + } + } } -} \ No newline at end of file +} + diff --git a/forge/src/generated/.cache/0533c97ce5395f38717098a1ca49d72068853e57 b/forge/src/generated/.cache/0533c97ce5395f38717098a1ca49d72068853e57 deleted file mode 100644 index 5cbd8e858..000000000 --- a/forge/src/generated/.cache/0533c97ce5395f38717098a1ca49d72068853e57 +++ /dev/null @@ -1,2 +0,0 @@ -// 1.20.2 2023-12-08T14:05:02.102456 Tags for minecraft:entity_type mod id tardis_refined -9c7849fe44abd1038764fb53dff5f0c10322170c data/carryon/tags/entity_types/entity_blacklist.json diff --git a/forge/src/generated/.cache/07cdbcdc6e4f4553ae9ccc48cd1ff0a5be53a01c b/forge/src/generated/.cache/07cdbcdc6e4f4553ae9ccc48cd1ff0a5be53a01c deleted file mode 100644 index 7bbd05619..000000000 --- a/forge/src/generated/.cache/07cdbcdc6e4f4553ae9ccc48cd1ff0a5be53a01c +++ /dev/null @@ -1,2 +0,0 @@ -// 1.20.2 2023-12-08T14:05:02.0970735 Particles -c035f460beb41b955ecff7b545f92f0ac78c4663 assets/tardis_refined/particles/gallifrey.json diff --git a/forge/src/generated/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 b/forge/src/generated/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 deleted file mode 100644 index 37e97fe7d..000000000 --- a/forge/src/generated/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 +++ /dev/null @@ -1,4 +0,0 @@ -// 1.20.2 2023-12-08T14:05:02.1000767 Registries -d9483eb301ed4a4fd91b5f042909997a1bc3085c data/tardis_refined/neoforge/biome_modifier/tardis_root_cluster.json -b3353cf92cff570f9c4ac799f23045aa94b34968 data/tardis_refined/worldgen/configured_feature/tardis_root_cluster.json -0694927b6b3eb72bf137510f370a1d6133dc7795 data/tardis_refined/worldgen/placed_feature/tardis_root_cluster.json diff --git a/forge/src/generated/.cache/1605092b5c78c792538553a3583c4f114827efd2 b/forge/src/generated/.cache/1605092b5c78c792538553a3583c4f114827efd2 deleted file mode 100644 index 244909b88..000000000 --- a/forge/src/generated/.cache/1605092b5c78c792538553a3583c4f114827efd2 +++ /dev/null @@ -1,18 +0,0 @@ -// 1.20.2 2023-12-08T14:05:02.1000767 Item Models: tardis_refined -ce4f5ab23d604af7306a4aa1c128e8e308263554 assets/tardis_refined/models/item/air_lock_generator.json -961ce6420a6ff1952ba49ee162d130a3e8134815 assets/tardis_refined/models/item/ars_egg.json -436ee865aed07b4b30a5fb30ffd3c96ce04bd050 assets/tardis_refined/models/item/ars_leaves.json -f2290296596e42692e3c0ecfec473e7542aa48fc assets/tardis_refined/models/item/ars_leaves_fence.json -4004392fa2d43cfbea8150aec67c92230d8cee7a assets/tardis_refined/models/item/ars_leaves_fence_inventory.json -2749267654975a35cf5b20bc22c1faa9efc1cd52 assets/tardis_refined/models/item/ars_leaves_slab.json -0d6a0b165d3da445d389d1dec01a25f36e371b29 assets/tardis_refined/models/item/bulk_head_door.json -69fa0a4ee3775580367f0932ed9dfbc304ceb74f assets/tardis_refined/models/item/flight_detector.json -9603c27b39b619b3ae309e4922408da574fb825b assets/tardis_refined/models/item/growth_stone.json -e84c82ff2261eb425d01af1d8955b453030f1e3d assets/tardis_refined/models/item/hardened_growth_stone.json -e443b939c06c12bb2a0a7aa6ecf3b647fc3d2e3d assets/tardis_refined/models/item/landing_pad.json -7a891c1445d34b88904a4f7478b34483528ea911 assets/tardis_refined/models/item/root_shell.json -0c8a9b32be3b551d8adfb9111b88dd8b9bf00d59 assets/tardis_refined/models/item/root_shell_door.json -9651f7a379b48d60e4b39eefabf120ddd66ddde4 assets/tardis_refined/models/item/tardis_console.json -4a9a293a5aede6107d0f2996d8ab74ecd0079ed9 assets/tardis_refined/models/item/tardis_door.json -d184035b2f50a9994776a7f1b78e671ea3c5c32f assets/tardis_refined/models/item/tardis_shell.json -5617f3afe1436109b041856c874dc4379a379a32 assets/tardis_refined/models/item/terraformer.json diff --git a/forge/src/generated/.cache/3fcdc37ad136e2a9e4d043224d2db5bc1dee2659 b/forge/src/generated/.cache/3fcdc37ad136e2a9e4d043224d2db5bc1dee2659 deleted file mode 100644 index 3a249707f..000000000 --- a/forge/src/generated/.cache/3fcdc37ad136e2a9e4d043224d2db5bc1dee2659 +++ /dev/null @@ -1,15 +0,0 @@ -// 1.20.2 2023-12-08T13:22:25.9285182 Shell Patterns -24c3b07d5ebcb921f1a4014c0c7b7ce1db66d291 data/tardis_refined/tardis_refined/patterns/shell/big_ben.json -c023593375b56bf2ba50df33b355f0f99d062227 data/tardis_refined/tardis_refined/patterns/shell/briefcase.json -cd36b3fb97a42bfdca53b2a4e7c10facbd3e534d data/tardis_refined/tardis_refined/patterns/shell/drifter.json -193b3b2f3ff31321cec1b5286a80fb9f876e51df data/tardis_refined/tardis_refined/patterns/shell/factory.json -117bb1fc61803d65841238ac72d39b2183eefb94 data/tardis_refined/tardis_refined/patterns/shell/groening.json -658cff3bbea9976811061fa653fd85d14700687d data/tardis_refined/tardis_refined/patterns/shell/growth.json -a033e392d5ce58b74e9dd2561b2a3012b49525d2 data/tardis_refined/tardis_refined/patterns/shell/mystic.json -9636dacb9cae8d3d893a7f9bfca195631397973b data/tardis_refined/tardis_refined/patterns/shell/nuka.json -bb9b537f1b29c2414d9284828094163a425bcd70 data/tardis_refined/tardis_refined/patterns/shell/pagoda.json -9acf33da121ce7c83457b3d85c0a92d5ba511efd data/tardis_refined/tardis_refined/patterns/shell/phone_booth.json -67d26906e3655e7f9f08a906b56b225f71248726 data/tardis_refined/tardis_refined/patterns/shell/police_box.json -ba4b42fe3655f24a4263e59b614b0644229730a8 data/tardis_refined/tardis_refined/patterns/shell/portaloo.json -fdc997718013ffac35fe5192e0fbf32b60323720 data/tardis_refined/tardis_refined/patterns/shell/present.json -23066a16183502e0751e16f152356bde64f17045 data/tardis_refined/tardis_refined/patterns/shell/vending.json diff --git a/forge/src/generated/.cache/735031f3addf80804addae5e3f53249900116f1e b/forge/src/generated/.cache/735031f3addf80804addae5e3f53249900116f1e deleted file mode 100644 index c203321a8..000000000 --- a/forge/src/generated/.cache/735031f3addf80804addae5e3f53249900116f1e +++ /dev/null @@ -1,2 +0,0 @@ -// 1.20.2 2023-12-08T13:23:39.187254 Sound Definitions -c2d5cde702b331f487e487fa5a7eb27d62ec6264 assets/tardis_refined/sounds.json diff --git a/forge/src/generated/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/forge/src/generated/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e deleted file mode 100644 index 9b5cf8d2e..000000000 --- a/forge/src/generated/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ /dev/null @@ -1,19 +0,0 @@ -// 1.20.2 2023-12-08T14:05:02.0990759 Recipes -8719cd0f4220434f5c4e19b250d9baf0b7962d26 data/tardis_refined/advancements/recipes/misc/bulk_head_door.json -8269c68dc027027860af7f3e0ffac15e933a3fe7 data/tardis_refined/advancements/recipes/misc/console_configuration.json -d920b09dc43fa8d136406e6e132abfb8f6edcacc data/tardis_refined/advancements/recipes/misc/drill.json -550c3b58da6896b2547f1285e429c9ecd5c9f3c3 data/tardis_refined/advancements/recipes/misc/flight_detector.json -3517c6c5d953a58d80a1fb7b27b107811b494061 data/tardis_refined/advancements/recipes/misc/landing_pad.json -c4dd71075e63198517197c864403feb215e88940 data/tardis_refined/advancements/recipes/misc/pattern_manipulator.json -ab9e449cb689e170d95e6e715310a87d6ab4a3cb data/tardis_refined/advancements/recipes/misc/tardis_door.json -c4dd25640e0a886e45c91898700a2c35fdb92074 data/tardis_refined/advancements/recipes/misc/tardis_key.json -7dee5b3df1d2cbe4c056edfcb5aab5054102a4ac data/tardis_refined/advancements/recipes/misc/terraformer.json -d400b9f20cbd1dc0bc11a850635fa28b966ff7d5 data/tardis_refined/recipes/bulk_head_door.json -4666b8617b9a065d2c926af0f7fb6821ed0c1b20 data/tardis_refined/recipes/console_configuration.json -d1e2989b203305af597e11a55886a4758c149e8d data/tardis_refined/recipes/drill.json -aeff2b97cf7999f3ce94958e601a9de47a063e64 data/tardis_refined/recipes/flight_detector.json -abf11434010283396343e74ef6aec49e1c020d50 data/tardis_refined/recipes/landing_pad.json -35b8e0b89942aac1d2f8d6f5d967e521f7660d95 data/tardis_refined/recipes/pattern_manipulator.json -ea79ad37e912cd79d17a666c0bc06646963f0109 data/tardis_refined/recipes/tardis_door.json -d78e7ff5d11dec76ca7b4ed68c8380fd4f69d917 data/tardis_refined/recipes/tardis_key.json -1ea9085cfa97ca1288b71b9c1bd9e0977d60d7ec data/tardis_refined/recipes/terraformer.json diff --git a/forge/src/generated/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/forge/src/generated/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 deleted file mode 100644 index 7fa7a7bf3..000000000 --- a/forge/src/generated/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ /dev/null @@ -1,2 +0,0 @@ -// 1.20.2 2023-12-08T13:23:39.1857505 Languages: en_us -2dd6aa5d96fcf587687695d4a1c75d6affe4953f assets/tardis_refined/lang/en_us.json diff --git a/forge/src/generated/.cache/c8f6ff9084a307ea1af670e22b8331798da837dd b/forge/src/generated/.cache/c8f6ff9084a307ea1af670e22b8331798da837dd deleted file mode 100644 index c4d972b3d..000000000 --- a/forge/src/generated/.cache/c8f6ff9084a307ea1af670e22b8331798da837dd +++ /dev/null @@ -1,10 +0,0 @@ -// 1.20.2 2023-12-08T13:22:25.9255147 Desktops -8e290467b025585e036665aeea036bf64ce4d426 data/tardis_refined/tardis_refined/desktops/copper.json -0cb37ac84ef411b9f87e44982707c19b2d472ea4 data/tardis_refined/tardis_refined/desktops/coral.json -c5455603c085cc04066d5f1e978cfebb9e49c77f data/tardis_refined/tardis_refined/desktops/crystal.json -caa01a065c70723320877c993617d0baf83fdb3b data/tardis_refined/tardis_refined/desktops/factory.json -e57d3827b830650835799d05abebbb1e74ca4057 data/tardis_refined/tardis_refined/desktops/future_nostalgia.json -12f560415238878ffcfb90cf8a4140de4a0814c7 data/tardis_refined/tardis_refined/desktops/nuka.json -69d8853b7525df9c3a5cd116f5d2cb945b096ef3 data/tardis_refined/tardis_refined/desktops/toyota.json -87d3c88c292d764642f3799405284d65dacd5e9e data/tardis_refined/tardis_refined/desktops/victorian.json -12a0c0450520bdf8619b12ee5404962ca43152e5 data/tardis_refined/tardis_refined/desktops/violet_eye.json diff --git a/forge/src/generated/.cache/e7bc600dadd489865d6fbbde8c1c01bd136d8060 b/forge/src/generated/.cache/e7bc600dadd489865d6fbbde8c1c01bd136d8060 deleted file mode 100644 index 6465cd287..000000000 --- a/forge/src/generated/.cache/e7bc600dadd489865d6fbbde8c1c01bd136d8060 +++ /dev/null @@ -1,3 +0,0 @@ -// 1.20.2 2023-12-08T14:05:02.098075 Tags for minecraft:worldgen/biome mod id tardis_refined -daa082500631e40fc8cc0cbb30f66a6f937a9471 data/tardis_refined/tags/worldgen/biome/collections/is_mountain_or_ocean.json -545a86cfeda00b9ec3a93f53755d7d212e4f18b2 data/tardis_refined/tags/worldgen/biome/has_structure/tardis_root_cluster.json diff --git a/forge/src/generated/.cache/f681b33583ec37ab445ac361e38402e069dc01f6 b/forge/src/generated/.cache/f681b33583ec37ab445ac361e38402e069dc01f6 deleted file mode 100644 index f8ec88552..000000000 --- a/forge/src/generated/.cache/f681b33583ec37ab445ac361e38402e069dc01f6 +++ /dev/null @@ -1,8 +0,0 @@ -// 1.20.2 2023-12-08T14:05:02.1014553 Tags for minecraft:block mod id tardis_refined -0e47996afffcdda5ea92f1f1147ef01691440a6e data/minecraft/tags/blocks/dragon_immune.json -870aa664161fb6f022473fecdd8e1e1105b476ac data/minecraft/tags/blocks/fences.json -1be1c1975b768bb05f7b50c206454433f0d615d1 data/minecraft/tags/blocks/leaves.json -cfeef3aee9d9815bc6a51c4d46cd709c1e896e26 data/minecraft/tags/blocks/mineable/pickaxe.json -b1417b641a7d7ea7e72a0d1f5276749a6995e569 data/minecraft/tags/blocks/needs_iron_tool.json -8615de07fd2fa07b903c95f462bedde3df5f96f5 data/minecraft/tags/blocks/slabs.json -0e47996afffcdda5ea92f1f1147ef01691440a6e data/minecraft/tags/blocks/wither_immune.json diff --git a/forge/src/generated/.cache/fb1d1450e45f24c16ff9548196e396cd1616c0aa b/forge/src/generated/.cache/fb1d1450e45f24c16ff9548196e396cd1616c0aa deleted file mode 100644 index 48d4970e6..000000000 --- a/forge/src/generated/.cache/fb1d1450e45f24c16ff9548196e396cd1616c0aa +++ /dev/null @@ -1,10 +0,0 @@ -// 1.20.2 2023-12-08T13:22:25.9275175 Console Patterns -2f482aa36f9bc5c30c7906230e20e11bb5cdb3c6 data/tardis_refined/tardis_refined/patterns/console/copper.json -80cef81ade3d59acf7c629be03ca07ceb29b4e45 data/tardis_refined/tardis_refined/patterns/console/coral.json -51ac36a16e84686df192a41a2c1dc966e266c836 data/tardis_refined/tardis_refined/patterns/console/crystal.json -48a1bed0f7c2bf7cd844873b4eb4e11e4166bd99 data/tardis_refined/tardis_refined/patterns/console/factory.json -64fc65e5823a648314b73165d693eab62a85208c data/tardis_refined/tardis_refined/patterns/console/initiative.json -0bd91ac43a05c679ec7386cccaa85956f785625a data/tardis_refined/tardis_refined/patterns/console/myst.json -a8045d394dd1b80fcaa677ebb72e05dc33b18bf5 data/tardis_refined/tardis_refined/patterns/console/nuka.json -0e55fb4cab79ccaa85601c19661b33ab5557b3e9 data/tardis_refined/tardis_refined/patterns/console/toyota.json -c694be5c89584cf128d98c962e0f739b7098fe5a data/tardis_refined/tardis_refined/patterns/console/victorian.json diff --git a/forge/src/generated/resources/.cache/0533c97ce5395f38717098a1ca49d72068853e57 b/forge/src/generated/resources/.cache/0533c97ce5395f38717098a1ca49d72068853e57 index 5cbd8e858..cdfa629ac 100644 --- a/forge/src/generated/resources/.cache/0533c97ce5395f38717098a1ca49d72068853e57 +++ b/forge/src/generated/resources/.cache/0533c97ce5395f38717098a1ca49d72068853e57 @@ -1,2 +1,2 @@ -// 1.20.2 2023-12-08T14:05:02.102456 Tags for minecraft:entity_type mod id tardis_refined +// 1.20.2 2023-12-09T00:48:51.7779441 Tags for minecraft:entity_type mod id tardis_refined 9c7849fe44abd1038764fb53dff5f0c10322170c data/carryon/tags/entity_types/entity_blacklist.json diff --git a/forge/src/generated/resources/.cache/07cdbcdc6e4f4553ae9ccc48cd1ff0a5be53a01c b/forge/src/generated/resources/.cache/07cdbcdc6e4f4553ae9ccc48cd1ff0a5be53a01c index 7bbd05619..f2f2a6325 100644 --- a/forge/src/generated/resources/.cache/07cdbcdc6e4f4553ae9ccc48cd1ff0a5be53a01c +++ b/forge/src/generated/resources/.cache/07cdbcdc6e4f4553ae9ccc48cd1ff0a5be53a01c @@ -1,2 +1,3 @@ -// 1.20.2 2023-12-08T14:05:02.0970735 Particles +// 1.20.2 2023-12-13T15:41:19.7516606 Particles +8cb6f3514bfe24e046149cf8e8442f7ed5315b8f assets/tardis_refined/particles/ars_leaves.json c035f460beb41b955ecff7b545f92f0ac78c4663 assets/tardis_refined/particles/gallifrey.json diff --git a/forge/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 b/forge/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 index 37e97fe7d..57189c9bd 100644 --- a/forge/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 +++ b/forge/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 @@ -1,4 +1,4 @@ -// 1.20.2 2023-12-08T14:05:02.1000767 Registries +// 1.20.2 2023-12-09T00:48:51.7754985 Registries d9483eb301ed4a4fd91b5f042909997a1bc3085c data/tardis_refined/neoforge/biome_modifier/tardis_root_cluster.json b3353cf92cff570f9c4ac799f23045aa94b34968 data/tardis_refined/worldgen/configured_feature/tardis_root_cluster.json 0694927b6b3eb72bf137510f370a1d6133dc7795 data/tardis_refined/worldgen/placed_feature/tardis_root_cluster.json diff --git a/forge/src/generated/resources/.cache/1605092b5c78c792538553a3583c4f114827efd2 b/forge/src/generated/resources/.cache/1605092b5c78c792538553a3583c4f114827efd2 index 244909b88..99588f5b0 100644 --- a/forge/src/generated/resources/.cache/1605092b5c78c792538553a3583c4f114827efd2 +++ b/forge/src/generated/resources/.cache/1605092b5c78c792538553a3583c4f114827efd2 @@ -1,4 +1,4 @@ -// 1.20.2 2023-12-08T14:05:02.1000767 Item Models: tardis_refined +// 1.20.2 2023-12-09T00:48:51.7769417 Item Models: tardis_refined ce4f5ab23d604af7306a4aa1c128e8e308263554 assets/tardis_refined/models/item/air_lock_generator.json 961ce6420a6ff1952ba49ee162d130a3e8134815 assets/tardis_refined/models/item/ars_egg.json 436ee865aed07b4b30a5fb30ffd3c96ce04bd050 assets/tardis_refined/models/item/ars_leaves.json diff --git a/forge/src/generated/resources/.cache/3fcdc37ad136e2a9e4d043224d2db5bc1dee2659 b/forge/src/generated/resources/.cache/3fcdc37ad136e2a9e4d043224d2db5bc1dee2659 index 76e2783b7..306031f8f 100644 --- a/forge/src/generated/resources/.cache/3fcdc37ad136e2a9e4d043224d2db5bc1dee2659 +++ b/forge/src/generated/resources/.cache/3fcdc37ad136e2a9e4d043224d2db5bc1dee2659 @@ -1,15 +1,18 @@ -// 1.20.2 2023-12-08T14:05:02.0970735 Shell Patterns +// 1.20.2 2023-12-18T17:52:51.3188952 Shell Patterns 24c3b07d5ebcb921f1a4014c0c7b7ce1db66d291 data/tardis_refined/tardis_refined/patterns/shell/big_ben.json c023593375b56bf2ba50df33b355f0f99d062227 data/tardis_refined/tardis_refined/patterns/shell/briefcase.json +0c683f48298e8e97709fa8f659a659440e35dc61 data/tardis_refined/tardis_refined/patterns/shell/castle.json cd36b3fb97a42bfdca53b2a4e7c10facbd3e534d data/tardis_refined/tardis_refined/patterns/shell/drifter.json 193b3b2f3ff31321cec1b5286a80fb9f876e51df data/tardis_refined/tardis_refined/patterns/shell/factory.json 117bb1fc61803d65841238ac72d39b2183eefb94 data/tardis_refined/tardis_refined/patterns/shell/groening.json 658cff3bbea9976811061fa653fd85d14700687d data/tardis_refined/tardis_refined/patterns/shell/growth.json +140b9e06b02281adb059d98166534bc8651ed90b data/tardis_refined/tardis_refined/patterns/shell/hieroglyph.json +52f7594b699059050be5feb39544050dc5fb0735 data/tardis_refined/tardis_refined/patterns/shell/lift.json a033e392d5ce58b74e9dd2561b2a3012b49525d2 data/tardis_refined/tardis_refined/patterns/shell/mystic.json 9636dacb9cae8d3d893a7f9bfca195631397973b data/tardis_refined/tardis_refined/patterns/shell/nuka.json bb9b537f1b29c2414d9284828094163a425bcd70 data/tardis_refined/tardis_refined/patterns/shell/pagoda.json 9acf33da121ce7c83457b3d85c0a92d5ba511efd data/tardis_refined/tardis_refined/patterns/shell/phone_booth.json -67d26906e3655e7f9f08a906b56b225f71248726 data/tardis_refined/tardis_refined/patterns/shell/police_box.json +d137e095ef4d32650e62dc8cba9a8abdb6634ef2 data/tardis_refined/tardis_refined/patterns/shell/police_box.json ba4b42fe3655f24a4263e59b614b0644229730a8 data/tardis_refined/tardis_refined/patterns/shell/portaloo.json fdc997718013ffac35fe5192e0fbf32b60323720 data/tardis_refined/tardis_refined/patterns/shell/present.json 23066a16183502e0751e16f152356bde64f17045 data/tardis_refined/tardis_refined/patterns/shell/vending.json diff --git a/forge/src/generated/resources/.cache/4dd1d6c274bb02a1ca04c043cc3e81adc6abd533 b/forge/src/generated/resources/.cache/4dd1d6c274bb02a1ca04c043cc3e81adc6abd533 index ce11fc1f9..e9c05d4a7 100644 --- a/forge/src/generated/resources/.cache/4dd1d6c274bb02a1ca04c043cc3e81adc6abd533 +++ b/forge/src/generated/resources/.cache/4dd1d6c274bb02a1ca04c043cc3e81adc6abd533 @@ -1,6 +1,6 @@ -// 1.20.2 2023-12-08T15:41:00.231863 Block States: tardis_refined +// 1.20.2 2023-12-13T15:41:19.7541757 Block States: tardis_refined b8a00271e10524036c2c321dc80eb8a392301f6c assets/tardis_refined/blockstates/air_lock_generator.json -29b0a883484c5efee10dee66ac65aa1072154ee6 assets/tardis_refined/blockstates/ars_egg.json +1ec70f6d41be20660fe5a60a94426a85150e5e48 assets/tardis_refined/blockstates/ars_egg.json 734a9a861a8cf9ce47f1daee3e848263e9810457 assets/tardis_refined/blockstates/ars_leaves.json ead863537dc530acfb593413b41dc0b0e2ae2bc8 assets/tardis_refined/blockstates/ars_leaves_fence.json e065aa83011079e577cce02028d390b3a01d4e07 assets/tardis_refined/blockstates/ars_leaves_slab.json diff --git a/forge/src/generated/resources/.cache/735031f3addf80804addae5e3f53249900116f1e b/forge/src/generated/resources/.cache/735031f3addf80804addae5e3f53249900116f1e index ec3ca61f9..015bf9536 100644 --- a/forge/src/generated/resources/.cache/735031f3addf80804addae5e3f53249900116f1e +++ b/forge/src/generated/resources/.cache/735031f3addf80804addae5e3f53249900116f1e @@ -1,2 +1,2 @@ -// 1.20.2 2023-12-08T14:05:02.1034582 Sound Definitions -c2d5cde702b331f487e487fa5a7eb27d62ec6264 assets/tardis_refined/sounds.json +// 1.20.2 2023-12-15T23:31:01.2684 Sound Definitions +af46e2a431d190adcb7142234979fa721ca75855 assets/tardis_refined/sounds.json diff --git a/forge/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/forge/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index 9b5cf8d2e..01e355213 100644 --- a/forge/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/forge/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,4 +1,4 @@ -// 1.20.2 2023-12-08T14:05:02.0990759 Recipes +// 1.20.2 2023-12-09T00:48:51.7754985 Recipes 8719cd0f4220434f5c4e19b250d9baf0b7962d26 data/tardis_refined/advancements/recipes/misc/bulk_head_door.json 8269c68dc027027860af7f3e0ffac15e933a3fe7 data/tardis_refined/advancements/recipes/misc/console_configuration.json d920b09dc43fa8d136406e6e132abfb8f6edcacc data/tardis_refined/advancements/recipes/misc/drill.json diff --git a/forge/src/generated/resources/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/forge/src/generated/resources/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 604a37761..49f17dc43 100644 --- a/forge/src/generated/resources/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/forge/src/generated/resources/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.2 2023-12-10T00:25:55.4954903 Languages: en_us -0589363d22ad9b5d62c9fe60277b6cdc760ad086 assets/tardis_refined/lang/en_us.json +// 1.20.2 2023-12-13T17:23:49.2085353 Languages: en_us +918df6357a51f37e6384a7a2a029249d89d8b970 assets/tardis_refined/lang/en_us.json diff --git a/forge/src/generated/resources/.cache/c8f6ff9084a307ea1af670e22b8331798da837dd b/forge/src/generated/resources/.cache/c8f6ff9084a307ea1af670e22b8331798da837dd index 9cf220d7d..d7aa2bfd3 100644 --- a/forge/src/generated/resources/.cache/c8f6ff9084a307ea1af670e22b8331798da837dd +++ b/forge/src/generated/resources/.cache/c8f6ff9084a307ea1af670e22b8331798da837dd @@ -1,10 +1,11 @@ -// 1.20.2 2023-12-08T14:05:02.0948835 Desktops +// 1.20.2 2023-12-16T01:02:27.210493 Desktops 8e290467b025585e036665aeea036bf64ce4d426 data/tardis_refined/tardis_refined/desktops/copper.json 0cb37ac84ef411b9f87e44982707c19b2d472ea4 data/tardis_refined/tardis_refined/desktops/coral.json c5455603c085cc04066d5f1e978cfebb9e49c77f data/tardis_refined/tardis_refined/desktops/crystal.json caa01a065c70723320877c993617d0baf83fdb3b data/tardis_refined/tardis_refined/desktops/factory.json e57d3827b830650835799d05abebbb1e74ca4057 data/tardis_refined/tardis_refined/desktops/future_nostalgia.json 12f560415238878ffcfb90cf8a4140de4a0814c7 data/tardis_refined/tardis_refined/desktops/nuka.json +d625590d682ac9a7d590d54f0ac39bc124d12170 data/tardis_refined/tardis_refined/desktops/shalka.json 69d8853b7525df9c3a5cd116f5d2cb945b096ef3 data/tardis_refined/tardis_refined/desktops/toyota.json 87d3c88c292d764642f3799405284d65dacd5e9e data/tardis_refined/tardis_refined/desktops/victorian.json 12a0c0450520bdf8619b12ee5404962ca43152e5 data/tardis_refined/tardis_refined/desktops/violet_eye.json diff --git a/forge/src/generated/resources/.cache/e7bc600dadd489865d6fbbde8c1c01bd136d8060 b/forge/src/generated/resources/.cache/e7bc600dadd489865d6fbbde8c1c01bd136d8060 index 6465cd287..a580b1d6b 100644 --- a/forge/src/generated/resources/.cache/e7bc600dadd489865d6fbbde8c1c01bd136d8060 +++ b/forge/src/generated/resources/.cache/e7bc600dadd489865d6fbbde8c1c01bd136d8060 @@ -1,3 +1,3 @@ -// 1.20.2 2023-12-08T14:05:02.098075 Tags for minecraft:worldgen/biome mod id tardis_refined +// 1.20.2 2023-12-09T00:48:51.7744808 Tags for minecraft:worldgen/biome mod id tardis_refined daa082500631e40fc8cc0cbb30f66a6f937a9471 data/tardis_refined/tags/worldgen/biome/collections/is_mountain_or_ocean.json 545a86cfeda00b9ec3a93f53755d7d212e4f18b2 data/tardis_refined/tags/worldgen/biome/has_structure/tardis_root_cluster.json diff --git a/forge/src/generated/resources/.cache/f681b33583ec37ab445ac361e38402e069dc01f6 b/forge/src/generated/resources/.cache/f681b33583ec37ab445ac361e38402e069dc01f6 index f8ec88552..ebde07062 100644 --- a/forge/src/generated/resources/.cache/f681b33583ec37ab445ac361e38402e069dc01f6 +++ b/forge/src/generated/resources/.cache/f681b33583ec37ab445ac361e38402e069dc01f6 @@ -1,4 +1,4 @@ -// 1.20.2 2023-12-08T14:05:02.1014553 Tags for minecraft:block mod id tardis_refined +// 1.20.2 2023-12-09T00:48:51.7769417 Tags for minecraft:block mod id tardis_refined 0e47996afffcdda5ea92f1f1147ef01691440a6e data/minecraft/tags/blocks/dragon_immune.json 870aa664161fb6f022473fecdd8e1e1105b476ac data/minecraft/tags/blocks/fences.json 1be1c1975b768bb05f7b50c206454433f0d615d1 data/minecraft/tags/blocks/leaves.json diff --git a/forge/src/generated/resources/.cache/fb1d1450e45f24c16ff9548196e396cd1616c0aa b/forge/src/generated/resources/.cache/fb1d1450e45f24c16ff9548196e396cd1616c0aa index 93a614135..49527c5d5 100644 --- a/forge/src/generated/resources/.cache/fb1d1450e45f24c16ff9548196e396cd1616c0aa +++ b/forge/src/generated/resources/.cache/fb1d1450e45f24c16ff9548196e396cd1616c0aa @@ -1,4 +1,4 @@ -// 1.20.2 2023-12-08T14:05:02.0960733 Console Patterns +// 1.20.2 2023-12-13T11:27:51.6000874 Console Patterns 2f482aa36f9bc5c30c7906230e20e11bb5cdb3c6 data/tardis_refined/tardis_refined/patterns/console/copper.json 80cef81ade3d59acf7c629be03ca07ceb29b4e45 data/tardis_refined/tardis_refined/patterns/console/coral.json 51ac36a16e84686df192a41a2c1dc966e266c836 data/tardis_refined/tardis_refined/patterns/console/crystal.json @@ -6,5 +6,5 @@ 64fc65e5823a648314b73165d693eab62a85208c data/tardis_refined/tardis_refined/patterns/console/initiative.json 0bd91ac43a05c679ec7386cccaa85956f785625a data/tardis_refined/tardis_refined/patterns/console/myst.json a8045d394dd1b80fcaa677ebb72e05dc33b18bf5 data/tardis_refined/tardis_refined/patterns/console/nuka.json -0e55fb4cab79ccaa85601c19661b33ab5557b3e9 data/tardis_refined/tardis_refined/patterns/console/toyota.json +42aebec6b374dd0534a5adfeb5f3af4a17291239 data/tardis_refined/tardis_refined/patterns/console/toyota.json c694be5c89584cf128d98c962e0f739b7098fe5a data/tardis_refined/tardis_refined/patterns/console/victorian.json diff --git a/forge/src/generated/resources/assets/tardis_refined/blockstates/ars_egg.json b/forge/src/generated/resources/assets/tardis_refined/blockstates/ars_egg.json index ef54d56a5..6360a9aeb 100644 --- a/forge/src/generated/resources/assets/tardis_refined/blockstates/ars_egg.json +++ b/forge/src/generated/resources/assets/tardis_refined/blockstates/ars_egg.json @@ -1,6 +1,27 @@ { "variants": { - "": { + "alive=false,hanging=false,waterlogged=false": { + "model": "tardis_refined:block/terraformer" + }, + "alive=false,hanging=false,waterlogged=true": { + "model": "tardis_refined:block/terraformer" + }, + "alive=false,hanging=true,waterlogged=false": { + "model": "tardis_refined:block/terraformer" + }, + "alive=false,hanging=true,waterlogged=true": { + "model": "tardis_refined:block/terraformer" + }, + "alive=true,hanging=false,waterlogged=false": { + "model": "tardis_refined:block/terraformer" + }, + "alive=true,hanging=false,waterlogged=true": { + "model": "tardis_refined:block/terraformer" + }, + "alive=true,hanging=true,waterlogged=false": { + "model": "tardis_refined:block/terraformer" + }, + "alive=true,hanging=true,waterlogged=true": { "model": "tardis_refined:block/terraformer" } } diff --git a/forge/src/generated/resources/assets/tardis_refined/lang/en_us.json b/forge/src/generated/resources/assets/tardis_refined/lang/en_us.json index 8b86a7b29..92cdca4c2 100644 --- a/forge/src/generated/resources/assets/tardis_refined/lang/en_us.json +++ b/forge/src/generated/resources/assets/tardis_refined/lang/en_us.json @@ -52,10 +52,13 @@ "message.tardis_refined.selected": "Selected: %s", "shell.tardis_refined.big_ben": "Big Ben", "shell.tardis_refined.briefcase": "Briefcase", + "shell.tardis_refined.castle": "Castle", "shell.tardis_refined.drifter": "Drifter", "shell.tardis_refined.factory": "Factory", "shell.tardis_refined.groening": "Groening", "shell.tardis_refined.growth": "Growth", + "shell.tardis_refined.hieroglyph": "Hieroglyph", + "shell.tardis_refined.lift": "Lift", "shell.tardis_refined.mystic": "Mystic", "shell.tardis_refined.nuka": "Nuka", "shell.tardis_refined.pagoda": "Pagoda", @@ -64,6 +67,8 @@ "shell.tardis_refined.portaloo": "Portaloo", "shell.tardis_refined.present": "Present", "shell.tardis_refined.vending": "Vending Machine", + "sound.ars_hum.subtitle": "ARS Tree Hum", + "sound.destination_ding.subtitle": "TARDIS reaches destination", "sound.pattern_manipulator.subtitle": "Pattern Manipulator activates", "sound.static.subtitle": "Screen display static", "sound.tardis_crash_land.subtitle": "TARDIS crash lands", @@ -106,11 +111,11 @@ "upgrade.tardis_refined.dimension_travel": "Inter-Dimensional Travel", "upgrade.tardis_refined.dimension_travel.description": "Allows the TARDIS to move between dimensions", "upgrade.tardis_refined.explorer": "Explorer I", - "upgrade.tardis_refined.explorer.description": "1000k Increment", + "upgrade.tardis_refined.explorer.description": "x1000 Increment", "upgrade.tardis_refined.explorer_ii": "Explorer II", - "upgrade.tardis_refined.explorer_ii.description": "2500k Increment", + "upgrade.tardis_refined.explorer_ii.description": "x2500 Increment", "upgrade.tardis_refined.explorer_iii": "Explorer III", - "upgrade.tardis_refined.explorer_iii.description": "5000k Increment", + "upgrade.tardis_refined.explorer_iii.description": "x5000 Increment", "upgrade.tardis_refined.hostile_displacement": "Hostile Action Displacement", "upgrade.tardis_refined.hostile_displacement.description": "Enables the displacement of the TARDIS when attacked", "upgrade.tardis_refined.inside_architecture": "Desktop Reconfiguration", diff --git a/forge/src/generated/resources/assets/tardis_refined/particles/ars_leaves.json b/forge/src/generated/resources/assets/tardis_refined/particles/ars_leaves.json new file mode 100644 index 000000000..ca698ca44 --- /dev/null +++ b/forge/src/generated/resources/assets/tardis_refined/particles/ars_leaves.json @@ -0,0 +1,5 @@ +{ + "textures": [ + "minecraft:generic_0" + ] +} \ No newline at end of file diff --git a/forge/src/generated/resources/assets/tardis_refined/sounds.json b/forge/src/generated/resources/assets/tardis_refined/sounds.json index 9c7b292da..cda29666e 100644 --- a/forge/src/generated/resources/assets/tardis_refined/sounds.json +++ b/forge/src/generated/resources/assets/tardis_refined/sounds.json @@ -1,4 +1,10 @@ { + "ars_hum": { + "sounds": [ + "tardis_refined:tardis/ars/ars_hum" + ], + "subtitle": "sound.ars_hum.subtitle" + }, "destination_ding": { "sounds": [ "tardis_refined:tardis/destination_ding" @@ -47,6 +53,12 @@ ], "subtitle": "sound.tardis_takeoff.subtitle" }, + "test_hum": { + "sounds": [ + "tardis_refined:tardis/test_hum" + ], + "subtitle": "sound.test_hum.subtitle" + }, "time_blast": { "sounds": [ "tardis_refined:tardis/time_blast" diff --git a/forge/src/generated/resources/data/tardis_refined/tardis_refined/desktops/shalka.json b/forge/src/generated/resources/data/tardis_refined/tardis_refined/desktops/shalka.json new file mode 100644 index 000000000..a0e0369ec --- /dev/null +++ b/forge/src/generated/resources/data/tardis_refined/tardis_refined/desktops/shalka.json @@ -0,0 +1,5 @@ +{ + "id": "tardis_refined:shalka", + "name_component": "{\"color\":\"gold\",\"text\":\"Shalka\"}", + "structure": "tardis_refined:desktop/shalka" +} \ No newline at end of file diff --git a/forge/src/generated/resources/data/tardis_refined/tardis_refined/patterns/console/toyota.json b/forge/src/generated/resources/data/tardis_refined/tardis_refined/patterns/console/toyota.json index 046015247..8b5d216a3 100644 --- a/forge/src/generated/resources/data/tardis_refined/tardis_refined/patterns/console/toyota.json +++ b/forge/src/generated/resources/data/tardis_refined/tardis_refined/patterns/console/toyota.json @@ -13,7 +13,7 @@ "name_component": "{\"color\":\"yellow\",\"text\":\"Violet\"}", "texture_definition": { "emissive": true, - "texture": "tardis_refined:textures/blockentity/console/toyota/toyota_texture_purple.png" + "texture": "tardis_refined:textures/blockentity/console/toyota/toyota_console_purple.png" } }, { @@ -21,7 +21,15 @@ "name_component": "{\"color\":\"yellow\",\"text\":\"Blue\"}", "texture_definition": { "emissive": true, - "texture": "tardis_refined:textures/blockentity/console/toyota/toyota_texture_blue.png" + "texture": "tardis_refined:textures/blockentity/console/toyota/toyota_console_blue.png" + } + }, + { + "id": "tardis_refined:skulk", + "name_component": "{\"color\":\"yellow\",\"text\":\"Skulk\"}", + "texture_definition": { + "emissive": false, + "texture": "tardis_refined:textures/blockentity/console/toyota/toyota_console_skulk.png" } } ] diff --git a/common/src/main/resources/data/tardis_refined/tardis_refined/patterns/shell/growth.json b/forge/src/generated/resources/data/tardis_refined/tardis_refined/patterns/shell/castle.json similarity index 59% rename from common/src/main/resources/data/tardis_refined/tardis_refined/patterns/shell/growth.json rename to forge/src/generated/resources/data/tardis_refined/tardis_refined/patterns/shell/castle.json index f9fb0553f..a7a3b196d 100644 --- a/common/src/main/resources/data/tardis_refined/tardis_refined/patterns/shell/growth.json +++ b/forge/src/generated/resources/data/tardis_refined/tardis_refined/patterns/shell/castle.json @@ -3,12 +3,12 @@ { "exterior": { "emissive": false, - "texture": "tardis_refined:textures/blockentity/shell/growth/growth.png" + "texture": "tardis_refined:textures/blockentity/shell/castle/castle.png" }, "id": "tardis_refined:default", "interior": { "emissive": false, - "texture": "tardis_refined:textures/blockentity/shell/growth/growth_interior.png" + "texture": "tardis_refined:textures/blockentity/shell/castle/castle_interior.png" }, "name_component": "{\"color\":\"yellow\",\"text\":\"Default\"}" } diff --git a/common/src/main/resources/data/tardis_refined/tardis_refined/patterns/shell/groening.json b/forge/src/generated/resources/data/tardis_refined/tardis_refined/patterns/shell/hieroglyph.json similarity index 57% rename from common/src/main/resources/data/tardis_refined/tardis_refined/patterns/shell/groening.json rename to forge/src/generated/resources/data/tardis_refined/tardis_refined/patterns/shell/hieroglyph.json index 3e2d40864..469209790 100644 --- a/common/src/main/resources/data/tardis_refined/tardis_refined/patterns/shell/groening.json +++ b/forge/src/generated/resources/data/tardis_refined/tardis_refined/patterns/shell/hieroglyph.json @@ -3,12 +3,12 @@ { "exterior": { "emissive": false, - "texture": "tardis_refined:textures/blockentity/shell/groening/groening.png" + "texture": "tardis_refined:textures/blockentity/shell/hieroglyph/hieroglyph.png" }, "id": "tardis_refined:default", "interior": { "emissive": false, - "texture": "tardis_refined:textures/blockentity/shell/groening/groening_interior.png" + "texture": "tardis_refined:textures/blockentity/shell/hieroglyph/hieroglyph_interior.png" }, "name_component": "{\"color\":\"yellow\",\"text\":\"Default\"}" } diff --git a/common/src/main/resources/data/tardis_refined/tardis_refined/patterns/shell/factory.json b/forge/src/generated/resources/data/tardis_refined/tardis_refined/patterns/shell/lift.json similarity index 59% rename from common/src/main/resources/data/tardis_refined/tardis_refined/patterns/shell/factory.json rename to forge/src/generated/resources/data/tardis_refined/tardis_refined/patterns/shell/lift.json index da4ae5b0b..841d845c9 100644 --- a/common/src/main/resources/data/tardis_refined/tardis_refined/patterns/shell/factory.json +++ b/forge/src/generated/resources/data/tardis_refined/tardis_refined/patterns/shell/lift.json @@ -3,12 +3,12 @@ { "exterior": { "emissive": false, - "texture": "tardis_refined:textures/blockentity/shell/factory/factory.png" + "texture": "tardis_refined:textures/blockentity/shell/lift/lift.png" }, "id": "tardis_refined:default", "interior": { "emissive": false, - "texture": "tardis_refined:textures/blockentity/shell/factory/factory_interior.png" + "texture": "tardis_refined:textures/blockentity/shell/lift/lift_interior.png" }, "name_component": "{\"color\":\"yellow\",\"text\":\"Default\"}" } diff --git a/forge/src/generated/resources/data/tardis_refined/tardis_refined/patterns/shell/police_box.json b/forge/src/generated/resources/data/tardis_refined/tardis_refined/patterns/shell/police_box.json index 9c57ffe0c..e169a6a3b 100644 --- a/forge/src/generated/resources/data/tardis_refined/tardis_refined/patterns/shell/police_box.json +++ b/forge/src/generated/resources/data/tardis_refined/tardis_refined/patterns/shell/police_box.json @@ -11,66 +11,6 @@ "texture": "tardis_refined:textures/blockentity/shell/police_box/police_box_interior.png" }, "name_component": "{\"color\":\"yellow\",\"text\":\"Default\"}" - }, - { - "exterior": { - "emissive": false, - "texture": "tardis_refined:textures/blockentity/shell/police_box/marble.png" - }, - "id": "tardis_refined:marble", - "interior": { - "emissive": false, - "texture": "tardis_refined:textures/blockentity/shell/police_box/marble_interior.png" - }, - "name_component": "{\"color\":\"yellow\",\"text\":\"Marble\"}" - }, - { - "exterior": { - "emissive": false, - "texture": "tardis_refined:textures/blockentity/shell/police_box/gaudy.png" - }, - "id": "tardis_refined:gaudy", - "interior": { - "emissive": false, - "texture": "tardis_refined:textures/blockentity/shell/police_box/gaudy_interior.png" - }, - "name_component": "{\"color\":\"yellow\",\"text\":\"Gaudy\"}" - }, - { - "exterior": { - "emissive": false, - "texture": "tardis_refined:textures/blockentity/shell/police_box/metal.png" - }, - "id": "tardis_refined:metal", - "interior": { - "emissive": false, - "texture": "tardis_refined:textures/blockentity/shell/police_box/metal_interior.png" - }, - "name_component": "{\"color\":\"yellow\",\"text\":\"Metal\"}" - }, - { - "exterior": { - "emissive": false, - "texture": "tardis_refined:textures/blockentity/shell/police_box/stone.png" - }, - "id": "tardis_refined:stone", - "interior": { - "emissive": false, - "texture": "tardis_refined:textures/blockentity/shell/police_box/stone_interior.png" - }, - "name_component": "{\"color\":\"yellow\",\"text\":\"Stone\"}" - }, - { - "exterior": { - "emissive": false, - "texture": "tardis_refined:textures/blockentity/shell/police_box/red.png" - }, - "id": "tardis_refined:red", - "interior": { - "emissive": false, - "texture": "tardis_refined:textures/blockentity/shell/police_box/red_interior.png" - }, - "name_component": "{\"color\":\"yellow\",\"text\":\"Red\"}" } ] } \ No newline at end of file diff --git a/forge/src/main/java/whocraft/tardis_refined/commands/ForgeTRCommands.java b/forge/src/main/java/whocraft/tardis_refined/commands/ForgeTRCommands.java new file mode 100644 index 000000000..a111b1ea0 --- /dev/null +++ b/forge/src/main/java/whocraft/tardis_refined/commands/ForgeTRCommands.java @@ -0,0 +1,20 @@ +package whocraft.tardis_refined.commands; + + +import net.minecraft.commands.synchronization.ArgumentTypeInfo; +import net.minecraft.commands.synchronization.ArgumentTypeInfos; +import net.minecraft.commands.synchronization.SingletonArgumentInfo; +import net.minecraft.core.registries.Registries; +import whocraft.tardis_refined.TardisRefined; +import whocraft.tardis_refined.command.arguments.UpgradeArgumentType; +import whocraft.tardis_refined.registry.DeferredRegistry; +import whocraft.tardis_refined.registry.RegistrySupplier; + +public class ForgeTRCommands { + + public static final DeferredRegistry> COMMAND_ARGUMENT_TYPES = DeferredRegistry.create(TardisRefined.MODID, Registries.COMMAND_ARGUMENT_TYPE); + + + public static final RegistrySupplier> UPGRADE_ARGUMENT = COMMAND_ARGUMENT_TYPES.register("upgrade", () -> + ArgumentTypeInfos.registerByClass(UpgradeArgumentType.class, SingletonArgumentInfo.contextFree(UpgradeArgumentType::upgradeArgumentType))); +} \ No newline at end of file diff --git a/forge/src/main/java/whocraft/tardis_refined/common/data/LangProviderEnglish.java b/forge/src/main/java/whocraft/tardis_refined/common/data/LangProviderEnglish.java index 6b44180b1..e2ac488c4 100644 --- a/forge/src/main/java/whocraft/tardis_refined/common/data/LangProviderEnglish.java +++ b/forge/src/main/java/whocraft/tardis_refined/common/data/LangProviderEnglish.java @@ -2,7 +2,6 @@ import net.minecraft.ChatFormatting; import net.minecraft.Util; -import net.minecraft.client.resources.sounds.Sound; import net.minecraft.data.DataGenerator; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; @@ -37,6 +36,7 @@ protected void addTranslations() { addSound(SoundRegistry.TARDIS_MISC_SPARKLE.get(), "TARDIS arriving"); addSound(SoundRegistry.TIME_BLAST.get(), "Time Vortex blast"); addSound(SoundRegistry.DESTINATION_DING.get(), "TARDIS reaches destination"); + addSound(SoundRegistry.ARS_HUM.get(), "ARS Tree Hum"); /*Block*/ add(BlockRegistry.ARS_EGG.get(), "ARS Egg"); @@ -137,6 +137,9 @@ protected void addTranslations() { addShell(ShellTheme.GROWTH.getId(), "Growth"); addShell(ShellTheme.PORTALOO.getId(), "Portaloo"); addShell(ShellTheme.PAGODA.getId(), "Pagoda"); + addShell(ShellTheme.LIFT.getId(), "Lift"); + addShell(ShellTheme.HIEROGLYPH.getId(), "Hieroglyph"); + addShell(ShellTheme.CASTLE.getId(), "Castle"); /*Tool Tips*/ add(ModMessages.TOOLTIP_TARDIS_LIST_TITLE, "Key Set:"); @@ -159,9 +162,9 @@ protected void addTranslations() { addUpgrade(Upgrades.MATERIALIZE_AROUND.get(), "Materialize Around", "Allows the TARDIS to have entities enter while materalizing"); addUpgrade(Upgrades.ARCHITECTURE_SYSTEM.get(), "Architecture", "Enables TARDIS Architecture Upgrades"); addUpgrade(Upgrades.INSIDE_ARCHITECTURE.get(), "Desktop Reconfiguration", "Allows the Pilot to change the appearance of the TARDIS Desktop"); - addUpgrade(Upgrades.EXPLORER.get(), "Explorer I", "1000k Increment"); - addUpgrade(Upgrades.EXPLORER_II.get(), "Explorer II", "2500k Increment"); - addUpgrade(Upgrades.EXPLORER_III.get(), "Explorer III", "5000k Increment"); + addUpgrade(Upgrades.EXPLORER.get(), "Explorer I", "x1000 Increment"); + addUpgrade(Upgrades.EXPLORER_II.get(), "Explorer II", "x2500 Increment"); + addUpgrade(Upgrades.EXPLORER_III.get(), "Explorer III", "x5000 Increment"); addUpgrade(Upgrades.DIMENSION_TRAVEL.get(), "Inter-Dimensional Travel", "Allows the TARDIS to move between dimensions"); addUpgrade(Upgrades.LANDING_PAD.get(), "Landing Pad", "Allows the TARDIS to be summoned to a landing pad"); } diff --git a/forge/src/main/java/whocraft/tardis_refined/common/data/ModelProviderBlock.java b/forge/src/main/java/whocraft/tardis_refined/common/data/ModelProviderBlock.java index a7ae31e11..e69de29bb 100644 --- a/forge/src/main/java/whocraft/tardis_refined/common/data/ModelProviderBlock.java +++ b/forge/src/main/java/whocraft/tardis_refined/common/data/ModelProviderBlock.java @@ -1,78 +0,0 @@ -package whocraft.tardis_refined.common.data; - -import net.minecraft.data.DataGenerator; -import net.minecraft.data.models.BlockModelGenerators; -import net.neoforged.neoforge.client.model.generators.BlockModelBuilder; -import net.neoforged.neoforge.client.model.generators.BlockModelProvider; -import net.neoforged.neoforge.common.data.ExistingFileHelper; -import whocraft.tardis_refined.TardisRefined; - -//public class ModelProviderBlock extends BlockModelGenerators { -// -// public ModelProviderBlock(DataGenerator generator, ExistingFileHelper existingFileHelper) { -// super(generator.getPackOutput(), TardisRefined.MODID, existingFileHelper); -// } -// -// @Override -// protected void registerModels() { -// -///* ResourceLocation leavesTexture = new ResourceLocation("tardis_refined:block/ars_leaves"); -// ResourceLocation growthStoneTexture = new ResourceLocation("tardis_refined:block/growth_stone"); -// -// *//*Blocks that are rendered in code*//* -// emptyBlockState(BlockRegistry.GLOBAL_CONSOLE_BLOCK.get()); -// emptyBlockState(BlockRegistry.BULK_HEAD_DOOR.get()); -// emptyBlockState(BlockRegistry.GLOBAL_DOOR_BLOCK.get()); -// emptyBlockState(BlockRegistry.GLOBAL_SHELL_BLOCK.get()); -// emptyBlockState(BlockRegistry.ROOT_SHELL_DOOR.get()); -// emptyBlockState(BlockRegistry.ROOT_PLANT_BLOCK.get()); -// emptyBlockState(BlockRegistry.ROOT_SHELL_BLOCK.get()); -// emptyBlockState(BlockRegistry.INTERNAL_DOOR_BLOCK.get()); -// emptyBlockState(BlockRegistry.ARS_EGG.get()); -// -// threeDeeRotating(BlockRegistry.LANDING_PAD.get(), new ResourceLocation(TardisRefined.MODID, "block/landing_pad")); -// threeDeeRotating(BlockRegistry.FLIGHT_DETECTOR.get(), new ResourceLocation(TardisRefined.MODID, "block/flight_detector")); -// -// terraformer(BlockRegistry.TERRAFORMER_BLOCK.get()); -// -// *//*Basic Blocks*//* -// singleTexture(BlockRegistry.ARS_LEAVES.get()); -// singleTexture(BlockRegistry.AIR_LOCK_GENERATION_BLOCK.get()); -// singleTexture(BlockRegistry.GROWTH_STONE.get()); -// singleTexture(BlockRegistry.HARDENED_GROWTH_STONE.get()); -// -// *//*Fences*//* -// fencePost(BlockRegistry.ARS_LEAVES_FENCE.get(), leavesTexture); -// -// *//*Slabs*//* -// slab(BlockRegistry.ARS_LEAVES_SLAB.get(), leavesTexture, leavesTexture); -// -// -// threeDeeRotating(BlockRegistry.CONSOLE_CONFIGURATION_BLOCK.get(), new ResourceLocation(TardisRefined.MODID, "block/console_configuration")); -// */ } -// -// -// /* public JsonObject emptyBlockState(Block block) { -// return getBuilder(block).partialState().modelForState().modelFile(models().getExistingFile(new ResourceLocation("minecraft:block/barrier"))).addModel().toJson(); -// } -// -// public JsonObject customLocation(Block block, ResourceLocation resourceLocation) { -// return getBuilder(block).partialState().modelForState().modelFile(models().getExistingFile(resourceLocation)).addModel().toJson(); -// } -// -// public JsonObject terraformer(Block block) { -// return getBuilder(block).forAllStates( -// state -> state.getValue(TerraformerBlock.ACTIVE) ? -// ConfiguredModel.builder().modelFile(models().getExistingFile(new ResourceLocation(TardisRefined.MODID, "block/terraformer_on"))).build() : -// ConfiguredModel.builder().modelFile(models().getExistingFile(new ResourceLocation(TardisRefined.MODID, "block/terraformer"))).build()).toJson(); -// -// } -// -// // Paul McGann is... -// public JsonObject threeDeeRotating(Block block, ResourceLocation location) { -// return getBuilder(block.).forAllStates( -// state -> ConfiguredModel.builder().modelFile(new ModelFile.UncheckedModelFile(location)).rotationY((int) state.getValue(HorizontalDirectionalBlock.FACING).toYRot()).build()).toJson(); -// -// }*/ -// -//} \ No newline at end of file diff --git a/forge/src/main/java/whocraft/tardis_refined/common/data/ParticleProvider.java b/forge/src/main/java/whocraft/tardis_refined/common/data/ParticleProvider.java index 9c22a0a4f..9215bb48b 100644 --- a/forge/src/main/java/whocraft/tardis_refined/common/data/ParticleProvider.java +++ b/forge/src/main/java/whocraft/tardis_refined/common/data/ParticleProvider.java @@ -83,6 +83,7 @@ public CompletableFuture run(CachedOutput arg) { resourceLocations.add(new ResourceLocation("tardis_refined:silver/s_silver_sym_07")); makeParticle(TRParticles.GALLIFREY.get(), createParticle(resourceLocations), arg, base); + makeParticle(TRParticles.ARS_LEAVES.get(), createParticle(List.of(new ResourceLocation("minecraft:generic_0"))), arg, base); return CompletableFuture.allOf(this.futures.toArray(CompletableFuture[]::new)); diff --git a/forge/src/main/java/whocraft/tardis_refined/common/data/SoundProvider.java b/forge/src/main/java/whocraft/tardis_refined/common/data/SoundProvider.java index 661fd2aec..a3f6c880a 100644 --- a/forge/src/main/java/whocraft/tardis_refined/common/data/SoundProvider.java +++ b/forge/src/main/java/whocraft/tardis_refined/common/data/SoundProvider.java @@ -29,6 +29,8 @@ public void registerSounds() { add(SoundRegistry.TARDIS_MISC_SPARKLE.get(), basicSound("tardis_misc_sparkle", new ResourceLocation(TardisRefined.MODID, "tardis/tardis_misc_sparkle"))); add(SoundRegistry.STATIC.get(), basicSound("static", new ResourceLocation(TardisRefined.MODID, "ui/static"))); add(SoundRegistry.DESTINATION_DING.get(), basicSound("destination_ding", new ResourceLocation(TardisRefined.MODID, "tardis/destination_ding"))); + add(SoundRegistry.ARS_HUM.get(), basicSound("ars_hum", new ResourceLocation(TardisRefined.MODID, "tardis/ars/ars_hum"))); + add(SoundRegistry.TEST_HUM.get(), basicSound("test_hum", new ResourceLocation(TardisRefined.MODID, "tardis/test_hum"))); } @@ -36,4 +38,13 @@ public SoundDefinition basicSound(String langKey, ResourceLocation resourceLocat return SoundDefinition.definition().with(SoundDefinition.Sound.sound(resourceLocation, SoundDefinition.SoundType.SOUND)).subtitle(createSubtitle(langKey)); } + public SoundDefinition basicSound(String langKey, ResourceLocation... resourceLocation) { + SoundDefinition soundDefinition = SoundDefinition.definition(); + for (ResourceLocation location : resourceLocation) { + soundDefinition.with(SoundDefinition.Sound.sound(location, SoundDefinition.SoundType.SOUND)); + } + + return soundDefinition.subtitle(createSubtitle(langKey)); + } + } diff --git a/forge/src/main/java/whocraft/tardis_refined/common/network/neoforge/NetworkManagerImpl.java b/forge/src/main/java/whocraft/tardis_refined/common/network/neoforge/NetworkManagerImpl.java index 2bf72062c..12bef729b 100644 --- a/forge/src/main/java/whocraft/tardis_refined/common/network/neoforge/NetworkManagerImpl.java +++ b/forge/src/main/java/whocraft/tardis_refined/common/network/neoforge/NetworkManagerImpl.java @@ -10,6 +10,7 @@ import net.neoforged.neoforge.network.PacketDistributor; import net.neoforged.neoforge.network.PlayNetworkDirection; import net.neoforged.neoforge.network.simple.SimpleChannel; +import whocraft.tardis_refined.TardisRefined; import whocraft.tardis_refined.common.network.MessageC2S; import whocraft.tardis_refined.common.network.MessageS2C; import whocraft.tardis_refined.common.network.MessageType; @@ -35,7 +36,7 @@ public static NetworkManager create(ResourceLocation channelName) { @Override public void sendToServer(MessageC2S message) { if (!this.toServer.containsValue(message.getType())) { - System.out.println("Message type not registered: " + message.getType().getId()); + TardisRefined.LOGGER.error("Message type not registered: " + message.getType().getId()); return; } @@ -45,7 +46,7 @@ public void sendToServer(MessageC2S message) { @Override public void sendToPlayer(ServerPlayer player, MessageS2C message) { if (!this.toClient.containsValue(message.getType())) { - System.out.println("Message type not registered: " + message.getType().getId()); + TardisRefined.LOGGER.error("Message type not registered: " + message.getType().getId()); return; } @@ -55,7 +56,7 @@ public void sendToPlayer(ServerPlayer player, MessageS2C message) { @Override public void sendToTracking(Entity entity, MessageS2C message) { if (!this.toClient.containsValue(message.getType())) { - System.out.println("Message type not registered: " + message.getType().getId()); + TardisRefined.LOGGER.error("Message type not registered: " + message.getType().getId()); return; } this.channel.send(PacketDistributor.TRACKING_ENTITY_AND_SELF.with(() -> entity), message); @@ -64,7 +65,7 @@ public void sendToTracking(Entity entity, MessageS2C message) { @Override public void sendToTracking(BlockEntity blockEntity, MessageS2C message) { if (!this.toClient.containsValue(message.getType())) { - System.out.println("Message type not registered: " + message.getType().getId()); + TardisRefined.LOGGER.error("Message type not registered: " + message.getType().getId()); return; } this.channel.send(PacketDistributor.TRACKING_CHUNK.with(() -> blockEntity.getLevel().getChunkAt(blockEntity.getBlockPos())), message); @@ -83,7 +84,7 @@ public ToServer(FriendlyByteBuf buf) { var msgId = buf.readUtf(); if (!NetworkManagerImpl.this.toServer.containsKey(msgId)) { - System.out.println("Unknown message id received on server: " + msgId); + TardisRefined.LOGGER.error("Unknown message id received on server: " + msgId); this.message = null; return; } @@ -118,7 +119,7 @@ public ToClient(FriendlyByteBuf buf) { var msgId = buf.readUtf(); if (!NetworkManagerImpl.this.toClient.containsKey(msgId)) { - System.out.println("Unknown message id received on client: " + msgId); + TardisRefined.LOGGER.error("Unknown message id received on client: " + msgId); this.message = null; return; } diff --git a/forge/src/main/java/whocraft/tardis_refined/neoforge/ClientModBus.java b/forge/src/main/java/whocraft/tardis_refined/neoforge/ClientModBus.java index 2dab5847d..51ffcae38 100644 --- a/forge/src/main/java/whocraft/tardis_refined/neoforge/ClientModBus.java +++ b/forge/src/main/java/whocraft/tardis_refined/neoforge/ClientModBus.java @@ -53,6 +53,7 @@ public static void onRegisterLayerDefinitions(EntityRenderersEvent.RegisterLayer @SubscribeEvent public static void onRegisterParticles(RegisterParticleProvidersEvent event) { Minecraft.getInstance().particleEngine.register(TRParticles.GALLIFREY.get(), (ParticleEngine.SpriteParticleRegistration) (ParticleGallifrey.Provider::new)); + Minecraft.getInstance().particleEngine.register(TRParticles.ARS_LEAVES.get(), (ParticleEngine.SpriteParticleRegistration) (ParticleGallifrey.ARSVinesParticle::new)); } diff --git a/forge/src/main/java/whocraft/tardis_refined/neoforge/TardisRefinedForge.java b/forge/src/main/java/whocraft/tardis_refined/neoforge/TardisRefinedForge.java index 2d029bdeb..ef8d0d11d 100644 --- a/forge/src/main/java/whocraft/tardis_refined/neoforge/TardisRefinedForge.java +++ b/forge/src/main/java/whocraft/tardis_refined/neoforge/TardisRefinedForge.java @@ -10,6 +10,7 @@ import net.neoforged.neoforge.data.event.GatherDataEvent; import whocraft.tardis_refined.TRConfig; import whocraft.tardis_refined.TardisRefined; +import whocraft.tardis_refined.commands.ForgeTRCommands; import whocraft.tardis_refined.common.data.*; @Mod(TardisRefined.MODID) @@ -23,6 +24,8 @@ public TardisRefinedForge() { ModLoadingContext.get().registerConfig(ModConfig.Type.CLIENT, TRConfig.CLIENT_SPEC); ModLoadingContext.get().registerConfig(ModConfig.Type.SERVER, TRConfig.SERVER_SPEC); + ForgeTRCommands.COMMAND_ARGUMENT_TYPES.register(); + /* if (ModCompatChecker.immersivePortals()) { if(TRConfig.COMMON.COMPATIBILITY_IP.get()) { ImmersivePortals.init(); diff --git a/gradle.properties b/gradle.properties index 76079c5eb..dd898c5f4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ org.gradle.jvmargs=-Xmx4G ##Mod Building and Metadata -jar_name=TARDIS Refined +jar_name=tardis_refined mod_name=TARDIS Refined mod_id=tardis_refined maven_group=whocraft