From bf101845f52dd6a4eec6a1b5061ca80bf2ceba11 Mon Sep 17 00:00:00 2001 From: craisinlord Date: Thu, 16 Jul 2026 21:08:01 -0500 Subject: [PATCH] giant lilypad lotus etc --- .../antarchy/config/AntarchySettings.java | 26 +- .../antarchy/content/AntarchyObjects.java | 53 ++ .../antarchy/content/AntarchyTags.java | 1 + .../content/block/CritterCageBlock.java | 61 ++ .../content/block/GiantLilyPadBlock.java | 390 ++++------- .../antarchy/content/block/LotusBlock.java | 11 +- .../antarchy/content/block/SeashellBlock.java | 65 +- .../block/entity/CritterCageBlockEntity.java | 173 +++++ .../block/entity/SeashellBlockEntity.java | 103 ++- .../model/KrakensGraspThrownTridentModel.java | 22 - .../client/particle/LotusPollenParticle.java | 62 ++ .../client/renderer/CritterCageRenderer.java | 60 ++ .../KrakensGraspThrownTridentRenderer.java | 42 +- .../client/renderer/SeashellRenderer.java | 12 +- .../content/damage/AntarchyDamageSources.java | 9 + .../content/damage/AntarchyDamageTypes.java | 6 + .../entity/CritterCageProjectileEntity.java | 82 +++ .../antarchy/content/entity/DorrieEntity.java | 10 +- .../content/entity/OctopusBombEntity.java | 9 +- .../content/entity/OuranwoodDeerEntity.java | 12 +- .../kraken/KrakensGraspThrownTrident.java | 64 +- .../content/entity/kraken/TentacleEntity.java | 5 + .../content/item/CritterCageItem.java | 353 ++++++++++ .../content/item/GiantLilyPadItem.java | 58 ++ .../content/item/KrakensGraspItem.java | 62 +- .../content/item/RpoLauncherItem.java | 2 +- .../worldgen/elythia/CoralSpikeFeature.java | 50 +- .../worldgen/elythia/ElythiaFloraFeature.java | 2 +- .../elythia/GiantLilyPadPatchFeature.java | 69 +- .../client/KrakensGraspChargePoseMixin.java | 47 ++ .../resources/antarchy-common.mixins.json | 1 + .../blockstates/critter_cage_block.json | 7 + .../antarchy/blockstates/giant_lily_pad.json | 612 +++++++++++------- .../assets/antarchy/blockstates/seashell.json | 66 +- .../resources/assets/antarchy/lang/en_us.json | 8 + .../models/block/critter_cage_block.json | 22 + .../antarchy/models/block/giant_lily_pad.json | 25 + .../block/giant_lily_pad/bottom_left.json | 25 + .../block/giant_lily_pad/bottom_middle.json | 25 + .../block/giant_lily_pad/bottom_right.json | 25 + .../models/block/giant_lily_pad/center.json | 25 + .../block/giant_lily_pad/middle_left.json | 25 + .../block/giant_lily_pad/middle_right.json | 25 + .../block/giant_lily_pad/single/single/0.json | 43 -- .../giant_lily_pad/single/single/180.json | 43 -- .../giant_lily_pad/single/single/270.json | 43 -- .../giant_lily_pad/single/single/90.json | 43 -- .../three_by_three/bottom_left/0.json | 43 -- .../three_by_three/bottom_left/180.json | 43 -- .../three_by_three/bottom_left/270.json | 43 -- .../three_by_three/bottom_left/90.json | 43 -- .../three_by_three/bottom_middle/0.json | 43 -- .../three_by_three/bottom_middle/180.json | 43 -- .../three_by_three/bottom_middle/270.json | 43 -- .../three_by_three/bottom_middle/90.json | 43 -- .../three_by_three/bottom_right/0.json | 43 -- .../three_by_three/bottom_right/180.json | 43 -- .../three_by_three/bottom_right/270.json | 43 -- .../three_by_three/bottom_right/90.json | 43 -- .../three_by_three/center/0.json | 43 -- .../three_by_three/center/180.json | 43 -- .../three_by_three/center/270.json | 43 -- .../three_by_three/center/90.json | 43 -- .../three_by_three/middle_left/0.json | 43 -- .../three_by_three/middle_left/180.json | 43 -- .../three_by_three/middle_left/270.json | 43 -- .../three_by_three/middle_left/90.json | 43 -- .../three_by_three/middle_right/0.json | 43 -- .../three_by_three/middle_right/180.json | 43 -- .../three_by_three/middle_right/270.json | 43 -- .../three_by_three/middle_right/90.json | 43 -- .../three_by_three/top_left/0.json | 43 -- .../three_by_three/top_left/180.json | 43 -- .../three_by_three/top_left/270.json | 43 -- .../three_by_three/top_left/90.json | 43 -- .../three_by_three/top_middle/0.json | 43 -- .../three_by_three/top_middle/180.json | 43 -- .../three_by_three/top_middle/270.json | 43 -- .../three_by_three/top_middle/90.json | 43 -- .../three_by_three/top_right/0.json | 43 -- .../three_by_three/top_right/180.json | 43 -- .../three_by_three/top_right/270.json | 43 -- .../three_by_three/top_right/90.json | 43 -- .../models/block/giant_lily_pad/top_left.json | 25 + .../block/giant_lily_pad/top_middle.json | 25 + .../block/giant_lily_pad/top_right.json | 25 + .../two_by_one/bottom_middle/0.json | 43 -- .../two_by_one/bottom_middle/180.json | 43 -- .../two_by_one/bottom_middle/270.json | 43 -- .../two_by_one/bottom_middle/90.json | 43 -- .../two_by_one/middle_left/0.json | 43 -- .../two_by_one/middle_left/180.json | 43 -- .../two_by_one/middle_left/270.json | 43 -- .../two_by_one/middle_left/90.json | 43 -- .../two_by_one/middle_right/0.json | 43 -- .../two_by_one/middle_right/180.json | 43 -- .../two_by_one/middle_right/270.json | 43 -- .../two_by_one/middle_right/90.json | 43 -- .../two_by_one/top_middle/0.json | 43 -- .../two_by_one/top_middle/180.json | 43 -- .../two_by_one/top_middle/270.json | 43 -- .../two_by_one/top_middle/90.json | 43 -- .../two_by_two/bottom_left/0.json | 43 -- .../two_by_two/bottom_left/180.json | 43 -- .../two_by_two/bottom_left/270.json | 43 -- .../two_by_two/bottom_left/90.json | 43 -- .../two_by_two/bottom_right/0.json | 43 -- .../two_by_two/bottom_right/180.json | 43 -- .../two_by_two/bottom_right/270.json | 43 -- .../two_by_two/bottom_right/90.json | 43 -- .../giant_lily_pad/two_by_two/top_left/0.json | 43 -- .../two_by_two/top_left/180.json | 43 -- .../two_by_two/top_left/270.json | 43 -- .../two_by_two/top_left/90.json | 43 -- .../two_by_two/top_right/0.json | 43 -- .../two_by_two/top_right/180.json | 43 -- .../two_by_two/top_right/270.json | 43 -- .../two_by_two/top_right/90.json | 43 -- .../models/block/lotus_on_giant_lily_pad.json | 51 ++ .../antarchy/models/block/seashell.json | 5 + .../antarchy/models/block/seashell_item.json | 179 +++++ .../models/entity/krakens_grasp_entity.json | 239 +++++++ .../antarchy/models/item/critter_cage.json | 20 + .../item/critter_cage_filled_colored.json | 8 + .../item/critter_cage_filled_plain.json | 7 + .../models/item/krakens_grasp_held.json | 122 +--- .../assets/antarchy/models/item/seashell.json | 5 +- .../antarchy/particles/lotus_pollen.json | 5 + .../antarchy/textures/block/critter_cage.png | Bin 0 -> 326 bytes .../block/giant_lilypad/giant_lilypad_2x1.png | Bin 644 -> 0 bytes .../block/giant_lilypad/giant_lilypad_2x2.png | Bin 924 -> 0 bytes .../giant_lilypad/giant_lilypad_full_1x1.png | Bin 439 -> 0 bytes .../giant_lilypad/giant_lilypad_full_2x1.png | Bin 637 -> 0 bytes .../giant_lilypad/giant_lilypad_full_2x2.png | Bin 917 -> 0 bytes .../giant_lilypad/giant_lilypad_full_3x3.png | Bin 1733 -> 0 bytes .../tiles/three_by_three/bottom_left.png | Bin 0 -> 309 bytes .../tiles/three_by_three/bottom_middle.png | Bin 0 -> 311 bytes .../tiles/three_by_three/bottom_right.png | Bin 0 -> 311 bytes .../tiles/three_by_three/center.png | Bin 0 -> 281 bytes .../tiles/three_by_three/middle_left.png | Bin 0 -> 308 bytes .../tiles/three_by_three/middle_right.png | Bin 0 -> 311 bytes .../tiles/three_by_three/top_left.png | Bin 0 -> 313 bytes .../tiles/three_by_three/top_middle.png | Bin 0 -> 294 bytes .../tiles/three_by_three/top_right.png | Bin 0 -> 302 bytes .../textures/block/roseate_froglight_side.png | Bin 423 -> 423 bytes .../textures/block/roseate_froglight_top.png | Bin 343 -> 359 bytes .../textures/entity/frog/frog_elythia.png | Bin 1638 -> 1630 bytes .../textures/item/critter_cage_item.png | Bin 0 -> 313 bytes .../item/critter_cage_item_overlay.png | Bin 0 -> 267 bytes .../damage_type/rpo_launcher_blast.json | 7 + .../loot_table/blocks/giant_lily_pad.json | 18 + .../data/antarchy/recipe/rainbow_sugar.json | 3 +- .../data/antarchy/recipes/critter_cage.json | 23 + .../entity_type/critter_cage_blacklist.json | 4 + .../giant_lily_pad_supporting_fluids.json | 1 + .../tags/{fluids => fluid}/lumen.json | 0 .../biome/dorrie_elythia_spawn_biomes.json | 6 + .../biome/dorrie_overworld_spawn_biomes.json | 6 + .../worldgen/biome/elythia_meadow.json | 3 +- .../worldgen/biome/elythia_ocean.json | 2 +- .../giant_lily_pad_patch_common.json | 9 + .../fabric/AntarchyConfigModuleFabric.java | 1 + .../antarchy/fabric/AntarchyFabric.java | 33 +- .../fabric/AntarchyFabricContent.java | 8 + .../antarchy/fabric/AntarchyFabricEvents.java | 5 +- .../client/AntarchyFabricClientBootstrap.java | 35 + .../fabric/registry/AntarchyFabricBlocks.java | 8 + .../registry/AntarchyFabricEntities.java | 11 +- .../fabric/registry/AntarchyFabricItems.java | 7 +- .../fabric/registry/AntarchyFabricMisc.java | 20 + .../AntarchyFabricSpawnPlacements.java | 2 +- .../AntarchyConfigModuleNeoforge.java | 2 + .../antarchy/neoforge/AntarchyMobsConfig.java | 4 +- .../antarchy/neoforge/AntarchyNeoforge.java | 8 + .../neoforge/AntarchyToolsConfig.java | 15 + .../client/AntarchyNeoForgeClient.java | 32 + .../registry/AntarchyNeoForgeEvents.java | 3 +- .../registry/AntarchyNeoforgeBlocks.java | 8 + .../registry/AntarchyNeoforgeEntites.java | 11 +- .../registry/AntarchyNeoforgeItems.java | 4 +- .../registry/AntarchyNeoforgeMisc.java | 20 + .../biome_modifier/dorrie_elythia_spawns.json | 12 + .../dorrie_overworld_spawns.json | 12 + .../biome_modifier/star_coral_in_oceans.json | 6 - 184 files changed, 3024 insertions(+), 3949 deletions(-) create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/block/CritterCageBlock.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/block/entity/CritterCageBlockEntity.java delete mode 100644 common/src/main/java/com/craisinlord/antarchy/content/client/model/KrakensGraspThrownTridentModel.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/client/particle/LotusPollenParticle.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/client/renderer/CritterCageRenderer.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/entity/CritterCageProjectileEntity.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/item/CritterCageItem.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/item/GiantLilyPadItem.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/mixins/client/KrakensGraspChargePoseMixin.java create mode 100644 common/src/main/resources/assets/antarchy/blockstates/critter_cage_block.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/critter_cage_block.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/bottom_left.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/bottom_middle.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/bottom_right.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/center.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/middle_left.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/middle_right.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/single/single/0.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/single/single/180.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/single/single/270.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/single/single/90.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_left/0.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_left/180.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_left/270.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_left/90.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_middle/0.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_middle/180.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_middle/270.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_middle/90.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_right/0.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_right/180.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_right/270.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_right/90.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/center/0.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/center/180.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/center/270.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/center/90.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_left/0.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_left/180.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_left/270.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_left/90.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_right/0.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_right/180.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_right/270.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_right/90.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_left/0.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_left/180.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_left/270.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_left/90.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_middle/0.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_middle/180.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_middle/270.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_middle/90.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_right/0.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_right/180.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_right/270.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_right/90.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/top_left.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/top_middle.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/top_right.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/bottom_middle/0.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/bottom_middle/180.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/bottom_middle/270.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/bottom_middle/90.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_left/0.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_left/180.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_left/270.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_left/90.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_right/0.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_right/180.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_right/270.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_right/90.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/top_middle/0.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/top_middle/180.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/top_middle/270.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/top_middle/90.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_left/0.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_left/180.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_left/270.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_left/90.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_right/0.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_right/180.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_right/270.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_right/90.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_left/0.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_left/180.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_left/270.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_left/90.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_right/0.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_right/180.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_right/270.json delete mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_right/90.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/lotus_on_giant_lily_pad.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/seashell.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/seashell_item.json create mode 100644 common/src/main/resources/assets/antarchy/models/entity/krakens_grasp_entity.json create mode 100644 common/src/main/resources/assets/antarchy/models/item/critter_cage.json create mode 100644 common/src/main/resources/assets/antarchy/models/item/critter_cage_filled_colored.json create mode 100644 common/src/main/resources/assets/antarchy/models/item/critter_cage_filled_plain.json create mode 100644 common/src/main/resources/assets/antarchy/particles/lotus_pollen.json create mode 100644 common/src/main/resources/assets/antarchy/textures/block/critter_cage.png delete mode 100644 common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_2x1.png delete mode 100644 common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_2x2.png delete mode 100644 common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_full_1x1.png delete mode 100644 common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_full_2x1.png delete mode 100644 common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_full_2x2.png delete mode 100644 common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_full_3x3.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/tiles/three_by_three/bottom_left.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/tiles/three_by_three/bottom_middle.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/tiles/three_by_three/bottom_right.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/tiles/three_by_three/center.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/tiles/three_by_three/middle_left.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/tiles/three_by_three/middle_right.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/tiles/three_by_three/top_left.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/tiles/three_by_three/top_middle.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/tiles/three_by_three/top_right.png create mode 100644 common/src/main/resources/assets/antarchy/textures/item/critter_cage_item.png create mode 100644 common/src/main/resources/assets/antarchy/textures/item/critter_cage_item_overlay.png create mode 100644 common/src/main/resources/data/antarchy/damage_type/rpo_launcher_blast.json create mode 100644 common/src/main/resources/data/antarchy/recipes/critter_cage.json create mode 100644 common/src/main/resources/data/antarchy/tags/entity_type/critter_cage_blacklist.json rename common/src/main/resources/data/antarchy/tags/{fluids => fluid}/giant_lily_pad_supporting_fluids.json (73%) rename common/src/main/resources/data/antarchy/tags/{fluids => fluid}/lumen.json (100%) create mode 100644 common/src/main/resources/data/antarchy/tags/worldgen/biome/dorrie_elythia_spawn_biomes.json create mode 100644 common/src/main/resources/data/antarchy/tags/worldgen/biome/dorrie_overworld_spawn_biomes.json create mode 100644 common/src/main/resources/data/antarchy/worldgen/placed_feature/giant_lily_pad_patch_common.json create mode 100644 neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/dorrie_elythia_spawns.json create mode 100644 neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/dorrie_overworld_spawns.json delete mode 100644 neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/star_coral_in_oceans.json diff --git a/common/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java b/common/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java index 4b2856df..d0f14021 100644 --- a/common/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java +++ b/common/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java @@ -55,7 +55,7 @@ public final class AntarchySettings { private static double bigBerthaAttackSpeed = -3.0D; private static double krakensGraspAttackDamage = 16.0D; private static double krakensGraspAttackSpeed = -2.9D; - private static double krakensGraspThrownDamage = 16.0D; + private static double krakensGraspThrownDamage = 32.0D; private static double krakensGraspLightningDamage = 6.0D; private static boolean krakensGraspInnateLoyalty = true; private static int krakensGraspInnateLoyaltyLevel = 3; @@ -128,9 +128,9 @@ public final class AntarchySettings { private static double squidzookaCooldownSeconds = 1.0D; private static double squidzookaLaunchVelocity = 2.1D; private static double rpoLauncherCooldownSeconds = 1.0D; - private static double rpoLauncherLaunchVelocity = 2.1D; - private static double rpoLauncherExplosionDamage = 14.0D; - private static double rpoLauncherExplosionRadius = 4.0D; + private static double rpoLauncherLaunchVelocity = 1.8D; + private static double rpoLauncherExplosionDamage = 30.0D; + private static double rpoLauncherExplosionRadius = 13.5D; private static double sizeRayCooldownSeconds = 1.0D; private static boolean invertProjectilesFromInvertedPlayers = false; private static boolean gravityGunEnabled = true; @@ -141,6 +141,8 @@ public final class AntarchySettings { private static double gravityGunBlastStrength = 1.4D; private static double gravityGunCooldownSeconds = 0.35D; private static double gravityGunMaxHoldDistance = 10.0D; + private static double critterCageMaxCapturableWidth = 1.15D; + private static double critterCageMaxCapturableHeight = 1.15D; private static boolean minersDreamEnabled = true; private static int minersDreamMinimumRange = 48; private static int minersDreamMaximumRange = 96; @@ -988,6 +990,14 @@ public final class AntarchySettings { return gravityGunMaxHoldDistance; } + public static double critterCageMaxCapturableWidth() { + return critterCageMaxCapturableWidth; + } + + public static double critterCageMaxCapturableHeight() { + return critterCageMaxCapturableHeight; + } + public static boolean minersDreamEnabled() { return minersDreamEnabled; } @@ -1470,6 +1480,14 @@ public final class AntarchySettings { gravityGunMaxHoldDistance = value; } + public static void setCritterCageMaxCapturableWidth(double value) { + critterCageMaxCapturableWidth = value; + } + + public static void setCritterCageMaxCapturableHeight(double value) { + critterCageMaxCapturableHeight = value; + } + public static void setMinersDreamEnabled(boolean value) { minersDreamEnabled = value; } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java b/common/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java index 27092e51..52b70cda 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java @@ -233,6 +233,8 @@ public final class AntarchyObjects { @SuppressWarnings("unchecked") public static Supplier REVERIE_BOTTLE = (Supplier) UNBOUND; @SuppressWarnings("unchecked") + public static Supplier CRITTER_CAGE = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") public static Supplier STINK_BUG_ITEM = (Supplier) UNBOUND; @SuppressWarnings("unchecked") public static Supplier> DREAD = (Supplier>) UNBOUND; @@ -297,6 +299,8 @@ public final class AntarchyObjects { @SuppressWarnings("unchecked") public static Supplier SEASHELL = (Supplier) UNBOUND; @SuppressWarnings("unchecked") + public static Supplier CRITTER_CAGE_BLOCK = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") public static Supplier> ANT_NEST_BLOCK_ENTITY = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") public static Supplier> DREAM_CAMPFIRE_BLOCK_ENTITY = (Supplier>) UNBOUND; @@ -307,14 +311,31 @@ public final class AntarchyObjects { @SuppressWarnings("unchecked") public static Supplier> SEASHELL_BLOCK_ENTITY = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") + public static Supplier> CRITTER_CAGE_BLOCK_ENTITY = + (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") public static Supplier STINKY_GAS = (Supplier) UNBOUND; @SuppressWarnings("unchecked") public static Supplier STINKY_FLY = (Supplier) UNBOUND; @SuppressWarnings("unchecked") public static Supplier PEACH_LEAVES_PARTICLE = (Supplier) UNBOUND; @SuppressWarnings("unchecked") + public static Supplier LOTUS_POLLEN = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") public static Supplier> AMERICAN_COMPONENT = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> CRITTER_CAGE_PROJECTILE = + (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> CRITTER_CAGE_ENTITY_TYPE_COMPONENT = + (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> CRITTER_CAGE_PRIMARY_COLOR_COMPONENT = + (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> CRITTER_CAGE_SECONDARY_COLOR_COMPONENT = + (Supplier>) UNBOUND; private AntarchyObjects() { } @@ -607,6 +628,10 @@ public final class AntarchyObjects { WILD_CORN = supplier; } + public static void setCritterCageBlock(Supplier supplier) { + CRITTER_CAGE_BLOCK = supplier; + } + public static void setStarCoralBlock(Supplier supplier) { STAR_CORAL_BLOCK = supplier; } @@ -635,6 +660,14 @@ public final class AntarchyObjects { GLIMMER_BOTTLE = supplier; } + public static void setCritterCage(Supplier supplier) { + CRITTER_CAGE = supplier; + } + + public static void setLotusPollen(Supplier supplier) { + LOTUS_POLLEN = supplier; + } + public static void setPeachLeavesParticle(Supplier supplier) { PEACH_LEAVES_PARTICLE = supplier; } @@ -651,6 +684,26 @@ public final class AntarchyObjects { AMERICAN_COMPONENT = supplier; } + public static void setCritterCageBlockEntity(Supplier> supplier) { + CRITTER_CAGE_BLOCK_ENTITY = supplier; + } + + public static void setCritterCageProjectile(Supplier> supplier) { + CRITTER_CAGE_PROJECTILE = supplier; + } + + public static void setCritterCageEntityTypeComponent(Supplier> supplier) { + CRITTER_CAGE_ENTITY_TYPE_COMPONENT = supplier; + } + + public static void setCritterCagePrimaryColorComponent(Supplier> supplier) { + CRITTER_CAGE_PRIMARY_COLOR_COMPONENT = supplier; + } + + public static void setCritterCageSecondaryColorComponent(Supplier> supplier) { + CRITTER_CAGE_SECONDARY_COLOR_COMPONENT = supplier; + } + public static BlockBehaviour.Properties shellstoneProperties() { return BlockBehaviour.Properties.ofFullCopy(Blocks.STONE).requiresCorrectToolForDrops(); } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/AntarchyTags.java b/common/src/main/java/com/craisinlord/antarchy/content/AntarchyTags.java index baf200b2..083ff961 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/AntarchyTags.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/AntarchyTags.java @@ -59,6 +59,7 @@ public final class AntarchyTags { public static final TagKey> DUCT_TAPE_STICK_BLACKLIST = TagKey.create(Registries.ENTITY_TYPE, id("duct_tape_stick_blacklist")); public static final TagKey> NIGHTMARE_NO_ATTACK = TagKey.create(Registries.ENTITY_TYPE, id("nightmare_no_attack")); public static final TagKey> SIZE_CHANGING_IMMUNE = TagKey.create(Registries.ENTITY_TYPE, id("size_changing_immune")); + public static final TagKey> CRITTER_CAGE_BLACKLIST = TagKey.create(Registries.ENTITY_TYPE, id("critter_cage_blacklist")); public static final TagKey> PARALYSIS_IMMUNE = TagKey.create(Registries.ENTITY_TYPE, id("paralysis_immune")); public static final TagKey> HUSHWEED_TARGETS = TagKey.create(Registries.ENTITY_TYPE, id("hushweed_targets")); public static final TagKey> TRIFFID_PREY = TagKey.create(Registries.ENTITY_TYPE, id("triffid_prey")); diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/CritterCageBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/CritterCageBlock.java new file mode 100644 index 00000000..140f26e8 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/CritterCageBlock.java @@ -0,0 +1,61 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.block.entity.CritterCageBlockEntity; +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.BaseEntityBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.RenderShape; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; + +public class CritterCageBlock extends BaseEntityBlock { + private final MapCodec codec; + + public CritterCageBlock(BlockBehaviour.Properties properties) { + super(properties); + this.codec = Block.simpleCodec(ignored -> this); + } + + @Override + public MapCodec codec() { + return this.codec; + } + + @Override + protected RenderShape getRenderShape(BlockState state) { + return RenderShape.MODEL; + } + + @Override + public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { + return new CritterCageBlockEntity(pos, state); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + } + + @Override + public ItemStack getCloneItemStack(net.minecraft.world.level.LevelReader level, BlockPos pos, BlockState state) { + if (level instanceof Level actualLevel && actualLevel.getBlockEntity(pos) instanceof CritterCageBlockEntity blockEntity) { + return blockEntity.toItemStack(); + } + return super.getCloneItemStack(level, pos, state); + } + + @Override + public void playerDestroy(Level level, Player player, BlockPos pos, BlockState state, BlockEntity blockEntity, ItemStack stack) { + super.playerDestroy(level, player, pos, state, blockEntity, stack); + if (level instanceof ServerLevel serverLevel && blockEntity instanceof CritterCageBlockEntity critterCageBlockEntity) { + Block.popResource(serverLevel, pos, critterCageBlockEntity.toItemStack()); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/GiantLilyPadBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/GiantLilyPadBlock.java index a3986713..b96f964d 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/block/GiantLilyPadBlock.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/GiantLilyPadBlock.java @@ -3,14 +3,18 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchyTags; import com.mojang.serialization.MapCodec; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; +import java.util.EnumMap; +import java.util.Map; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundSource; import net.minecraft.util.RandomSource; import net.minecraft.util.StringRepresentable; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.ItemInteractionResult; +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; @@ -23,27 +27,30 @@ import net.minecraft.world.level.block.RenderShape; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.Vec2; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; import org.jetbrains.annotations.Nullable; public final class GiantLilyPadBlock extends Block implements BonemealableBlock { public static final MapCodec CODEC = Block.simpleCodec(GiantLilyPadBlock::new); - public static final EnumProperty SHAPE = EnumProperty.create("shape", Shape.class); public static final EnumProperty TILE_POSITION = EnumProperty.create("tile_position", TilePosition.class); public static final EnumProperty ROTATION = EnumProperty.create("rotation", PadRotation.class); + public static final BooleanProperty HAS_LOTUS = BooleanProperty.create("has_lotus"); - private static final VoxelShape SHAPE_BOX = Block.box(0.0D, 0.0D, 0.0D, 16.0D, 0.5D, 16.0D); - private static final int SEARCH_RADIUS = 2; - private static final ThreadLocal RESTRUCTURING_DEPTH = ThreadLocal.withInitial(() -> 0); + private static final VoxelShape SHAPE = Block.box(0.0D, 0.0D, 0.0D, 16.0D, 0.5D, 16.0D); + private static final ThreadLocal REMOVING_STRUCTURE = ThreadLocal.withInitial(() -> false); + private static final Map OFFSETS = createOffsets(); public GiantLilyPadBlock(BlockBehaviour.Properties properties) { super(properties); this.registerDefaultState(this.stateDefinition.any() - .setValue(SHAPE, Shape.SINGLE) - .setValue(TILE_POSITION, TilePosition.SINGLE) - .setValue(ROTATION, PadRotation.DEG_0)); + .setValue(TILE_POSITION, TilePosition.CENTER) + .setValue(ROTATION, PadRotation.DEG_0) + .setValue(HAS_LOTUS, false)); } @Override @@ -53,12 +60,7 @@ public final class GiantLilyPadBlock extends Block implements BonemealableBlock @Override protected void createBlockStateDefinition(StateDefinition.Builder builder) { - builder.add(SHAPE, TILE_POSITION, ROTATION); - } - - @Override - public BlockState getStateForPlacement(BlockPlaceContext context) { - return canSurvive(defaultBlockState(), context.getLevel(), context.getClickedPos()) ? defaultBlockState() : null; + builder.add(TILE_POSITION, ROTATION, HAS_LOTUS); } @Override @@ -68,7 +70,7 @@ public final class GiantLilyPadBlock extends Block implements BonemealableBlock @Override protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { - return SHAPE_BOX; + return SHAPE; } @Override @@ -77,12 +79,15 @@ public final class GiantLilyPadBlock extends Block implements BonemealableBlock } @Override - public boolean isValidBonemealTarget(LevelReader level, BlockPos pos, BlockState state) { - if (isThreeByThreeCenter(state)) { - return level.isEmptyBlock(pos.above()); - } + public @Nullable BlockState getStateForPlacement(BlockPlaceContext context) { + return this.defaultBlockState() + .setValue(TILE_POSITION, TilePosition.CENTER) + .setValue(ROTATION, rotationForPlacement(context.getClickedPos())); + } - return state.getValue(SHAPE) != Shape.THREE_BY_THREE; + @Override + public boolean isValidBonemealTarget(LevelReader level, BlockPos pos, BlockState state) { + return !structureHasLotus(level, centerFrom(pos, state)); } @Override @@ -92,282 +97,161 @@ public final class GiantLilyPadBlock extends Block implements BonemealableBlock @Override public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { - if (isThreeByThreeCenter(state)) { - growLotus(level, pos); + BlockPos center = centerFrom(pos, state); + if (structureHasLotus(level, center)) { return; } - if (state.getValue(SHAPE) == Shape.THREE_BY_THREE) { - return; - } - - spreadNearby(level, random, pos); - } - - private static boolean isThreeByThreeCenter(BlockState state) { - return state.getValue(SHAPE) == Shape.THREE_BY_THREE && state.getValue(TILE_POSITION) == TilePosition.CENTER; - } - - private static void growLotus(ServerLevel level, BlockPos padPos) { - BlockPos abovePos = padPos.above(); - if (!level.isEmptyBlock(abovePos)) { - return; - } - - BlockState lotusState = AntarchyObjects.LOTUS.get().defaultBlockState(); - if (lotusState.canSurvive(level, abovePos)) { - level.setBlock(abovePos, lotusState, Block.UPDATE_ALL); - } - } - - private static void spreadNearby(ServerLevel level, RandomSource random, BlockPos origin) { - for (int attempt = 0; attempt < 6; attempt++) { - int dx = random.nextInt(5) - 2; - int dz = random.nextInt(5) - 2; - if (dx == 0 && dz == 0) { - continue; - } - - BlockPos candidate = origin.offset(dx, 0, dz); - if (!level.isEmptyBlock(candidate) || !isSupported(level, candidate)) { - continue; - } - - level.setBlock(candidate, AntarchyObjects.GIANT_LILY_PAD.get().defaultBlockState(), Block.UPDATE_ALL); - return; - } + level.setBlock(pos, state.setValue(HAS_LOTUS, true), Block.UPDATE_CLIENTS); } @Override protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor level, BlockPos pos, BlockPos neighborPos) { if (!state.canSurvive(level, pos)) { - if (level instanceof ServerLevel serverLevel) { - recalculateNearbyPads(serverLevel, pos); - } return Blocks.AIR.defaultBlockState(); } - if (level instanceof ServerLevel serverLevel) { - recalculateNearbyPads(serverLevel, pos); - } - return super.updateShape(state, direction, neighborState, level, pos, neighborPos); } @Override - protected void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean movedByPiston) { - super.onPlace(state, level, pos, oldState, movedByPiston); - if (!level.isClientSide && !oldState.is(state.getBlock()) && level instanceof ServerLevel serverLevel) { - recalculateNearbyPads(serverLevel, pos); + protected void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean movedByPiston) { + if (!state.is(newState.getBlock()) && !REMOVING_STRUCTURE.get()) { + removeStructure(level, pos, state); } + super.onRemove(state, level, pos, newState, movedByPiston); } @Override - protected void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean movedByPiston) { - super.onRemove(state, level, pos, newState, movedByPiston); - if (!level.isClientSide && !state.is(newState.getBlock()) && level instanceof ServerLevel serverLevel) { - recalculateNearbyPads(serverLevel, pos); + protected ItemInteractionResult useItemOn( + ItemStack stack, + BlockState state, + Level level, + BlockPos pos, + Player player, + InteractionHand hand, + BlockHitResult hitResult + ) { + if (!stack.is(AntarchyObjects.LOTUS.get().asItem()) || structureHasLotus(level, centerFrom(pos, state))) { + return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; } + + if (level.isClientSide) { + return ItemInteractionResult.SUCCESS; + } + + level.setBlock(pos, state.setValue(HAS_LOTUS, true), Block.UPDATE_CLIENTS); + if (!player.getAbilities().instabuild) { + stack.shrink(1); + } + level.playSound(null, pos, net.minecraft.sounds.SoundEvents.LILY_PAD_PLACE, SoundSource.BLOCKS, 1.0F, 1.0F); + return ItemInteractionResult.CONSUME; } - private static boolean isSupported(LevelReader level, BlockPos pos) { - return level.getFluidState(pos).is(AntarchyTags.Fluids.GIANT_LILY_PAD_SUPPORTING_FLUIDS) - || level.getFluidState(pos.below()).is(AntarchyTags.Fluids.GIANT_LILY_PAD_SUPPORTING_FLUIDS); - } - - private static void recalculateNearbyPads(ServerLevel level, BlockPos center) { - if (isRestructuring()) { + @Override + public void animateTick(BlockState state, Level level, BlockPos pos, RandomSource random) { + if (!state.getValue(HAS_LOTUS) || random.nextInt(10) != 0) { return; } - withRestructuringGuard(() -> { - int minX = center.getX() - SEARCH_RADIUS; - int maxX = center.getX() + SEARCH_RADIUS; - int minZ = center.getZ() - SEARCH_RADIUS; - int maxZ = center.getZ() + SEARCH_RADIUS; - int y = center.getY(); + double x = pos.getX() + 0.5D + (random.nextDouble() - 0.5D) * 0.6D; + double z = pos.getZ() + 0.5D + (random.nextDouble() - 0.5D) * 0.6D; + double y = pos.getY() + 0.55D; + level.addParticle(AntarchyObjects.LOTUS_POLLEN.get(), x, y, z, 0.0D, 0.015D, 0.0D); + } - List candidates = new ArrayList<>(); - collectCandidates(level, y, minX, maxX, minZ, maxZ, candidates); + public static boolean canPlaceStructure(LevelAccessor level, BlockPos centerPos) { + for (TilePosition tilePosition : TilePosition.values()) { + BlockPos partPos = positionFor(centerPos, tilePosition); + if (!level.isEmptyBlock(partPos) || !isSupported(level, partPos)) { + return false; + } + } + return true; + } - candidates.sort(Comparator - .comparingInt(ShapeCandidate::area).reversed() - .thenComparingInt(candidate -> candidate.anchor().getX()) - .thenComparingInt(candidate -> candidate.anchor().getZ()) - .thenComparingInt(candidate -> candidate.shape().ordinal())); + public static void placeStructure(LevelAccessor level, BlockPos centerPos, PadRotation rotation) { + for (TilePosition tilePosition : TilePosition.values()) { + BlockPos partPos = positionFor(centerPos, tilePosition); + BlockState partState = AntarchyObjects.GIANT_LILY_PAD.get().defaultBlockState() + .setValue(TILE_POSITION, tilePosition) + .setValue(ROTATION, rotation) + .setValue(HAS_LOTUS, false); + level.setBlock(partPos, partState, Block.UPDATE_CLIENTS); + } + } - List assigned = new ArrayList<>(); - for (ShapeCandidate candidate : candidates) { - boolean blocked = false; - for (BlockPos pos : candidate.positions()) { - if (assigned.contains(pos)) { - blocked = true; - break; - } - } - if (blocked) { + public static PadRotation rotationForPlacement(BlockPos pos) { + long seed = pos.asLong() ^ Long.rotateLeft(pos.asLong(), 17); + RandomSource random = RandomSource.create(seed); + return PadRotation.values()[random.nextInt(4)]; + } + + private static boolean isSupported(LevelReader level, BlockPos pos) { + return level.getFluidState(pos.below()).is(AntarchyTags.Fluids.GIANT_LILY_PAD_SUPPORTING_FLUIDS) + && level.getFluidState(pos).isEmpty(); + } + + private static void removeStructure(Level level, BlockPos pos, BlockState state) { + BlockPos center = centerFrom(pos, state); + boolean shouldDropLotus = structureHasLotus(level, center) && !state.getValue(HAS_LOTUS); + + REMOVING_STRUCTURE.set(true); + try { + for (TilePosition tilePosition : TilePosition.values()) { + BlockPos partPos = positionFor(center, tilePosition); + if (partPos.equals(pos)) { continue; } - - PadRotation rotation = rotationFor(level, candidate.anchor()); - for (TileAssignment tile : candidate.tiles()) { - BlockPos pos = tile.pos(); - BlockState newState = level.getBlockState(pos); - if (!newState.is(candidate.block())) { - continue; - } - BlockState shapedState = candidate.block().defaultBlockState() - .setValue(SHAPE, candidate.shape()) - .setValue(TILE_POSITION, tile.tilePosition()) - .setValue(ROTATION, rotation); - if (!newState.equals(shapedState)) { - level.setBlock(pos, shapedState, Block.UPDATE_CLIENTS); - } - assigned.add(pos); + BlockState partState = level.getBlockState(partPos); + if (partState.is(AntarchyObjects.GIANT_LILY_PAD.get())) { + level.removeBlock(partPos, false); } } - }); - } - - private static void collectCandidates(ServerLevel level, int y, int minX, int maxX, int minZ, int maxZ, List out) { - addRectCandidates(level, y, minX, maxX, minZ, maxZ, Shape.THREE_BY_THREE, GridLayouts.THREE_BY_THREE, out); - addRectCandidates(level, y, minX, maxX, minZ, maxZ, Shape.TWO_BY_TWO, GridLayouts.TWO_BY_TWO, out); - addRectCandidates(level, y, minX, maxX, minZ, maxZ, Shape.TWO_BY_ONE, GridLayouts.TWO_BY_ONE_HORIZONTAL, out); - addRectCandidates(level, y, minX, maxX, minZ, maxZ, Shape.TWO_BY_ONE, GridLayouts.TWO_BY_ONE_VERTICAL, out); - addRectCandidates(level, y, minX, maxX, minZ, maxZ, Shape.SINGLE, GridLayouts.SINGLE, out); - } - - private static void addRectCandidates(ServerLevel level, int y, int minX, int maxX, int minZ, int maxZ, Shape shape, GridLayout layout, List out) { - int width = layout.width(); - int height = layout.height(); - for (int anchorX = minX; anchorX <= maxX - width + 1; anchorX++) { - for (int anchorZ = minZ; anchorZ <= maxZ - height + 1; anchorZ++) { - BlockPos anchor = new BlockPos(anchorX, y, anchorZ); - ShapeCandidate candidate = createCandidate(level, anchor, shape, layout); - if (candidate != null) { - out.add(candidate); - } - } - } - } - - @Nullable - private static ShapeCandidate createCandidate(ServerLevel level, BlockPos anchor, Shape shape, GridLayout layout) { - BlockState anchorState = level.getBlockState(anchor); - if (!(anchorState.getBlock() instanceof GiantLilyPadBlock giantLilyPadBlock)) { - return null; - } - - List tiles = new ArrayList<>(layout.width() * layout.height()); - for (int row = 0; row < layout.height(); row++) { - for (int column = 0; column < layout.width(); column++) { - BlockPos pos = anchor.offset(column, 0, row); - if (!level.getBlockState(pos).is(giantLilyPadBlock)) { - return null; - } - TilePosition tilePosition = layout.tiles()[row][column]; - tiles.add(new TileAssignment(pos, tilePosition)); - } - } - - return new ShapeCandidate(giantLilyPadBlock, shape, anchor, tiles); - } - - private static boolean isRestructuring() { - return RESTRUCTURING_DEPTH.get() > 0; - } - - private static void withRestructuringGuard(Runnable action) { - RESTRUCTURING_DEPTH.set(RESTRUCTURING_DEPTH.get() + 1); - try { - action.run(); } finally { - RESTRUCTURING_DEPTH.set(Math.max(0, RESTRUCTURING_DEPTH.get() - 1)); + REMOVING_STRUCTURE.set(false); + } + + if (shouldDropLotus && !level.isClientSide) { + popResource(level, pos, new ItemStack(AntarchyObjects.LOTUS.get())); } } - private static PadRotation rotationFor(ServerLevel level, BlockPos anchor) { - long seed = level.getSeed(); - long mix = seed - ^ anchor.asLong() - ^ Long.rotateLeft(seed, 17) - ^ Long.rotateLeft(anchor.asLong(), 31); - int index = (int) Math.floorMod(mix, 4L); - return PadRotation.values()[index]; + private static boolean structureHasLotus(LevelReader level, BlockPos center) { + for (TilePosition tilePosition : TilePosition.values()) { + BlockState state = level.getBlockState(positionFor(center, tilePosition)); + if (state.is(AntarchyObjects.GIANT_LILY_PAD.get()) && state.getValue(HAS_LOTUS)) { + return true; + } + } + return false; } - private record ShapeCandidate(GiantLilyPadBlock block, Shape shape, BlockPos anchor, List tiles) { - int area() { - return this.tiles.size(); - } - - List positions() { - return this.tiles.stream().map(TileAssignment::pos).toList(); - } + private static BlockPos centerFrom(BlockPos pos, BlockState state) { + Vec2 offset = OFFSETS.get(state.getValue(TILE_POSITION)); + return pos.offset((int) -offset.x, 0, (int) -offset.y); } - private record TileAssignment(BlockPos pos, TilePosition tilePosition) { + private static BlockPos positionFor(BlockPos center, TilePosition tilePosition) { + Vec2 offset = OFFSETS.get(tilePosition); + return center.offset((int) offset.x, 0, (int) offset.y); } - private record GridLayout(TilePosition[][] tiles) { - int width() { - return this.tiles[0].length; - } - - int height() { - return this.tiles.length; - } - } - - private static final class GridLayouts { - private static final GridLayout SINGLE = new GridLayout(new TilePosition[][]{ - {TilePosition.SINGLE} - }); - - private static final GridLayout TWO_BY_ONE_HORIZONTAL = new GridLayout(new TilePosition[][]{ - {TilePosition.MIDDLE_LEFT, TilePosition.MIDDLE_RIGHT} - }); - - private static final GridLayout TWO_BY_ONE_VERTICAL = new GridLayout(new TilePosition[][]{ - {TilePosition.TOP_MIDDLE}, - {TilePosition.BOTTOM_MIDDLE} - }); - - private static final GridLayout TWO_BY_TWO = new GridLayout(new TilePosition[][]{ - {TilePosition.TOP_LEFT, TilePosition.TOP_RIGHT}, - {TilePosition.BOTTOM_LEFT, TilePosition.BOTTOM_RIGHT} - }); - - private static final GridLayout THREE_BY_THREE = new GridLayout(new TilePosition[][]{ - {TilePosition.TOP_LEFT, TilePosition.TOP_MIDDLE, TilePosition.TOP_RIGHT}, - {TilePosition.MIDDLE_LEFT, TilePosition.CENTER, TilePosition.MIDDLE_RIGHT}, - {TilePosition.BOTTOM_LEFT, TilePosition.BOTTOM_MIDDLE, TilePosition.BOTTOM_RIGHT} - }); - - private GridLayouts() { - } - } - - public enum Shape implements StringRepresentable { - SINGLE("single"), - TWO_BY_ONE("two_by_one"), - TWO_BY_TWO("two_by_two"), - THREE_BY_THREE("three_by_three"); - - private final String name; - - Shape(String name) { - this.name = name; - } - - @Override - public String getSerializedName() { - return this.name; - } + private static Map createOffsets() { + Map offsets = new EnumMap<>(TilePosition.class); + offsets.put(TilePosition.TOP_LEFT, new Vec2(-1, -1)); + offsets.put(TilePosition.TOP_MIDDLE, new Vec2(0, -1)); + offsets.put(TilePosition.TOP_RIGHT, new Vec2(1, -1)); + offsets.put(TilePosition.MIDDLE_LEFT, new Vec2(-1, 0)); + offsets.put(TilePosition.CENTER, new Vec2(0, 0)); + offsets.put(TilePosition.MIDDLE_RIGHT, new Vec2(1, 0)); + offsets.put(TilePosition.BOTTOM_LEFT, new Vec2(-1, 1)); + offsets.put(TilePosition.BOTTOM_MIDDLE, new Vec2(0, 1)); + offsets.put(TilePosition.BOTTOM_RIGHT, new Vec2(1, 1)); + return offsets; } public enum TilePosition implements StringRepresentable { - SINGLE("single"), TOP_LEFT("top_left"), TOP_MIDDLE("top_middle"), TOP_RIGHT("top_right"), diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/LotusBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/LotusBlock.java index b2e2ce3e..e100ac73 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/block/LotusBlock.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/LotusBlock.java @@ -1,9 +1,9 @@ package com.craisinlord.antarchy.content.block; +import com.craisinlord.antarchy.content.AntarchyObjects; import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.core.particles.DustParticleOptions; import net.minecraft.util.RandomSource; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; @@ -20,13 +20,12 @@ import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import org.joml.Vector3f; public class LotusBlock extends Block { public static final MapCodec CODEC = simpleCodec(LotusBlock::new); public static final BooleanProperty HANGING = BlockStateProperties.HANGING; - private static final VoxelShape SHAPE = Block.box(3.0D, 0.0D, 3.0D, 13.0D, 13.0D, 13.0D); - private static final Vector3f POLLEN_COLOR = new Vector3f(1.0F, 0.85F, 0.2F); + private static final VoxelShape SHAPE_STANDING = Block.box(3.0D, 0.0D, 3.0D, 13.0D, 6.5D, 13.0D); + private static final VoxelShape SHAPE_HANGING = Block.box(3.0D, 9.5D, 3.0D, 13.0D, 16.0D, 13.0D); public LotusBlock(BlockBehaviour.Properties properties) { super(properties); @@ -68,7 +67,7 @@ public class LotusBlock extends Block { @Override protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { - return SHAPE; + return state.getValue(HANGING) ? SHAPE_HANGING : SHAPE_STANDING; } @Override @@ -102,6 +101,6 @@ public class LotusBlock extends Block { double z = pos.getZ() + 0.5D + (random.nextDouble() - 0.5D) * 0.6D; double y = state.getValue(HANGING) ? pos.getY() + 0.2D : pos.getY() + 0.8D; double motionY = state.getValue(HANGING) ? -0.02D : 0.015D; - level.addParticle(new DustParticleOptions(POLLEN_COLOR, 1.0F), x, y, z, 0.0D, motionY, 0.0D); + level.addParticle(AntarchyObjects.LOTUS_POLLEN.get(), x, y, z, 0.0D, motionY, 0.0D); } } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/SeashellBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/SeashellBlock.java index 8c6439c3..400f646d 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/block/SeashellBlock.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/SeashellBlock.java @@ -46,7 +46,11 @@ public final class SeashellBlock extends BaseEntityBlock implements SimpleWaterl public static final BooleanProperty POWERED = BlockStateProperties.POWERED; public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; - private static final VoxelShape SHAPE = Block.box(1.0D, 0.0D, 1.0D, 15.0D, 5.333333D, 15.0D); + private static final double SHELL_MIN = 1.0D; + private static final double SHELL_MAX = 15.0D; + private static final double SHELL_HEIGHT = 4.333333D; + private static final double COLLISION_FORWARD_OFFSET = 1.0D; + private static final VoxelShape OUTLINE_SHAPE = Block.box(SHELL_MIN, 0.0D, SHELL_MIN, SHELL_MAX, SHELL_HEIGHT, SHELL_MAX); public SeashellBlock(BlockBehaviour.Properties properties) { super(properties); @@ -83,17 +87,17 @@ public final class SeashellBlock extends BaseEntityBlock implements SimpleWaterl @Override protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { - return SHAPE; + return OUTLINE_SHAPE; } @Override protected VoxelShape getCollisionShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { - return SHAPE; + return collisionShape(state.getValue(FACING)); } @Override protected VoxelShape getOcclusionShape(BlockState state, BlockGetter level, BlockPos pos) { - return SHAPE; + return OUTLINE_SHAPE; } @Override @@ -185,6 +189,45 @@ public final class SeashellBlock extends BaseEntityBlock implements SimpleWaterl return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; } + if (player.isShiftKeyDown()) { + if (level.isClientSide) { + return ItemInteractionResult.SUCCESS; + } + + if (seashell.closeManually()) { + level.playSound(null, pos, SoundEvents.CHEST_CLOSE, SoundSource.BLOCKS, 0.6F, 0.95F + level.random.nextFloat() * 0.1F); + return ItemInteractionResult.CONSUME; + } + + return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + } + + if (!seashell.isEffectivelyOpen()) { + if (level.isClientSide) { + return ItemInteractionResult.SUCCESS; + } + + if (seashell.openManually()) { + level.playSound(null, pos, SoundEvents.CHEST_OPEN, SoundSource.BLOCKS, 0.6F, 0.95F + level.random.nextFloat() * 0.1F); + return ItemInteractionResult.CONSUME; + } + + return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + } + + if (stack.isEmpty() && !seashell.hasAnyContents()) { + if (level.isClientSide) { + return ItemInteractionResult.SUCCESS; + } + + if (seashell.closeManually()) { + level.playSound(null, pos, SoundEvents.CHEST_CLOSE, SoundSource.BLOCKS, 0.6F, 0.95F + level.random.nextFloat() * 0.1F); + return ItemInteractionResult.CONSUME; + } + + return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + } + if (!stack.isEmpty()) { if (level.isClientSide) { return seashell.canAcceptItem(player, stack) ? ItemInteractionResult.SUCCESS : ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; @@ -234,7 +277,19 @@ public final class SeashellBlock extends BaseEntityBlock implements SimpleWaterl BlockState updatedState = state.setValue(POWERED, powered); level.setBlock(pos, updatedState, Block.UPDATE_ALL); if (level.getBlockEntity(pos) instanceof SeashellBlockEntity seashell) { - seashell.onPowerStateChanged(powered); + if (seashell.onPowerStateChanged(powered)) { + level.playSound(null, pos, powered ? SoundEvents.CHEST_OPEN : SoundEvents.CHEST_CLOSE, SoundSource.BLOCKS, 0.6F, 0.95F + level.random.nextFloat() * 0.1F); + } } } + + private static VoxelShape collisionShape(Direction facing) { + return switch (facing) { + case NORTH -> Block.box(SHELL_MIN, 0.0D, SHELL_MIN - COLLISION_FORWARD_OFFSET, SHELL_MAX, SHELL_HEIGHT, SHELL_MAX - COLLISION_FORWARD_OFFSET); + case SOUTH -> Block.box(SHELL_MIN, 0.0D, SHELL_MIN + COLLISION_FORWARD_OFFSET, SHELL_MAX, SHELL_HEIGHT, SHELL_MAX + COLLISION_FORWARD_OFFSET); + case WEST -> Block.box(SHELL_MIN - COLLISION_FORWARD_OFFSET, 0.0D, SHELL_MIN, SHELL_MAX - COLLISION_FORWARD_OFFSET, SHELL_HEIGHT, SHELL_MAX); + case EAST -> Block.box(SHELL_MIN + COLLISION_FORWARD_OFFSET, 0.0D, SHELL_MIN, SHELL_MAX + COLLISION_FORWARD_OFFSET, SHELL_HEIGHT, SHELL_MAX); + default -> OUTLINE_SHAPE; + }; + } } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/entity/CritterCageBlockEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/block/entity/CritterCageBlockEntity.java new file mode 100644 index 00000000..6c8d400d --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/entity/CritterCageBlockEntity.java @@ -0,0 +1,173 @@ +package com.craisinlord.antarchy.content.block.entity; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.item.CritterCageItem; +import java.util.UUID; +import net.minecraft.core.BlockPos; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.component.DataComponents; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.component.CustomData; +import net.minecraft.world.level.Level; +import org.jetbrains.annotations.Nullable; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; + +public class CritterCageBlockEntity extends BlockEntity { + private static final String ENTITY_TYPE_TAG = "EntityType"; + private static final String ENTITY_DATA_TAG = "EntityData"; + private static final String PRIMARY_COLOR_TAG = "PrimaryColor"; + private static final String SECONDARY_COLOR_TAG = "SecondaryColor"; + private static final String CUSTOM_NAME_TAG = "CustomName"; + + private ResourceLocation entityTypeId; + private CompoundTag entityData; + private int primaryColor = -1; + private int secondaryColor = -1; + @Nullable + private Component customName; + private int dataVersion; + + private transient int clientVersion = -1; + @Nullable + private transient Entity clientDisplayEntity; + + public CritterCageBlockEntity(BlockPos pos, BlockState blockState) { + super(AntarchyObjects.CRITTER_CAGE_BLOCK_ENTITY.get(), pos, blockState); + } + + public void loadFromItem(ItemStack stack, HolderLookup.Provider registries) { + this.entityTypeId = stack.get(AntarchyObjects.CRITTER_CAGE_ENTITY_TYPE_COMPONENT.get()); + this.entityData = this.extractEntityData(stack); + this.primaryColor = stack.getOrDefault(AntarchyObjects.CRITTER_CAGE_PRIMARY_COLOR_COMPONENT.get(), -1); + this.secondaryColor = stack.getOrDefault(AntarchyObjects.CRITTER_CAGE_SECONDARY_COLOR_COMPONENT.get(), -1); + this.customName = stack.has(DataComponents.CUSTOM_NAME) ? stack.get(DataComponents.CUSTOM_NAME) : null; + this.dataVersion++; + this.clientDisplayEntity = null; + this.setChanged(); + } + + public ItemStack toItemStack() { + ItemStack stack = new ItemStack(AntarchyObjects.CRITTER_CAGE.get()); + if (this.entityTypeId != null) { + stack.set(AntarchyObjects.CRITTER_CAGE_ENTITY_TYPE_COMPONENT.get(), this.entityTypeId); + } + if (this.entityData != null) { + CustomData.update(DataComponents.CUSTOM_DATA, stack, customData -> customData.put(ENTITY_DATA_TAG, this.entityData.copy())); + } + if (this.primaryColor >= 0) { + stack.set(AntarchyObjects.CRITTER_CAGE_PRIMARY_COLOR_COMPONENT.get(), this.primaryColor); + } else { + stack.remove(AntarchyObjects.CRITTER_CAGE_PRIMARY_COLOR_COMPONENT.get()); + } + if (this.secondaryColor >= 0) { + stack.set(AntarchyObjects.CRITTER_CAGE_SECONDARY_COLOR_COMPONENT.get(), this.secondaryColor); + } else { + stack.remove(AntarchyObjects.CRITTER_CAGE_SECONDARY_COLOR_COMPONENT.get()); + } + if (this.customName != null) { + stack.set(DataComponents.CUSTOM_NAME, this.customName); + } + return stack; + } + + public int primaryColor() { + return this.primaryColor; + } + + public int secondaryColor() { + return this.secondaryColor; + } + + @Nullable + public Entity getOrCreateClientDisplayEntity(Level level) { + if (level == null || level.isClientSide == false) { + return null; + } + if (this.clientDisplayEntity != null && this.clientVersion == this.dataVersion) { + return this.clientDisplayEntity; + } + + this.clientVersion = this.dataVersion; + this.clientDisplayEntity = this.createDisplayEntity(level); + return this.clientDisplayEntity; + } + + @Nullable + private Entity createDisplayEntity(Level level) { + if (this.entityTypeId == null || this.entityData == null) { + return null; + } + + EntityType type = BuiltInRegistries.ENTITY_TYPE.getOptional(this.entityTypeId).orElse(null); + if (type == null) { + return null; + } + + CompoundTag savedData = this.entityData.copy(); + savedData.putString("id", this.entityTypeId.toString()); + + Entity entity = EntityType.loadEntityRecursive(savedData, level, loaded -> loaded); + if (entity == null) { + return null; + } + + entity.setUUID(UUID.randomUUID()); + entity.setNoGravity(true); + entity.noPhysics = true; + entity.setSilent(true); + if (entity instanceof Mob mob) { + mob.setNoAi(true); + } + if (this.customName != null) { + entity.setCustomName(this.customName); + } + entity.setCustomNameVisible(false); + return entity; + } + + @Override + protected void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.saveAdditional(tag, registries); + if (this.entityTypeId != null) { + tag.putString(ENTITY_TYPE_TAG, this.entityTypeId.toString()); + } + if (this.entityData != null) { + tag.put(ENTITY_DATA_TAG, this.entityData.copy()); + } + tag.putInt(PRIMARY_COLOR_TAG, this.primaryColor); + tag.putInt(SECONDARY_COLOR_TAG, this.secondaryColor); + if (this.customName != null) { + tag.putString(CUSTOM_NAME_TAG, this.customName.getString()); + } + } + + @Override + protected void loadAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.loadAdditional(tag, registries); + this.entityTypeId = tag.contains(ENTITY_TYPE_TAG, Tag.TAG_STRING) ? ResourceLocation.parse(tag.getString(ENTITY_TYPE_TAG)) : null; + this.entityData = tag.contains(ENTITY_DATA_TAG, Tag.TAG_COMPOUND) ? tag.getCompound(ENTITY_DATA_TAG).copy() : null; + this.primaryColor = tag.getInt(PRIMARY_COLOR_TAG); + this.secondaryColor = tag.getInt(SECONDARY_COLOR_TAG); + this.customName = tag.contains(CUSTOM_NAME_TAG, Tag.TAG_STRING) ? Component.literal(tag.getString(CUSTOM_NAME_TAG)) : null; + this.clientDisplayEntity = null; + this.dataVersion++; + } + + private CompoundTag extractEntityData(ItemStack stack) { + CustomData customData = stack.getOrDefault(DataComponents.CUSTOM_DATA, CustomData.EMPTY); + CompoundTag tag = customData.copyTag(); + if (!tag.contains(ENTITY_DATA_TAG, Tag.TAG_COMPOUND)) { + return null; + } + return tag.getCompound(ENTITY_DATA_TAG).copy(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/entity/SeashellBlockEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/block/entity/SeashellBlockEntity.java index b2367c28..36bb3af5 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/block/entity/SeashellBlockEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/entity/SeashellBlockEntity.java @@ -10,6 +10,9 @@ import net.minecraft.core.HolderLookup; import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.game.ClientGamePacketListener; +import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Containers; import net.minecraft.world.InteractionHand; @@ -40,23 +43,32 @@ public final class SeashellBlockEntity extends RandomizableContainerBlockEntity private static final RawAnimation OPEN_ANIM = RawAnimation.begin().thenPlayAndHold("open"); private static final RawAnimation CLOSED_ANIM = RawAnimation.begin().thenPlayAndHold("closed"); private static final Component TITLE = Component.translatable("block.antarchy.seashell"); + private static final int OPEN_TRANSITION_TICKS = 8; + private static final int CLOSE_TRANSITION_TICKS = 9; private final AnimatableInstanceCache animatableCache = GeckoLibUtil.createInstanceCache(this); private NonNullList items = NonNullList.withSize(9, ItemStack.EMPTY); private boolean visualOpen; private boolean initializedVisualState; + private boolean redstonePowered; + private boolean manuallyOpened; + private boolean transitionTargetOpen; + private int transitionTicksRemaining; public SeashellBlockEntity(BlockPos pos, BlockState blockState) { super(AntarchyObjects.SEASHELL_BLOCK_ENTITY.get(), pos, blockState); - this.visualOpen = blockState.getValue(SeashellBlock.POWERED); + this.redstonePowered = blockState.getValue(SeashellBlock.POWERED); + this.visualOpen = this.redstonePowered; } public static void serverTick(Level level, BlockPos pos, BlockState state, SeashellBlockEntity seashell) { seashell.syncVisualState(state.getValue(SeashellBlock.POWERED)); + seashell.tickVisualTransition(); } public static void clientTick(Level level, BlockPos pos, BlockState state, SeashellBlockEntity seashell) { seashell.syncVisualState(state.getValue(SeashellBlock.POWERED)); + seashell.tickVisualTransition(); } public boolean canAcceptItem(@Nullable Player player, ItemStack stack) { @@ -111,20 +123,59 @@ public final class SeashellBlockEntity extends RandomizableContainerBlockEntity this.setChanged(); } - public void onPowerStateChanged(boolean open) { - this.syncVisualState(open); - this.triggerAnim(TRANSITION_CONTROLLER, open ? OPEN_TRIGGER : CLOSE_TRIGGER); + public boolean onPowerStateChanged(boolean powered) { + boolean wasOpen = this.isEffectivelyOpen(); + this.redstonePowered = powered; + boolean isOpen = this.isEffectivelyOpen(); + if (wasOpen != isOpen) { + this.beginTransition(isOpen); + } + this.setChangedAndSync(); + return wasOpen != isOpen; } - public void syncVisualState(boolean open) { + public boolean openManually() { + if (this.isEffectivelyOpen()) { + return false; + } + + this.manuallyOpened = true; + this.beginTransition(true); + this.setChangedAndSync(); + return true; + } + + public boolean closeManually() { + if (!this.manuallyOpened) { + return false; + } + + this.manuallyOpened = false; + boolean stillOpen = this.isEffectivelyOpen(); + if (!stillOpen) { + this.beginTransition(false); + } + + this.setChangedAndSync(); + return true; + } + + public boolean isEffectivelyOpen() { + return this.redstonePowered || this.manuallyOpened; + } + + public void syncVisualState(boolean powered) { + this.redstonePowered = powered; if (!this.initializedVisualState) { - this.visualOpen = open; + this.visualOpen = this.isEffectivelyOpen(); this.initializedVisualState = true; return; } - this.visualOpen = open; + if (this.transitionTicksRemaining <= 0) { + this.visualOpen = this.isEffectivelyOpen(); + } } public boolean isVisualOpen() { @@ -198,15 +249,35 @@ public final class SeashellBlockEntity extends RandomizableContainerBlockEntity @Override protected void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) { super.saveAdditional(tag, registries); + net.minecraft.world.ContainerHelper.saveAllItems(tag, this.items, registries); tag.putBoolean("VisualOpen", this.visualOpen); tag.putBoolean("VisualInitialized", this.initializedVisualState); + tag.putBoolean("ManuallyOpened", this.manuallyOpened); + tag.putBoolean("TransitionTargetOpen", this.transitionTargetOpen); + tag.putInt("TransitionTicksRemaining", this.transitionTicksRemaining); + } + + @Override + public CompoundTag getUpdateTag(HolderLookup.Provider registries) { + return this.saveCustomOnly(registries); + } + + @Override + public Packet getUpdatePacket() { + return ClientboundBlockEntityDataPacket.create(this); } @Override protected void loadAdditional(CompoundTag tag, HolderLookup.Provider registries) { super.loadAdditional(tag, registries); + if (tag.contains("Items")) { + net.minecraft.world.ContainerHelper.loadAllItems(tag, this.items, registries); + } this.visualOpen = tag.getBoolean("VisualOpen"); this.initializedVisualState = tag.getBoolean("VisualInitialized"); + this.manuallyOpened = tag.getBoolean("ManuallyOpened"); + this.transitionTargetOpen = tag.getBoolean("TransitionTargetOpen"); + this.transitionTicksRemaining = tag.getInt("TransitionTicksRemaining"); } private void setChangedAndSync() { @@ -235,6 +306,24 @@ public final class SeashellBlockEntity extends RandomizableContainerBlockEntity return -1; } + private void beginTransition(boolean opening) { + this.transitionTargetOpen = opening; + this.transitionTicksRemaining = opening ? OPEN_TRANSITION_TICKS : CLOSE_TRANSITION_TICKS; + this.triggerAnim(TRANSITION_CONTROLLER, opening ? OPEN_TRIGGER : CLOSE_TRIGGER); + } + + private void tickVisualTransition() { + if (this.transitionTicksRemaining <= 0) { + return; + } + + this.transitionTicksRemaining--; + if (this.transitionTicksRemaining == 0) { + this.visualOpen = this.transitionTargetOpen; + this.setChangedAndSync(); + } + } + private static Vec3 displayOffsetFor(int insertionIndex) { return switch (insertionIndex) { case 0 -> offset(1, 0); diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/KrakensGraspThrownTridentModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/KrakensGraspThrownTridentModel.java deleted file mode 100644 index c5fced09..00000000 --- a/common/src/main/java/com/craisinlord/antarchy/content/client/model/KrakensGraspThrownTridentModel.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.craisinlord.antarchy.content.client.model; - -import com.craisinlord.antarchy.content.entity.kraken.KrakensGraspThrownTrident; -import net.minecraft.resources.ResourceLocation; -import software.bernie.geckolib.model.GeoModel; - -public class KrakensGraspThrownTridentModel extends GeoModel { - @Override - public ResourceLocation getModelResource(KrakensGraspThrownTrident animatable) { - return ResourceLocation.fromNamespaceAndPath("antarchy", "geo/krakens_grasp.geo.json"); - } - - @Override - public ResourceLocation getTextureResource(KrakensGraspThrownTrident animatable) { - return ResourceLocation.fromNamespaceAndPath("antarchy", "textures/item/krakens_grasp/krakens_grasp.png"); - } - - @Override - public ResourceLocation getAnimationResource(KrakensGraspThrownTrident animatable) { - return ResourceLocation.fromNamespaceAndPath("antarchy", "animations/static_item.animation.json"); - } -} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/particle/LotusPollenParticle.java b/common/src/main/java/com/craisinlord/antarchy/content/client/particle/LotusPollenParticle.java new file mode 100644 index 00000000..d6faa45b --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/particle/LotusPollenParticle.java @@ -0,0 +1,62 @@ +package com.craisinlord.antarchy.content.client.particle; + +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.particle.Particle; +import net.minecraft.client.particle.ParticleProvider; +import net.minecraft.client.particle.ParticleRenderType; +import net.minecraft.client.particle.SpriteSet; +import net.minecraft.client.particle.TextureSheetParticle; +import net.minecraft.core.particles.SimpleParticleType; + +public final class LotusPollenParticle extends TextureSheetParticle { + private static final int LIFETIME = 140; + + private LotusPollenParticle(ClientLevel level, double x, double y, double z, double xd, double yd, double zd, SpriteSet sprites) { + super(level, x, y, z, 0.0D, 0.0D, 0.0D); + this.setSprite(sprites.get(this.random)); + this.gravity = 0.0F; + this.friction = 0.98F; + this.lifetime = LIFETIME + this.random.nextInt(60); + this.quadSize = 0.06F + this.random.nextFloat() * 0.03F; + this.xd = xd + (this.random.nextDouble() - 0.5D) * 0.01D; + this.yd = yd; + this.zd = zd + (this.random.nextDouble() - 0.5D) * 0.01D; + this.setColor(1.0F, 0.85F, 0.2F); + this.hasPhysics = false; + } + + @Override + public void tick() { + this.xo = this.x; + this.yo = this.y; + this.zo = this.z; + + if (this.age++ >= this.lifetime) { + this.remove(); + return; + } + + this.alpha = 1.0F - (float) this.age / (float) this.lifetime; + this.move(this.xd, this.yd, this.zd); + this.xd *= this.friction; + this.zd *= this.friction; + } + + @Override + public ParticleRenderType getRenderType() { + return ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT; + } + + public static final class Provider implements ParticleProvider { + private final SpriteSet sprites; + + public Provider(SpriteSet sprites) { + this.sprites = sprites; + } + + @Override + public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xd, double yd, double zd) { + return new LotusPollenParticle(level, x, y, z, xd, yd, zd, this.sprites); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/CritterCageRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/CritterCageRenderer.java new file mode 100644 index 00000000..f6bbf25e --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/CritterCageRenderer.java @@ -0,0 +1,60 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.block.entity.CritterCageBlockEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; +import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BlockEntity; + +public class CritterCageRenderer implements BlockEntityRenderer { + public CritterCageRenderer(BlockEntityRendererProvider.Context context) { + } + + @Override + public void render(CritterCageBlockEntity blockEntity, float partialTick, PoseStack poseStack, MultiBufferSource buffer, int packedLight, int packedOverlay) { + Level level = blockEntity.getLevel(); + if (level == null) { + return; + } + + Entity displayEntity = blockEntity.getOrCreateClientDisplayEntity(level); + if (displayEntity == null) { + return; + } + + displayEntity.tickCount = (int) (level.getGameTime() & Integer.MAX_VALUE); + float scale = 0.72F / Math.max(Math.max(displayEntity.getBbWidth(), displayEntity.getBbHeight()), 0.5F); + float rotation = ((level.getGameTime() + partialTick) * 4.0F) % 360.0F; + + poseStack.pushPose(); + poseStack.translate(0.5D, 0.06D, 0.5D); + poseStack.mulPose(Axis.YP.rotationDegrees(rotation)); + poseStack.scale(scale, scale, scale); + + if (displayEntity instanceof LivingEntity living) { + living.yBodyRot = rotation; + living.yBodyRotO = rotation; + living.yHeadRot = rotation; + living.yHeadRotO = rotation; + } + + Minecraft.getInstance().getEntityRenderDispatcher().render( + displayEntity, + 0.0D, + 0.0D, + 0.0D, + rotation, + partialTick, + poseStack, + buffer, + packedLight + ); + poseStack.popPose(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/KrakensGraspThrownTridentRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/KrakensGraspThrownTridentRenderer.java index 8f7ddd21..ff0fda95 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/KrakensGraspThrownTridentRenderer.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/KrakensGraspThrownTridentRenderer.java @@ -1,13 +1,45 @@ package com.craisinlord.antarchy.content.client.renderer; -import com.craisinlord.antarchy.content.client.model.KrakensGraspThrownTridentModel; import com.craisinlord.antarchy.content.entity.kraken.KrakensGraspThrownTrident; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererProvider; -import software.bernie.geckolib.renderer.GeoEntityRenderer; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.item.ItemDisplayContext; + +public class KrakensGraspThrownTridentRenderer extends EntityRenderer { + private static final ResourceLocation TEXTURE = ResourceLocation.fromNamespaceAndPath("antarchy", "textures/item/krakens_grasp/krakens_grasp.png"); -public class KrakensGraspThrownTridentRenderer extends GeoEntityRenderer { public KrakensGraspThrownTridentRenderer(EntityRendererProvider.Context context) { - super(context, new KrakensGraspThrownTridentModel()); - this.shadowRadius = 0.0F; + super(context); + } + + @Override + public void render(KrakensGraspThrownTrident entity, float entityYaw, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight) { + poseStack.pushPose(); + poseStack.mulPose(Axis.YP.rotationDegrees(Mth.lerp(partialTick, entity.yRotO, entity.getYRot()) - 90.0F)); + poseStack.mulPose(Axis.ZP.rotationDegrees(Mth.lerp(partialTick, entity.xRotO, entity.getXRot()) + 90.0F)); + poseStack.mulPose(Axis.XP.rotationDegrees(180.0F)); + Minecraft.getInstance().getItemRenderer().renderStatic( + entity.getItem(), + ItemDisplayContext.NONE, + packedLight, + OverlayTexture.NO_OVERLAY, + poseStack, + bufferSource, + entity.level(), + entity.getId()); + poseStack.popPose(); + super.render(entity, entityYaw, partialTick, poseStack, bufferSource, packedLight); + } + + @Override + public ResourceLocation getTextureLocation(KrakensGraspThrownTrident entity) { + return TEXTURE; } } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/SeashellRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/SeashellRenderer.java index 65cbc5a4..805a9923 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/SeashellRenderer.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/SeashellRenderer.java @@ -3,10 +3,10 @@ package com.craisinlord.antarchy.content.client.renderer; import com.craisinlord.antarchy.content.block.entity.SeashellBlockEntity; import com.craisinlord.antarchy.content.client.model.SeashellModel; import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.core.Direction; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.Vec3; @@ -37,9 +37,8 @@ public final class SeashellRenderer extends GeoBlockRenderer RPO_LAUNCHER_BLAST = + ResourceKey.create( + Registries.DAMAGE_TYPE, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "rpo_launcher_blast") + ); + private AntarchyDamageTypes() { } } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/CritterCageProjectileEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/CritterCageProjectileEntity.java new file mode 100644 index 00000000..ba894ca3 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/CritterCageProjectileEntity.java @@ -0,0 +1,82 @@ +package com.craisinlord.antarchy.content.entity; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.item.CritterCageItem; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.projectile.ThrowableItemProjectile; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.EntityHitResult; + +public class CritterCageProjectileEntity extends ThrowableItemProjectile { + private static final int MAX_LIFETIME_TICKS = 600; + + public CritterCageProjectileEntity(EntityType entityType, Level level) { + super(entityType, level); + } + + public CritterCageProjectileEntity(EntityType entityType, LivingEntity owner, Level level) { + super(entityType, owner, level); + } + + @Override + protected Item getDefaultItem() { + return AntarchyObjects.CRITTER_CAGE.get(); + } + + @Override + public void tick() { + if (!this.level().isClientSide && this.tickCount > MAX_LIFETIME_TICKS) { + this.dropEmptyCage(); + this.discard(); + return; + } + + super.tick(); + } + + @Override + protected void onHitEntity(EntityHitResult hitResult) { + super.onHitEntity(hitResult); + if (this.level().isClientSide) { + return; + } + + Entity target = hitResult.getEntity(); + if (!CritterCageItem.canCapture(target)) { + this.dropEmptyCage(); + this.discard(); + return; + } + + ItemStack filledStack = CritterCageItem.createFilledStack(target); + target.discard(); + this.dropFilledCage(filledStack); + this.discard(); + } + + @Override + protected void onHitBlock(BlockHitResult hitResult) { + super.onHitBlock(hitResult); + if (!this.level().isClientSide) { + this.dropEmptyCage(); + this.discard(); + } + } + + private void dropFilledCage(ItemStack filledStack) { + this.level().addFreshEntity(new ItemEntity(this.level(), this.getX(), this.getY(), this.getZ(), filledStack.copyWithCount(1))); + } + + private void dropEmptyCage() { + if (this.level().isClientSide) { + return; + } + this.spawnAtLocation(new ItemStack(AntarchyObjects.CRITTER_CAGE.get())); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/DorrieEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/DorrieEntity.java index 00b629fb..ffe6fd2a 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/DorrieEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/DorrieEntity.java @@ -339,9 +339,9 @@ public class DorrieEntity extends Animal implements GeoEntity { rideAttempts++; if (rideAttempts >= RIDES_TO_TAME) { this.setTamed(true); - this.playSound(SoundEvents.HORSE_BREATHE, 0.8F, 1.0F); + this.playSound(SoundEvents.DOLPHIN_JUMP, 0.8F, 1.0F); } else { - this.playSound(SoundEvents.HORSE_ANGRY, 0.8F, 1.0F); + this.playSound(SoundEvents.DOLPHIN_HURT, 0.8F, 1.0F); } } } else if (!this.isTamed() && this.getFirstPassenger() == null) { @@ -504,6 +504,12 @@ public class DorrieEntity extends Animal implements GeoEntity { return null; } + @Override + public float getSpeed() { + float base = (float) this.getAttributeValue(Attributes.MOVEMENT_SPEED); + return this.isInWater() ? base * 0.15F : base * 0.04F; + } + @Override public boolean canBeLeashed() { return true; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/OctopusBombEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/OctopusBombEntity.java index acc50272..aa825413 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/OctopusBombEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/OctopusBombEntity.java @@ -375,7 +375,7 @@ public class OctopusBombEntity extends Monster implements GeoEntity { private boolean hasHitExplosiveTarget() { AABB box = this.getBoundingBox(); return !this.level().getEntitiesOfClass(LivingEntity.class, box, - e -> e.isAlive() && e != this && !e.getUUID().equals(this.explosiveLauncherId)).isEmpty(); + e -> e.isAlive() && e != this && !(e instanceof OctopusBombEntity) && !e.getUUID().equals(this.explosiveLauncherId)).isEmpty(); } private void detonateInkExplosion() { @@ -394,7 +394,7 @@ public class OctopusBombEntity extends Monster implements GeoEntity { continue; } - victim.hurt(this.damageSources().explosion(this, this), damage * falloff); + victim.hurt(AntarchyDamageSources.rpoLauncherBlast(serverLevel, this), damage * falloff); Vec3 knockback = victim.position().subtract(this.position()); if (knockback.lengthSqr() > 1.0E-4D) { Vec3 normalized = knockback.normalize().scale(0.6D * falloff); @@ -405,8 +405,9 @@ public class OctopusBombEntity extends Monster implements GeoEntity { serverLevel.playSound(null, this.getX(), this.getY(), this.getZ(), net.minecraft.sounds.SoundEvents.GENERIC_EXPLODE, net.minecraft.sounds.SoundSource.HOSTILE, 2.0F, 0.9F); - serverLevel.sendParticles(ParticleTypes.SQUID_INK, this.getX(), this.getY(), this.getZ(), 60, radius * 0.4D, radius * 0.4D, radius * 0.4D, 0.05D); - serverLevel.sendParticles(ParticleTypes.EXPLOSION, this.getX(), this.getY(), this.getZ(), 3, 0.5D, 0.5D, 0.5D, 0.0D); + serverLevel.sendParticles(ParticleTypes.SQUID_INK, this.getX(), this.getY(), this.getZ(), 250, radius * 0.5D, radius * 0.5D, radius * 0.5D, 0.1D); + serverLevel.sendParticles(ParticleTypes.SQUID_INK, this.getX(), this.getY(), this.getZ(), 150, radius * 0.2D, radius * 0.2D, radius * 0.2D, 0.2D); + serverLevel.sendParticles(ParticleTypes.EXPLOSION, this.getX(), this.getY(), this.getZ(), 4, 0.5D, 0.5D, 0.5D, 0.0D); this.discard(); } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/OuranwoodDeerEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/OuranwoodDeerEntity.java index 777b6f21..b8cae22a 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/OuranwoodDeerEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/OuranwoodDeerEntity.java @@ -54,7 +54,10 @@ public class OuranwoodDeerEntity extends Animal implements GeoEntity { SynchedEntityData.defineId(OuranwoodDeerEntity.class, EntityDataSerializers.INT); private static final String VARIANT_KEY = "Variant"; - private static final float ADULT_HITBOX_SCALE = 1.5F; + private static final float ADULT_HITBOX_WIDTH = 1.0F; + private static final float ADULT_HITBOX_HEIGHT = 2.0F; + private static final float BABY_HITBOX_WIDTH = 0.5F; + private static final float BABY_HITBOX_HEIGHT = 1.0F; private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); private static final RawAnimation WALK_ANIM = RawAnimation.begin().thenLoop("walk"); private static final RawAnimation RUN_ANIM = RawAnimation.begin().thenLoop("run"); @@ -175,13 +178,12 @@ public class OuranwoodDeerEntity extends Animal implements GeoEntity { @Override public net.minecraft.world.entity.EntityDimensions getDefaultDimensions(net.minecraft.world.entity.Pose pose) { - net.minecraft.world.entity.EntityDimensions dimensions = super.getDefaultDimensions(pose); if (this.isBaby()) { - return dimensions; + return net.minecraft.world.entity.EntityDimensions.scalable(BABY_HITBOX_WIDTH, BABY_HITBOX_HEIGHT); } return net.minecraft.world.entity.EntityDimensions.scalable( - dimensions.width() * ADULT_HITBOX_SCALE, - dimensions.height() * ADULT_HITBOX_SCALE + ADULT_HITBOX_WIDTH, + ADULT_HITBOX_HEIGHT ); } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/KrakensGraspThrownTrident.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/KrakensGraspThrownTrident.java index 4dc20d41..59f4f5d1 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/KrakensGraspThrownTrident.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/KrakensGraspThrownTrident.java @@ -11,20 +11,17 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.projectile.ItemSupplier; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.level.Level; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.Vec3; -import software.bernie.geckolib.animatable.GeoEntity; -import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; -import software.bernie.geckolib.animation.AnimatableManager; -import software.bernie.geckolib.util.GeckoLibUtil; -public class KrakensGraspThrownTrident extends AbstractArrow implements GeoEntity { +public class KrakensGraspThrownTrident extends AbstractArrow implements ItemSupplier { private boolean dealtDamage; private boolean returning; - private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); public KrakensGraspThrownTrident(EntityType entityType, Level level) { super(entityType, level); @@ -36,12 +33,8 @@ public class KrakensGraspThrownTrident extends AbstractArrow implements GeoEntit } @Override - public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { - } - - @Override - public AnimatableInstanceCache getAnimatableInstanceCache() { - return this.geoCache; + public ItemStack getItem() { + return new ItemStack(AntarchyObjects.KRAKENS_GRASP.get()); } @Override @@ -91,29 +84,54 @@ public class KrakensGraspThrownTrident extends AbstractArrow implements GeoEntit } @Override - protected void onHitEntity(EntityHitResult result) { - super.onHitEntity(result); - if (!(result.getEntity() instanceof LivingEntity target) || !(this.level() instanceof ServerLevel serverLevel)) { - return; - } + public ItemStack getWeaponItem() { + return this.getPickupItemStackOrigin(); + } + @Override + protected net.minecraft.world.phys.EntityHitResult findHitEntity(Vec3 startVec, Vec3 endVec) { + return this.dealtDamage ? null : super.findHitEntity(startVec, endVec); + } + + @Override + protected void onHitEntity(EntityHitResult result) { + Entity target = result.getEntity(); + float damage = (float) this.getBaseDamage(); Entity owner = this.getOwner(); DamageSource damageSource = this.damageSources().trident(this, owner != null ? owner : this); - boolean hurt = target.hurt(damageSource, (float) AntarchySettings.krakensGraspThrownDamage()); - if (hurt) { - KrakensGraspItem.strikeLightning(target, serverLevel); - TentacleEntity.spawnAt(serverLevel, new Vec3(target.getX(), target.getY(), target.getZ()), - owner instanceof LivingEntity livingOwner ? livingOwner : null); + if (this.level() instanceof ServerLevel serverLevel) { + damage = EnchantmentHelper.modifyDamage(serverLevel, this.getWeaponItem(), target, damageSource, damage); } this.dealtDamage = true; + + if (target.hurt(damageSource, damage) && target.getType() != EntityType.ENDERMAN) { + if (this.level() instanceof ServerLevel serverLevel) { + EnchantmentHelper.doPostAttackEffectsWithItemSource(serverLevel, target, damageSource, this.getWeaponItem()); + } + if (target instanceof LivingEntity livingTarget) { + this.doKnockback(livingTarget, damageSource); + this.doPostHurtEffects(livingTarget); + } + } + + this.setDeltaMovement(this.getDeltaMovement().multiply(-0.01D, -0.1D, -0.01D)); + this.playSound(SoundEvents.TRIDENT_HIT, 1.0F, 1.0F); + + if (target instanceof LivingEntity livingTarget && this.level() instanceof ServerLevel serverLevel) { + KrakensGraspItem.strikeLightning(livingTarget, serverLevel); + TentacleEntity.spawnAt(serverLevel, new Vec3(target.getX(), target.getY(), target.getZ()), + owner instanceof LivingEntity livingOwner ? livingOwner : null); + } } @Override protected void onHitBlock(BlockHitResult result) { super.onHitBlock(result); if (this.level() instanceof ServerLevel serverLevel) { - TentacleEntity.spawnAt(serverLevel, result.getLocation(), this.getOwner() instanceof LivingEntity livingOwner ? livingOwner : null); + Vec3 pos = result.getLocation(); + KrakensGraspItem.strikeLightningAt(serverLevel, pos.x, pos.y, pos.z); + TentacleEntity.spawnAt(serverLevel, pos, this.getOwner() instanceof LivingEntity livingOwner ? livingOwner : null); } } } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/TentacleEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/TentacleEntity.java index f7be5e93..fd0f692e 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/TentacleEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/TentacleEntity.java @@ -54,6 +54,11 @@ public class TentacleEntity extends Mob implements GeoEntity { public void push(net.minecraft.world.entity.Entity entity) { } + @Override + public boolean isPickable() { + return false; + } + public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes() .add(Attributes.MAX_HEALTH, 20.0D) diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/CritterCageItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/CritterCageItem.java new file mode 100644 index 00000000..fd0fb289 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/CritterCageItem.java @@ -0,0 +1,353 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.AntarchyTags; +import com.craisinlord.antarchy.content.block.entity.CritterCageBlockEntity; +import java.util.List; +import net.minecraft.ChatFormatting; +import net.minecraft.core.BlockPos; +import net.minecraft.core.component.DataComponents; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.stats.Stats; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.SpawnEggItem; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.component.CustomData; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.item.context.UseOnContext; +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.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.HitResult; +import net.minecraft.world.phys.Vec3; +import net.minecraft.tags.TagKey; + +public class CritterCageItem extends Item { + public static final String ENTITY_DATA_TAG = "EntityData"; + private static final TagKey> BOSS_TAG = TagKey.create(Registries.ENTITY_TYPE, ResourceLocation.withDefaultNamespace("bosses")); + private static final int EMPTY_STATE = 0; + private static final int FILLED_PLAIN_STATE = 1; + private static final int FILLED_COLORED_STATE = 2; + + public CritterCageItem(Properties properties) { + super(properties); + } + + @Override + public InteractionResultHolder use(Level level, Player player, InteractionHand hand) { + ItemStack stack = player.getItemInHand(hand); + if (!this.isFilled(stack)) { + if (!level.isClientSide) { + this.launchProjectile(level, player, hand, stack); + } + return InteractionResultHolder.sidedSuccess(stack, level.isClientSide); + } + + if (level.isClientSide) { + return InteractionResultHolder.success(stack); + } + + if (!(level instanceof ServerLevel serverLevel)) { + return InteractionResultHolder.pass(stack); + } + + return this.releaseAtLookTarget(serverLevel, player, hand, stack) + ? InteractionResultHolder.consume(player.getItemInHand(hand)) + : InteractionResultHolder.fail(stack); + } + + @Override + public InteractionResult useOn(UseOnContext context) { + ItemStack stack = context.getItemInHand(); + if (!this.isFilled(stack)) { + return InteractionResult.PASS; + } + + Player player = context.getPlayer(); + if (player != null && player.isShiftKeyDown()) { + return this.placeBlock(context) ? InteractionResult.CONSUME : InteractionResult.FAIL; + } + + if (context.getLevel().isClientSide) { + return InteractionResult.SUCCESS; + } + + if (!(context.getLevel() instanceof ServerLevel serverLevel)) { + return InteractionResult.PASS; + } + + return this.releaseAtBlockHit(serverLevel, context) + ? InteractionResult.CONSUME + : InteractionResult.FAIL; + } + + @Override + public void appendHoverText(ItemStack stack, TooltipContext context, List tooltip, TooltipFlag flag) { + if (!this.isFilled(stack)) { + tooltip.add(Component.translatable("tooltip.antarchy.critter_cage.empty").withStyle(ChatFormatting.GRAY)); + super.appendHoverText(stack, context, tooltip, flag); + return; + } + + tooltip.add(Component.translatable("tooltip.antarchy.critter_cage.contains", this.getDisplayName(stack)).withStyle(ChatFormatting.GRAY)); + tooltip.add(Component.translatable("tooltip.antarchy.critter_cage.release").withStyle(ChatFormatting.DARK_GRAY)); + tooltip.add(Component.translatable("tooltip.antarchy.critter_cage.place").withStyle(ChatFormatting.DARK_GRAY)); + super.appendHoverText(stack, context, tooltip, flag); + } + + public boolean isFilled(ItemStack stack) { + return this.getEntityTypeId(stack) != null && this.getEntityData(stack) != null; + } + + public int getItemState(ItemStack stack) { + if (!this.isFilled(stack)) { + return EMPTY_STATE; + } + return this.hasSpawnEggColors(stack) ? FILLED_COLORED_STATE : FILLED_PLAIN_STATE; + } + + public ResourceLocation getEntityTypeId(ItemStack stack) { + return stack.get(AntarchyObjects.CRITTER_CAGE_ENTITY_TYPE_COMPONENT.get()); + } + + public CompoundTag getEntityData(ItemStack stack) { + CustomData customData = stack.getOrDefault(DataComponents.CUSTOM_DATA, CustomData.EMPTY); + CompoundTag tag = customData.copyTag(); + if (!tag.contains(ENTITY_DATA_TAG, Tag.TAG_COMPOUND)) { + return null; + } + return tag.getCompound(ENTITY_DATA_TAG).copy(); + } + + public int getPrimaryColor(ItemStack stack) { + return stack.getOrDefault(AntarchyObjects.CRITTER_CAGE_PRIMARY_COLOR_COMPONENT.get(), -1); + } + + public int getSecondaryColor(ItemStack stack) { + return stack.getOrDefault(AntarchyObjects.CRITTER_CAGE_SECONDARY_COLOR_COMPONENT.get(), -1); + } + + public Component getDisplayName(ItemStack stack) { + if (stack.has(DataComponents.CUSTOM_NAME)) { + return stack.getHoverName(); + } + + EntityType type = this.getEntityType(stack); + return type != null ? type.getDescription() : Component.literal("Unknown"); + } + + public EntityType getEntityType(ItemStack stack) { + ResourceLocation id = this.getEntityTypeId(stack); + return id == null ? null : BuiltInRegistries.ENTITY_TYPE.getOptional(id).orElse(null); + } + + public static ItemStack createFilledStack(Entity entity) { + ItemStack stack = new ItemStack(AntarchyObjects.CRITTER_CAGE.get()); + if (entity == null) { + return stack; + } + + EntityType type = entity.getType(); + ResourceLocation typeId = BuiltInRegistries.ENTITY_TYPE.getKey(type); + if (typeId != null) { + stack.set(AntarchyObjects.CRITTER_CAGE_ENTITY_TYPE_COMPONENT.get(), typeId); + } + + CompoundTag entityData = new CompoundTag(); + entity.saveWithoutId(entityData); + CustomData.update(DataComponents.CUSTOM_DATA, stack, customData -> customData.put(ENTITY_DATA_TAG, entityData)); + + if (entity.hasCustomName()) { + stack.set(DataComponents.CUSTOM_NAME, entity.getCustomName()); + } + + applySpawnEggColors(stack, type); + return stack; + } + + public static boolean canCapture(Entity entity) { + if (entity == null || !entity.isAlive()) { + return false; + } + if (entity instanceof Player) { + return false; + } + if (entity.getType().is(BOSS_TAG)) { + return false; + } + if (entity.isPassenger() || entity.isVehicle() || !entity.getPassengers().isEmpty()) { + return false; + } + if (entity.getType().is(AntarchyTags.Entities.CRITTER_CAGE_BLACKLIST)) { + return false; + } + + AABB box = entity.getBoundingBox(); + return box.getXsize() <= AntarchySettings.critterCageMaxCapturableWidth() + && box.getZsize() <= AntarchySettings.critterCageMaxCapturableWidth() + && box.getYsize() <= AntarchySettings.critterCageMaxCapturableHeight(); + } + + public static void applySpawnEggColors(ItemStack stack, EntityType entityType) { + SpawnEggItem egg = findSpawnEgg(entityType); + if (egg == null) { + stack.remove(AntarchyObjects.CRITTER_CAGE_PRIMARY_COLOR_COMPONENT.get()); + stack.remove(AntarchyObjects.CRITTER_CAGE_SECONDARY_COLOR_COMPONENT.get()); + return; + } + + stack.set(AntarchyObjects.CRITTER_CAGE_PRIMARY_COLOR_COMPONENT.get(), egg.getColor(0)); + stack.set(AntarchyObjects.CRITTER_CAGE_SECONDARY_COLOR_COMPONENT.get(), egg.getColor(1)); + } + + private static SpawnEggItem findSpawnEgg(EntityType entityType) { + @SuppressWarnings("unchecked") + EntityType livingType = (EntityType) entityType; + return livingType == null ? null : SpawnEggItem.byId(livingType); + } + + private boolean releaseAtLookTarget(ServerLevel level, Player player, InteractionHand hand, ItemStack stack) { + HitResult hitResult = player.pick(player.blockInteractionRange(), 0.0F, false); + Vec3 target = hitResult.getType() == HitResult.Type.BLOCK && hitResult instanceof BlockHitResult blockHitResult + ? blockHitResult.getLocation().add(Vec3.atLowerCornerOf(blockHitResult.getDirection().getNormal()).scale(0.5D)) + : player.getEyePosition().add(player.getLookAngle().scale(2.0D)); + return this.releaseAtPosition(level, player, hand, stack, target); + } + + private boolean releaseAtBlockHit(ServerLevel level, UseOnContext context) { + BlockPos targetPos = context.getClickedPos().relative(context.getClickedFace()); + Vec3 target = Vec3.atCenterOf(targetPos); + return this.releaseAtPosition(level, context.getPlayer(), context.getHand(), context.getItemInHand(), target); + } + + private boolean releaseAtPosition(ServerLevel level, Player player, InteractionHand hand, ItemStack stack, Vec3 position) { + EntityType type = this.getEntityType(stack); + if (type == null) { + return false; + } + + if (!level.getWorldBorder().isWithinBounds(BlockPos.containing(position))) { + return false; + } + + CompoundTag entityData = this.getEntityData(stack); + if (entityData == null) { + return false; + } + + CompoundTag savedData = entityData.copy(); + ResourceLocation entityId = BuiltInRegistries.ENTITY_TYPE.getKey(type); + if (entityId != null) { + savedData.putString("id", entityId.toString()); + } + + Entity entity = EntityType.loadEntityRecursive(savedData, level, loaded -> loaded); + if (entity == null) { + return false; + } + + entity.setUUID(java.util.UUID.randomUUID()); + entity.moveTo(position.x, position.y, position.z, player != null ? player.getYRot() : 0.0F, 0.0F); + if (!level.noCollision(entity)) { + return false; + } + + level.addFreshEntity(entity); + this.replaceFilledWithEmpty(player, hand, stack); + return true; + } + + private void replaceFilledWithEmpty(Player player, InteractionHand hand, ItemStack stack) { + if (player != null && player.getAbilities().instabuild) { + return; + } + + ItemStack emptyCage = new ItemStack(AntarchyObjects.CRITTER_CAGE.get()); + if (stack.getCount() <= 1) { + if (player != null) { + player.setItemInHand(hand, emptyCage); + } + return; + } + + stack.shrink(1); + if (player == null || !player.getInventory().add(emptyCage)) { + if (player != null) { + player.drop(emptyCage, false); + } + } + } + + private boolean placeBlock(UseOnContext context) { + if (!(context.getLevel() instanceof ServerLevel serverLevel)) { + return false; + } + + Player player = context.getPlayer(); + if (player == null) { + return false; + } + + BlockPos placePos = context.getClickedPos().relative(context.getClickedFace()); + if (!serverLevel.getBlockState(placePos).canBeReplaced()) { + return false; + } + + BlockState state = AntarchyObjects.CRITTER_CAGE_BLOCK.get().defaultBlockState(); + if (!serverLevel.setBlock(placePos, state, Block.UPDATE_ALL)) { + return false; + } + + BlockEntity blockEntity = serverLevel.getBlockEntity(placePos); + if (!(blockEntity instanceof CritterCageBlockEntity critterCageBlockEntity)) { + serverLevel.setBlock(placePos, Blocks.AIR.defaultBlockState(), Block.UPDATE_ALL); + return false; + } + + critterCageBlockEntity.loadFromItem(context.getItemInHand(), context.getLevel().registryAccess()); + if (!player.getAbilities().instabuild) { + context.getItemInHand().shrink(1); + } + return true; + } + + private boolean hasSpawnEggColors(ItemStack stack) { + return this.getPrimaryColor(stack) >= 0 && this.getSecondaryColor(stack) >= 0; + } + + private void launchProjectile(Level level, Player player, InteractionHand hand, ItemStack stack) { + var projectileType = AntarchyObjects.CRITTER_CAGE_PROJECTILE.get(); + var projectile = projectileType.create(level); + if (!(projectile instanceof com.craisinlord.antarchy.content.entity.CritterCageProjectileEntity critterCageProjectile)) { + return; + } + + critterCageProjectile.setOwner(player); + critterCageProjectile.setPos(player.getX(), player.getEyeY() - 0.1D, player.getZ()); + critterCageProjectile.shootFromRotation(player, player.getXRot(), player.getYRot(), 0.0F, 1.5F, 1.0F); + level.addFreshEntity(critterCageProjectile); + if (!player.getAbilities().instabuild) { + stack.shrink(1); + } + player.awardStat(Stats.ITEM_USED.get(this)); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/GiantLilyPadItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/GiantLilyPadItem.java new file mode 100644 index 00000000..745b112a --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/GiantLilyPadItem.java @@ -0,0 +1,58 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.content.block.GiantLilyPadBlock; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.stats.Stats; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.phys.BlockHitResult; + +public final class GiantLilyPadItem extends BlockItem { + public GiantLilyPadItem(Block block, Properties properties) { + super(block, properties); + } + + @Override + public InteractionResultHolder use(Level level, Player player, InteractionHand hand) { + ItemStack stack = player.getItemInHand(hand); + BlockHitResult hitResult = getPlayerPOVHitResult(level, player, ClipContext.Fluid.SOURCE_ONLY); + if (hitResult.getType() != net.minecraft.world.phys.HitResult.Type.BLOCK) { + return InteractionResultHolder.pass(stack); + } + + BlockPos fluidPos = hitResult.getBlockPos(); + BlockPos centerPos = fluidPos.above(); + if (!level.mayInteract(player, fluidPos) || !player.mayUseItemAt(centerPos, Direction.UP, stack)) { + return InteractionResultHolder.fail(stack); + } + if (!GiantLilyPadBlock.canPlaceStructure(level, centerPos)) { + return InteractionResultHolder.fail(stack); + } + + if (!level.isClientSide) { + GiantLilyPadBlock.placeStructure(level, centerPos, GiantLilyPadBlock.rotationForPlacement(centerPos)); + level.playSound(null, centerPos, SoundEvents.LILY_PAD_PLACE, SoundSource.BLOCKS, 1.0F, 1.0F); + if (!player.getAbilities().instabuild) { + stack.shrink(1); + } + player.awardStat(Stats.ITEM_USED.get(this)); + } + + return InteractionResultHolder.sidedSuccess(stack, level.isClientSide); + } + + @Override + public net.minecraft.world.InteractionResult useOn(UseOnContext context) { + return this.use(context.getLevel(), context.getPlayer(), context.getHand()).getResult(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/KrakensGraspItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/KrakensGraspItem.java index 5d44a35a..b305bdbf 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/item/KrakensGraspItem.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/KrakensGraspItem.java @@ -2,9 +2,6 @@ package com.craisinlord.antarchy.content.item; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchyObjects; -import com.craisinlord.antarchy.content.client.model.ResourceBackedGeoItemModel; -import com.craisinlord.antarchy.content.client.renderer.AnimatedHeldItemRenderer; -import com.craisinlord.antarchy.content.entity.kraken.KrakensGraspThrownTrident; import net.minecraft.core.HolderLookup; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.core.registries.Registries; @@ -28,26 +25,13 @@ import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.item.enchantment.ItemEnchantments; import net.minecraft.world.level.Level; import net.minecraft.world.entity.Entity; -import software.bernie.geckolib.animatable.GeoItem; -import software.bernie.geckolib.animatable.client.GeoRenderProvider; -import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; -import software.bernie.geckolib.animation.AnimatableManager; -import software.bernie.geckolib.util.GeckoLibUtil; -import java.util.function.Consumer; - -public class KrakensGraspItem extends TridentItem implements GeoItem { - private static final ResourceLocation MODEL_LOCATION = ResourceLocation.fromNamespaceAndPath("antarchy", "geo/krakens_grasp.geo.json"); - private static final ResourceLocation TEXTURE_LOCATION = ResourceLocation.fromNamespaceAndPath("antarchy", "textures/item/krakens_grasp/krakens_grasp.png"); - private static final ResourceLocation ANIMATION_LOCATION = ResourceLocation.fromNamespaceAndPath("antarchy", "animations/static_item.animation.json"); +public class KrakensGraspItem extends TridentItem { private static final ResourceLocation ATTACK_DAMAGE_MODIFIER_ID = ResourceLocation.fromNamespaceAndPath("antarchy", "krakens_grasp_attack_damage"); private static final ResourceLocation ATTACK_SPEED_MODIFIER_ID = ResourceLocation.fromNamespaceAndPath("antarchy", "krakens_grasp_attack_speed"); - private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); - public KrakensGraspItem(Item.Properties properties) { super(properties); - GeoItem.registerSyncedAnimatable(this); } @Override @@ -87,20 +71,26 @@ public class KrakensGraspItem extends TridentItem implements GeoItem { boolean didHurt = super.hurtEnemy(stack, target, attacker); if (didHurt && attacker.level() instanceof ServerLevel serverLevel) { strikeLightning(target, serverLevel); + com.craisinlord.antarchy.content.entity.kraken.TentacleEntity.spawnAt(serverLevel, + new net.minecraft.world.phys.Vec3(target.getX(), target.getY(), target.getZ()), attacker); } return didHurt; } public static void strikeLightning(LivingEntity target, ServerLevel level) { - LightningBolt lightningBolt = new LightningBolt(net.minecraft.world.entity.EntityType.LIGHTNING_BOLT, level); - lightningBolt.moveTo(target.getX(), target.getY(), target.getZ()); - lightningBolt.setVisualOnly(true); - level.addFreshEntity(lightningBolt); - + strikeLightningAt(level, target.getX(), target.getY(), target.getZ()); target.hurt(target.damageSources().lightningBolt(), (float) AntarchySettings.krakensGraspLightningDamage()); level.sendParticles(ParticleTypes.ELECTRIC_SPARK, target.getX(), target.getY(0.7D), target.getZ(), 10, 0.25D, 0.25D, 0.25D, 0.02D); } + public static void strikeLightningAt(ServerLevel level, double x, double y, double z) { + LightningBolt lightningBolt = new LightningBolt(net.minecraft.world.entity.EntityType.LIGHTNING_BOLT, level); + lightningBolt.moveTo(x, y, z); + lightningBolt.setVisualOnly(true); + level.addFreshEntity(lightningBolt); + level.sendParticles(ParticleTypes.ELECTRIC_SPARK, x, y + 0.2D, z, 10, 0.25D, 0.25D, 0.25D, 0.02D); + } + @Override public void releaseUsing(ItemStack stack, Level level, LivingEntity user, int timeLeft) { if (!(user instanceof Player player)) { @@ -124,7 +114,8 @@ public class KrakensGraspItem extends TridentItem implements GeoItem { if (!level.isClientSide) { stack.hurtAndBreak(1, player, LivingEntity.getSlotForHand(user.getUsedItemHand())); - KrakensGraspThrownTrident trident = new KrakensGraspThrownTrident(AntarchyObjects.KRAKENS_GRASP_TRIDENT.get(), player, level, stack.copy()); + com.craisinlord.antarchy.content.entity.kraken.KrakensGraspThrownTrident trident = + new com.craisinlord.antarchy.content.entity.kraken.KrakensGraspThrownTrident(AntarchyObjects.KRAKENS_GRASP_TRIDENT.get(), player, level, stack.copy()); trident.shootFromRotation(player, player.getXRot(), player.getYRot(), 0.0F, 2.5F, 1.0F); if (player.hasInfiniteMaterials()) { trident.pickup = net.minecraft.world.entity.projectile.AbstractArrow.Pickup.CREATIVE_ONLY; @@ -138,29 +129,4 @@ public class KrakensGraspItem extends TridentItem implements GeoItem { player.awardStat(Stats.ITEM_USED.get(this)); } - - @Override - public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { - } - - @Override - public AnimatableInstanceCache getAnimatableInstanceCache() { - return this.geoCache; - } - - @Override - public void createGeoRenderer(Consumer consumer) { - consumer.accept(new GeoRenderProvider() { - private AnimatedHeldItemRenderer renderer; - - @Override - public net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer getGeoItemRenderer() { - if (this.renderer == null) { - this.renderer = new AnimatedHeldItemRenderer<>(new ResourceBackedGeoItemModel<>(MODEL_LOCATION, TEXTURE_LOCATION, ANIMATION_LOCATION)); - } - - return this.renderer; - } - }); - } } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/RpoLauncherItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/RpoLauncherItem.java index 75adb09a..634a928e 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/item/RpoLauncherItem.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/RpoLauncherItem.java @@ -164,7 +164,7 @@ public class RpoLauncherItem extends ProjectileWeaponItem implements GeoItem { Vec3 direction = Vec3.directionFromRotation(new Vec2(player.getXRot(), yaw)); projectileBomb.moveTo( player.getX(), - player.getEyeY() - 0.2D, + player.getEyeY() + 0.15D, player.getZ(), yaw, player.getXRot() diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/CoralSpikeFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/CoralSpikeFeature.java index feb0f283..e8dfb1a9 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/CoralSpikeFeature.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/CoralSpikeFeature.java @@ -1,10 +1,14 @@ package com.craisinlord.antarchy.content.worldgen.elythia; +import com.craisinlord.antarchy.Antarchy; import com.mojang.serialization.Codec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; import net.minecraft.util.RandomSource; import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.SeaPickleBlock; import net.minecraft.world.level.block.state.BlockState; @@ -17,17 +21,17 @@ import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConf public class CoralSpikeFeature extends Feature { private record CoralSet( - net.minecraft.world.level.block.Block block, - net.minecraft.world.level.block.Block coral, - net.minecraft.world.level.block.Block wallFan, - net.minecraft.world.level.block.Block floorFan, - net.minecraft.world.level.block.Block deadBlock, - net.minecraft.world.level.block.Block deadCoral, - net.minecraft.world.level.block.Block deadWallFan, - net.minecraft.world.level.block.Block deadFloorFan + Block block, + Block coral, + Block wallFan, + Block floorFan, + Block deadBlock, + Block deadCoral, + Block deadWallFan, + Block deadFloorFan ) {} - private static final CoralSet[] CORAL_SETS = { + private static final CoralSet[] VANILLA_CORAL_SETS = { new CoralSet(Blocks.TUBE_CORAL_BLOCK, Blocks.TUBE_CORAL, Blocks.TUBE_CORAL_WALL_FAN, Blocks.TUBE_CORAL_FAN, Blocks.DEAD_TUBE_CORAL_BLOCK, Blocks.DEAD_TUBE_CORAL, Blocks.DEAD_TUBE_CORAL_WALL_FAN, Blocks.DEAD_TUBE_CORAL_FAN), new CoralSet(Blocks.BRAIN_CORAL_BLOCK, Blocks.BRAIN_CORAL, Blocks.BRAIN_CORAL_WALL_FAN, Blocks.BRAIN_CORAL_FAN, Blocks.DEAD_BRAIN_CORAL_BLOCK, Blocks.DEAD_BRAIN_CORAL, Blocks.DEAD_BRAIN_CORAL_WALL_FAN, Blocks.DEAD_BRAIN_CORAL_FAN), new CoralSet(Blocks.BUBBLE_CORAL_BLOCK, Blocks.BUBBLE_CORAL, Blocks.BUBBLE_CORAL_WALL_FAN, Blocks.BUBBLE_CORAL_FAN, Blocks.DEAD_BUBBLE_CORAL_BLOCK, Blocks.DEAD_BUBBLE_CORAL, Blocks.DEAD_BUBBLE_CORAL_WALL_FAN, Blocks.DEAD_BUBBLE_CORAL_FAN), @@ -60,7 +64,8 @@ public class CoralSpikeFeature extends Feature { int floorY = level.getHeight(Heightmap.Types.OCEAN_FLOOR_WG, origin.getX(), origin.getZ()); if (floorY >= seaLevel) return false; - CoralSet coral = CORAL_SETS[random.nextInt(CORAL_SETS.length)]; + CoralSet[] coralSets = coralSets(); + CoralSet coral = coralSets[random.nextInt(coralSets.length)]; int baseRadius = 2 + random.nextInt(2); // 2-3 wide at base int totalHeight = 20 + random.nextInt(15); // 20-34 blocks tall @@ -156,7 +161,7 @@ public class CoralSpikeFeature extends Feature { boolean decorInWater = level.getBlockState(decorPos).is(Blocks.WATER); float roll = random.nextFloat(); - CoralSet randomCoral = CORAL_SETS[random.nextInt(CORAL_SETS.length)]; + CoralSet randomCoral = coralSets[random.nextInt(coralSets.length)]; if (roll < 0.35f) { if (decorInWater) { @@ -210,4 +215,27 @@ public class CoralSpikeFeature extends Feature { private static boolean canReplace(BlockState state) { return state.isAir() || state.is(Blocks.WATER) || state.canBeReplaced(); } + + private static CoralSet[] coralSets() { + CoralSet starCoral = new CoralSet( + lookupBlock("star_coral_block", Blocks.TUBE_CORAL_BLOCK), + lookupBlock("star_coral", Blocks.TUBE_CORAL), + lookupBlock("star_coral_wall_fan", Blocks.TUBE_CORAL_WALL_FAN), + lookupBlock("star_coral_fan", Blocks.TUBE_CORAL_FAN), + lookupBlock("dead_star_coral_block", Blocks.DEAD_TUBE_CORAL_BLOCK), + lookupBlock("dead_star_coral", Blocks.DEAD_TUBE_CORAL), + lookupBlock("dead_star_coral_wall_fan", Blocks.DEAD_TUBE_CORAL_WALL_FAN), + lookupBlock("dead_star_coral_fan", Blocks.DEAD_TUBE_CORAL_FAN) + ); + + CoralSet[] combined = new CoralSet[VANILLA_CORAL_SETS.length + 1]; + System.arraycopy(VANILLA_CORAL_SETS, 0, combined, 0, VANILLA_CORAL_SETS.length); + combined[VANILLA_CORAL_SETS.length] = starCoral; + return combined; + } + + private static Block lookupBlock(String path, Block fallback) { + ResourceLocation id = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path); + return BuiltInRegistries.BLOCK.getOptional(id).orElse(fallback); + } } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaFloraFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaFloraFeature.java index 68c9e102..8d9ad11e 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaFloraFeature.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaFloraFeature.java @@ -99,7 +99,7 @@ public class ElythiaFloraFeature extends Feature { }) { placedAny |= this.placeMilkweedPatch(level, origin, random, AntarchyObjects.PINK_MILKWEED.get()); } - if (this.variant == Variant.PEACH_FOREST && random.nextFloat() < 0.025F) { + if (this.variant == Variant.PEACH_FOREST && random.nextFloat() < 0.035F) { placedAny |= this.placeMilkweedPatch(level, origin, random, antarchyBlock(CAMELLIA_ID)); } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/GiantLilyPadPatchFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/GiantLilyPadPatchFeature.java index ecf972d8..86524980 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/GiantLilyPadPatchFeature.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/GiantLilyPadPatchFeature.java @@ -1,6 +1,7 @@ package com.craisinlord.antarchy.content.worldgen.elythia; import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.block.GiantLilyPadBlock; import com.mojang.serialization.Codec; import net.minecraft.core.BlockPos; import net.minecraft.tags.FluidTags; @@ -13,9 +14,6 @@ import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -import java.util.ArrayList; -import java.util.List; - public final class GiantLilyPadPatchFeature extends Feature { public GiantLilyPadPatchFeature(Codec codec) { super(codec); @@ -29,73 +27,34 @@ public final class GiantLilyPadPatchFeature extends Feature footprint = new ArrayList<>(size * size); - boolean valid = true; - for (int row = 0; row < size && valid; row++) { - for (int column = 0; column < size; column++) { - BlockPos fluidPos = new BlockPos(anchorX + column, surfaceY, anchorZ + row); - if (!level.getFluidState(fluidPos).is(FluidTags.WATER) || !level.getFluidState(fluidPos).isSource()) { - valid = false; - break; - } - - BlockPos padPos = fluidPos.above(); - if (!level.isEmptyBlock(padPos)) { - valid = false; - break; - } - - footprint.add(padPos); - } - } - - if (!valid) { + BlockPos padPos = fluidPos.above(); + if (!GiantLilyPadBlock.canPlaceStructure(level, padPos)) { continue; } - Block giantLilyPad = AntarchyObjects.GIANT_LILY_PAD.get(); - BlockState padState = giantLilyPad.defaultBlockState(); - for (BlockPos padPos : footprint) { - level.setBlock(padPos, padState, Block.UPDATE_ALL); - } - + GiantLilyPadBlock.placeStructure(level, padPos, GiantLilyPadBlock.PadRotation.values()[random.nextInt(4)]); placedAny = true; - if (size == 3 && random.nextFloat() < 0.5F) { - BlockPos centerPos = new BlockPos(anchorX + 1, surfaceY, anchorZ + 1).above(); - placeLotus(level, centerPos.above()); - } + placeLotus(level, padPos); } return placedAny; } - private static int rollFootprintSize(RandomSource random) { - float roll = random.nextFloat(); - if (roll < 0.5F) { - return 1; - } - - return roll < 0.8F ? 2 : 3; - } - - private void placeLotus(WorldGenLevel level, BlockPos pos) { - if (!level.isEmptyBlock(pos)) { + private static void placeLotus(WorldGenLevel level, BlockPos pos) { + BlockState padState = level.getBlockState(pos); + if (!padState.is(AntarchyObjects.GIANT_LILY_PAD.get()) || padState.getValue(GiantLilyPadBlock.HAS_LOTUS)) { return; } - BlockState lotusState = AntarchyObjects.LOTUS.get().defaultBlockState(); - if (lotusState.canSurvive(level, pos)) { - level.setBlock(pos, lotusState, Block.UPDATE_ALL); - } + level.setBlock(pos, padState.setValue(GiantLilyPadBlock.HAS_LOTUS, true), Block.UPDATE_CLIENTS); } } diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/client/KrakensGraspChargePoseMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/client/KrakensGraspChargePoseMixin.java new file mode 100644 index 00000000..608655a8 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/client/KrakensGraspChargePoseMixin.java @@ -0,0 +1,47 @@ +package com.craisinlord.antarchy.mixins.client; + +import com.craisinlord.antarchy.content.item.KrakensGraspItem; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.layers.ItemInHandLayer; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.HumanoidArm; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +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; + +@Mixin(ItemInHandLayer.class) +public class KrakensGraspChargePoseMixin { + + @Inject( + method = "renderArmWithItem", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/model/ArmedModel;translateToHand(Lnet/minecraft/world/entity/HumanoidArm;Lcom/mojang/blaze3d/vertex/PoseStack;)V", + shift = At.Shift.AFTER + ) + ) + private void antarchy$fixKrakensGraspChargePose( + LivingEntity entity, ItemStack stack, ItemDisplayContext displayContext, HumanoidArm arm, + PoseStack poseStack, MultiBufferSource buffer, int light, CallbackInfo ci) { + if (isChargingKrakensGraspWithArm(entity, arm)) { + poseStack.mulPose(Axis.XP.rotationDegrees(162.0F)); + } + } + + private static boolean isChargingKrakensGraspWithArm(LivingEntity entity, HumanoidArm arm) { + if (!entity.isUsingItem() || !(entity.getUseItem().getItem() instanceof KrakensGraspItem)) { + return false; + } + + InteractionHand usedHand = entity.getUsedItemHand(); + boolean usedHandIsMain = usedHand == InteractionHand.MAIN_HAND; + HumanoidArm usedArm = usedHandIsMain == (entity.getMainArm() == HumanoidArm.RIGHT) ? HumanoidArm.RIGHT : HumanoidArm.LEFT; + return usedArm == arm; + } +} diff --git a/common/src/main/resources/antarchy-common.mixins.json b/common/src/main/resources/antarchy-common.mixins.json index 63429f3f..1768bb4a 100644 --- a/common/src/main/resources/antarchy-common.mixins.json +++ b/common/src/main/resources/antarchy-common.mixins.json @@ -60,6 +60,7 @@ "client.ElytraModelAccessor", "client.FrogRendererElythiaMixin", "client.GameRendererSwingThroughGrassMixin", + "client.KrakensGraspChargePoseMixin", "client.LightningBoltRendererMixin", "client.MountedVehicleCameraMixin", "client.ParalyzedMouseTurnMixin", diff --git a/common/src/main/resources/assets/antarchy/blockstates/critter_cage_block.json b/common/src/main/resources/assets/antarchy/blockstates/critter_cage_block.json new file mode 100644 index 00000000..d21b2d8b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/critter_cage_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/critter_cage_block" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/giant_lily_pad.json b/common/src/main/resources/assets/antarchy/blockstates/giant_lily_pad.json index 00ae5f6a..b8d1879c 100644 --- a/common/src/main/resources/assets/antarchy/blockstates/giant_lily_pad.json +++ b/common/src/main/resources/assets/antarchy/blockstates/giant_lily_pad.json @@ -1,220 +1,394 @@ -{ - "variants": { - "shape=single,tile_position=single,rotation=0": { - "model": "antarchy:block/giant_lily_pad/single/single/0" - }, - "shape=single,tile_position=single,rotation=90": { - "model": "antarchy:block/giant_lily_pad/single/single/90" - }, - "shape=single,tile_position=single,rotation=180": { - "model": "antarchy:block/giant_lily_pad/single/single/180" - }, - "shape=single,tile_position=single,rotation=270": { - "model": "antarchy:block/giant_lily_pad/single/single/270" - }, - "shape=two_by_one,tile_position=middle_left,rotation=0": { - "model": "antarchy:block/giant_lily_pad/two_by_one/middle_left/0" - }, - "shape=two_by_one,tile_position=middle_right,rotation=0": { - "model": "antarchy:block/giant_lily_pad/two_by_one/middle_right/0" - }, - "shape=two_by_one,tile_position=top_middle,rotation=0": { - "model": "antarchy:block/giant_lily_pad/two_by_one/top_middle/0" - }, - "shape=two_by_one,tile_position=bottom_middle,rotation=0": { - "model": "antarchy:block/giant_lily_pad/two_by_one/bottom_middle/0" - }, - "shape=two_by_two,tile_position=top_left,rotation=0": { - "model": "antarchy:block/giant_lily_pad/two_by_two/top_left/0" - }, - "shape=two_by_two,tile_position=top_right,rotation=0": { - "model": "antarchy:block/giant_lily_pad/two_by_two/top_right/0" - }, - "shape=two_by_two,tile_position=bottom_left,rotation=0": { - "model": "antarchy:block/giant_lily_pad/two_by_two/bottom_left/0" - }, - "shape=two_by_two,tile_position=bottom_right,rotation=0": { - "model": "antarchy:block/giant_lily_pad/two_by_two/bottom_right/0" - }, - "shape=three_by_three,tile_position=top_left,rotation=0": { - "model": "antarchy:block/giant_lily_pad/three_by_three/top_left/0" - }, - "shape=three_by_three,tile_position=top_middle,rotation=0": { - "model": "antarchy:block/giant_lily_pad/three_by_three/top_middle/0" - }, - "shape=three_by_three,tile_position=top_right,rotation=0": { - "model": "antarchy:block/giant_lily_pad/three_by_three/top_right/0" - }, - "shape=three_by_three,tile_position=middle_left,rotation=0": { - "model": "antarchy:block/giant_lily_pad/three_by_three/middle_left/0" - }, - "shape=three_by_three,tile_position=center,rotation=0": { - "model": "antarchy:block/giant_lily_pad/three_by_three/center/0" - }, - "shape=three_by_three,tile_position=middle_right,rotation=0": { - "model": "antarchy:block/giant_lily_pad/three_by_three/middle_right/0" - }, - "shape=three_by_three,tile_position=bottom_left,rotation=0": { - "model": "antarchy:block/giant_lily_pad/three_by_three/bottom_left/0" - }, - "shape=three_by_three,tile_position=bottom_middle,rotation=0": { - "model": "antarchy:block/giant_lily_pad/three_by_three/bottom_middle/0" - }, - "shape=three_by_three,tile_position=bottom_right,rotation=0": { - "model": "antarchy:block/giant_lily_pad/three_by_three/bottom_right/0" - }, - "shape=two_by_one,tile_position=middle_left,rotation=90": { - "model": "antarchy:block/giant_lily_pad/two_by_one/middle_left/90" - }, - "shape=two_by_one,tile_position=middle_right,rotation=90": { - "model": "antarchy:block/giant_lily_pad/two_by_one/middle_right/90" - }, - "shape=two_by_one,tile_position=top_middle,rotation=90": { - "model": "antarchy:block/giant_lily_pad/two_by_one/top_middle/90" - }, - "shape=two_by_one,tile_position=bottom_middle,rotation=90": { - "model": "antarchy:block/giant_lily_pad/two_by_one/bottom_middle/90" - }, - "shape=two_by_two,tile_position=top_left,rotation=90": { - "model": "antarchy:block/giant_lily_pad/two_by_two/top_left/90" - }, - "shape=two_by_two,tile_position=top_right,rotation=90": { - "model": "antarchy:block/giant_lily_pad/two_by_two/top_right/90" - }, - "shape=two_by_two,tile_position=bottom_left,rotation=90": { - "model": "antarchy:block/giant_lily_pad/two_by_two/bottom_left/90" - }, - "shape=two_by_two,tile_position=bottom_right,rotation=90": { - "model": "antarchy:block/giant_lily_pad/two_by_two/bottom_right/90" - }, - "shape=three_by_three,tile_position=top_left,rotation=90": { - "model": "antarchy:block/giant_lily_pad/three_by_three/top_left/90" - }, - "shape=three_by_three,tile_position=top_middle,rotation=90": { - "model": "antarchy:block/giant_lily_pad/three_by_three/top_middle/90" - }, - "shape=three_by_three,tile_position=top_right,rotation=90": { - "model": "antarchy:block/giant_lily_pad/three_by_three/top_right/90" - }, - "shape=three_by_three,tile_position=middle_left,rotation=90": { - "model": "antarchy:block/giant_lily_pad/three_by_three/middle_left/90" - }, - "shape=three_by_three,tile_position=center,rotation=90": { - "model": "antarchy:block/giant_lily_pad/three_by_three/center/90" - }, - "shape=three_by_three,tile_position=middle_right,rotation=90": { - "model": "antarchy:block/giant_lily_pad/three_by_three/middle_right/90" - }, - "shape=three_by_three,tile_position=bottom_left,rotation=90": { - "model": "antarchy:block/giant_lily_pad/three_by_three/bottom_left/90" - }, - "shape=three_by_three,tile_position=bottom_middle,rotation=90": { - "model": "antarchy:block/giant_lily_pad/three_by_three/bottom_middle/90" - }, - "shape=three_by_three,tile_position=bottom_right,rotation=90": { - "model": "antarchy:block/giant_lily_pad/three_by_three/bottom_right/90" - }, - "shape=two_by_one,tile_position=middle_left,rotation=180": { - "model": "antarchy:block/giant_lily_pad/two_by_one/middle_left/180" - }, - "shape=two_by_one,tile_position=middle_right,rotation=180": { - "model": "antarchy:block/giant_lily_pad/two_by_one/middle_right/180" - }, - "shape=two_by_one,tile_position=top_middle,rotation=180": { - "model": "antarchy:block/giant_lily_pad/two_by_one/top_middle/180" - }, - "shape=two_by_one,tile_position=bottom_middle,rotation=180": { - "model": "antarchy:block/giant_lily_pad/two_by_one/bottom_middle/180" - }, - "shape=two_by_two,tile_position=top_left,rotation=180": { - "model": "antarchy:block/giant_lily_pad/two_by_two/top_left/180" - }, - "shape=two_by_two,tile_position=top_right,rotation=180": { - "model": "antarchy:block/giant_lily_pad/two_by_two/top_right/180" - }, - "shape=two_by_two,tile_position=bottom_left,rotation=180": { - "model": "antarchy:block/giant_lily_pad/two_by_two/bottom_left/180" - }, - "shape=two_by_two,tile_position=bottom_right,rotation=180": { - "model": "antarchy:block/giant_lily_pad/two_by_two/bottom_right/180" - }, - "shape=three_by_three,tile_position=top_left,rotation=180": { - "model": "antarchy:block/giant_lily_pad/three_by_three/top_left/180" - }, - "shape=three_by_three,tile_position=top_middle,rotation=180": { - "model": "antarchy:block/giant_lily_pad/three_by_three/top_middle/180" - }, - "shape=three_by_three,tile_position=top_right,rotation=180": { - "model": "antarchy:block/giant_lily_pad/three_by_three/top_right/180" - }, - "shape=three_by_three,tile_position=middle_left,rotation=180": { - "model": "antarchy:block/giant_lily_pad/three_by_three/middle_left/180" - }, - "shape=three_by_three,tile_position=center,rotation=180": { - "model": "antarchy:block/giant_lily_pad/three_by_three/center/180" - }, - "shape=three_by_three,tile_position=middle_right,rotation=180": { - "model": "antarchy:block/giant_lily_pad/three_by_three/middle_right/180" - }, - "shape=three_by_three,tile_position=bottom_left,rotation=180": { - "model": "antarchy:block/giant_lily_pad/three_by_three/bottom_left/180" - }, - "shape=three_by_three,tile_position=bottom_middle,rotation=180": { - "model": "antarchy:block/giant_lily_pad/three_by_three/bottom_middle/180" - }, - "shape=three_by_three,tile_position=bottom_right,rotation=180": { - "model": "antarchy:block/giant_lily_pad/three_by_three/bottom_right/180" - }, - "shape=two_by_one,tile_position=middle_left,rotation=270": { - "model": "antarchy:block/giant_lily_pad/two_by_one/middle_left/270" - }, - "shape=two_by_one,tile_position=middle_right,rotation=270": { - "model": "antarchy:block/giant_lily_pad/two_by_one/middle_right/270" - }, - "shape=two_by_one,tile_position=top_middle,rotation=270": { - "model": "antarchy:block/giant_lily_pad/two_by_one/top_middle/270" - }, - "shape=two_by_one,tile_position=bottom_middle,rotation=270": { - "model": "antarchy:block/giant_lily_pad/two_by_one/bottom_middle/270" - }, - "shape=two_by_two,tile_position=top_left,rotation=270": { - "model": "antarchy:block/giant_lily_pad/two_by_two/top_left/270" - }, - "shape=two_by_two,tile_position=top_right,rotation=270": { - "model": "antarchy:block/giant_lily_pad/two_by_two/top_right/270" - }, - "shape=two_by_two,tile_position=bottom_left,rotation=270": { - "model": "antarchy:block/giant_lily_pad/two_by_two/bottom_left/270" - }, - "shape=two_by_two,tile_position=bottom_right,rotation=270": { - "model": "antarchy:block/giant_lily_pad/two_by_two/bottom_right/270" - }, - "shape=three_by_three,tile_position=top_left,rotation=270": { - "model": "antarchy:block/giant_lily_pad/three_by_three/top_left/270" - }, - "shape=three_by_three,tile_position=top_middle,rotation=270": { - "model": "antarchy:block/giant_lily_pad/three_by_three/top_middle/270" - }, - "shape=three_by_three,tile_position=top_right,rotation=270": { - "model": "antarchy:block/giant_lily_pad/three_by_three/top_right/270" - }, - "shape=three_by_three,tile_position=middle_left,rotation=270": { - "model": "antarchy:block/giant_lily_pad/three_by_three/middle_left/270" - }, - "shape=three_by_three,tile_position=center,rotation=270": { - "model": "antarchy:block/giant_lily_pad/three_by_three/center/270" - }, - "shape=three_by_three,tile_position=middle_right,rotation=270": { - "model": "antarchy:block/giant_lily_pad/three_by_three/middle_right/270" - }, - "shape=three_by_three,tile_position=bottom_left,rotation=270": { - "model": "antarchy:block/giant_lily_pad/three_by_three/bottom_left/270" - }, - "shape=three_by_three,tile_position=bottom_middle,rotation=270": { - "model": "antarchy:block/giant_lily_pad/three_by_three/bottom_middle/270" - }, - "shape=three_by_three,tile_position=bottom_right,rotation=270": { - "model": "antarchy:block/giant_lily_pad/three_by_three/bottom_right/270" - } - } +{ + "multipart": [ + { + "when": { + "tile_position": "top_left", + "rotation": "0" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/top_left" + } + }, + { + "when": { + "tile_position": "top_middle", + "rotation": "0" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/top_middle" + } + }, + { + "when": { + "tile_position": "top_right", + "rotation": "0" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/top_right" + } + }, + { + "when": { + "tile_position": "middle_left", + "rotation": "0" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/middle_left" + } + }, + { + "when": { + "tile_position": "center", + "rotation": "0" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/center" + } + }, + { + "when": { + "tile_position": "middle_right", + "rotation": "0" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/middle_right" + } + }, + { + "when": { + "tile_position": "bottom_left", + "rotation": "0" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/bottom_left" + } + }, + { + "when": { + "tile_position": "bottom_middle", + "rotation": "0" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/bottom_middle" + } + }, + { + "when": { + "tile_position": "bottom_right", + "rotation": "0" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/bottom_right" + } + }, + { + "when": { + "tile_position": "top_left", + "rotation": "90" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/bottom_left", + "y": 90 + } + }, + { + "when": { + "tile_position": "top_middle", + "rotation": "90" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/middle_left", + "y": 90 + } + }, + { + "when": { + "tile_position": "top_right", + "rotation": "90" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/top_left", + "y": 90 + } + }, + { + "when": { + "tile_position": "middle_left", + "rotation": "90" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/bottom_middle", + "y": 90 + } + }, + { + "when": { + "tile_position": "center", + "rotation": "90" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/center", + "y": 90 + } + }, + { + "when": { + "tile_position": "middle_right", + "rotation": "90" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/top_middle", + "y": 90 + } + }, + { + "when": { + "tile_position": "bottom_left", + "rotation": "90" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/bottom_right", + "y": 90 + } + }, + { + "when": { + "tile_position": "bottom_middle", + "rotation": "90" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/middle_right", + "y": 90 + } + }, + { + "when": { + "tile_position": "bottom_right", + "rotation": "90" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/top_right", + "y": 90 + } + }, + { + "when": { + "tile_position": "top_left", + "rotation": "180" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/bottom_right", + "y": 180 + } + }, + { + "when": { + "tile_position": "top_middle", + "rotation": "180" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/bottom_middle", + "y": 180 + } + }, + { + "when": { + "tile_position": "top_right", + "rotation": "180" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/bottom_left", + "y": 180 + } + }, + { + "when": { + "tile_position": "middle_left", + "rotation": "180" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/middle_right", + "y": 180 + } + }, + { + "when": { + "tile_position": "center", + "rotation": "180" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/center", + "y": 180 + } + }, + { + "when": { + "tile_position": "middle_right", + "rotation": "180" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/middle_left", + "y": 180 + } + }, + { + "when": { + "tile_position": "bottom_left", + "rotation": "180" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/top_right", + "y": 180 + } + }, + { + "when": { + "tile_position": "bottom_middle", + "rotation": "180" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/top_middle", + "y": 180 + } + }, + { + "when": { + "tile_position": "bottom_right", + "rotation": "180" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/top_left", + "y": 180 + } + }, + { + "when": { + "tile_position": "top_left", + "rotation": "270" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/top_right", + "y": 270 + } + }, + { + "when": { + "tile_position": "top_middle", + "rotation": "270" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/middle_right", + "y": 270 + } + }, + { + "when": { + "tile_position": "top_right", + "rotation": "270" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/bottom_right", + "y": 270 + } + }, + { + "when": { + "tile_position": "middle_left", + "rotation": "270" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/top_middle", + "y": 270 + } + }, + { + "when": { + "tile_position": "center", + "rotation": "270" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/center", + "y": 270 + } + }, + { + "when": { + "tile_position": "middle_right", + "rotation": "270" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/bottom_middle", + "y": 270 + } + }, + { + "when": { + "tile_position": "bottom_left", + "rotation": "270" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/top_left", + "y": 270 + } + }, + { + "when": { + "tile_position": "bottom_middle", + "rotation": "270" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/middle_left", + "y": 270 + } + }, + { + "when": { + "tile_position": "bottom_right", + "rotation": "270" + }, + "apply": { + "model": "antarchy:block/giant_lily_pad/bottom_left", + "y": 270 + } + }, + { + "when": { + "has_lotus": "true", + "rotation": "0" + }, + "apply": { + "model": "antarchy:block/lotus_on_giant_lily_pad" + } + }, + { + "when": { + "has_lotus": "true", + "rotation": "90" + }, + "apply": { + "model": "antarchy:block/lotus_on_giant_lily_pad", + "y": 90 + } + }, + { + "when": { + "has_lotus": "true", + "rotation": "180" + }, + "apply": { + "model": "antarchy:block/lotus_on_giant_lily_pad", + "y": 180 + } + }, + { + "when": { + "has_lotus": "true", + "rotation": "270" + }, + "apply": { + "model": "antarchy:block/lotus_on_giant_lily_pad", + "y": 270 + } + } + ] } diff --git a/common/src/main/resources/assets/antarchy/blockstates/seashell.json b/common/src/main/resources/assets/antarchy/blockstates/seashell.json index 1e35228b..00bdb60d 100644 --- a/common/src/main/resources/assets/antarchy/blockstates/seashell.json +++ b/common/src/main/resources/assets/antarchy/blockstates/seashell.json @@ -1,20 +1,52 @@ { "variants": { - "facing=north,powered=false,waterlogged=false": { "model": "builtin/entity" }, - "facing=north,powered=false,waterlogged=true": { "model": "builtin/entity" }, - "facing=north,powered=true,waterlogged=false": { "model": "builtin/entity" }, - "facing=north,powered=true,waterlogged=true": { "model": "builtin/entity" }, - "facing=south,powered=false,waterlogged=false": { "model": "builtin/entity" }, - "facing=south,powered=false,waterlogged=true": { "model": "builtin/entity" }, - "facing=south,powered=true,waterlogged=false": { "model": "builtin/entity" }, - "facing=south,powered=true,waterlogged=true": { "model": "builtin/entity" }, - "facing=east,powered=false,waterlogged=false": { "model": "builtin/entity" }, - "facing=east,powered=false,waterlogged=true": { "model": "builtin/entity" }, - "facing=east,powered=true,waterlogged=false": { "model": "builtin/entity" }, - "facing=east,powered=true,waterlogged=true": { "model": "builtin/entity" }, - "facing=west,powered=false,waterlogged=false": { "model": "builtin/entity" }, - "facing=west,powered=false,waterlogged=true": { "model": "builtin/entity" }, - "facing=west,powered=true,waterlogged=false": { "model": "builtin/entity" }, - "facing=west,powered=true,waterlogged=true": { "model": "builtin/entity" } + "facing=north,powered=false,waterlogged=false": { + "model": "antarchy:block/seashell" + }, + "facing=north,powered=false,waterlogged=true": { + "model": "antarchy:block/seashell" + }, + "facing=north,powered=true,waterlogged=false": { + "model": "antarchy:block/seashell" + }, + "facing=north,powered=true,waterlogged=true": { + "model": "antarchy:block/seashell" + }, + "facing=south,powered=false,waterlogged=false": { + "model": "antarchy:block/seashell" + }, + "facing=south,powered=false,waterlogged=true": { + "model": "antarchy:block/seashell" + }, + "facing=south,powered=true,waterlogged=false": { + "model": "antarchy:block/seashell" + }, + "facing=south,powered=true,waterlogged=true": { + "model": "antarchy:block/seashell" + }, + "facing=east,powered=false,waterlogged=false": { + "model": "antarchy:block/seashell" + }, + "facing=east,powered=false,waterlogged=true": { + "model": "antarchy:block/seashell" + }, + "facing=east,powered=true,waterlogged=false": { + "model": "antarchy:block/seashell" + }, + "facing=east,powered=true,waterlogged=true": { + "model": "antarchy:block/seashell" + }, + "facing=west,powered=false,waterlogged=false": { + "model": "antarchy:block/seashell" + }, + "facing=west,powered=false,waterlogged=true": { + "model": "antarchy:block/seashell" + }, + "facing=west,powered=true,waterlogged=false": { + "model": "antarchy:block/seashell" + }, + "facing=west,powered=true,waterlogged=true": { + "model": "antarchy:block/seashell" + } } -} +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/lang/en_us.json b/common/src/main/resources/assets/antarchy/lang/en_us.json index 55597be8..aa41aab7 100644 --- a/common/src/main/resources/assets/antarchy/lang/en_us.json +++ b/common/src/main/resources/assets/antarchy/lang/en_us.json @@ -43,8 +43,10 @@ "block.antarchy.spider_lily": "Spider Lily", "block.antarchy.lotus": "Lotus", "item.antarchy.lotus": "Lotus", + "item.antarchy.critter_cage": "Critter Cage", "block.antarchy.giant_lily_pad": "Giant Lily Pad", "block.antarchy.seashell": "Seashell", + "block.antarchy.critter_cage_block": "Critter Cage", "block.antarchy.hushweed": "Hushweed", "block.antarchy.umbral_moss_block": "Umbral Moss Block", "block.antarchy.umbral_moss_carpet": "Umbral Moss Carpet", @@ -210,6 +212,10 @@ "item.antarchy.cloud_shark_fin": "Cloud Shark Fin", "item.antarchy.cloud_shark_fin_soup": "Cloud Shark Fin Soup", "tooltip.antarchy.cloud_shark_fin_soup": "Grants Strength and Slow Falling.", + "tooltip.antarchy.critter_cage.empty": "Right-click to throw", + "tooltip.antarchy.critter_cage.contains": "Contains: %s", + "tooltip.antarchy.critter_cage.release": "Right-click to release", + "tooltip.antarchy.critter_cage.place": "Shift + right-click to place", "item.antarchy.kraken_tooth": "Kraken Tooth", "item.antarchy.kraken_tentacle": "Kraken Tentacle", "item.antarchy.krakens_grasp": "Kraken's Grasp", @@ -600,6 +606,8 @@ "death.attack.kraken_mauling.player": "%1$s was dragged under by the Kraken while fighting %2$s", "death.attack.kraken_lightning": "%1$s was struck down by the Kraken\u0027s storm", "death.attack.kraken_lightning.player": "%1$s was struck down by the Kraken\u0027s storm while fighting %2$s", + "death.attack.rpo_launcher_blast": "%1$s was RKO-ed by an R.P.O.", + "death.attack.rpo_launcher_blast.player": "%1$s was RKO-ed by an R.P.O. while fighting %2$s", "death.attack.nightmare_mauling": "%1$s was devoured by the Nightmare", "death.attack.nightmare_mauling.player": "%1$s was devoured by the Nightmare while fighting %2$s", "death.attack.basilisk_bite": "%1$s was swallowed by a Basilisk", diff --git a/common/src/main/resources/assets/antarchy/models/block/critter_cage_block.json b/common/src/main/resources/assets/antarchy/models/block/critter_cage_block.json new file mode 100644 index 00000000..56c636f0 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/critter_cage_block.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "render_type": "cutout", + "textures": { + "cage": "antarchy:block/critter_cage", + "particle": "antarchy:block/critter_cage" + }, + "elements": [ + { + "from": [1, 0, 1], + "to": [15, 16, 15], + "faces": { + "down": { "texture": "#cage", "cullface": "down" }, + "up": { "texture": "#cage", "cullface": "up" }, + "north": { "texture": "#cage", "cullface": "north" }, + "south": { "texture": "#cage", "cullface": "south" }, + "west": { "texture": "#cage", "cullface": "west" }, + "east": { "texture": "#cage", "cullface": "east" } + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad.json new file mode 100644 index 00000000..4d31b922 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad.json @@ -0,0 +1,25 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "antarchy:block/giant_lilypad/giant_lilypad_3x3", + "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", + "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 0.25, 16], + "shade": false, + "faces": { + "up": { + "uv": [0, 0, 16, 16], + "texture": "#top" + }, + "down": { + "uv": [0, 0, 16, 16], + "texture": "#bottom" + } + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/bottom_left.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/bottom_left.json new file mode 100644 index 00000000..03ca5a0f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/bottom_left.json @@ -0,0 +1,25 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "antarchy:block/giant_lilypad/tiles/three_by_three/bottom_left", + "top": "antarchy:block/giant_lilypad/tiles/three_by_three/bottom_left", + "bottom": "antarchy:block/giant_lilypad/tiles/three_by_three/bottom_left" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 0.25, 16], + "shade": false, + "faces": { + "up": { + "uv": [0, 0, 16, 16], + "texture": "#top" + }, + "down": { + "uv": [0, 0, 16, 16], + "texture": "#bottom" + } + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/bottom_middle.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/bottom_middle.json new file mode 100644 index 00000000..65ce4131 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/bottom_middle.json @@ -0,0 +1,25 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "antarchy:block/giant_lilypad/tiles/three_by_three/bottom_middle", + "top": "antarchy:block/giant_lilypad/tiles/three_by_three/bottom_middle", + "bottom": "antarchy:block/giant_lilypad/tiles/three_by_three/bottom_middle" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 0.25, 16], + "shade": false, + "faces": { + "up": { + "uv": [0, 0, 16, 16], + "texture": "#top" + }, + "down": { + "uv": [0, 0, 16, 16], + "texture": "#bottom" + } + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/bottom_right.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/bottom_right.json new file mode 100644 index 00000000..bb9e59ed --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/bottom_right.json @@ -0,0 +1,25 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "antarchy:block/giant_lilypad/tiles/three_by_three/bottom_right", + "top": "antarchy:block/giant_lilypad/tiles/three_by_three/bottom_right", + "bottom": "antarchy:block/giant_lilypad/tiles/three_by_three/bottom_right" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 0.25, 16], + "shade": false, + "faces": { + "up": { + "uv": [0, 0, 16, 16], + "texture": "#top" + }, + "down": { + "uv": [0, 0, 16, 16], + "texture": "#bottom" + } + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/center.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/center.json new file mode 100644 index 00000000..49a1a6df --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/center.json @@ -0,0 +1,25 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "antarchy:block/giant_lilypad/tiles/three_by_three/center", + "top": "antarchy:block/giant_lilypad/tiles/three_by_three/center", + "bottom": "antarchy:block/giant_lilypad/tiles/three_by_three/center" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 0.25, 16], + "shade": false, + "faces": { + "up": { + "uv": [0, 0, 16, 16], + "texture": "#top" + }, + "down": { + "uv": [0, 0, 16, 16], + "texture": "#bottom" + } + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/middle_left.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/middle_left.json new file mode 100644 index 00000000..b3015b82 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/middle_left.json @@ -0,0 +1,25 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "antarchy:block/giant_lilypad/tiles/three_by_three/middle_left", + "top": "antarchy:block/giant_lilypad/tiles/three_by_three/middle_left", + "bottom": "antarchy:block/giant_lilypad/tiles/three_by_three/middle_left" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 0.25, 16], + "shade": false, + "faces": { + "up": { + "uv": [0, 0, 16, 16], + "texture": "#top" + }, + "down": { + "uv": [0, 0, 16, 16], + "texture": "#bottom" + } + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/middle_right.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/middle_right.json new file mode 100644 index 00000000..3f19cc20 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/middle_right.json @@ -0,0 +1,25 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "antarchy:block/giant_lilypad/tiles/three_by_three/middle_right", + "top": "antarchy:block/giant_lilypad/tiles/three_by_three/middle_right", + "bottom": "antarchy:block/giant_lilypad/tiles/three_by_three/middle_right" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 0.25, 16], + "shade": false, + "faces": { + "up": { + "uv": [0, 0, 16, 16], + "texture": "#top" + }, + "down": { + "uv": [0, 0, 16, 16], + "texture": "#bottom" + } + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/single/single/0.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/single/single/0.json deleted file mode 100644 index 1be5b2e8..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/single/single/0.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_1x1" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#top", - "rotation": 0 - }, - "down": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#bottom", - "rotation": 0 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/single/single/180.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/single/single/180.json deleted file mode 100644 index 24c0e389..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/single/single/180.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_1x1" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#top", - "rotation": 180 - }, - "down": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#bottom", - "rotation": 180 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/single/single/270.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/single/single/270.json deleted file mode 100644 index 7c89781b..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/single/single/270.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_1x1" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#top", - "rotation": 270 - }, - "down": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#bottom", - "rotation": 270 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/single/single/90.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/single/single/90.json deleted file mode 100644 index d503c194..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/single/single/90.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_1x1" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#top", - "rotation": 90 - }, - "down": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#bottom", - "rotation": 90 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_left/0.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_left/0.json deleted file mode 100644 index 8f64a9d7..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_left/0.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 32, - 16, - 48 - ], - "texture": "#top", - "rotation": 0 - }, - "down": { - "uv": [ - 0, - 32, - 16, - 48 - ], - "texture": "#bottom", - "rotation": 0 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_left/180.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_left/180.json deleted file mode 100644 index 7eb8f5a6..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_left/180.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 32, - 16, - 48 - ], - "texture": "#top", - "rotation": 180 - }, - "down": { - "uv": [ - 0, - 32, - 16, - 48 - ], - "texture": "#bottom", - "rotation": 180 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_left/270.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_left/270.json deleted file mode 100644 index 01c79f1e..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_left/270.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 32, - 16, - 48 - ], - "texture": "#top", - "rotation": 270 - }, - "down": { - "uv": [ - 0, - 32, - 16, - 48 - ], - "texture": "#bottom", - "rotation": 270 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_left/90.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_left/90.json deleted file mode 100644 index f01d345e..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_left/90.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 32, - 16, - 48 - ], - "texture": "#top", - "rotation": 90 - }, - "down": { - "uv": [ - 0, - 32, - 16, - 48 - ], - "texture": "#bottom", - "rotation": 90 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_middle/0.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_middle/0.json deleted file mode 100644 index 9951581b..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_middle/0.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 32, - 32, - 48 - ], - "texture": "#top", - "rotation": 0 - }, - "down": { - "uv": [ - 16, - 32, - 32, - 48 - ], - "texture": "#bottom", - "rotation": 0 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_middle/180.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_middle/180.json deleted file mode 100644 index b194f7a4..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_middle/180.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 32, - 32, - 48 - ], - "texture": "#top", - "rotation": 180 - }, - "down": { - "uv": [ - 16, - 32, - 32, - 48 - ], - "texture": "#bottom", - "rotation": 180 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_middle/270.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_middle/270.json deleted file mode 100644 index 99972a5f..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_middle/270.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 32, - 32, - 48 - ], - "texture": "#top", - "rotation": 270 - }, - "down": { - "uv": [ - 16, - 32, - 32, - 48 - ], - "texture": "#bottom", - "rotation": 270 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_middle/90.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_middle/90.json deleted file mode 100644 index d44dfc84..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_middle/90.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 32, - 32, - 48 - ], - "texture": "#top", - "rotation": 90 - }, - "down": { - "uv": [ - 16, - 32, - 32, - 48 - ], - "texture": "#bottom", - "rotation": 90 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_right/0.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_right/0.json deleted file mode 100644 index ff296a2d..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_right/0.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 32, - 32, - 48, - 48 - ], - "texture": "#top", - "rotation": 0 - }, - "down": { - "uv": [ - 32, - 32, - 48, - 48 - ], - "texture": "#bottom", - "rotation": 0 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_right/180.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_right/180.json deleted file mode 100644 index bda1dd71..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_right/180.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 32, - 32, - 48, - 48 - ], - "texture": "#top", - "rotation": 180 - }, - "down": { - "uv": [ - 32, - 32, - 48, - 48 - ], - "texture": "#bottom", - "rotation": 180 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_right/270.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_right/270.json deleted file mode 100644 index df5dc055..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_right/270.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 32, - 32, - 48, - 48 - ], - "texture": "#top", - "rotation": 270 - }, - "down": { - "uv": [ - 32, - 32, - 48, - 48 - ], - "texture": "#bottom", - "rotation": 270 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_right/90.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_right/90.json deleted file mode 100644 index e49f458a..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_right/90.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 32, - 32, - 48, - 48 - ], - "texture": "#top", - "rotation": 90 - }, - "down": { - "uv": [ - 32, - 32, - 48, - 48 - ], - "texture": "#bottom", - "rotation": 90 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/center/0.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/center/0.json deleted file mode 100644 index 177b9da5..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/center/0.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 16, - 32, - 32 - ], - "texture": "#top", - "rotation": 0 - }, - "down": { - "uv": [ - 16, - 16, - 32, - 32 - ], - "texture": "#bottom", - "rotation": 0 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/center/180.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/center/180.json deleted file mode 100644 index 2d0df505..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/center/180.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 16, - 32, - 32 - ], - "texture": "#top", - "rotation": 180 - }, - "down": { - "uv": [ - 16, - 16, - 32, - 32 - ], - "texture": "#bottom", - "rotation": 180 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/center/270.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/center/270.json deleted file mode 100644 index 7f32de5e..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/center/270.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 16, - 32, - 32 - ], - "texture": "#top", - "rotation": 270 - }, - "down": { - "uv": [ - 16, - 16, - 32, - 32 - ], - "texture": "#bottom", - "rotation": 270 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/center/90.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/center/90.json deleted file mode 100644 index 0497bf63..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/center/90.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 16, - 32, - 32 - ], - "texture": "#top", - "rotation": 90 - }, - "down": { - "uv": [ - 16, - 16, - 32, - 32 - ], - "texture": "#bottom", - "rotation": 90 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_left/0.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_left/0.json deleted file mode 100644 index 1388a75f..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_left/0.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 16, - 16, - 32 - ], - "texture": "#top", - "rotation": 0 - }, - "down": { - "uv": [ - 0, - 16, - 16, - 32 - ], - "texture": "#bottom", - "rotation": 0 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_left/180.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_left/180.json deleted file mode 100644 index af8d7087..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_left/180.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 16, - 16, - 32 - ], - "texture": "#top", - "rotation": 180 - }, - "down": { - "uv": [ - 0, - 16, - 16, - 32 - ], - "texture": "#bottom", - "rotation": 180 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_left/270.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_left/270.json deleted file mode 100644 index 9b90ec6b..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_left/270.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 16, - 16, - 32 - ], - "texture": "#top", - "rotation": 270 - }, - "down": { - "uv": [ - 0, - 16, - 16, - 32 - ], - "texture": "#bottom", - "rotation": 270 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_left/90.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_left/90.json deleted file mode 100644 index 66f40fa3..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_left/90.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 16, - 16, - 32 - ], - "texture": "#top", - "rotation": 90 - }, - "down": { - "uv": [ - 0, - 16, - 16, - 32 - ], - "texture": "#bottom", - "rotation": 90 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_right/0.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_right/0.json deleted file mode 100644 index d0f6b288..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_right/0.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 32, - 16, - 48, - 32 - ], - "texture": "#top", - "rotation": 0 - }, - "down": { - "uv": [ - 32, - 16, - 48, - 32 - ], - "texture": "#bottom", - "rotation": 0 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_right/180.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_right/180.json deleted file mode 100644 index ed857a25..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_right/180.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 32, - 16, - 48, - 32 - ], - "texture": "#top", - "rotation": 180 - }, - "down": { - "uv": [ - 32, - 16, - 48, - 32 - ], - "texture": "#bottom", - "rotation": 180 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_right/270.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_right/270.json deleted file mode 100644 index bddcd717..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_right/270.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 32, - 16, - 48, - 32 - ], - "texture": "#top", - "rotation": 270 - }, - "down": { - "uv": [ - 32, - 16, - 48, - 32 - ], - "texture": "#bottom", - "rotation": 270 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_right/90.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_right/90.json deleted file mode 100644 index 0e61ca5a..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_right/90.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 32, - 16, - 48, - 32 - ], - "texture": "#top", - "rotation": 90 - }, - "down": { - "uv": [ - 32, - 16, - 48, - 32 - ], - "texture": "#bottom", - "rotation": 90 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_left/0.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_left/0.json deleted file mode 100644 index fec4034c..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_left/0.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#top", - "rotation": 0 - }, - "down": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#bottom", - "rotation": 0 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_left/180.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_left/180.json deleted file mode 100644 index 0fbefb4d..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_left/180.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#top", - "rotation": 180 - }, - "down": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#bottom", - "rotation": 180 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_left/270.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_left/270.json deleted file mode 100644 index 3d48d8f2..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_left/270.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#top", - "rotation": 270 - }, - "down": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#bottom", - "rotation": 270 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_left/90.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_left/90.json deleted file mode 100644 index 36f30846..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_left/90.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#top", - "rotation": 90 - }, - "down": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#bottom", - "rotation": 90 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_middle/0.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_middle/0.json deleted file mode 100644 index ab445e79..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_middle/0.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#top", - "rotation": 0 - }, - "down": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#bottom", - "rotation": 0 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_middle/180.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_middle/180.json deleted file mode 100644 index 53efae6a..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_middle/180.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#top", - "rotation": 180 - }, - "down": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#bottom", - "rotation": 180 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_middle/270.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_middle/270.json deleted file mode 100644 index c3424e5f..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_middle/270.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#top", - "rotation": 270 - }, - "down": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#bottom", - "rotation": 270 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_middle/90.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_middle/90.json deleted file mode 100644 index 1c896803..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_middle/90.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#top", - "rotation": 90 - }, - "down": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#bottom", - "rotation": 90 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_right/0.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_right/0.json deleted file mode 100644 index 148672a1..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_right/0.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 32, - 0, - 48, - 16 - ], - "texture": "#top", - "rotation": 0 - }, - "down": { - "uv": [ - 32, - 0, - 48, - 16 - ], - "texture": "#bottom", - "rotation": 0 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_right/180.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_right/180.json deleted file mode 100644 index 73e41711..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_right/180.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 32, - 0, - 48, - 16 - ], - "texture": "#top", - "rotation": 180 - }, - "down": { - "uv": [ - 32, - 0, - 48, - 16 - ], - "texture": "#bottom", - "rotation": 180 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_right/270.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_right/270.json deleted file mode 100644 index e9869984..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_right/270.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 32, - 0, - 48, - 16 - ], - "texture": "#top", - "rotation": 270 - }, - "down": { - "uv": [ - 32, - 0, - 48, - 16 - ], - "texture": "#bottom", - "rotation": 270 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_right/90.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_right/90.json deleted file mode 100644 index 6b4aad17..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_right/90.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_3x3", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_3x3" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 32, - 0, - 48, - 16 - ], - "texture": "#top", - "rotation": 90 - }, - "down": { - "uv": [ - 32, - 0, - 48, - 16 - ], - "texture": "#bottom", - "rotation": 90 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/top_left.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/top_left.json new file mode 100644 index 00000000..d8bb7b07 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/top_left.json @@ -0,0 +1,25 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "antarchy:block/giant_lilypad/tiles/three_by_three/top_left", + "top": "antarchy:block/giant_lilypad/tiles/three_by_three/top_left", + "bottom": "antarchy:block/giant_lilypad/tiles/three_by_three/top_left" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 0.25, 16], + "shade": false, + "faces": { + "up": { + "uv": [0, 0, 16, 16], + "texture": "#top" + }, + "down": { + "uv": [0, 0, 16, 16], + "texture": "#bottom" + } + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/top_middle.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/top_middle.json new file mode 100644 index 00000000..b39f7bc2 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/top_middle.json @@ -0,0 +1,25 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "antarchy:block/giant_lilypad/tiles/three_by_three/top_middle", + "top": "antarchy:block/giant_lilypad/tiles/three_by_three/top_middle", + "bottom": "antarchy:block/giant_lilypad/tiles/three_by_three/top_middle" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 0.25, 16], + "shade": false, + "faces": { + "up": { + "uv": [0, 0, 16, 16], + "texture": "#top" + }, + "down": { + "uv": [0, 0, 16, 16], + "texture": "#bottom" + } + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/top_right.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/top_right.json new file mode 100644 index 00000000..3190118a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/top_right.json @@ -0,0 +1,25 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "antarchy:block/giant_lilypad/tiles/three_by_three/top_right", + "top": "antarchy:block/giant_lilypad/tiles/three_by_three/top_right", + "bottom": "antarchy:block/giant_lilypad/tiles/three_by_three/top_right" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 0.25, 16], + "shade": false, + "faces": { + "up": { + "uv": [0, 0, 16, 16], + "texture": "#top" + }, + "down": { + "uv": [0, 0, 16, 16], + "texture": "#bottom" + } + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/bottom_middle/0.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/bottom_middle/0.json deleted file mode 100644 index b4aabc6e..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/bottom_middle/0.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x1", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x1" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#top", - "rotation": 0 - }, - "down": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#bottom", - "rotation": 0 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/bottom_middle/180.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/bottom_middle/180.json deleted file mode 100644 index 3400a4b0..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/bottom_middle/180.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x1", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x1" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#top", - "rotation": 180 - }, - "down": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#bottom", - "rotation": 180 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/bottom_middle/270.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/bottom_middle/270.json deleted file mode 100644 index f3fcef58..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/bottom_middle/270.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x1", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x1" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#top", - "rotation": 270 - }, - "down": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#bottom", - "rotation": 270 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/bottom_middle/90.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/bottom_middle/90.json deleted file mode 100644 index 9339f8be..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/bottom_middle/90.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x1", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x1" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#top", - "rotation": 90 - }, - "down": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#bottom", - "rotation": 90 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_left/0.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_left/0.json deleted file mode 100644 index a9c29c20..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_left/0.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x1", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x1" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#top", - "rotation": 0 - }, - "down": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#bottom", - "rotation": 0 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_left/180.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_left/180.json deleted file mode 100644 index cf003f59..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_left/180.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x1", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x1" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#top", - "rotation": 180 - }, - "down": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#bottom", - "rotation": 180 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_left/270.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_left/270.json deleted file mode 100644 index 6e2049ac..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_left/270.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x1", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x1" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#top", - "rotation": 270 - }, - "down": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#bottom", - "rotation": 270 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_left/90.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_left/90.json deleted file mode 100644 index dbca2d2d..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_left/90.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x1", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x1" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#top", - "rotation": 90 - }, - "down": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#bottom", - "rotation": 90 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_right/0.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_right/0.json deleted file mode 100644 index b4aabc6e..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_right/0.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x1", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x1" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#top", - "rotation": 0 - }, - "down": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#bottom", - "rotation": 0 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_right/180.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_right/180.json deleted file mode 100644 index 3400a4b0..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_right/180.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x1", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x1" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#top", - "rotation": 180 - }, - "down": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#bottom", - "rotation": 180 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_right/270.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_right/270.json deleted file mode 100644 index f3fcef58..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_right/270.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x1", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x1" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#top", - "rotation": 270 - }, - "down": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#bottom", - "rotation": 270 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_right/90.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_right/90.json deleted file mode 100644 index 9339f8be..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_right/90.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x1", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x1" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#top", - "rotation": 90 - }, - "down": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#bottom", - "rotation": 90 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/top_middle/0.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/top_middle/0.json deleted file mode 100644 index a9c29c20..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/top_middle/0.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x1", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x1" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#top", - "rotation": 0 - }, - "down": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#bottom", - "rotation": 0 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/top_middle/180.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/top_middle/180.json deleted file mode 100644 index cf003f59..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/top_middle/180.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x1", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x1" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#top", - "rotation": 180 - }, - "down": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#bottom", - "rotation": 180 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/top_middle/270.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/top_middle/270.json deleted file mode 100644 index 6e2049ac..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/top_middle/270.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x1", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x1" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#top", - "rotation": 270 - }, - "down": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#bottom", - "rotation": 270 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/top_middle/90.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/top_middle/90.json deleted file mode 100644 index dbca2d2d..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/top_middle/90.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x1", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x1" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#top", - "rotation": 90 - }, - "down": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#bottom", - "rotation": 90 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_left/0.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_left/0.json deleted file mode 100644 index 7f91e262..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_left/0.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x2", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x2" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 16, - 16, - 32 - ], - "texture": "#top", - "rotation": 0 - }, - "down": { - "uv": [ - 0, - 16, - 16, - 32 - ], - "texture": "#bottom", - "rotation": 0 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_left/180.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_left/180.json deleted file mode 100644 index 50666a30..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_left/180.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x2", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x2" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 16, - 16, - 32 - ], - "texture": "#top", - "rotation": 180 - }, - "down": { - "uv": [ - 0, - 16, - 16, - 32 - ], - "texture": "#bottom", - "rotation": 180 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_left/270.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_left/270.json deleted file mode 100644 index 16776bb5..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_left/270.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x2", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x2" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 16, - 16, - 32 - ], - "texture": "#top", - "rotation": 270 - }, - "down": { - "uv": [ - 0, - 16, - 16, - 32 - ], - "texture": "#bottom", - "rotation": 270 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_left/90.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_left/90.json deleted file mode 100644 index 339aa8a2..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_left/90.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x2", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x2" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 16, - 16, - 32 - ], - "texture": "#top", - "rotation": 90 - }, - "down": { - "uv": [ - 0, - 16, - 16, - 32 - ], - "texture": "#bottom", - "rotation": 90 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_right/0.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_right/0.json deleted file mode 100644 index 1af763ba..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_right/0.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x2", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x2" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 16, - 32, - 32 - ], - "texture": "#top", - "rotation": 0 - }, - "down": { - "uv": [ - 16, - 16, - 32, - 32 - ], - "texture": "#bottom", - "rotation": 0 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_right/180.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_right/180.json deleted file mode 100644 index 1d0e4305..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_right/180.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x2", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x2" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 16, - 32, - 32 - ], - "texture": "#top", - "rotation": 180 - }, - "down": { - "uv": [ - 16, - 16, - 32, - 32 - ], - "texture": "#bottom", - "rotation": 180 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_right/270.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_right/270.json deleted file mode 100644 index 816c803e..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_right/270.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x2", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x2" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 16, - 32, - 32 - ], - "texture": "#top", - "rotation": 270 - }, - "down": { - "uv": [ - 16, - 16, - 32, - 32 - ], - "texture": "#bottom", - "rotation": 270 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_right/90.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_right/90.json deleted file mode 100644 index f1f585be..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_right/90.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x2", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x2" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 16, - 32, - 32 - ], - "texture": "#top", - "rotation": 90 - }, - "down": { - "uv": [ - 16, - 16, - 32, - 32 - ], - "texture": "#bottom", - "rotation": 90 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_left/0.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_left/0.json deleted file mode 100644 index f697d02d..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_left/0.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x2", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x2" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#top", - "rotation": 0 - }, - "down": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#bottom", - "rotation": 0 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_left/180.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_left/180.json deleted file mode 100644 index e34709da..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_left/180.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x2", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x2" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#top", - "rotation": 180 - }, - "down": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#bottom", - "rotation": 180 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_left/270.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_left/270.json deleted file mode 100644 index 8b7be027..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_left/270.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x2", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x2" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#top", - "rotation": 270 - }, - "down": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#bottom", - "rotation": 270 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_left/90.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_left/90.json deleted file mode 100644 index 81c6ad6f..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_left/90.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x2", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x2" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#top", - "rotation": 90 - }, - "down": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#bottom", - "rotation": 90 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_right/0.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_right/0.json deleted file mode 100644 index 5a64c7b5..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_right/0.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x2", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x2" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#top", - "rotation": 0 - }, - "down": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#bottom", - "rotation": 0 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_right/180.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_right/180.json deleted file mode 100644 index 27ac0754..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_right/180.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x2", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x2" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#top", - "rotation": 180 - }, - "down": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#bottom", - "rotation": 180 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_right/270.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_right/270.json deleted file mode 100644 index 020f177c..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_right/270.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x2", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x2" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#top", - "rotation": 270 - }, - "down": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#bottom", - "rotation": 270 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_right/90.json b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_right/90.json deleted file mode 100644 index 3a667888..00000000 --- a/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_right/90.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "antarchy:block/giant_lilypad/giant_lilypad_1x1", - "top": "antarchy:block/giant_lilypad/giant_lilypad_2x2", - "bottom": "antarchy:block/giant_lilypad/giant_lilypad_2x2" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [16, 0.25, 16], - "shade": false, - "faces": { - "up": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#top", - "rotation": 90 - }, - "down": { - "uv": [ - 16, - 0, - 32, - 16 - ], - "texture": "#bottom", - "rotation": 90 - } - } - } - ] -} - - diff --git a/common/src/main/resources/assets/antarchy/models/block/lotus_on_giant_lily_pad.json b/common/src/main/resources/assets/antarchy/models/block/lotus_on_giant_lily_pad.json new file mode 100644 index 00000000..5f89b669 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/lotus_on_giant_lily_pad.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "antarchy:block/lotus", + "cross": "antarchy:block/lotus" + }, + "elements": [ + { + "from": [0.8, -0.25, 8.0], + "to": [15.2, 15.75, 8.0], + "rotation": { + "origin": [8.0, 8.0, 8.0], + "axis": "y", + "angle": 45, + "rescale": false + }, + "shade": false, + "faces": { + "north": { + "uv": [0.0, 0.0, 16.0, 16.0], + "texture": "#cross" + }, + "south": { + "uv": [16.0, 0.0, 0.0, 16.0], + "texture": "#cross" + } + } + }, + { + "from": [8.0, -0.25, 0.8], + "to": [8.0, 15.75, 15.2], + "rotation": { + "origin": [8.0, 8.0, 8.0], + "axis": "y", + "angle": 45, + "rescale": false + }, + "shade": false, + "faces": { + "west": { + "uv": [0.0, 0.0, 16.0, 16.0], + "texture": "#cross" + }, + "east": { + "uv": [16.0, 0.0, 0.0, 16.0], + "texture": "#cross" + } + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/seashell.json b/common/src/main/resources/assets/antarchy/models/block/seashell.json new file mode 100644 index 00000000..a92a0408 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/seashell.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "antarchy:block/seashell" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/seashell_item.json b/common/src/main/resources/assets/antarchy/models/block/seashell_item.json new file mode 100644 index 00000000..07251b47 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/seashell_item.json @@ -0,0 +1,179 @@ +{ + "format_version": "1.21.11", + "parent": "minecraft:block/block", + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "0": "antarchy:block/seashell", + "particle": "antarchy:block/seashell" + }, + "elements": [ + { + "from": [1, 0, 1], + "to": [15, 2, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, + "faces": { + "north": {"uv": [3.5, 3.5, 7, 4], "texture": "#0"}, + "east": {"uv": [0, 3.5, 3.5, 4], "texture": "#0"}, + "south": {"uv": [10.5, 3.5, 14, 4], "texture": "#0"}, + "west": {"uv": [7, 3.5, 10.5, 4], "texture": "#0"}, + "up": {"uv": [7, 3.5, 3.5, 0], "texture": "#0"}, + "down": {"uv": [10.5, 0, 7, 3.5], "texture": "#0"} + } + }, + { + "from": [1, 2, 1], + "to": [15, 3, 2], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, + "faces": { + "north": {"uv": [3.5, 0.25, 7, 0.5], "texture": "#0"}, + "east": {"uv": [3.25, 0.25, 3.5, 0.5], "texture": "#0"}, + "south": {"uv": [7.25, 0.25, 10.75, 0.5], "texture": "#0"}, + "west": {"uv": [7, 0.25, 7.25, 0.5], "texture": "#0"}, + "up": {"uv": [7, 0.25, 3.5, 0], "texture": "#0"}, + "down": {"uv": [10.5, 0, 7, 0.25], "texture": "#0"} + } + }, + { + "from": [14, 2, 2], + "to": [15, 3, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 9]}, + "faces": { + "north": {"uv": [3.25, 3.25, 3.5, 3.5], "texture": "#0"}, + "east": {"uv": [0.25, 3.25, 3.25, 3.5], "texture": "#0"}, + "south": {"uv": [6.5, 3.25, 6.75, 3.5], "texture": "#0"}, + "west": {"uv": [3.5, 3.25, 6.5, 3.5], "texture": "#0"}, + "up": {"uv": [3.5, 3.25, 3.25, 0.25], "texture": "#0"}, + "down": {"uv": [3.75, 0.25, 3.5, 3.25], "texture": "#0"} + } + }, + { + "from": [1, 2, 2], + "to": [2, 3, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [-5, 1, 9]}, + "faces": { + "north": {"uv": [3.25, 3.25, 3.5, 3.5], "texture": "#0"}, + "east": {"uv": [0.25, 3.25, 3.25, 3.5], "texture": "#0"}, + "south": {"uv": [6.5, 3.25, 6.75, 3.5], "texture": "#0"}, + "west": {"uv": [3.5, 3.25, 6.5, 3.5], "texture": "#0"}, + "up": {"uv": [3.5, 3.25, 3.25, 0.25], "texture": "#0"}, + "down": {"uv": [3.75, 0.25, 3.5, 3.25], "texture": "#0"} + } + }, + { + "from": [1, 2, 14], + "to": [15, 3, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 21]}, + "faces": { + "north": {"uv": [3.5, 0.25, 7, 0.5], "texture": "#0"}, + "east": {"uv": [3.25, 0.25, 3.5, 0.5], "texture": "#0"}, + "south": {"uv": [7.25, 0.25, 10.75, 0.5], "texture": "#0"}, + "west": {"uv": [7, 0.25, 7.25, 0.5], "texture": "#0"}, + "up": {"uv": [7, 0.25, 3.5, 0], "texture": "#0"}, + "down": {"uv": [10.5, 0, 7, 0.25], "texture": "#0"} + } + }, + { + "from": [5.99, 1.49, 14.99], + "to": [10.01, 3.51, 16.01], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 2.5, 16]}, + "faces": { + "north": {"uv": [0.5, 8.5, 1.5, 9], "texture": "#0"}, + "east": {"uv": [0.25, 8.5, 0.5, 9], "texture": "#0"}, + "south": {"uv": [1.75, 8.5, 2.75, 9], "texture": "#0"}, + "west": {"uv": [1.5, 8.5, 1.75, 9], "texture": "#0"}, + "up": {"uv": [1.5, 8.5, 0.5, 8.25], "texture": "#0"}, + "down": {"uv": [2.5, 8.25, 1.5, 8.5], "texture": "#0"} + } + }, + { + "from": [0.99, 3.49, 0.99], + "to": [15.01, 4.51, 15.01], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 2.5, 15]}, + "faces": { + "north": {"uv": [3.5, 7.75, 7, 8], "texture": "#0"}, + "east": {"uv": [0, 7.75, 3.5, 8], "texture": "#0"}, + "south": {"uv": [10.5, 7.75, 14, 8], "texture": "#0"}, + "west": {"uv": [7, 7.75, 10.5, 8], "texture": "#0"}, + "up": {"uv": [7, 7.75, 3.5, 4.25], "texture": "#0"}, + "down": {"uv": [10.5, 4.25, 7, 7.75], "texture": "#0"} + } + }, + { + "from": [0.99, 2.49, 13.99], + "to": [15.01, 3.51, 15.01], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.5, 21]}, + "faces": { + "north": {"uv": [3.5, 0.25, 7, 0.5], "texture": "#0"}, + "east": {"uv": [3.25, 0.25, 3.5, 0.5], "texture": "#0"}, + "south": {"uv": [7.25, 0.25, 10.75, 0.5], "texture": "#0"}, + "west": {"uv": [7, 0.25, 7.25, 0.5], "texture": "#0"}, + "up": {"uv": [7, 0.25, 3.5, 0], "texture": "#0"}, + "down": {"uv": [10.5, 0, 7, 0.25], "texture": "#0"} + } + }, + { + "from": [0.99, 2.49, 1.99], + "to": [2.01, 3.51, 14.01], + "rotation": {"angle": 0, "axis": "y", "origin": [-5, 1.5, 9]}, + "faces": { + "north": {"uv": [3.25, 3.25, 3.5, 3.5], "texture": "#0"}, + "east": {"uv": [0.25, 3.25, 3.25, 3.5], "texture": "#0"}, + "south": {"uv": [6.5, 3.25, 6.75, 3.5], "texture": "#0"}, + "west": {"uv": [3.5, 3.25, 6.5, 3.5], "texture": "#0"}, + "up": {"uv": [3.5, 3.25, 3.25, 0.25], "texture": "#0"}, + "down": {"uv": [3.75, 0.25, 3.5, 3.25], "texture": "#0"} + } + }, + { + "from": [0.99, 2.49, 0.99], + "to": [15.01, 3.51, 2.01], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.5, 8]}, + "faces": { + "north": {"uv": [3.5, 0.25, 7, 0.5], "texture": "#0"}, + "east": {"uv": [3.25, 0.25, 3.5, 0.5], "texture": "#0"}, + "south": {"uv": [7.25, 0.25, 10.75, 0.5], "texture": "#0"}, + "west": {"uv": [7, 0.25, 7.25, 0.5], "texture": "#0"}, + "up": {"uv": [7, 0.25, 3.5, 0], "texture": "#0"}, + "down": {"uv": [10.5, 0, 7, 0.25], "texture": "#0"} + } + }, + { + "from": [13.99, 2.49, 1.99], + "to": [15.01, 3.51, 14.01], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.5, 9]}, + "faces": { + "north": {"uv": [3.25, 3.25, 3.5, 3.5], "texture": "#0"}, + "east": {"uv": [0.25, 3.25, 3.25, 3.5], "texture": "#0"}, + "south": {"uv": [6.5, 3.25, 6.75, 3.5], "texture": "#0"}, + "west": {"uv": [3.5, 3.25, 6.5, 3.5], "texture": "#0"}, + "up": {"uv": [3.5, 3.25, 3.25, 0.25], "texture": "#0"}, + "down": {"uv": [3.75, 0.25, 3.5, 3.25], "texture": "#0"} + } + } + ], + "groups": [ + { + "name": "seashell", + "origin": [8, 0, 8], + "scope": 0, + "color": 0, + "children": [ + { + "name": "lower", + "origin": [8, 0, 8], + "scope": 0, + "color": 0, + "children": [0, 1, 2, 3, 4] + }, + { + "name": "upper_moving", + "origin": [8, 2.5, 15], + "scope": 0, + "color": 0, + "children": [5, 6, 7, 8, 9, 10] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/models/entity/krakens_grasp_entity.json b/common/src/main/resources/assets/antarchy/models/entity/krakens_grasp_entity.json new file mode 100644 index 00000000..2f22e2e1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/entity/krakens_grasp_entity.json @@ -0,0 +1,239 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "0": "antarchy:item/krakens_grasp/krakens_grasp", + "particle": "antarchy:item/krakens_grasp/krakens_grasp" + }, + "elements": [ + { + "from": [7.5, -8, 7.5], + "to": [8.5, 23, 8.5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 7]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 15.5], "texture": "#0"}, + "east": {"uv": [0, 0, 0.5, 15.5], "texture": "#0"}, + "south": {"uv": [0, 0, 0.5, 15.5], "texture": "#0"}, + "west": {"uv": [0, 0, 0.5, 15.5], "texture": "#0"}, + "up": {"uv": [0, 0, 0.5, 15.5], "texture": "#0"}, + "down": {"uv": [0, 15, 0.5, 15.5], "texture": "#0"} + } + }, + { + "from": [7.2, -7, 7.2], + "to": [8.8, 24, 8.8], + "rotation": {"angle": 0, "axis": "y", "origin": [7, -7, 7]}, + "faces": { + "north": {"uv": [14, 0, 15, 15.5], "texture": "#0"}, + "east": {"uv": [11, 0, 12, 15.5], "texture": "#0"}, + "south": {"uv": [13, 0.5, 14, 16], "texture": "#0"}, + "west": {"uv": [15, 0, 16, 15.5], "texture": "#0"}, + "up": {"uv": [12, 0, 13, 15.5], "texture": "#0"} + } + }, + { + "from": [9.825, 25.2, 7.5], + "to": [10.825, 29.2, 8.5], + "rotation": {"angle": 0, "axis": "y", "origin": [9.325, -2.8, 7]}, + "faces": { + "north": {"uv": [5, 6, 5.5, 8], "texture": "#0"}, + "east": {"uv": [6, 5, 6.5, 7], "texture": "#0"}, + "south": {"uv": [5.5, 6, 6, 8], "texture": "#0"}, + "west": {"uv": [6.5, 0, 7, 2], "texture": "#0"}, + "up": {"uv": [8.5, 3.5, 8, 3], "texture": "#0"}, + "down": {"uv": [8.5, 3.5, 8, 4], "texture": "#0"} + } + }, + { + "from": [5.175, 25.2, 7.5], + "to": [6.175, 29.2, 8.5], + "rotation": {"angle": 0, "axis": "y", "origin": [4.675, -2.8, 7]}, + "faces": { + "north": {"uv": [6.5, 2, 7, 4], "texture": "#0"}, + "east": {"uv": [6.5, 4, 7, 6], "texture": "#0"}, + "south": {"uv": [6.5, 6, 7, 8], "texture": "#0"}, + "west": {"uv": [7, 0, 7.5, 2], "texture": "#0"}, + "up": {"uv": [8.5, 4.5, 8, 4], "texture": "#0"}, + "down": {"uv": [8.5, 4.5, 8, 5], "texture": "#0"} + } + }, + { + "from": [7.3, 25.2, 7.5], + "to": [8.7, 30.2, 8.5], + "rotation": {"angle": 0, "axis": "y", "origin": [6.8, -2.8, 7]}, + "faces": { + "north": {"uv": [6, 0, 6.5, 2.5], "texture": "#0"}, + "east": {"uv": [6, 2.5, 6.5, 5], "texture": "#0"}, + "south": {"uv": [4, 6, 4.5, 8.5], "texture": "#0"}, + "west": {"uv": [4.5, 6, 5, 8.5], "texture": "#0"}, + "up": {"uv": [5.5, 8.5, 5, 8], "texture": "#0"}, + "down": {"uv": [8.5, 5, 8, 5.5], "texture": "#0"} + } + }, + { + "from": [6.5, 23, 7], + "to": [7.5, 25, 9], + "rotation": {"angle": -45, "axis": "z", "origin": [8, 24.5, 8.5]}, + "faces": { + "north": {"uv": [6, 7, 6.5, 8], "texture": "#0"}, + "east": {"uv": [7, 2, 8, 3], "texture": "#0"}, + "south": {"uv": [7.5, 0, 8, 1], "texture": "#0"}, + "west": {"uv": [7, 3, 8, 4], "texture": "#0"}, + "up": {"uv": [8, 2, 7.5, 1], "texture": "#0"}, + "down": {"uv": [8.5, 0, 8, 1], "texture": "#0"} + } + }, + { + "from": [5.5, 23, 7.5], + "to": [6.5, 24, 8.5], + "rotation": {"angle": -45, "axis": "z", "origin": [8, 24.5, 8]}, + "faces": { + "north": {"uv": [5.5, 8, 6, 8.5], "texture": "#0"}, + "east": {"uv": [8, 5.5, 8.5, 6], "texture": "#0"}, + "south": {"uv": [6, 8, 6.5, 8.5], "texture": "#0"}, + "west": {"uv": [8, 6, 8.5, 6.5], "texture": "#0"}, + "up": {"uv": [7, 8.5, 6.5, 8], "texture": "#0"}, + "down": {"uv": [8.5, 6.5, 8, 7], "texture": "#0"} + } + }, + { + "from": [5.505, 27.005, 7.505], + "to": [6.495, 27.995, 8.495], + "rotation": {"angle": -45, "axis": "z", "origin": [8, 28.5, 8]}, + "faces": { + "north": {"uv": [7, 8, 7.5, 8.5], "texture": "#0"}, + "east": {"uv": [8, 7, 8.5, 7.5], "texture": "#0"}, + "south": {"uv": [7.5, 8, 8, 8.5], "texture": "#0"}, + "west": {"uv": [8, 7.5, 8.5, 8], "texture": "#0"}, + "up": {"uv": [8.5, 8.5, 8, 8], "texture": "#0"}, + "down": {"uv": [9, 0, 8.5, 0.5], "texture": "#0"} + } + }, + { + "from": [8.5, 26, 7.5], + "to": [9.5, 27, 8.5], + "rotation": {"angle": -45, "axis": "z", "origin": [8, 24.5, 8]}, + "faces": { + "north": {"uv": [8.5, 0.5, 9, 1], "texture": "#0"}, + "east": {"uv": [8.5, 1, 9, 1.5], "texture": "#0"}, + "south": {"uv": [8.5, 1.5, 9, 2], "texture": "#0"}, + "west": {"uv": [8.5, 2, 9, 2.5], "texture": "#0"}, + "up": {"uv": [9, 3, 8.5, 2.5], "texture": "#0"}, + "down": {"uv": [9, 3, 8.5, 3.5], "texture": "#0"} + } + }, + { + "from": [8.505, 30.005, 7.505], + "to": [9.495, 30.995, 8.495], + "rotation": {"angle": -45, "axis": "z", "origin": [8, 28.5, 8]}, + "faces": { + "north": {"uv": [8.5, 3.5, 9, 4], "texture": "#0"}, + "east": {"uv": [4, 8.5, 4.5, 9], "texture": "#0"}, + "south": {"uv": [8.5, 4, 9, 4.5], "texture": "#0"}, + "west": {"uv": [4.5, 8.5, 5, 9], "texture": "#0"}, + "up": {"uv": [9, 5, 8.5, 4.5], "texture": "#0"}, + "down": {"uv": [5.5, 8.5, 5, 9], "texture": "#0"} + } + }, + { + "from": [6.38, 31.005, 7.505], + "to": [7.37, 31.995, 8.495], + "rotation": {"angle": -45, "axis": "z", "origin": [5.875, 29.5, 8]}, + "faces": { + "north": {"uv": [8.5, 5, 9, 5.5], "texture": "#0"}, + "east": {"uv": [5.5, 8.5, 6, 9], "texture": "#0"}, + "south": {"uv": [8.5, 5.5, 9, 6], "texture": "#0"}, + "west": {"uv": [6, 8.5, 6.5, 9], "texture": "#0"}, + "up": {"uv": [9, 6.5, 8.5, 6], "texture": "#0"}, + "down": {"uv": [7, 8.5, 6.5, 9], "texture": "#0"} + } + }, + { + "from": [7.5, 23, 7], + "to": [9.5, 26, 9], + "rotation": {"angle": -45, "axis": "z", "origin": [8, 24.5, 8.5]}, + "faces": { + "north": {"uv": [5, 0, 6, 1.5], "texture": "#0"}, + "east": {"uv": [5, 1.5, 6, 3], "texture": "#0"}, + "south": {"uv": [5, 3, 6, 4.5], "texture": "#0"}, + "west": {"uv": [5, 4.5, 6, 6], "texture": "#0"}, + "up": {"uv": [8, 7, 7, 6], "texture": "#0"}, + "down": {"uv": [8, 7, 7, 8], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [0, 0, 1] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0] + }, + "firstperson_righthand": { + "rotation": [0, -85, 10], + "translation": [3, -1.5, 1.1], + "scale": [0.68, 0.68, 0.68] + }, + "firstperson_lefthand": { + "rotation": [0, -85, 10], + "translation": [3, -1.5, 1.1], + "scale": [0.68, 0.68, 0.68] + }, + "ground": { + "translation": [0, 2, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [0, 0, -45], + "translation": [-1.25, -1.25, 0], + "scale": [0.5, 0.5, 0.5] + }, + "fixed": { + "rotation": [-180, 0, -135], + "translation": [-1.5, -1.25, 0], + "scale": [0.6, 0.6, 0.6] + }, + "on_shelf": { + "rotation": [0, -180, 0], + "scale": [0.68, 0.68, 0.68] + } + }, + "groups": [ + { + "name": "trident", + "origin": [7, -8, 7], + "scope": 0, + "color": 0, + "children": [ + { + "name": "handle", + "origin": [7, -8, 7], + "scope": 0, + "color": 0, + "children": [ + 0, + { + "name": "tentacle", + "origin": [7, -8, 7], + "scope": 0, + "color": 0, + "children": [1] + }, + 2, + 3, + 4 + ] + }, + { + "name": "tip_base", + "origin": [5, -4, 7], + "scope": 0, + "color": 0, + "children": [5, 6, 7, 8, 9, 10, 11] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/models/item/critter_cage.json b/common/src/main/resources/assets/antarchy/models/item/critter_cage.json new file mode 100644 index 00000000..c5b2c0f4 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/critter_cage.json @@ -0,0 +1,20 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "antarchy:item/critter_cage_item" + }, + "overrides": [ + { + "predicate": { + "antarchy:critter_cage_state": 1.0 + }, + "model": "antarchy:item/critter_cage_filled_plain" + }, + { + "predicate": { + "antarchy:critter_cage_state": 2.0 + }, + "model": "antarchy:item/critter_cage_filled_colored" + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/item/critter_cage_filled_colored.json b/common/src/main/resources/assets/antarchy/models/item/critter_cage_filled_colored.json new file mode 100644 index 00000000..3c3be588 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/critter_cage_filled_colored.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "antarchy:item/critter_cage_item", + "layer1": "antarchy:item/critter_cage_item_overlay", + "layer2": "antarchy:item/critter_cage_item_overlay" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/critter_cage_filled_plain.json b/common/src/main/resources/assets/antarchy/models/item/critter_cage_filled_plain.json new file mode 100644 index 00000000..d842e86b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/critter_cage_filled_plain.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "antarchy:item/critter_cage_item", + "layer1": "antarchy:item/critter_cage_item_overlay" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/krakens_grasp_held.json b/common/src/main/resources/assets/antarchy/models/item/krakens_grasp_held.json index 15217a4d..f64e471f 100644 --- a/common/src/main/resources/assets/antarchy/models/item/krakens_grasp_held.json +++ b/common/src/main/resources/assets/antarchy/models/item/krakens_grasp_held.json @@ -1,121 +1,3 @@ { - "parent": "builtin/entity", - "texture_size": [ - 32, - 32 - ], - "gui_light": "front", - "display": { - "thirdperson_righthand": { - "rotation": [ - 0, - 90, - 0 - ], - "translation": [ - 0, - 0, - 1 - ] - }, - "thirdperson_lefthand": { - "rotation": [ - 0, - 90, - 0 - ] - }, - "firstperson_righthand": { - "rotation": [ - 0, - -85, - 10 - ], - "translation": [ - 3, - -1.5, - 1.1 - ], - "scale": [ - 0.68, - 0.68, - 0.68 - ] - }, - "firstperson_lefthand": { - "rotation": [ - 0, - -85, - 10 - ], - "translation": [ - 3, - -1.5, - 1.1 - ], - "scale": [ - 0.68, - 0.68, - 0.68 - ] - }, - "ground": { - "translation": [ - 0, - 2, - 0 - ], - "scale": [ - 0.5, - 0.5, - 0.5 - ] - }, - "gui": { - "rotation": [ - 0, - 0, - -45 - ], - "translation": [ - -1.25, - -1.25, - 0 - ], - "scale": [ - 0.5, - 0.5, - 0.5 - ] - }, - "fixed": { - "rotation": [ - -180, - 0, - -135 - ], - "translation": [ - -1.5, - -1.25, - 0 - ], - "scale": [ - 0.6, - 0.6, - 0.6 - ] - }, - "on_shelf": { - "rotation": [ - 0, - -180, - 0 - ], - "scale": [ - 0.68, - 0.68, - 0.68 - ] - } - } -} \ No newline at end of file + "parent": "antarchy:entity/krakens_grasp_entity" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/seashell.json b/common/src/main/resources/assets/antarchy/models/item/seashell.json index 48b6692a..09685dfa 100644 --- a/common/src/main/resources/assets/antarchy/models/item/seashell.json +++ b/common/src/main/resources/assets/antarchy/models/item/seashell.json @@ -1,6 +1,3 @@ { - "parent": "minecraft:item/generated", - "textures": { - "layer0": "antarchy:block/seashell" - } + "parent": "antarchy:block/seashell_item" } diff --git a/common/src/main/resources/assets/antarchy/particles/lotus_pollen.json b/common/src/main/resources/assets/antarchy/particles/lotus_pollen.json new file mode 100644 index 00000000..2732837e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/particles/lotus_pollen.json @@ -0,0 +1,5 @@ +{ + "textures": [ + "minecraft:drip_fall" + ] +} diff --git a/common/src/main/resources/assets/antarchy/textures/block/critter_cage.png b/common/src/main/resources/assets/antarchy/textures/block/critter_cage.png new file mode 100644 index 0000000000000000000000000000000000000000..ebb5b439bd1d5e421954727cba7272fdbd9e8471 GIT binary patch literal 326 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}@0G|+7Q&ZE3h=`)1A|GA(Fcak)H*Wm@|3B1Jam9)iMXq{rmTDRHT0phZ z6?^!A6mLn8UocPs95C3vP-+88a29w(7BevL9RguSQ4OyKprAyFYeY$Kep*R+Vo@qX zKw@TIiJqTph=Qq}p`Lm7weOZdHQAmnjv*Sssr|RP4jAw_<(9m@^y~k9>#E9#$bc3H zK0yc0ph+h*7z*xgc`fpuTZ2FM`IMg`ESta1xg2feP+ncZ>Szum7FO<&%yj&jx@5s* zLos&e2PYLOj5;1nKX_w({;`U`;dxirZ+-VmKg*FLs>WqoFVI>BPgg&ebxsLQ0P{k0 Ar2qf` literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_2x1.png b/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_2x1.png deleted file mode 100644 index 1ae4f41c1bce1afec00f0f4f3d8f34b093e6431f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 644 zcmV-~0(ZtZO&tX2{#iEJ}3X{f}2oBTf_Ys=yD29C$vzs$<{3 z78VDfQ2VoM`CJ2a0L__fz&|}(=lF!5uWmHqQIGuS2oH38K`sBw0SGXJA`7ccsYYTf zIG^a8kkgigpkQ-qc<_VEsE18$>|w}Q0|Cg$&UaCsm_!QT_fP}x8>W+=_l8Cv#z{x& zMLbE3RY0qi&1pF`sYvc#IrxP3M-ewTYUpwRnzIFn^DF)Js}RN8i|uHlqr6<_rsf*V zHadiAAO}lK{4JLn3uAa6_9!rvYWiLS8z7l!ksdmQ_n~vY$Z-&-b(^lQ%FS3q)j7&$ z%`x`SGzv4AeAP`5i`?*#?hnWN7DD|i;Pb=z@!YZ2-8Zp>&@3t8+0#`pc;dCljzhU? z!iMwqlwM3-0Y0I21^#{@F^~#TfMTo@U4BUo0tdh$pE?{4>Fe_wR2zUz@PDktluu0000 diff --git a/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_2x2.png b/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_2x2.png deleted file mode 100644 index b4406ca155506bb7f230422377e5738926675956..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 924 zcmV;N17rM&P)Dv)UCD5B2iHB5JgZ30UOH>_nYKwPUfz! zorvR^ojEge_F?4FtG7>1w?Vn$-!?trjOhF0!=!wEQ_8{XWwrQ#__trH0vYZ$fJ=?) zv4CD~;e>$0FSEhENAFGt^R1+6=6{yGw8uh#GdxLrvNI~vy>US;J0ms(IB;*?n*@#8 zaJrA&y9<>OWE??-S}$g+LgDh`b%i$C+56tUqQ=EUp!=vyhO`JefsT8ne>Zl=adOm` z^FRDNqY5B_h;wf7lc11>oEAqcPPXLWz$ZsP>gdh7g(?6t1ddzK?FP$SN4)BTLBhu@+HebU5y7Cafg4a(%;PJ?pr5S$fsK>|As)z$G?_Qf=9(hhb zs`M2km_ft517exyYah&skYjl6Lp%iFyg*LATRr5w zdtZkDFVb*gYJd;4TaP1(wQ}%4UK3Mq?Vecg_W;M_3N-+-gQ325zm?O&a~^)20E&Dl z32^drQCiKk6F3gI2v#if*qm~*AwUa+$aivXB#v7j9P#gyqD`&aJ-jMF!`U^7j7_^E zPYt#u7%{DQ6+p2=WW8{$8Q?sBY~ozXcfSW1zU~yN0RJlLG_ZM~n$t9L-BJ5s1e1eD zy>f~XcT@o$%>M7gMcii$Oi2bR#JhpRU|l7HS&NfxPe48@HKLH+0Gc|F!OCO7x}iDV z6F_sn4w?Z9$>9Th#IR#5G2nt(BUJsUA?Bz87@!0`$Icob3uvY$#PJ#K77kp299%(h zZ2djJVjZNOyqe)VXs#UAbMAXD`SF|Z@yl@$9=#~x-+6wmfSsqSu8wuQB&*mcB@Gdh)q~1juRrd7O5LNW7<$P_c@IBn}O0NE9 zAtHRan!6`1zf*~!A%+-8)Z8BqF~|_IK=nRTJ#FkV*e>+>F;m%hN!qRHp94k^Z0{}z zoMQ+l8Up4!Lfv|{w{8u)#{e6UM`JapRE|riKO1?P^{G~qMl_QzB6x(tfF295J~vSa z=f&suqol?#OsOnD(glq;;szg)d=c$Ah(a_Ic_hd54yYqajE%{?L9E2;3{mI;5uoRy zON$R+0nWkXwQj%v_@x#?yc1l>0n-u5fdx2KvDRo<`A{)TgPlndMvqfr#KxE=O6@s- zgaA>53r7a2g%Nps5)UpUuz%L5ciL#Q-D$b)xXm2_zNukR;?A4jqwdSv`<{<_Zo z{9{q-0R0SQ_Up7vuWwOTFxl=__^a2>$4Hp&45j}3K4lhh>dCJ}f6#HgI{t>N-sCVu zuh!pCg&%M@x~Grz_&;Pw}wqI;^p&4 zC)Y7rb@eX+{q}J(^Z^ z9PHk_+UtiLSm(z9I1E7s2GLYvHc)+i6C9mCGDGa%87{E5KP@=1ZN5Hm|7Lgg6}Y)V zL7NaRw`D6_<#Ge`i(shKYS`mDcCbb?)9DN&J z%sc{IFb)u+eLgq?rH}%OStmVwWCjrfV&tpia%5ZI|DbaN*n~G!uuUY9%}3(s8fYG= zso}%~8j59;KM#j(u;JVQibEUd7NA&oF$!p|Fdf<$v3!Y*#EXSGz{8hY<-v5QK-d79Sixf(RrMGD0FE0s>;5hvy40e?fvT^`lthPSixiYvLC-r zB?KIOIH@wu_F7(D6j1DsSQrmtWUH=zoHk#M=eF6E;l&yj2KsPf<>eC}-Wr385C7Wj z5qC>$o(*B(8gK+PDqf#Vg+`WLzOqm{EHR)KiTXxdP4|VcTxd7Ik{*HKo}XK=Jlu@> z^>cIO@aUsoOYzAm#%{W*M*$JljhEj9jWO`=k|3nF)$tS=c<>3BN6c*E9-08i5V&$R zU>QK(p#_{8^f>V8r!F6x(FEjzhH8MWRnpiMJuOikZU(`ihC8n&0JT&h0(=L< zwG3ai<+o+HP1v1v#QBXLkn>GIUdq6n%gw|Rg-;LmJQ(iYXd2=>>nh!6s7{OTH5R)N z>VSV6sNv7y-*#j8aHaJOD4w&3^nQeStUi6@A%K9VUqvhr57xmj;(ezQr^nMF*hih) z4*~iLlFVRWJ^?xBWw9=h8-dI6JcoP;z{w9B4dfjfMovpSM}8kPQ@i+Ypb6O5$g-aL zeLY@dasG%^Ka&8Fb@hJgUJgE@u?|0kKK2lxheBi&x(1*X)HR_-09&p0b0(fDP;Wbbkym=_5>rQ zmu~`Sc8IJeTrmrr=MS4WTlM-&iRE**&;9{s8*N8Zr{ zcryFnkJj;d#==x&p;A0Ia9FI5lEuX0WV<6EUzG;Y$Y}sWoyTI;v0!d#&hH3dxPKfB z12j^@2l$BL#8`5`1rsAw^XMVxXaZQE0zTJHjE@Bj(-89bEO!eBu0Rd0pggwy9w3;5 z)Kk|md47p6b0amjd36eh=>BDG!#fw5fv2$1vRh0Yw%i7BSArhL_>u{K@$W*CbGtm zFV|l_T5i5_w94h|C;87ke>h_DZrnOr$TQ07XXA@UC!x>Aci=Hlf+WUvS`sxgK>Q>d z=oNqdaq-mTR}Nh+)EHZA28(t7K^%sh5frcfeGLqL@}OOh>uZbUxabZhy~)JXVC$o= z{%oN0(Sxs~^JL)%I=@%N}MHZTctNN{rGW!TEUEHCkc*IrzASUiQgWz{9*wCFWv@H&V%R1Q1n{;hm}SHzMx zlmAR#qP>C8Rjvh|C2PLLW<$(;Tluvf4mfObEWq&Y!x7A`fMLY9nu~=)?>x)R{CvT_ z{2Zcr@!g)WK;A+*I~43Ez*l*F**-WfPS4{9F*2z6S=#V@4*anIrN3Y$@K>Z5Uz$`O z|2~9U7m06QUSgRkv-%jcE)Y_c8M6BRZ{4y6?^ir?tP6C)>~SfU#60%uOKeMqTTgxF zlRrDWI#aIwSRgM7i4}&_%n4LK-#NQ|Mv_9gd^5@IqmAlXD22Py3Ln^G%p**0+fmeKVSTFULRlOc3tB%63c+}3PV@B>ic4q zM?bfK&1!Q51Ch(JELE>O4GkJzWaY$1Zuw_*YR}mruHVS&y>gutOQTt$L7)yUhYw~~ zkbeuc4h}p0%>(=$>l1MLUd;Q3O>zpeb3z$ja=fid>sy@FS0Js$*~PYmrQmf z-uD(ezzoM0D8ri-vD(WIXU63*BY}t{K{d^uwJ1A zZF*z(pH8t2q(SV+nQvcA-Ng4v3)jK*XG6_%=qRv-U9SVFwMUiU6A8$yAng%h2f-c{;Y(BS>;Q|_f-Xpky$@`}bEU+jG{ z+*yA0sbOidq8>u7{dfZPMIph)WGzDPO>jVr3}#Ob=c@U=PCxx>j|GxIW_WrZBq!MY zxIrDV^Je+@c!{M>xA`+$PM>f6G|B*vscx7CVilTJJG#bc#P_uMa%Q#b3l}FCPrycX z=mdSSnH8%8;^G*TUeS4pZTWkh&U3h_5jhr!VUg&S+zW+6*1-+H2ktz1Rn$5o=ZB*u zhq`t8c{`8;+`Wb%fDXa_Bx6(WfQh^k!Qc*ETV=^|0V?lnP^Q$8^^xahv;{yjKM%O>F z`1mW<1*)^_zukK@?&E0KgJ-tJXX>)-6n0K+tND($;E~|!>0$6(Ww~te87?f4rXi;g z+i8HJohNR9IuM_MNT_sLy~7P7r~iqR_+uQnZ*oS_dXA3t)I!&hgCKEBky`TpS&y#C%Y^q1a!W`S#OpAK2| zaLC*5oDM!6*mB_T&R@&pH%``kcKqsvuQ$C)I^g3%IQ(=={S5#B|Nn!cOWgnf00v1! bK~w_(&-s&y>`^~F00000NkvXXu0mjfDXvhR diff --git a/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/tiles/three_by_three/bottom_left.png b/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/tiles/three_by_three/bottom_left.png new file mode 100644 index 0000000000000000000000000000000000000000..961e903da7c4061d777f887fead4ce5b01078e3d GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!Bd_tjv*HQQzzSUF$MCp+;5%It`L{JJD26) zxl4WAU@*4Q64s8sxE#+kFzW_9WFsc-Y8U$4K~clcWC_T$N0 zFV{Xdyz^L-eQG_!Eeqxafs7pse{A*PZ8%%V)cVru>4yk&;SXmIZGUYQe2#Gk<18hI z{6!3{=NSr^t~|C4Vh~kVbohQvS)XZ#Q;xz0#sXF=t{p*a4@&GAXFPYbXS(4LZlInx zhv^I3tniL&OWdz)_nIB~TU0>3hXrpF5pW(uq5K&P`z3 z<}Je8w%onPUBT%8;G$dI4EsMP(^9)8q)giL$7k2xzRIX$HhbH14F4Ln?c8@zXi{7Q zpIO7Qi4N>HHi;g1#PlJ0?=As``bxPd(TkQ(*ZynFQ)IAX+K|_}{yP1B>WjaO7I#$F{WzW$2=o_&r>mdKI;Vst E08++xCIA2c literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/tiles/three_by_three/bottom_right.png b/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/tiles/three_by_three/bottom_right.png new file mode 100644 index 0000000000000000000000000000000000000000..e8c13631e06a01e955b87825ba0570d0a91feae2 GIT binary patch literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!84vNjv*HQtrHCS4jBlrd{&&$D)N!nN=ju( z$&?Zg&CJW68SM^mSIoL78p;s^9lmyS~i8 z^Xqfpi4+(!h%^3VkXbid{=nIL%wZ=OFYz4M5phsW`G^YFdZrh$3qHg%Fjle39N-Fd zSTp15=U-X}o~ALJtv7g|Q)*YK{e*fXs z-SQvi&k&lHb9#}SN3_>+?$jIWRdb)u*;egyv)wjb^7Fj42b=aY=#?;(3mjm0v6gMZ zU#5=O#a5gKyX7W_FI*S=?Ui(aIKvq&hEI|Y_(V=>{9%3I-aY9)!--H<+lK59YysQY z4fZpBNG^J_>=Ww=J5eiD8%?>zOa>ebB{>WlD^7k;mRwNuN!eB5-I^<3*E?)xcQCDF Y=#tPi6tH%c0=k^R)78&qol`;+0AiYAg8%>k literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/tiles/three_by_three/middle_left.png b/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/tiles/three_by_three/middle_left.png new file mode 100644 index 0000000000000000000000000000000000000000..6e050e7b8b3a8344c194b6154186bf4bc85ce581 GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!IPdYjv*HQQ!g2EF&PT9K8*3;Y^vbhoy(GF z?QNat9sPUnfw%+06dnc*3?CDiFU+f9-6HPWpnW5$)sFGXq4p(ve{gPCAew!kS=7PbsbMao z*m{44tbB&@?~l0!dOxV@Nv$}}w_!hn6PGRHw3SNJT7_D)fu3UUboFyt=akR{0Ez{1 A;Q#;t literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/tiles/three_by_three/middle_right.png b/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/tiles/three_by_three/middle_right.png new file mode 100644 index 0000000000000000000000000000000000000000..29babf2dd9de2090a9daa3445340ffdeeb075b55 GIT binary patch literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!84vNjv*HQQztoc9WoGbtyWyhaWs3!Yd3*i z#V`E|UT*sxcYwQsso(6A^ZzgEe$BBh^ErR&*SDEmf0=Rk#?22|x^Gt|KmYo(a>Kum ztEYdzCl&J`l{Lec`JG_FuD4{yw6@UrK=ebc zG#3UFmK6)vOl+!GV*ap{Cxl^3E6;<8{}~JzMH}?x!W9>UEuOFo=r0COS3j3^P6H2jv*HQOD7rf9Wvl?Enc{2mCz%pyAcy6 z+>p3AK_YVZccz#I;ess-C!e{f#e{KHCa z8lx2}_XEpqOdPIzI3DbkBXVT#^xT6V~+sea7JF>gTe~ HDWM4fdmDGE literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/tiles/three_by_three/top_middle.png b/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/tiles/three_by_three/top_middle.png new file mode 100644 index 0000000000000000000000000000000000000000..ebfcfcfe0969a550881c89ab3f59adb8c6ea0a03 GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!QGxNjv*HQb0<0SH5mxFRx9=>8pa)-D=jQk zrgL}ZhLqR$xC#~xWV3_W^tjn{mV<^h3Qq(SrqPYDdY()*krgto_R(rLq`fDM~-j(!3G_L nc{3UJXfP_cZOFGX`73_kEL-}H^nXU6HyAu!{an^LB{Ts5%DZq- literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/tiles/three_by_three/top_right.png b/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/tiles/three_by_three/top_right.png new file mode 100644 index 0000000000000000000000000000000000000000..12b2e14056994103312b54b37096a4b5e2df590f GIT binary patch literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!NZ;|jv*HQOD`L89dZz0y%3`z#PrDY(o(^e zl4)g5r?!0C>7e(3(IP8iU^&bl?)M_w)Jc0dz z!MxW^+zGcH?U3TyaP9R@;U%8ieyDK^=ri~+C@Ab_$l1d1a6Ln;*7_x;j49$5*rJO& vdp@LlvFj|UHr(&S_Trm8bP0l+XkKUwv?m literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/block/roseate_froglight_side.png b/common/src/main/resources/assets/antarchy/textures/block/roseate_froglight_side.png index 699b9a0db36bde757dc82f188ab4c79c93d045d7..d555f8a6355b58da447e065156de84ecba071a4d 100644 GIT binary patch delta 387 zcmV-}0et?a1E&L!Eq}2tgi#QMPj0uNpjkl{FCZcsi8oSt1&u=E0TdoVA_@`@AUcuI z+aUWl6lBY5zPbO{`)`o!X6K$WGw00AZp!-yIUk>tI6a%-^-a!?PdQTq>m2>zQO29J zu`VqxNL!oI-frRG&bIusHjw&#r~c4GyRs}T^_AR=Xs{|5B7X=2NF8Tj)bR9rHh?BU zV}4FPgd7eMaQg5FF0{*&m=x2aSz~R4$1u=z$zrmVq-{VwA`kRp``GfN-?oQ1u+?ii zH*dLMx)FxJ&#z!z9KKY4Vz(vzWuneP&^+Y=5{g!s>H9pi3+xOxF~o^I|M8|N*MTN2 z7qp4xo#xNapnP8sMabg!54*t5AQvJCNHaJX5k0W2CD{~(q27XsdX25gfyLvoU0{z$ z5T9SjhmoTKse|OfK^9vrX=H!O>zj0YC%+~zL}9+XDjGBC{y}2#sL?k700960nd%dO h00006NklH+vSlC!vYh$S)hySop zG#;Gu+snq|P$9?dH#57l-|k(xK7MRIPro9Xvmb0Oo2I#SI2YK__-7|~4ZUT5Z=~T! z8XgR!qd{;`hiadR^V=y#{Fp=*f9T^_{@>Z#E$RaK| zuN8>K2+mAE!?NaF40f(OKdh;mR;sSJ)2iM@c^As7{Iol1BGp{)W9)s5+g|osX#%18h}gn~bZ|>AoC+1Tf?L4J-bz z5vWebXD*Rn*mnfPXjEv}2(-`GdW~*sL1< z$%4p9WR03+gKW~UMh#MeMrAayNd*!Z5jv1CjcB4+SYaxPm7u03N%rcubIHEP_wGIC zzLy{HcYUwD_C9;9bFNmY_;dc1^&>}KcrK$*U)OBc22?s@+JDpp__o;m*ou+uPp!$Q z^KElA_3zri#o6<6+=-K?Gj03VoGC-;mxnH9-2U`%reylIxtjV{PRzA&eQr2>Fh%in zY~@LkdnH!vt+x%OJBRN|Q>NaUDVe@k+<0u&{GqAoz^T*efvwv!p5L`Q{jh3M)*U)? zD*bfokF?{+v44bzev6&^{Zu-0`rKuZ`^AjMUJbwderM%JpLF&f*xUJf^~&_#(k1Dh z&(0^hb)WC(ys>9@1|Iq?=ER+TfGlRm$1jd--Tdqb3c+vLxH{`XuG6pw4ZEDs)dLh7 z81RFld;*b!&ZbbhcrrFf$5!ge^mI`AmHMs?jJJs`Vh72=rtdLCXTjfzqyUn+RJ;!;h}gq?%JBf3@U7(!`JN{3ZdNCT9oDENCpuy!)1X z!cI%!DA0?E!W9tqQqPy34tn{qL#0VIr=}hG@OXOlzI)TQW%p+&p3}{%rX+KH<%UH` z18OMx0GZyYDZt4s+EwLYV1FPyyl;Av`;ISf$n??grlqhyxckNw_7zXQ(^AI!xYn zCV}hVYS4R};8Cx=^ypD>;uoI(E0u^VYaP7LjE(!hO`jh7J}n#`8VML23halfpF`N= z-QeWtLdN&Q%(-(D^z$3U-e?2vtmK;7iJ|1si&qI!V7U*S&v?|+{FKRh~-XtaS?@a**I z!M38+zJ0Cy+c>w{K%2zj+u5+8QzG;eMO$njrAd>gCf8@87LPn{Enbo82wOi|`6&s$ zJW;@x=#`}O!;6QK582Bp5O%p=-m@dsLEi-V379CFQUKnR0e`Rjz^;Rblh5t&A%_j+ z590aA7d&6OX!@X`XB!mNq&GKq{H#O)?-KyL?gL~Cf#? z2iBNKbTzRla<#|ccsJ9v0gv6?9dFXB8K0++>0naC!mg30K?m$%+q807{vVk7#0q;8 zDppRpn)vtf$x}#^X}HqS)1U+Pu>E@WLS{9qLbA}}FEL_;L@xZG$WutLA{DD}z|%oF zJys0QN`L!Kp2+{{;e$}bAu3dN*wbxNnum(#;!SukxzdTrT~2A5i3X2xL$q(Z9u}8w(smH2;T-`#I}j)`V61Re&Q<^b002ovPDHLkV1lL;HOBw| delta 1595 zcmV-B2E_T^4CV}wB!3%8L_t(|0nFK1$W>Jo2k?DQ5j0r|MOl`O5QOv)Wo1M`4^4;& zMFvG;G`u8eHqt{>6ex&61c^}(LXi)W)Ad+mMpTIXD?Qt@Z=?A1eSXMC1Xs84FPYXd4h|9`x(3Gi*P;I3DOKA!e& zMxAe)tEqq22CB=>$Z^~M-H~bAzs8Ljmk!+adB)`rZO)WT-!@lM|H_HEHm=XX&HGXm zPsdiCB)L~&#hy9l+;rjii__WXoS7+^zE|8xY}FO#T$+B{^+&qz)5kMjTs=GOzIS=n zZQZ>!Z90UNe}Aq`c<8s--rYOXo?Uy7fZQ);B=+it#rJd`So&mV{V(e~%kO_Ly)kKi z8nfcQL^tb;S37U7S(Jf?ev3JAryn4T`Eu#gL(3LFI)p;-OBPJYx{&KM>_NjWCv^1y zg$4%vpx9G9fyhB;Qz%_L85^WyEA?c0Iw<{0eb)v?+6u%Lv2Y!s-?rtilc)h7e~yKX zKW#m7_xUIg=*c#MmIaUlrCs4R5w?`K=7abGqQ(ACkE~ zb?#|N18OMx0GZyYDZt5Hyz0R`e+&$SYt}uH+DXEhOx&x1th|8*)6SJpaspBamPUYNew`bnBN{@kH}!J)u@ zsQNjCJ>CsYjxJ<;KU_3nLV|vNgV-Bwz@3#`Q#&z~9D4kTLZc0o#YOR@t{3m*$6a?_ z0(>vuL2QjSpc$PuY7w-Qf9XyX8g0O-yYn|qxITZSqGbAhg**9!hn@gGJUW_aw1HS~ z|JZ}UwxZRB4Xym!IJeqBo5bPUnLD>rBJ`t0TWlbu)6YIDxjv({c;tEc#y3+PVe3aL zKPADJCkpryy^@rEc=1s3A$vIm!Y=n~-#wq|pl^cw1WXi7DFAQEe}GqhV9oE}C!gEl zLk=6tAH?&KFL=Im(eyz>&o(Hk%jQq&_*sbp-X{Qf-3Q1P1cj2rhLS^7$#s6v z!Xqv}fe_H)9=9JoY!(lYOSl?wE%=k6^!Y#dqc%_-{co4}&9~o@ z-x+KHzU-rk%0w~l%9A5ogw6Lq1dj&jfy_VR@bZz_0({x(sK3O>b)RF&m82H17{r*Q zhX};`Ip|*|@KD;w@`#rQ$n+pie8dEesWu!9pI)?z8E!^%e~eFs$>S#_wi12+5e=narg*2IlD;+%zI$#gmwtYJ@t63G2g%*E_5i2Be;Ri*YLV^{k zScLNDq+fSzOs0wtHnD9WMywoiwTT_hH&3CM6s}I`6#8;{m@HS1y(-O_ zJTtjorGFD%j95A3Y7*1Srz(vmkh@>%hT|>lB#p}9?7ehi#LCgjuc@tT116B`(=_;G z@XJ$3V?n(jkK43B>$a0c&Qqv<>e0X@tru)#Ha+a-f9lSMWxis>9#)N*)$rv2rwx>*Y7l1|)pxt9cy-;oCrr*fue}d?~bkx)^#00006NklNS%G}H0G|-oqM{-bMbR5KZYYZKu2`|6$W<@YR8d)s@8H3MKqU`Wlx_i1TqQw% z!T(`^Vbd9%^FUF~0*}aI1_r)mAk5f)XJtN6P@=>&q9iy!t)x7$D3u`~F*C13&(AeP z!Bo#s&%FEEcT1p}EKe855RKs2en-9|1{}c%^&mV4*xmk2)txHBa|U^+0oN7GD0#%-$gz|SwiU9cCS3q+^OMZ rUxL1!`P}||S4mv|{i32Xd)MhRK4-6;awjNS%G|^0G|-ogoK2KhK7j~Cx(TERaI31h4pxMu>dKyk|4j}{~*AydH<6AKoQOY zkH}&M2EJt=%-DWsWj;_)qQo_#Bsf2xP`XRapn@;z zz|>!_LM{ZX%RE{AjOX6Qaxb~JT~YS+k){k;UM!ujj3a=?GB9|$`njxgN@xNA3-DG| literal 0 HcmV?d00001 diff --git a/common/src/main/resources/data/antarchy/damage_type/rpo_launcher_blast.json b/common/src/main/resources/data/antarchy/damage_type/rpo_launcher_blast.json new file mode 100644 index 00000000..b5051cc9 --- /dev/null +++ b/common/src/main/resources/data/antarchy/damage_type/rpo_launcher_blast.json @@ -0,0 +1,7 @@ +{ + "message_id": "rpo_launcher_blast", + "scaling": "when_caused_by_living_non_player", + "exhaustion": 0.1, + "effects": "hurt", + "death_message_type": "default" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/giant_lily_pad.json b/common/src/main/resources/data/antarchy/loot_table/blocks/giant_lily_pad.json index 1737450b..b6332265 100644 --- a/common/src/main/resources/data/antarchy/loot_table/blocks/giant_lily_pad.json +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/giant_lily_pad.json @@ -9,6 +9,24 @@ "name": "antarchy:giant_lily_pad" } ] + }, + { + "rolls": 1.0, + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "antarchy:giant_lily_pad", + "properties": { + "has_lotus": "true" + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:lotus" + } + ] } ], "random_sequence": "antarchy:blocks/giant_lily_pad" diff --git a/common/src/main/resources/data/antarchy/recipe/rainbow_sugar.json b/common/src/main/resources/data/antarchy/recipe/rainbow_sugar.json index 67dbe373..a91e2a53 100644 --- a/common/src/main/resources/data/antarchy/recipe/rainbow_sugar.json +++ b/common/src/main/resources/data/antarchy/recipe/rainbow_sugar.json @@ -2,7 +2,8 @@ "type": "minecraft:crafting_shapeless", "ingredients": [ { "item": "minecraft:sugar" }, - { "item": "antarchy:uranium_nugget" } + { "item": "antarchy:uranium_nugget" }, + { "item": "antarchy:high_fructose_corn_syrup" } ], "result": { "id": "antarchy:rainbow_sugar", diff --git a/common/src/main/resources/data/antarchy/recipes/critter_cage.json b/common/src/main/resources/data/antarchy/recipes/critter_cage.json new file mode 100644 index 00000000..5dc4a9b8 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipes/critter_cage.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "ISI", + "SLS", + "ISI" + ], + "key": { + "I": { + "item": "minecraft:iron_nugget" + }, + "S": { + "item": "minecraft:stick" + }, + "L": { + "item": "minecraft:leather" + } + }, + "result": { + "item": "antarchy:critter_cage", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/tags/entity_type/critter_cage_blacklist.json b/common/src/main/resources/data/antarchy/tags/entity_type/critter_cage_blacklist.json new file mode 100644 index 00000000..5d341ba2 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/entity_type/critter_cage_blacklist.json @@ -0,0 +1,4 @@ +{ + "replace": false, + "values": [] +} diff --git a/common/src/main/resources/data/antarchy/tags/fluids/giant_lily_pad_supporting_fluids.json b/common/src/main/resources/data/antarchy/tags/fluid/giant_lily_pad_supporting_fluids.json similarity index 73% rename from common/src/main/resources/data/antarchy/tags/fluids/giant_lily_pad_supporting_fluids.json rename to common/src/main/resources/data/antarchy/tags/fluid/giant_lily_pad_supporting_fluids.json index db6013a5..ba96d3e9 100644 --- a/common/src/main/resources/data/antarchy/tags/fluids/giant_lily_pad_supporting_fluids.json +++ b/common/src/main/resources/data/antarchy/tags/fluid/giant_lily_pad_supporting_fluids.json @@ -2,6 +2,7 @@ "replace": false, "values": [ "minecraft:water", + "minecraft:flowing_water", "antarchy:lumen" ] } diff --git a/common/src/main/resources/data/antarchy/tags/fluids/lumen.json b/common/src/main/resources/data/antarchy/tags/fluid/lumen.json similarity index 100% rename from common/src/main/resources/data/antarchy/tags/fluids/lumen.json rename to common/src/main/resources/data/antarchy/tags/fluid/lumen.json diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/dorrie_elythia_spawn_biomes.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/dorrie_elythia_spawn_biomes.json new file mode 100644 index 00000000..b14f7bed --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/dorrie_elythia_spawn_biomes.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "#antarchy:is_elythia_ocean" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/dorrie_overworld_spawn_biomes.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/dorrie_overworld_spawn_biomes.json new file mode 100644 index 00000000..b9aaf01e --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/dorrie_overworld_spawn_biomes.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "#minecraft:is_ocean" + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/biome/elythia_meadow.json b/common/src/main/resources/data/antarchy/worldgen/biome/elythia_meadow.json index 860df444..e41f445b 100644 --- a/common/src/main/resources/data/antarchy/worldgen/biome/elythia_meadow.json +++ b/common/src/main/resources/data/antarchy/worldgen/biome/elythia_meadow.json @@ -72,7 +72,8 @@ "antarchy:elythia_meadow_flora", "antarchy:elythia_brown_ant_nests", "antarchy:elythia_rainbow_ant_nests", - "minecraft:patch_sugar_cane" + "minecraft:patch_sugar_cane", + "antarchy:giant_lily_pad_patch_common" ], [] ], diff --git a/common/src/main/resources/data/antarchy/worldgen/biome/elythia_ocean.json b/common/src/main/resources/data/antarchy/worldgen/biome/elythia_ocean.json index 95764482..da6adc89 100644 --- a/common/src/main/resources/data/antarchy/worldgen/biome/elythia_ocean.json +++ b/common/src/main/resources/data/antarchy/worldgen/biome/elythia_ocean.json @@ -55,7 +55,7 @@ "minecraft:sea_pickle", "minecraft:warm_ocean_vegetation", "minecraft:kelp_warm", - "antarchy:giant_lily_pad_patch" + "antarchy:giant_lily_pad_patch_common" ], [] ], diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/giant_lily_pad_patch_common.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/giant_lily_pad_patch_common.json new file mode 100644 index 00000000..6b49ad1f --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/giant_lily_pad_patch_common.json @@ -0,0 +1,9 @@ +{ + "feature": "antarchy:giant_lily_pad_patch", + "placement": [ + { "type": "minecraft:rarity_filter", "chance": 2 }, + { "type": "minecraft:in_square" }, + { "type": "minecraft:heightmap", "heightmap": "MOTION_BLOCKING_NO_LEAVES" }, + { "type": "minecraft:biome" } + ] +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyConfigModuleFabric.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyConfigModuleFabric.java index deee4175..61215bdc 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyConfigModuleFabric.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyConfigModuleFabric.java @@ -208,6 +208,7 @@ public final class AntarchyConfigModuleFabric { || name.startsWith("squidzooka") || name.equals("invertProjectilesFromInvertedPlayers") || name.startsWith("gravityGun") + || name.startsWith("critterCage") || name.startsWith("minersDream") || name.equals("potentNyxiteInvertedDurationSeconds") || name.equals("corneaEarNightVisionSeconds") diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabric.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabric.java index 88330f92..a5f8c6d1 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabric.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabric.java @@ -107,14 +107,6 @@ public final class AntarchyFabric implements ModInitializer { Registries.PLACED_FEATURE, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "corn_patch") ); - private static final TagKey HAS_STAR_CORAL = TagKey.create( - Registries.BIOME, - ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "has_star_coral") - ); - private static final ResourceKey STAR_CORAL_PATCH = ResourceKey.create( - Registries.PLACED_FEATURE, - ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "star_coral_patch") - ); private static final TagKey HAS_SEASHELL = TagKey.create( Registries.BIOME, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "has_seashell") @@ -140,6 +132,14 @@ public final class AntarchyFabric implements ModInitializer { Registries.BIOME, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "is_cavaryn") ); + private static final TagKey DORRIE_OVERWORLD_SPAWN_BIOMES = TagKey.create( + Registries.BIOME, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "dorrie_overworld_spawn_biomes") + ); + private static final TagKey DORRIE_ELYTHIA_SPAWN_BIOMES = TagKey.create( + Registries.BIOME, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "dorrie_elythia_spawn_biomes") + ); private static void registerWorldgenFeatures() { BiomeModifications.addFeature( @@ -221,11 +221,6 @@ public final class AntarchyFabric implements ModInitializer { GenerationStep.Decoration.VEGETAL_DECORATION, CORN_PATCH ); - BiomeModifications.addFeature( - BiomeSelectors.tag(HAS_STAR_CORAL), - GenerationStep.Decoration.VEGETAL_DECORATION, - STAR_CORAL_PATCH - ); BiomeModifications.addFeature( BiomeSelectors.tag(HAS_SEASHELL), GenerationStep.Decoration.VEGETAL_DECORATION, @@ -261,5 +256,17 @@ public final class AntarchyFabric implements ModInitializer { AntarchyFabricEntities.CATERPILLAR.get(), 24, 2, 4 ); + BiomeModifications.addSpawn( + BiomeSelectors.tag(DORRIE_OVERWORLD_SPAWN_BIOMES), + net.minecraft.world.entity.MobCategory.CREATURE, + AntarchyFabricEntities.DORRIE.get(), + 1, 1, 1 + ); + BiomeModifications.addSpawn( + BiomeSelectors.tag(DORRIE_ELYTHIA_SPAWN_BIOMES), + net.minecraft.world.entity.MobCategory.CREATURE, + AntarchyFabricEntities.DORRIE.get(), + 10, 1, 2 + ); } } diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java index dce90ea2..472e9db9 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java @@ -282,7 +282,15 @@ public final class AntarchyFabricContent { AntarchyObjects.setLumenBlock(() -> AntarchyFabricBlocks.LUMEN_BLOCK.get()); AntarchyObjects.setLumenFroglight(() -> AntarchyFabricBlocks.LUMEN_FROGLIGHT.get()); AntarchyObjects.setPeachLeavesParticle(() -> AntarchyFabricMisc.PEACH_LEAVES_PARTICLE.get()); + AntarchyObjects.setLotusPollen(() -> AntarchyFabricMisc.LOTUS_POLLEN.get()); AntarchyObjects.setDorrieInventoryMenu(AntarchyFabricMisc.DORRIE_INVENTORY_MENU); + AntarchyObjects.setCritterCage(() -> AntarchyFabricItems.CRITTER_CAGE.get()); + AntarchyObjects.setCritterCageBlock(() -> AntarchyFabricBlocks.CRITTER_CAGE_BLOCK.get()); + AntarchyObjects.setCritterCageBlockEntity(() -> AntarchyFabricBlocks.CRITTER_CAGE_BLOCK_ENTITY.get()); + AntarchyObjects.setCritterCageProjectile(() -> AntarchyFabricEntities.CRITTER_CAGE_PROJECTILE.get()); + AntarchyObjects.setCritterCageEntityTypeComponent(() -> AntarchyFabricMisc.CRITTER_CAGE_ENTITY_TYPE_COMPONENT.get()); + AntarchyObjects.setCritterCagePrimaryColorComponent(() -> AntarchyFabricMisc.CRITTER_CAGE_PRIMARY_COLOR_COMPONENT.get()); + AntarchyObjects.setCritterCageSecondaryColorComponent(() -> AntarchyFabricMisc.CRITTER_CAGE_SECONDARY_COLOR_COMPONENT.get()); AntarchyObjects.bind( AntarchyFabricEntities.EASTER_BUNNY, AntarchyFabricEntities.FLYING_SQUIRREL, diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java index 6b13c29e..9af38c96 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java @@ -82,12 +82,15 @@ public final class AntarchyFabricEvents { if (!(entity.level() instanceof ServerLevel serverLevel)) { return; } + if (!(entity.getKillCredit() instanceof net.minecraft.world.entity.player.Player)) { + return; + } BlockPos deathPos = entity.blockPosition(); if (AntarchySettings.krakenSquidSpawnEnabled() && serverLevel.random.nextInt(100) == 0) { spawnKrakens(serverLevel, deathPos, 1); } - if (AntarchySettings.krakenMassSpawnEnabled() && serverLevel.random.nextInt(100) == 0) { + if (AntarchySettings.krakenMassSpawnEnabled() && serverLevel.random.nextInt(500) == 0) { spawnKrakens(serverLevel, deathPos, 10); } }); diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java index 92cfcbe7..4d88145d 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java @@ -76,6 +76,10 @@ public final class AntarchyFabricClientBootstrap { (net.minecraft.world.level.block.entity.BlockEntityType) AntarchyFabricBlocks.SEASHELL_BLOCK_ENTITY.get(), (BlockEntityRendererProvider) SeashellRenderer::new ); + BlockEntityRendererRegistry.register( + (net.minecraft.world.level.block.entity.BlockEntityType) AntarchyFabricBlocks.CRITTER_CAGE_BLOCK_ENTITY.get(), + (BlockEntityRendererProvider) CritterCageRenderer::new + ); EntityRendererRegistry.register(AntarchyFabricEntities.EASTER_BUNNY.get(), EasterBunnyRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.FLYING_SQUIRREL.get(), FlyingSquirrelRenderer::new); @@ -117,6 +121,7 @@ public final class AntarchyFabricClientBootstrap { EntityRendererRegistry.register(AntarchyFabricEntities.GROWTH_RAY_PROJECTILE.get(), SizeRayProjectileRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.LUCID_BOLT.get(), LucidBoltRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.LUCID_PEARL_PROJECTILE.get(), ThrownItemRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.CRITTER_CAGE_PROJECTILE.get(), ThrownItemRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.HUSH_PROJECTILE.get(), HushProjectileRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.BRUTALFLY_ORB.get(), BrutalflyOrbRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.UPWARD_FALLING_BLOCK.get(), UpwardFallingBlockRenderer::new); @@ -155,6 +160,24 @@ public final class AntarchyFabricClientBootstrap { (stack, tintIndex) -> tintIndex == 0 ? net.minecraft.world.level.GrassColor.getDefaultColor() : -1, AntarchyFabricItems.SPIDER_LILY_ITEM.get() ); + ColorProviderRegistry.ITEM.register( + (stack, tintIndex) -> { + if (!(stack.getItem() instanceof com.craisinlord.antarchy.content.item.CritterCageItem cage)) { + return -1; + } + if (cage.getItemState(stack) != 2) { + return -1; + } + if (tintIndex == 1) { + return cage.getPrimaryColor(stack); + } + if (tintIndex == 2) { + return cage.getSecondaryColor(stack); + } + return -1; + }, + AntarchyFabricItems.CRITTER_CAGE.get() + ); } private static void registerFluids() { @@ -225,6 +248,7 @@ public final class AntarchyFabricClientBootstrap { registry.register(AntarchyFabricMisc.STINKY_GAS.get(), HypnoticGasParticle.Provider::new); registry.register(AntarchyFabricMisc.STINKY_FLY.get(), FireflyParticle.Provider::new); registry.register(AntarchyFabricMisc.PEACH_LEAVES_PARTICLE.get(), PeachLeavesParticle.Provider::new); + registry.register(AntarchyFabricMisc.LOTUS_POLLEN.get(), com.craisinlord.antarchy.content.client.particle.LotusPollenParticle.Provider::new); registry.register(AntarchyFabricMisc.HYPNOTIC_GAS.get(), HypnoticGasParticle.Provider::new); registry.register(AntarchyFabricMisc.HYPNOTIC_GAS_DOWN.get(), sprites -> new HypnoticGasParticle.Provider(sprites, true)); registry.register(AntarchyFabricMisc.HYPNOTIC_GAS_CLOUD.get(), new HypnoticGasCloudParticle.Provider()); @@ -257,6 +281,7 @@ public final class AntarchyFabricClientBootstrap { BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.LOTUS.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.GIANT_LILY_PAD.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.HUSHWEED.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.CRITTER_CAGE_BLOCK.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.CORNEA_STALK.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.CORN_CROP.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.WILD_CORN.get(), RenderType.cutout()); @@ -344,6 +369,16 @@ public final class AntarchyFabricClientBootstrap { ResourceLocation.withDefaultNamespace("firework"), (stack, level, entity, seed) -> CrossbowItem.isCharged(stack) && ChargedProjectiles.of(stack).contains(Items.FIREWORK_ROCKET) ? 1.0F : 0.0F ); + ItemProperties.register( + AntarchyFabricItems.CRITTER_CAGE.get(), + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "critter_cage_state"), + (stack, level, entity, seed) -> { + if (!(stack.getItem() instanceof com.craisinlord.antarchy.content.item.CritterCageItem cage)) { + return 0.0F; + } + return cage.getItemState(stack); + } + ); } @SuppressWarnings({"unchecked", "rawtypes"}) diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricBlocks.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricBlocks.java index 2f0dc719..7361be8f 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricBlocks.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricBlocks.java @@ -13,6 +13,7 @@ import com.craisinlord.antarchy.content.item.BloodCrystalArmorItem; import com.craisinlord.antarchy.content.item.BloodCrystalAppleItem; import com.craisinlord.antarchy.content.item.BloodCrystalKatanaItem; import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; +import com.craisinlord.antarchy.content.block.entity.CritterCageBlockEntity; import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; @@ -358,6 +359,8 @@ public final class AntarchyFabricBlocks { () -> new com.craisinlord.antarchy.content.block.LotusBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SPORE_BLOSSOM))); public static final DeferredBlock SEASHELL = BLOCKS.register("seashell", () -> new SeashellBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TURTLE_EGG).noOcclusion())); + public static final DeferredBlock CRITTER_CAGE_BLOCK = BLOCKS.register("critter_cage_block", + () -> new CritterCageBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BARS).noOcclusion())); public static final DeferredBlock OURANWOOD_SIGN = BLOCKS.register("ouranwood_sign", @@ -1018,6 +1021,11 @@ public final class AntarchyFabricBlocks { SeashellBlockEntity::new, SEASHELL.get() ).build(null)); + public static final DeferredHolder, BlockEntityType> CRITTER_CAGE_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("critter_cage_block", + () -> BlockEntityType.Builder.of( + CritterCageBlockEntity::new, + CRITTER_CAGE_BLOCK.get() + ).build(null)); diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntities.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntities.java index 8b54c6e4..7d4495c4 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntities.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntities.java @@ -65,6 +65,7 @@ import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity; import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity; import com.craisinlord.antarchy.content.entity.HushProjectileEntity; +import com.craisinlord.antarchy.content.entity.CritterCageProjectileEntity; import com.craisinlord.antarchy.content.entity.JumpyBugEntity; import com.craisinlord.antarchy.content.entity.StinkBugEntity; import com.craisinlord.antarchy.content.entity.OuranwoodBoatEntity; @@ -479,7 +480,7 @@ public final class AntarchyFabricEntities { public static final DeferredHolder, EntityType> OCTOPUS_BOMB = ENTITY_TYPES.register("octopus_bomb", - () -> EntityType.Builder.of(OctopusBombEntity::new, MobCategory.MONSTER) + () -> EntityType.Builder.of(OctopusBombEntity::new, MobCategory.WATER_CREATURE) .sized(2.4F, 2.9F) .clientTrackingRange(10) .build("octopus_bomb")); @@ -547,6 +548,12 @@ public final class AntarchyFabricEntities { .clientTrackingRange(8) .updateInterval(1) .build("lucid_pearl_projectile")); + public static final DeferredHolder, EntityType> CRITTER_CAGE_PROJECTILE = ENTITY_TYPES.register("critter_cage_projectile", + () -> EntityType.Builder.of(CritterCageProjectileEntity::new, MobCategory.MISC) + .sized(0.25F, 0.25F) + .clientTrackingRange(8) + .updateInterval(1) + .build("critter_cage_projectile")); public static final DeferredHolder, EntityType> HUSH_PROJECTILE = ENTITY_TYPES.register("hush_projectile", @@ -607,7 +614,7 @@ public final class AntarchyFabricEntities { public static final DeferredHolder, EntityType> OURANWOOD_DEER = ENTITY_TYPES.register("ouranwood_deer", () -> EntityType.Builder.of(com.craisinlord.antarchy.content.entity.OuranwoodDeerEntity::new, MobCategory.CREATURE) - .sized(0.9F, 1.4F) + .sized(1.125F, 1.75F) .clientTrackingRange(8) .build("ouranwood_deer")); diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricItems.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricItems.java index abacab8e..24da8770 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricItems.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricItems.java @@ -11,6 +11,7 @@ import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.item.BloodCrystalArmorItem; import com.craisinlord.antarchy.content.item.BloodCrystalAppleItem; import com.craisinlord.antarchy.content.item.BloodCrystalKatanaItem; +import com.craisinlord.antarchy.content.item.CritterCageItem; import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; @@ -402,7 +403,7 @@ public final class AntarchyFabricItems { public static final DeferredItem GIANT_LILY_PAD_ITEM = ITEMS.register("giant_lily_pad", - () -> new PlaceOnWaterBlockItem(AntarchyFabricBlocks.GIANT_LILY_PAD.get(), new Item.Properties())); + () -> new com.craisinlord.antarchy.content.item.GiantLilyPadItem(AntarchyFabricBlocks.GIANT_LILY_PAD.get(), new Item.Properties())); public static final DeferredItem SEASHELL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.SEASHELL); public static final DeferredItem LOTUS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.LOTUS); @@ -439,6 +440,10 @@ public final class AntarchyFabricItems { () -> new com.craisinlord.antarchy.content.item.PeachChestBoatItem(AntarchyFabricEntities.PEACH_CHEST_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); + public static final DeferredItem CRITTER_CAGE = ITEMS.register("critter_cage", + () -> new CritterCageItem(new Item.Properties().stacksTo(16))); + + public static final DeferredItem DUPLICATOR_SAPLING_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DUPLICATOR_SAPLING); diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java index eb204364..ea8581db 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java @@ -327,6 +327,24 @@ public final class AntarchyFabricMisc { .persistent(net.minecraft.util.Unit.CODEC) .networkSynchronized(net.minecraft.network.codec.StreamCodec.unit(net.minecraft.util.Unit.INSTANCE)) .build()); + public static final DeferredHolder, net.minecraft.core.component.DataComponentType> CRITTER_CAGE_ENTITY_TYPE_COMPONENT = + DATA_COMPONENT_TYPES.register("critter_cage_entity_type", + () -> net.minecraft.core.component.DataComponentType.builder() + .persistent(net.minecraft.resources.ResourceLocation.CODEC) + .networkSynchronized(net.minecraft.resources.ResourceLocation.STREAM_CODEC) + .build()); + public static final DeferredHolder, net.minecraft.core.component.DataComponentType> CRITTER_CAGE_PRIMARY_COLOR_COMPONENT = + DATA_COMPONENT_TYPES.register("critter_cage_primary_color", + () -> net.minecraft.core.component.DataComponentType.builder() + .persistent(com.mojang.serialization.Codec.INT) + .networkSynchronized(net.minecraft.network.codec.ByteBufCodecs.INT) + .build()); + public static final DeferredHolder, net.minecraft.core.component.DataComponentType> CRITTER_CAGE_SECONDARY_COLOR_COMPONENT = + DATA_COMPONENT_TYPES.register("critter_cage_secondary_color", + () -> net.minecraft.core.component.DataComponentType.builder() + .persistent(com.mojang.serialization.Codec.INT) + .networkSynchronized(net.minecraft.network.codec.ByteBufCodecs.INT) + .build()); public static final DeferredHolder, net.minecraft.world.item.crafting.RecipeSerializer> AMERICANIZE_SERIALIZER = @@ -419,6 +437,8 @@ public final class AntarchyFabricMisc { public static final DeferredHolder, SimpleParticleType> PEACH_LEAVES_PARTICLE = PARTICLE_TYPES.register("peach_leaves_particle", () -> simpleParticleType()); + public static final DeferredHolder, SimpleParticleType> LOTUS_POLLEN = PARTICLE_TYPES.register("lotus_pollen", + () -> simpleParticleType()); public static final DeferredHolder, SimpleParticleType> HYPNOTIC_GAS = PARTICLE_TYPES.register("hypnotic_gas", diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSpawnPlacements.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSpawnPlacements.java index 7a1df6dd..ff8c6cc0 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSpawnPlacements.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSpawnPlacements.java @@ -273,7 +273,7 @@ public final class AntarchyFabricSpawnPlacements { SpawnPlacements.register(AntarchyFabricEntities.MISSILE_SQUID.get(), SpawnPlacementTypes.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MissileSquidEntity::canSpawn); SpawnPlacements.register(AntarchyFabricEntities.OCTOPUS_BOMB.get(), SpawnPlacementTypes.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, OctopusBombEntity::canSpawn); SpawnPlacements.register(AntarchyFabricEntities.CHEEP.get(), SpawnPlacementTypes.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.AbstractFish::checkSurfaceWaterAnimalSpawnRules); - SpawnPlacements.register(AntarchyFabricEntities.DORRIE.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.Animal::checkAnimalSpawnRules); + SpawnPlacements.register(AntarchyFabricEntities.DORRIE.get(), SpawnPlacementTypes.IN_WATER, Heightmap.Types.OCEAN_FLOOR, net.minecraft.world.entity.animal.Animal::checkAnimalSpawnRules); SpawnPlacements.register(AntarchyFabricEntities.OURANWOOD_DEER.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.Animal::checkAnimalSpawnRules); SpawnPlacements.register(AntarchyFabricEntities.GLIMMER.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, com.craisinlord.antarchy.content.entity.glimmer.GlimmerEntity::checkGlimmerSpawnRules); SpawnPlacements.register(AntarchyFabricEntities.ELKA.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.Animal::checkAnimalSpawnRules); diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyConfigModuleNeoforge.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyConfigModuleNeoforge.java index d8e1c709..8e779cd4 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyConfigModuleNeoforge.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyConfigModuleNeoforge.java @@ -325,6 +325,8 @@ public final class AntarchyConfigModuleNeoforge { AntarchySettings.setGravityGunBlastStrength(AntarchyToolsConfig.gravityGunBlastStrength()); AntarchySettings.setGravityGunCooldownSeconds(AntarchyToolsConfig.gravityGunCooldownSeconds()); AntarchySettings.setGravityGunMaxHoldDistance(AntarchyToolsConfig.gravityGunMaxHoldDistance()); + AntarchySettings.setCritterCageMaxCapturableWidth(AntarchyToolsConfig.critterCageMaxCapturableWidth()); + AntarchySettings.setCritterCageMaxCapturableHeight(AntarchyToolsConfig.critterCageMaxCapturableHeight()); AntarchySettings.setMinersDreamEnabled(AntarchyToolsConfig.minersDreamEnabled()); AntarchySettings.setMinersDreamMinimumRange(AntarchyToolsConfig.minersDreamMinimumRange()); diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMobsConfig.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMobsConfig.java index 3def0fb9..e638325a 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMobsConfig.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMobsConfig.java @@ -372,8 +372,8 @@ public final class AntarchyMobsConfig { KRAKEN_HEALTH = b.comment("Base max health.") .defineInRange("health", 1500.0D, 1.0D, 32768.0D); KRAKEN_ATTACK_DAMAGE = b.comment("Base attack damage.") .defineInRange("attackDamage", 45.0D, 0.0D, 1024.0D); KRAKEN_PROJECTILE_DAMAGE_TAKEN_MULTIPLIER = b.comment("Damage multiplier from projectiles. 0.5 means 50% damage.") .defineInRange("projectileDamageTakenMultiplier", 0.5D, 0.0D, 10.0D); - KRAKEN_SQUID_SPAWN_ENABLED = b.comment("If true, killing a Missile Squid has a 1/100 chance to spawn a single Kraken nearby.") .define("squidSpawnEnabled", true); - KRAKEN_MASS_SPAWN_ENABLED = b.comment("If true, killing a Missile Squid has a 1/100 chance to spawn 10 Krakens. Independent from the single spawn.").define("massSpawnEnabled", true); + KRAKEN_SQUID_SPAWN_ENABLED = b.comment("If true, a player killing a Missile Squid has a 1/100 chance to spawn a single Kraken nearby.") .define("squidSpawnEnabled", true); + KRAKEN_MASS_SPAWN_ENABLED = b.comment("If true, a player killing a Missile Squid has a 1/500 chance to spawn 10 Krakens. Independent from the single spawn.").define("massSpawnEnabled", true); b.pop(); diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java index f54a9242..1ffda8f8 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java @@ -323,7 +323,15 @@ public class AntarchyNeoforge { AntarchyObjects.setLumenBlock(() -> AntarchyNeoforgeBlocks.LUMEN_BLOCK.get()); AntarchyObjects.setLumenFroglight(() -> AntarchyNeoforgeBlocks.LUMEN_FROGLIGHT.get()); AntarchyObjects.setPeachLeavesParticle(() -> AntarchyNeoforgeMisc.PEACH_LEAVES_PARTICLE.get()); + AntarchyObjects.setLotusPollen(() -> AntarchyNeoforgeMisc.LOTUS_POLLEN.get()); AntarchyObjects.setDorrieInventoryMenu(AntarchyNeoforgeMisc.DORRIE_INVENTORY_MENU); + AntarchyObjects.setCritterCage(() -> AntarchyNeoforgeItems.CRITTER_CAGE.get()); + AntarchyObjects.setCritterCageBlock(() -> AntarchyNeoforgeBlocks.CRITTER_CAGE_BLOCK.get()); + AntarchyObjects.setCritterCageBlockEntity(() -> AntarchyNeoforgeBlocks.CRITTER_CAGE_BLOCK_ENTITY.get()); + AntarchyObjects.setCritterCageProjectile(() -> AntarchyNeoforgeEntites.CRITTER_CAGE_PROJECTILE.get()); + AntarchyObjects.setCritterCageEntityTypeComponent(() -> AntarchyNeoforgeMisc.CRITTER_CAGE_ENTITY_TYPE_COMPONENT.get()); + AntarchyObjects.setCritterCagePrimaryColorComponent(() -> AntarchyNeoforgeMisc.CRITTER_CAGE_PRIMARY_COLOR_COMPONENT.get()); + AntarchyObjects.setCritterCageSecondaryColorComponent(() -> AntarchyNeoforgeMisc.CRITTER_CAGE_SECONDARY_COLOR_COMPONENT.get()); } private static boolean isModLoaded(String modId) { diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyToolsConfig.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyToolsConfig.java index c8db2817..833bc155 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyToolsConfig.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyToolsConfig.java @@ -183,6 +183,10 @@ public final class AntarchyToolsConfig { private static final ModConfigSpec.DoubleValue GRAVITY_GUN_COOLDOWN_SECONDS; private static final ModConfigSpec.DoubleValue GRAVITY_GUN_MAX_HOLD_DISTANCE; + // Critter Cage + + private static final ModConfigSpec.DoubleValue CRITTER_CAGE_MAX_CAPTURABLE_WIDTH; + private static final ModConfigSpec.DoubleValue CRITTER_CAGE_MAX_CAPTURABLE_HEIGHT; // Miner's Dream @@ -472,6 +476,14 @@ public final class AntarchyToolsConfig { b.pop(); + // Critter Cage + + b.push("critterCage"); + CRITTER_CAGE_MAX_CAPTURABLE_WIDTH = b.comment("Maximum capturable entity width/depth based on the live hitbox, in blocks.").defineInRange("maxCapturableWidth", 1.15D, 0.1D, 64.0D); + CRITTER_CAGE_MAX_CAPTURABLE_HEIGHT = b.comment("Maximum capturable entity height based on the live hitbox, in blocks.").defineInRange("maxCapturableHeight", 1.15D, 0.1D, 64.0D); + b.pop(); + + // Miner's Dream b.push("minersDream"); @@ -661,6 +673,9 @@ public final class AntarchyToolsConfig { static double gravityGunCooldownSeconds() { return GRAVITY_GUN_COOLDOWN_SECONDS.get(); } static double gravityGunMaxHoldDistance() { return GRAVITY_GUN_MAX_HOLD_DISTANCE.get(); } + static double critterCageMaxCapturableWidth() { return CRITTER_CAGE_MAX_CAPTURABLE_WIDTH.get(); } + static double critterCageMaxCapturableHeight() { return CRITTER_CAGE_MAX_CAPTURABLE_HEIGHT.get(); } + static boolean minersDreamEnabled() { return MINERS_DREAM_ENABLED.get(); } static int minersDreamMinimumRange() { return MINERS_DREAM_MINIMUM_RANGE.get(); } static int minersDreamMaximumRange() { return MINERS_DREAM_MAXIMUM_RANGE.get(); } diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java index 25117d28..5db9ece6 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java @@ -86,6 +86,7 @@ public final class AntarchyNeoForgeClient { public static void registerRenderers(EntityRenderersEvent.RegisterRenderers event) { event.registerBlockEntityRenderer(AntarchyNeoforgeBlocks.DREAM_CAMPFIRE_BLOCK_ENTITY.get(), CampfireRenderer::new); event.registerBlockEntityRenderer(AntarchyNeoforgeBlocks.SEASHELL_BLOCK_ENTITY.get(), SeashellRenderer::new); + event.registerBlockEntityRenderer(AntarchyNeoforgeBlocks.CRITTER_CAGE_BLOCK_ENTITY.get(), CritterCageRenderer::new); event.registerEntityRenderer(AntarchyNeoforgeEntites.EASTER_BUNNY.get(), context -> withParalyzedGeoLayer(new EasterBunnyRenderer(context))); event.registerEntityRenderer(AntarchyNeoforgeEntites.FLYING_SQUIRREL.get(), context -> withParalyzedGeoLayer(new FlyingSquirrelRenderer(context))); event.registerEntityRenderer(AntarchyNeoforgeEntites.CATERPILLAR.get(), context -> withParalyzedGeoLayer(new CaterpillarRenderer(context))); @@ -125,6 +126,7 @@ public final class AntarchyNeoForgeClient { event.registerEntityRenderer(AntarchyNeoforgeEntites.GROWTH_RAY_PROJECTILE.get(), SizeRayProjectileRenderer::new); event.registerEntityRenderer(AntarchyNeoforgeEntites.LUCID_BOLT.get(), LucidBoltRenderer::new); event.registerEntityRenderer(AntarchyNeoforgeEntites.LUCID_PEARL_PROJECTILE.get(), ThrownItemRenderer::new); + event.registerEntityRenderer(AntarchyNeoforgeEntites.CRITTER_CAGE_PROJECTILE.get(), ThrownItemRenderer::new); event.registerEntityRenderer(AntarchyNeoforgeEntites.HUSH_PROJECTILE.get(), HushProjectileRenderer::new); event.registerEntityRenderer(AntarchyNeoforgeEntites.BRUTALFLY_ORB.get(), BrutalflyOrbRenderer::new); event.registerEntityRenderer(AntarchyNeoforgeEntites.UPWARD_FALLING_BLOCK.get(), com.craisinlord.antarchy.content.client.renderer.UpwardFallingBlockRenderer::new); @@ -220,6 +222,24 @@ public final class AntarchyNeoForgeClient { (stack, tintIndex) -> tintIndex == 0 ? net.minecraft.world.level.GrassColor.getDefaultColor() : -1, AntarchyNeoforgeItems.SPIDER_LILY_ITEM.get() ); + event.register( + (stack, tintIndex) -> { + if (!(stack.getItem() instanceof com.craisinlord.antarchy.content.item.CritterCageItem cage)) { + return -1; + } + if (cage.getItemState(stack) != 2) { + return -1; + } + if (tintIndex == 1) { + return cage.getPrimaryColor(stack); + } + if (tintIndex == 2) { + return cage.getSecondaryColor(stack); + } + return -1; + }, + AntarchyNeoforgeItems.CRITTER_CAGE.get() + ); event.register(new DynamicFluidContainerModel.Colors(), AntarchyNeoforgeItems.ICHOR_BUCKET.get()); event.register(new DynamicFluidContainerModel.Colors(), AntarchyNeoforgeItems.LUMEN_BUCKET.get()); event.register(new DynamicFluidContainerModel.Colors(), AntarchyNeoforgeItems.ANTIWATER_BUCKET.get()); @@ -231,6 +251,7 @@ public final class AntarchyNeoForgeClient { event.registerSpriteSet(AntarchyNeoforgeMisc.STINKY_GAS.get(), HypnoticGasParticle.Provider::new); event.registerSpriteSet(AntarchyNeoforgeMisc.STINKY_FLY.get(), FireflyParticle.Provider::new); event.registerSpriteSet(AntarchyNeoforgeMisc.PEACH_LEAVES_PARTICLE.get(), PeachLeavesParticle.Provider::new); + event.registerSpriteSet(AntarchyNeoforgeMisc.LOTUS_POLLEN.get(), com.craisinlord.antarchy.content.client.particle.LotusPollenParticle.Provider::new); event.registerSpriteSet(AntarchyNeoforgeMisc.HYPNOTIC_GAS.get(), HypnoticGasParticle.Provider::new); event.registerSpriteSet(AntarchyNeoforgeMisc.HYPNOTIC_GAS_DOWN.get(), sprites -> new HypnoticGasParticle.Provider(sprites, true)); event.registerSpecial(AntarchyNeoforgeMisc.HYPNOTIC_GAS_CLOUD.get(), new HypnoticGasCloudParticle.Provider()); @@ -499,6 +520,7 @@ public final class AntarchyNeoForgeClient { ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.LOTUS.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.GIANT_LILY_PAD.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.HUSHWEED.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.CRITTER_CAGE_BLOCK.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.CORNEA_STALK.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.CORN_CROP.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.WILD_CORN.get(), RenderType.cutout()); @@ -587,6 +609,16 @@ public final class AntarchyNeoForgeClient { ResourceLocation.withDefaultNamespace("firework"), (stack, level, entity, seed) -> CrossbowItem.isCharged(stack) && ChargedProjectiles.of(stack).contains(Items.FIREWORK_ROCKET) ? 1.0F : 0.0F ); + ItemProperties.register( + AntarchyNeoforgeItems.CRITTER_CAGE.get(), + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "critter_cage_state"), + (stack, level, entity, seed) -> { + if (!(stack.getItem() instanceof com.craisinlord.antarchy.content.item.CritterCageItem cage)) { + return 0.0F; + } + return cage.getItemState(stack); + } + ); } private static void registerGeoItemExtension(RegisterClientExtensionsEvent event, Item item) { diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java index 4032a874..0f3854bc 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java @@ -127,6 +127,7 @@ public final class AntarchyNeoForgeEvents { return; } if (!(event.getEntity().level() instanceof ServerLevel serverLevel)) return; + if (!(event.getEntity().getKillCredit() instanceof net.minecraft.world.entity.player.Player)) return; BlockPos deathPos = event.getEntity().blockPosition(); @@ -134,7 +135,7 @@ public final class AntarchyNeoForgeEvents { spawnKrakens(serverLevel, deathPos, 1); } - if (AntarchySettings.krakenMassSpawnEnabled() && serverLevel.random.nextInt(100) == 0) { + if (AntarchySettings.krakenMassSpawnEnabled() && serverLevel.random.nextInt(500) == 0) { spawnKrakens(serverLevel, deathPos, 10); } } diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java index e2799365..a0f97b5b 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java @@ -5,6 +5,7 @@ import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.block.*; import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; +import com.craisinlord.antarchy.content.block.entity.CritterCageBlockEntity; import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; @@ -96,6 +97,8 @@ public final class AntarchyNeoforgeBlocks { () -> new com.craisinlord.antarchy.content.block.LotusBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SPORE_BLOSSOM))); public static final DeferredBlock SEASHELL = BLOCKS.register("seashell", () -> new SeashellBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TURTLE_EGG).noOcclusion())); + public static final DeferredBlock CRITTER_CAGE_BLOCK = BLOCKS.register("critter_cage_block", + () -> new CritterCageBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BARS).noOcclusion())); public static final DeferredBlock OURANWOOD_SIGN = BLOCKS.register("ouranwood_sign", () -> new StandingSignBlock(AntarchyWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SIGN))); public static final DeferredBlock OURANWOOD_WALL_SIGN = BLOCKS.register("ouranwood_wall_sign", @@ -456,6 +459,11 @@ public final class AntarchyNeoforgeBlocks { SeashellBlockEntity::new, SEASHELL.get() ).build(null)); + public static final DeferredHolder, BlockEntityType> CRITTER_CAGE_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("critter_cage_block", + () -> BlockEntityType.Builder.of( + CritterCageBlockEntity::new, + CRITTER_CAGE_BLOCK.get() + ).build(null)); private AntarchyNeoforgeBlocks() {} diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntites.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntites.java index 5ad7b21a..936cac14 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntites.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntites.java @@ -17,6 +17,7 @@ import com.craisinlord.antarchy.content.entity.ElkaEntity; import com.craisinlord.antarchy.content.entity.OuranwoodDeerEntity; import com.craisinlord.antarchy.content.entity.glimmer.GlimmerEntity; import com.craisinlord.antarchy.content.entity.HushProjectileEntity; +import com.craisinlord.antarchy.content.entity.CritterCageProjectileEntity; import com.craisinlord.antarchy.content.entity.HerculesBeetleEntity; import com.craisinlord.antarchy.content.entity.JumpyBugEntity; import com.craisinlord.antarchy.content.entity.AlphaMantisEntity; @@ -232,7 +233,7 @@ public final class AntarchyNeoforgeEntites { .clientTrackingRange(10) .build("missile_squid")); public static final DeferredHolder, EntityType> OCTOPUS_BOMB = ENTITY_TYPES.register("octopus_bomb", - () -> EntityType.Builder.of(OctopusBombEntity::new, MobCategory.MONSTER) + () -> EntityType.Builder.of(OctopusBombEntity::new, MobCategory.WATER_CREATURE) .sized(2.4F, 2.9F) .clientTrackingRange(10) .build("octopus_bomb")); @@ -287,6 +288,12 @@ public final class AntarchyNeoforgeEntites { .clientTrackingRange(8) .updateInterval(1) .build("lucid_pearl_projectile")); + public static final DeferredHolder, EntityType> CRITTER_CAGE_PROJECTILE = ENTITY_TYPES.register("critter_cage_projectile", + () -> EntityType.Builder.of(CritterCageProjectileEntity::new, MobCategory.MISC) + .sized(0.25F, 0.25F) + .clientTrackingRange(8) + .updateInterval(1) + .build("critter_cage_projectile")); public static final DeferredHolder, EntityType> HUSH_PROJECTILE = ENTITY_TYPES.register("hush_projectile", () -> EntityType.Builder.of(HushProjectileEntity::new, MobCategory.MISC) .sized(0.35F, 0.35F) @@ -322,7 +329,7 @@ public final class AntarchyNeoforgeEntites { .build("dorrie")); public static final DeferredHolder, EntityType> OURANWOOD_DEER = ENTITY_TYPES.register("ouranwood_deer", () -> EntityType.Builder.of(OuranwoodDeerEntity::new, MobCategory.CREATURE) - .sized(0.9F, 1.4F) + .sized(1.125F, 1.75F) .clientTrackingRange(8) .build("ouranwood_deer")); public static final DeferredHolder, EntityType> GLIMMER = ENTITY_TYPES.register("glimmer", diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeItems.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeItems.java index f69c38bd..e6b006a9 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeItems.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeItems.java @@ -180,7 +180,7 @@ public final class AntarchyNeoforgeItems { public static final DeferredItem CAMELLIA_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CAMELLIA); public static final DeferredItem SPIDER_LILY_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.SPIDER_LILY); public static final DeferredItem GIANT_LILY_PAD_ITEM = ITEMS.register("giant_lily_pad", - () -> new PlaceOnWaterBlockItem(AntarchyNeoforgeBlocks.GIANT_LILY_PAD.get(), new Item.Properties())); + () -> new com.craisinlord.antarchy.content.item.GiantLilyPadItem(AntarchyNeoforgeBlocks.GIANT_LILY_PAD.get(), new Item.Properties())); public static final DeferredItem SEASHELL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.SEASHELL); public static final DeferredItem LOTUS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.LOTUS); public static final DeferredItem OURANWOOD_SIGN_ITEM = ITEMS.register("ouranwood_sign", @@ -199,6 +199,8 @@ public final class AntarchyNeoforgeItems { () -> new PeachBoatOnlyItem(AntarchyNeoforgeEntites.PEACH_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); public static final DeferredItem PEACH_CHEST_BOAT = ITEMS.register("peach_chest_boat", () -> new PeachChestBoatItem(AntarchyNeoforgeEntites.PEACH_CHEST_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); + public static final DeferredItem CRITTER_CAGE = ITEMS.register("critter_cage", + () -> new CritterCageItem(new Item.Properties().stacksTo(16))); public static final DeferredItem DUPLICATOR_SAPLING_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DUPLICATOR_SAPLING); public static final DeferredItem RED_ANT_NEST_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.RED_ANT_NEST); public static final DeferredItem BROWN_ANT_NEST_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BROWN_ANT_NEST); diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java index 9eb57043..7f5d4acb 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java @@ -78,6 +78,24 @@ public final class AntarchyNeoforgeMisc { .persistent(net.minecraft.util.Unit.CODEC) .networkSynchronized(net.minecraft.network.codec.StreamCodec.unit(net.minecraft.util.Unit.INSTANCE)) .build()); + public static final DeferredHolder, net.minecraft.core.component.DataComponentType> CRITTER_CAGE_ENTITY_TYPE_COMPONENT = + DATA_COMPONENT_TYPES.register("critter_cage_entity_type", + () -> net.minecraft.core.component.DataComponentType.builder() + .persistent(net.minecraft.resources.ResourceLocation.CODEC) + .networkSynchronized(net.minecraft.resources.ResourceLocation.STREAM_CODEC) + .build()); + public static final DeferredHolder, net.minecraft.core.component.DataComponentType> CRITTER_CAGE_PRIMARY_COLOR_COMPONENT = + DATA_COMPONENT_TYPES.register("critter_cage_primary_color", + () -> net.minecraft.core.component.DataComponentType.builder() + .persistent(com.mojang.serialization.Codec.INT) + .networkSynchronized(net.minecraft.network.codec.ByteBufCodecs.INT) + .build()); + public static final DeferredHolder, net.minecraft.core.component.DataComponentType> CRITTER_CAGE_SECONDARY_COLOR_COMPONENT = + DATA_COMPONENT_TYPES.register("critter_cage_secondary_color", + () -> net.minecraft.core.component.DataComponentType.builder() + .persistent(com.mojang.serialization.Codec.INT) + .networkSynchronized(net.minecraft.network.codec.ByteBufCodecs.INT) + .build()); public static final DeferredHolder, net.minecraft.world.item.crafting.RecipeSerializer> AMERICANIZE_SERIALIZER = RECIPE_SERIALIZERS.register("americanize", () -> com.craisinlord.antarchy.content.AmericanizeRecipe.SERIALIZER); @@ -190,6 +208,8 @@ public final class AntarchyNeoforgeMisc { () -> new SimpleParticleType(true)); public static final DeferredHolder, SimpleParticleType> PEACH_LEAVES_PARTICLE = PARTICLE_TYPES.register("peach_leaves_particle", () -> new SimpleParticleType(true)); + public static final DeferredHolder, SimpleParticleType> LOTUS_POLLEN = PARTICLE_TYPES.register("lotus_pollen", + () -> new SimpleParticleType(true)); public static final DeferredHolder, SimpleParticleType> HYPNOTIC_GAS = PARTICLE_TYPES.register("hypnotic_gas", () -> new SimpleParticleType(true)); public static final DeferredHolder, SimpleParticleType> HYPNOTIC_GAS_CLOUD = PARTICLE_TYPES.register("hypnotic_gas_cloud", diff --git a/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/dorrie_elythia_spawns.json b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/dorrie_elythia_spawns.json new file mode 100644 index 00000000..9baade84 --- /dev/null +++ b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/dorrie_elythia_spawns.json @@ -0,0 +1,12 @@ +{ + "type": "neoforge:add_spawns", + "biomes": "#antarchy:dorrie_elythia_spawn_biomes", + "spawners": [ + { + "type": "antarchy:dorrie", + "weight": 10, + "minCount": 1, + "maxCount": 2 + } + ] +} diff --git a/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/dorrie_overworld_spawns.json b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/dorrie_overworld_spawns.json new file mode 100644 index 00000000..da128713 --- /dev/null +++ b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/dorrie_overworld_spawns.json @@ -0,0 +1,12 @@ +{ + "type": "neoforge:add_spawns", + "biomes": "#antarchy:dorrie_overworld_spawn_biomes", + "spawners": [ + { + "type": "antarchy:dorrie", + "weight": 1, + "minCount": 1, + "maxCount": 1 + } + ] +} diff --git a/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/star_coral_in_oceans.json b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/star_coral_in_oceans.json deleted file mode 100644 index 281f4a35..00000000 --- a/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/star_coral_in_oceans.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "type": "neoforge:add_features", - "biomes": "#antarchy:has_star_coral", - "features": ["antarchy:star_coral_patch"], - "step": "vegetal_decoration" -}