From 246e511597f8456f0b28f17895939d62889a7788 Mon Sep 17 00:00:00 2001 From: craisinlord Date: Wed, 15 Jul 2026 22:29:08 -0500 Subject: [PATCH] Add Kraken's Grasp trident, kraken tentacle, RPO Launcher, and Star Coral - Kraken's Grasp: throwable trident upgrade with innate configurable Loyalty, always-on lightning strikes, and Kraken Tentacle spawns on landing that grab/slow/damage nearby entities in an area - Kraken Tentacle item/entity, added as a Kraken loot drop - RPO Launcher: Squidzooka-style weapon firing Octopus Bombs that fall under gravity and detonate in an ink explosion on impact - Star Coral: full alive/dead coral block set (plant/fan/wall fan/block) with light emission and natural ocean worldgen generation - Supporting config, tags, recipes, advancements, lang, and creative tab entries for all of the above --- .../antarchy/config/AntarchySettings.java | 46 ++ .../antarchy/content/AntarchyObjects.java | 48 ++ .../antarchy/content/AntarchyTags.java | 1 + .../antarchy/content/CreativeTabOrder.java | 91 ++-- .../content/RpoLauncherDispenseBehavior.java | 41 ++ .../content/block/GiantLilyPadBlock.java | 345 ++++++++++++ .../content/block/StarCoralBlock.java | 73 +++ .../content/block/StarCoralFanBlock.java | 60 +++ .../content/block/StarCoralPlantBlock.java | 69 +++ .../content/block/StarCoralWallFanBlock.java | 64 +++ .../content/client/model/TentacleModel.java | 22 + .../client/renderer/TentacleRenderer.java | 13 + .../content/entity/OctopusBombEntity.java | 58 +++ .../kraken/KrakensGraspThrownTrident.java | 109 ++++ .../content/entity/kraken/TentacleEntity.java | 159 ++++++ .../content/item/KrakensGraspItem.java | 171 ++++++ .../content/item/RpoLauncherItem.java | 194 +++++++ .../worldgen/ocean/StarCoralPatchFeature.java | 74 +++ .../mixins/SquidzookaMultishotMixin.java | 10 +- .../animations/rpo_launcher.animation.json | 385 ++++++++++++++ .../animations/tenctacle.animation.json | 491 ++++++++++++++++++ .../antarchy/blockstates/dead_star_coral.json | 7 + .../blockstates/dead_star_coral_block.json | 7 + .../blockstates/dead_star_coral_fan.json | 7 + .../blockstates/dead_star_coral_wall_fan.json | 19 + .../antarchy/blockstates/giant_lily_pad.json | 220 ++++++++ .../antarchy/blockstates/star_coral.json | 7 + .../blockstates/star_coral_block.json | 7 + .../antarchy/blockstates/star_coral_fan.json | 7 + .../blockstates/star_coral_wall_fan.json | 19 + .../antarchy/geo/krakens_grasp.geo.json | 202 +++++++ .../assets/antarchy/geo/rpo_launcher.geo.json | 287 ++++++++++ .../assets/antarchy/geo/tentacle.geo.json | 115 ++++ .../resources/assets/antarchy/lang/en_us.json | 14 + .../models/block/dead_star_coral.json | 6 + .../models/block/dead_star_coral_block.json | 6 + .../models/block/dead_star_coral_fan.json | 6 + .../block/dead_star_coral_wall_fan.json | 6 + .../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 ++ .../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 ++ .../antarchy/models/block/star_coral.json | 6 + .../models/block/star_coral_block.json | 6 + .../antarchy/models/block/star_coral_fan.json | 6 + .../models/block/star_coral_wall_fan.json | 6 + .../antarchy/models/item/dead_star_coral.json | 6 + .../models/item/dead_star_coral_block.json | 3 + .../models/item/dead_star_coral_fan.json | 6 + .../antarchy/models/item/giant_lily_pad.json | 6 + .../antarchy/models/item/kraken_tentacle.json | 6 + .../models/item/krakens_grasp_gui.json | 7 + .../models/item/krakens_grasp_held.json | 121 +++++ .../models/item/rpo_launcher_gui.json | 7 + .../models/item/rpo_launcher_held_geo.json | 98 ++++ .../antarchy/models/item/star_coral.json | 6 + .../models/item/star_coral_block.json | 3 + .../antarchy/models/item/star_coral_fan.json | 6 + .../block/giant_lilypad/giant_lilypad_1x1.png | Bin 0 -> 456 bytes .../block/giant_lilypad/giant_lilypad_2x1.png | Bin 0 -> 644 bytes .../block/giant_lilypad/giant_lilypad_2x2.png | Bin 0 -> 924 bytes .../block/giant_lilypad/giant_lilypad_3x3.png | Bin 0 -> 1747 bytes .../giant_lilypad/giant_lilypad_full_1x1.png | Bin 0 -> 439 bytes .../giant_lilypad/giant_lilypad_full_2x1.png | Bin 0 -> 637 bytes .../giant_lilypad/giant_lilypad_full_2x2.png | Bin 0 -> 917 bytes .../giant_lilypad/giant_lilypad_full_3x3.png | Bin 0 -> 1733 bytes .../assets/antarchy/textures/block/lotus.png | Bin 0 -> 401 bytes .../block/star_coral/dead_star_coral.png | Bin 0 -> 219 bytes .../star_coral/dead_star_coral_block.png | Bin 0 -> 236 bytes .../block/star_coral/dead_star_coral_fan.png | Bin 0 -> 188 bytes .../textures/block/star_coral/star_coral.png | Bin 0 -> 1180 bytes .../block/star_coral/star_coral.png.mcmeta | 6 + .../block/star_coral/star_coral_block.png | Bin 0 -> 1552 bytes .../star_coral/star_coral_block.png.mcmeta | 6 + .../block/star_coral/star_coral_fan.png | Bin 0 -> 844 bytes .../star_coral/star_coral_fan.png.mcmeta | 6 + .../antarchy/textures/entity/tentacle.png | Bin 0 -> 1189 bytes .../assets/antarchy/textures/item/cheep.png | Bin 0 -> 581 bytes .../item/krakens_grasp/krakens_grasp.png | Bin 0 -> 919 bytes .../item/krakens_grasp/krakens_grasp_item.png | Bin 0 -> 466 bytes .../textures/item/rpo_launcher_item.png | Bin 0 -> 525 bytes .../textures/models/item/rpo_launcher.png | Bin 0 -> 5809 bytes .../advancement/rocket_powered_octopus.json | 36 ++ .../loot_table/blocks/dead_star_coral.json | 28 + .../blocks/dead_star_coral_block.json | 19 + .../blocks/dead_star_coral_fan.json | 28 + .../blocks/dead_star_coral_wall_fan.json | 28 + .../loot_table/blocks/giant_lily_pad.json | 15 + .../loot_table/blocks/star_coral.json | 28 + .../loot_table/blocks/star_coral_block.json | 42 ++ .../loot_table/blocks/star_coral_fan.json | 28 + .../blocks/star_coral_wall_fan.json | 28 + .../antarchy/loot_table/entities/kraken.json | 18 + .../data/antarchy/recipe/krakens_grasp.json | 14 + .../recipe/miners_dream.json.disabled | 19 + .../data/antarchy/recipe/rpo_launcher.json | 21 + .../antarchy/tags/block/coral_blocks.json | 6 + .../antarchy/tags/block/coral_plants.json | 6 + .../data/antarchy/tags/block/corals.json | 7 + .../data/antarchy/tags/block/wall_corals.json | 6 + .../giant_lily_pad_supporting_fluids.json | 7 + .../tags/item/multishot_enchantable.json | 3 +- .../tags/worldgen/biome/has_star_coral.json | 14 + .../worldgen/biome/butterfly_fields.json | 8 +- .../antarchy/worldgen/biome/peach_forest.json | 2 +- .../configured_feature/star_coral_patch.json | 4 + .../placed_feature/star_coral_patch.json | 19 + .../tags/block/mineable/pickaxe.json | 10 +- .../tags/block/underwater_bonemeals.json | 7 + .../tags/item/enchantable/trident.json | 6 + .../antarchy/fabric/AntarchyFabric.java | 13 + .../fabric/AntarchyFabricContent.java | 9 +- .../antarchy/fabric/AntarchyFabricEvents.java | 2 + .../client/AntarchyFabricClientBootstrap.java | 10 + .../mixin/client/CrossbowArmPoseMixin.java | 3 +- .../fabric/registry/AntarchyFabricBlocks.java | 36 ++ .../registry/AntarchyFabricEntities.java | 15 + .../AntarchyFabricEntityAttributes.java | 2 + .../fabric/registry/AntarchyFabricItems.java | 42 ++ .../fabric/registry/AntarchyFabricMisc.java | 4 + .../antarchy/models/item/krakens_grasp.json | 3 + .../antarchy/models/item/rpo_launcher.json | 3 + .../AntarchyConfigModuleNeoforge.java | 14 + .../antarchy/neoforge/AntarchyNeoforge.java | 8 + .../neoforge/AntarchyToolsConfig.java | 49 ++ .../client/AntarchyNeoForgeClient.java | 11 + .../registry/AntarchyNeoForgeEvents.java | 1 + .../registry/AntarchyNeoforgeBlocks.java | 18 + .../AntarchyNeoforgeCreativeModeTabs.java | 10 + .../registry/AntarchyNeoforgeEntites.java | 16 + .../AntarchyNeoforgeEntityAttributes.java | 2 + .../registry/AntarchyNeoforgeItems.java | 18 + .../registry/AntarchyNeoforgeMisc.java | 2 + .../antarchy/models/item/krakens_grasp.json | 25 + .../antarchy/models/item/rpo_launcher.json | 18 + .../biome_modifier/star_coral_in_oceans.json | 6 + 204 files changed, 7622 insertions(+), 54 deletions(-) create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/RpoLauncherDispenseBehavior.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/block/GiantLilyPadBlock.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/block/StarCoralBlock.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/block/StarCoralFanBlock.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/block/StarCoralPlantBlock.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/block/StarCoralWallFanBlock.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/client/model/TentacleModel.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/client/renderer/TentacleRenderer.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/KrakensGraspThrownTrident.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/TentacleEntity.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/item/KrakensGraspItem.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/item/RpoLauncherItem.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/worldgen/ocean/StarCoralPatchFeature.java create mode 100644 common/src/main/resources/assets/antarchy/animations/rpo_launcher.animation.json create mode 100644 common/src/main/resources/assets/antarchy/animations/tenctacle.animation.json create mode 100644 common/src/main/resources/assets/antarchy/blockstates/dead_star_coral.json create mode 100644 common/src/main/resources/assets/antarchy/blockstates/dead_star_coral_block.json create mode 100644 common/src/main/resources/assets/antarchy/blockstates/dead_star_coral_fan.json create mode 100644 common/src/main/resources/assets/antarchy/blockstates/dead_star_coral_wall_fan.json create mode 100644 common/src/main/resources/assets/antarchy/blockstates/giant_lily_pad.json create mode 100644 common/src/main/resources/assets/antarchy/blockstates/star_coral.json create mode 100644 common/src/main/resources/assets/antarchy/blockstates/star_coral_block.json create mode 100644 common/src/main/resources/assets/antarchy/blockstates/star_coral_fan.json create mode 100644 common/src/main/resources/assets/antarchy/blockstates/star_coral_wall_fan.json create mode 100644 common/src/main/resources/assets/antarchy/geo/krakens_grasp.geo.json create mode 100644 common/src/main/resources/assets/antarchy/geo/rpo_launcher.geo.json create mode 100644 common/src/main/resources/assets/antarchy/geo/tentacle.geo.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/dead_star_coral.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/dead_star_coral_block.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/dead_star_coral_fan.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/dead_star_coral_wall_fan.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/single/single/0.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/single/single/180.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/single/single/270.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/single/single/90.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_left/0.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_left/180.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_left/270.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_left/90.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_middle/0.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_middle/180.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_middle/270.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_middle/90.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_right/0.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_right/180.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_right/270.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_right/90.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/center/0.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/center/180.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/center/270.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/center/90.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_left/0.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_left/180.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_left/270.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_left/90.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_right/0.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_right/180.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_right/270.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_right/90.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_left/0.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_left/180.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_left/270.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_left/90.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_middle/0.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_middle/180.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_middle/270.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_middle/90.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_right/0.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_right/180.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_right/270.json create 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/two_by_one/bottom_middle/0.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/bottom_middle/180.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/bottom_middle/270.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/bottom_middle/90.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_left/0.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_left/180.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_left/270.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_left/90.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_right/0.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_right/180.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_right/270.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_right/90.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/top_middle/0.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/top_middle/180.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/top_middle/270.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/top_middle/90.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_left/0.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_left/180.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_left/270.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_left/90.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_right/0.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_right/180.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_right/270.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_right/90.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_left/0.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_left/180.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_left/270.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_left/90.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_right/0.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_right/180.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_right/270.json create 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/star_coral.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/star_coral_block.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/star_coral_fan.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/star_coral_wall_fan.json create mode 100644 common/src/main/resources/assets/antarchy/models/item/dead_star_coral.json create mode 100644 common/src/main/resources/assets/antarchy/models/item/dead_star_coral_block.json create mode 100644 common/src/main/resources/assets/antarchy/models/item/dead_star_coral_fan.json create mode 100644 common/src/main/resources/assets/antarchy/models/item/giant_lily_pad.json create mode 100644 common/src/main/resources/assets/antarchy/models/item/kraken_tentacle.json create mode 100644 common/src/main/resources/assets/antarchy/models/item/krakens_grasp_gui.json create mode 100644 common/src/main/resources/assets/antarchy/models/item/krakens_grasp_held.json create mode 100644 common/src/main/resources/assets/antarchy/models/item/rpo_launcher_gui.json create mode 100644 common/src/main/resources/assets/antarchy/models/item/rpo_launcher_held_geo.json create mode 100644 common/src/main/resources/assets/antarchy/models/item/star_coral.json create mode 100644 common/src/main/resources/assets/antarchy/models/item/star_coral_block.json create mode 100644 common/src/main/resources/assets/antarchy/models/item/star_coral_fan.json create mode 100644 common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_1x1.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_2x1.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_2x2.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_3x3.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_full_1x1.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_full_2x1.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_full_2x2.png create 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/lotus.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/star_coral/dead_star_coral.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/star_coral/dead_star_coral_block.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/star_coral/dead_star_coral_fan.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/star_coral/star_coral.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/star_coral/star_coral.png.mcmeta create mode 100644 common/src/main/resources/assets/antarchy/textures/block/star_coral/star_coral_block.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/star_coral/star_coral_block.png.mcmeta create mode 100644 common/src/main/resources/assets/antarchy/textures/block/star_coral/star_coral_fan.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/star_coral/star_coral_fan.png.mcmeta create mode 100644 common/src/main/resources/assets/antarchy/textures/entity/tentacle.png create mode 100644 common/src/main/resources/assets/antarchy/textures/item/cheep.png create mode 100644 common/src/main/resources/assets/antarchy/textures/item/krakens_grasp/krakens_grasp.png create mode 100644 common/src/main/resources/assets/antarchy/textures/item/krakens_grasp/krakens_grasp_item.png create mode 100644 common/src/main/resources/assets/antarchy/textures/item/rpo_launcher_item.png create mode 100644 common/src/main/resources/assets/antarchy/textures/models/item/rpo_launcher.png create mode 100644 common/src/main/resources/data/antarchy/advancement/rocket_powered_octopus.json create mode 100644 common/src/main/resources/data/antarchy/loot_table/blocks/dead_star_coral.json create mode 100644 common/src/main/resources/data/antarchy/loot_table/blocks/dead_star_coral_block.json create mode 100644 common/src/main/resources/data/antarchy/loot_table/blocks/dead_star_coral_fan.json create mode 100644 common/src/main/resources/data/antarchy/loot_table/blocks/dead_star_coral_wall_fan.json create mode 100644 common/src/main/resources/data/antarchy/loot_table/blocks/giant_lily_pad.json create mode 100644 common/src/main/resources/data/antarchy/loot_table/blocks/star_coral.json create mode 100644 common/src/main/resources/data/antarchy/loot_table/blocks/star_coral_block.json create mode 100644 common/src/main/resources/data/antarchy/loot_table/blocks/star_coral_fan.json create mode 100644 common/src/main/resources/data/antarchy/loot_table/blocks/star_coral_wall_fan.json create mode 100644 common/src/main/resources/data/antarchy/recipe/krakens_grasp.json create mode 100644 common/src/main/resources/data/antarchy/recipe/miners_dream.json.disabled create mode 100644 common/src/main/resources/data/antarchy/recipe/rpo_launcher.json create mode 100644 common/src/main/resources/data/antarchy/tags/block/coral_blocks.json create mode 100644 common/src/main/resources/data/antarchy/tags/block/coral_plants.json create mode 100644 common/src/main/resources/data/antarchy/tags/block/corals.json create mode 100644 common/src/main/resources/data/antarchy/tags/block/wall_corals.json create mode 100644 common/src/main/resources/data/antarchy/tags/fluids/giant_lily_pad_supporting_fluids.json create mode 100644 common/src/main/resources/data/antarchy/tags/worldgen/biome/has_star_coral.json create mode 100644 common/src/main/resources/data/antarchy/worldgen/configured_feature/star_coral_patch.json create mode 100644 common/src/main/resources/data/antarchy/worldgen/placed_feature/star_coral_patch.json create mode 100644 common/src/main/resources/data/minecraft/tags/block/underwater_bonemeals.json create mode 100644 common/src/main/resources/data/minecraft/tags/item/enchantable/trident.json create mode 100644 fabric/src/main/resources/assets/antarchy/models/item/krakens_grasp.json create mode 100644 fabric/src/main/resources/assets/antarchy/models/item/rpo_launcher.json create mode 100644 neoforge/src/main/resources/assets/antarchy/models/item/krakens_grasp.json create mode 100644 neoforge/src/main/resources/assets/antarchy/models/item/rpo_launcher.json create 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 62426b0e..4b2856df 100644 --- a/common/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java +++ b/common/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java @@ -53,6 +53,16 @@ public final class AntarchySettings { private static double bigBerthaAttackDamage = 55.0D; private static double bigBerthaReachBonus = 3.0D; 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 krakensGraspLightningDamage = 6.0D; + private static boolean krakensGraspInnateLoyalty = true; + private static int krakensGraspInnateLoyaltyLevel = 3; + private static int krakensGraspTentacleDurationTicks = 100; + private static double krakensGraspTentacleDamage = 3.0D; + private static double krakensGraspTentacleRadius = 3.0D; + private static int krakensGraspTentacleDamageIntervalTicks = 20; private static double scorpionWhipBaseDamage = 10.0D; private static double scorpionWhipReachBonus = 5.0D; private static int scorpionWhipPoisonDurationTicks = 100; @@ -117,6 +127,10 @@ public final class AntarchySettings { private static boolean krakenMassSpawnEnabled = true; 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 sizeRayCooldownSeconds = 1.0D; private static boolean invertProjectilesFromInvertedPlayers = false; private static boolean gravityGunEnabled = true; @@ -774,6 +788,17 @@ public final class AntarchySettings { return krakenAttackDamage; } + public static double krakensGraspAttackDamage() { return krakensGraspAttackDamage; } + public static double krakensGraspAttackSpeed() { return krakensGraspAttackSpeed; } + public static double krakensGraspThrownDamage() { return krakensGraspThrownDamage; } + public static double krakensGraspLightningDamage() { return krakensGraspLightningDamage; } + public static boolean krakensGraspInnateLoyalty() { return krakensGraspInnateLoyalty; } + public static int krakensGraspInnateLoyaltyLevel() { return krakensGraspInnateLoyaltyLevel; } + public static int krakensGraspTentacleDurationTicks() { return krakensGraspTentacleDurationTicks; } + public static double krakensGraspTentacleDamage() { return krakensGraspTentacleDamage; } + public static double krakensGraspTentacleRadius() { return krakensGraspTentacleRadius; } + public static int krakensGraspTentacleDamageIntervalTicks() { return krakensGraspTentacleDamageIntervalTicks; } + public static double octopusBombHealth() { return octopusBombHealth; } @@ -918,6 +943,11 @@ public final class AntarchySettings { return squidzookaLaunchVelocity; } + public static double rpoLauncherCooldownSeconds() { return rpoLauncherCooldownSeconds; } + public static double rpoLauncherLaunchVelocity() { return rpoLauncherLaunchVelocity; } + public static double rpoLauncherExplosionDamage() { return rpoLauncherExplosionDamage; } + public static double rpoLauncherExplosionRadius() { return rpoLauncherExplosionRadius; } + public static double sizeRayCooldownSeconds() { return sizeRayCooldownSeconds; } @@ -1292,6 +1322,17 @@ public final class AntarchySettings { krakenAttackDamage = value; } + public static void setKrakensGraspAttackDamage(double value) { krakensGraspAttackDamage = value; } + public static void setKrakensGraspAttackSpeed(double value) { krakensGraspAttackSpeed = value; } + public static void setKrakensGraspThrownDamage(double value) { krakensGraspThrownDamage = value; } + public static void setKrakensGraspLightningDamage(double value) { krakensGraspLightningDamage = value; } + public static void setKrakensGraspInnateLoyalty(boolean value) { krakensGraspInnateLoyalty = value; } + public static void setKrakensGraspInnateLoyaltyLevel(int value) { krakensGraspInnateLoyaltyLevel = value; } + public static void setKrakensGraspTentacleDurationTicks(int value) { krakensGraspTentacleDurationTicks = value; } + public static void setKrakensGraspTentacleDamage(double value) { krakensGraspTentacleDamage = value; } + public static void setKrakensGraspTentacleRadius(double value) { krakensGraspTentacleRadius = value; } + public static void setKrakensGraspTentacleDamageIntervalTicks(int value) { krakensGraspTentacleDamageIntervalTicks = value; } + public static void setBrutalflyHealth(double value) { brutalflyHealth = value; } @@ -1384,6 +1425,11 @@ public final class AntarchySettings { squidzookaLaunchVelocity = value; } + public static void setRpoLauncherCooldownSeconds(double value) { rpoLauncherCooldownSeconds = value; } + public static void setRpoLauncherLaunchVelocity(double value) { rpoLauncherLaunchVelocity = value; } + public static void setRpoLauncherExplosionDamage(double value) { rpoLauncherExplosionDamage = value; } + public static void setRpoLauncherExplosionRadius(double value) { rpoLauncherExplosionRadius = value; } + public static void setSizeRayCooldownSeconds(double value) { sizeRayCooldownSeconds = 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 e660342a..9b3adf8b 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java @@ -21,6 +21,8 @@ import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEnt import com.craisinlord.antarchy.content.entity.MissileSquidEntity; import com.craisinlord.antarchy.content.entity.OctopusBombEntity; import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; +import com.craisinlord.antarchy.content.entity.kraken.KrakensGraspThrownTrident; +import com.craisinlord.antarchy.content.entity.kraken.TentacleEntity; import com.craisinlord.antarchy.content.entity.MolewormEntity; import com.craisinlord.antarchy.content.entity.MantisEntity; import com.craisinlord.antarchy.content.entity.ReverieEntity; @@ -57,6 +59,10 @@ public final class AntarchyObjects { @SuppressWarnings("unchecked") public static Supplier> MISSILE_SQUID = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") + public static Supplier> TENTACLE = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> KRAKENS_GRASP_TRIDENT = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") public static Supplier> OCTOPUS_BOMB = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") public static Supplier> MOLEWORM = (Supplier>) UNBOUND; @@ -117,6 +123,12 @@ public final class AntarchyObjects { @SuppressWarnings("unchecked") public static Supplier WILD_CORN = (Supplier) UNBOUND; @SuppressWarnings("unchecked") + public static Supplier STAR_CORAL_BLOCK = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier STAR_CORAL = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier STAR_CORAL_FAN = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") public static Supplier RAW_VENISON = (Supplier) UNBOUND; @SuppressWarnings("unchecked") public static Supplier COOKED_VENISON = (Supplier) UNBOUND; @@ -212,6 +224,10 @@ public final class AntarchyObjects { @SuppressWarnings("unchecked") public static Supplier KRAKEN_TOOTH = (Supplier) UNBOUND; @SuppressWarnings("unchecked") + public static Supplier KRAKEN_TENTACLE = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier KRAKENS_GRASP = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") public static Supplier MOGGLES = (Supplier) UNBOUND; @SuppressWarnings("unchecked") public static Supplier REVERIE_BOTTLE = (Supplier) UNBOUND; @@ -274,6 +290,8 @@ public final class AntarchyObjects { @SuppressWarnings("unchecked") public static Supplier BRUTALFLY_COCOON_SPAWNER = (Supplier) UNBOUND; @SuppressWarnings("unchecked") + public static Supplier GIANT_LILY_PAD = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") public static Supplier> ANT_NEST_BLOCK_ENTITY = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") public static Supplier> DREAM_CAMPFIRE_BLOCK_ENTITY = (Supplier>) UNBOUND; @@ -382,6 +400,7 @@ public final class AntarchyObjects { Supplier hushweed, Supplier squirrelNestBlock, Supplier brutalflyCocoonSpawner, + Supplier giantLilyPad, Supplier> antNestBlockEntity, Supplier> dreamCampfireBlockEntity, Supplier> waspNestBlockEntity, @@ -480,6 +499,7 @@ public final class AntarchyObjects { HUSHWEED = hushweed; SQUIRREL_NEST_BLOCK = squirrelNestBlock; BRUTALFLY_COCOON_SPAWNER = brutalflyCocoonSpawner; + GIANT_LILY_PAD = giantLilyPad; ANT_NEST_BLOCK_ENTITY = antNestBlockEntity; DREAM_CAMPFIRE_BLOCK_ENTITY = dreamCampfireBlockEntity; WASP_NEST_BLOCK_ENTITY = waspNestBlockEntity; @@ -500,6 +520,22 @@ public final class AntarchyObjects { OCTOPUS_BOMB = supplier; } + public static void setTentacle(Supplier> supplier) { + TENTACLE = supplier; + } + + public static void setKrakensGraspTrident(Supplier> supplier) { + KRAKENS_GRASP_TRIDENT = supplier; + } + + public static void setKrakenTentacle(Supplier supplier) { + KRAKEN_TENTACLE = supplier; + } + + public static void setKrakensGrasp(Supplier supplier) { + KRAKENS_GRASP = supplier; + } + public static void setHerculesBeetle(Supplier> supplier) { HERCULES_BEETLE = supplier; } @@ -556,6 +592,18 @@ public final class AntarchyObjects { WILD_CORN = supplier; } + public static void setStarCoralBlock(Supplier supplier) { + STAR_CORAL_BLOCK = supplier; + } + + public static void setStarCoral(Supplier supplier) { + STAR_CORAL = supplier; + } + + public static void setStarCoralFan(Supplier supplier) { + STAR_CORAL_FAN = supplier; + } + public static void setRawVenison(Supplier supplier) { RAW_VENISON = supplier; } 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 ac89e719..baf200b2 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/AntarchyTags.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/AntarchyTags.java @@ -111,6 +111,7 @@ public final class AntarchyTags { public static final class Fluids { public static final TagKey LUMEN = TagKey.create(Registries.FLUID, id("lumen")); + public static final TagKey GIANT_LILY_PAD_SUPPORTING_FLUIDS = TagKey.create(Registries.FLUID, id("giant_lily_pad_supporting_fluids")); private Fluids() { } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/CreativeTabOrder.java b/common/src/main/java/com/craisinlord/antarchy/content/CreativeTabOrder.java index 8d085b67..8ce4587f 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/CreativeTabOrder.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/CreativeTabOrder.java @@ -61,7 +61,9 @@ public final class CreativeTabOrder { case "duplicator_sapling", "ouranwood_acorn", "peach_sapling", "corn_seeds" -> 10; case "orange_milkweed", "pink_milkweed", "camellia", "spider_lily", "hushweed", "amber_lichen", "creepvine", "triffid_goo_block", "cloud_block", "wasp_nest", - "red_ant_nest", "brown_ant_nest", "rainbow_ant_nest", "termite_nest" -> 11; + "red_ant_nest", "brown_ant_nest", "rainbow_ant_nest", "termite_nest", + "star_coral", "star_coral_fan", "star_coral_block", + "dead_star_coral", "dead_star_coral_fan", "dead_star_coral_block" -> 11; case "dream_torch", "dream_lantern", "dream_campfire", "dream_fire", "dream_fire_ceiling", "lumen_froglight", "roseate_froglight" -> 12; case "antimetal_scaffolding" -> 13; @@ -71,10 +73,10 @@ public final class CreativeTabOrder { "duct_tape", "diamond_minecart", "gravity_sculk_sensor", "miners_dream" -> 15; case "bile_bucket", "ichor_bucket", "antiwater_bucket", "cloud_bucket", "lumen_bucket" -> 16; case "moggles", "brutalfly_elytra", "fallen_king_crown", "jumpy_boots" -> 17; - case "battle_axe", "basilisk_dagger", "squidzooka", "shrink_ray", "growth_ray", + case "battle_axe", "basilisk_dagger", "squidzooka", "rpo_launcher", "shrink_ray", "growth_ray", "gravity_gun", "water_cannon", "nightmare_sword", "lucid_pearl", "scorpion_whip", "blood_crystal_katana", "big_bertha", "big_bertha_blade", "big_bertha_handle", "big_bertha_hilt", - "ultimate_sword", "ultimate_mace" -> 18; + "ultimate_sword", "ultimate_mace", "krakens_grasp" -> 18; case "primordial_helmet", "primordial_chestplate", "primordial_leggings", "primordial_boots", "blood_crystal_helmet", "blood_crystal_chestplate", @@ -87,7 +89,7 @@ public final class CreativeTabOrder { case "cloud_shark_fin_soup", "mud_pie", "peach_pie", "cornbread", "popcorn", "rainbow_sugar", "blood_crystal_apple", "spirit_apple", "peach", "raw_corndog", "cooked_corndog", "raw_venison", "cooked_venison" -> 21; - case "blood_crystal_shard", "cloud_shark_fin", "basilisk_fang", "kraken_tooth", + case "blood_crystal_shard", "cloud_shark_fin", "basilisk_fang", "kraken_tooth", "kraken_tentacle", "emperor_scorpion_stinger", "nightmare_scale", "molevore_nose", "moleworm", "uranium_nugget", "titanium_nugget", "uranium_ingot", "titanium_ingot", "lucid_eye", @@ -171,6 +173,12 @@ public final class CreativeTabOrder { case "brown_ant_nest" -> 11; case "rainbow_ant_nest" -> 12; case "termite_nest" -> 13; + case "star_coral" -> 14; + case "star_coral_fan" -> 15; + case "star_coral_block" -> 16; + case "dead_star_coral" -> 17; + case "dead_star_coral_fan" -> 18; + case "dead_star_coral_block" -> 19; case "blood_crystal_block" -> 0; case "small_blood_crystal_bud" -> 1; case "medium_blood_crystal_bud" -> 2; @@ -243,20 +251,22 @@ public final class CreativeTabOrder { case "battle_axe" -> 0; case "basilisk_dagger" -> 1; case "squidzooka" -> 2; - case "shrink_ray" -> 3; - case "growth_ray" -> 4; - case "gravity_gun" -> 5; - case "water_cannon" -> 6; - case "nightmare_sword" -> 7; - case "lucid_pearl" -> 8; - case "scorpion_whip" -> 9; - case "blood_crystal_katana" -> 10; - case "big_bertha" -> 11; - case "big_bertha_blade" -> 12; - case "big_bertha_handle" -> 13; - case "big_bertha_hilt" -> 14; - case "ultimate_sword" -> 15; - case "ultimate_mace" -> 16; + case "rpo_launcher" -> 3; + case "shrink_ray" -> 4; + case "growth_ray" -> 5; + case "gravity_gun" -> 6; + case "water_cannon" -> 7; + case "nightmare_sword" -> 8; + case "lucid_pearl" -> 9; + case "scorpion_whip" -> 10; + case "blood_crystal_katana" -> 11; + case "big_bertha" -> 12; + case "big_bertha_blade" -> 13; + case "big_bertha_handle" -> 14; + case "big_bertha_hilt" -> 15; + case "ultimate_sword" -> 16; + case "ultimate_mace" -> 17; + case "krakens_grasp" -> 18; case "primordial_helmet" -> 0; case "primordial_chestplate" -> 1; case "primordial_leggings" -> 2; @@ -295,28 +305,29 @@ public final class CreativeTabOrder { case "cloud_shark_fin" -> 1; case "basilisk_fang" -> 2; case "kraken_tooth" -> 3; - case "emperor_scorpion_stinger" -> 4; - case "nightmare_scale" -> 5; - case "molevore_nose" -> 6; - case "moleworm" -> 7; - case "uranium_nugget" -> 8; - case "titanium_nugget" -> 9; - case "uranium_ingot" -> 10; - case "titanium_ingot" -> 11; - case "lucid_eye" -> 12; - case "mantis_claw" -> 13; - case "jumpy_bug_leg" -> 14; - case "brutalfly_wing" -> 15; - case "cornea_ear" -> 16; - case "primordial_scute" -> 17; - case "triffid_goo" -> 18; - case "vortex_eye" -> 19; - case "king_scale" -> 20; - case "queen_scale" -> 21; - case "chiten" -> 22; - case "stink_bug" -> 23; - case "corn" -> 24; - case "high_fructose_corn_syrup" -> 25; + case "kraken_tentacle" -> 4; + case "emperor_scorpion_stinger" -> 5; + case "nightmare_scale" -> 6; + case "molevore_nose" -> 7; + case "moleworm" -> 8; + case "uranium_nugget" -> 9; + case "titanium_nugget" -> 10; + case "uranium_ingot" -> 11; + case "titanium_ingot" -> 12; + case "lucid_eye" -> 13; + case "mantis_claw" -> 14; + case "jumpy_bug_leg" -> 15; + case "brutalfly_wing" -> 16; + case "cornea_ear" -> 17; + case "primordial_scute" -> 18; + case "triffid_goo" -> 19; + case "vortex_eye" -> 20; + case "king_scale" -> 21; + case "queen_scale" -> 22; + case "chiten" -> 23; + case "stink_bug" -> 24; + case "corn" -> 25; + case "high_fructose_corn_syrup" -> 26; default -> 0; }; } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/RpoLauncherDispenseBehavior.java b/common/src/main/java/com/craisinlord/antarchy/content/RpoLauncherDispenseBehavior.java new file mode 100644 index 00000000..8b5f0b5e --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/RpoLauncherDispenseBehavior.java @@ -0,0 +1,41 @@ +package com.craisinlord.antarchy.content; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.entity.OctopusBombEntity; +import net.minecraft.core.Direction; +import net.minecraft.core.Position; +import net.minecraft.core.dispenser.BlockSource; +import net.minecraft.core.dispenser.DefaultDispenseItemBehavior; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.level.block.DispenserBlock; + +public class RpoLauncherDispenseBehavior extends DefaultDispenseItemBehavior { + @Override + protected ItemStack execute(BlockSource source, ItemStack stack) { + Direction direction = source.state().getValue(DispenserBlock.FACING); + Position position = DispenserBlock.getDispensePosition(source); + + OctopusBombEntity bomb = AntarchyObjects.OCTOPUS_BOMB.get().create(source.level()); + if (bomb == null) return super.execute(source, stack); + + bomb.setPos(position.x(), position.y(), position.z()); + Vec3 vel = new Vec3(direction.getStepX(), direction.getStepY(), direction.getStepZ()) + .normalize() + .scale(AntarchySettings.rpoLauncherLaunchVelocity()); + bomb.launchAsProjectile(null, vel); + source.level().addFreshEntity(bomb); + + if (stack.isDamageableItem()) { + int nextDamage = stack.getDamageValue() + 1; + if (nextDamage >= stack.getMaxDamage()) { + stack.shrink(1); + } else { + stack.setDamageValue(nextDamage); + } + } else { + stack.shrink(1); + } + return stack; + } +} 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 new file mode 100644 index 00000000..be01b968 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/GiantLilyPadBlock.java @@ -0,0 +1,345 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.content.AntarchyTags; +import com.mojang.serialization.MapCodec; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.StringRepresentable; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +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.EnumProperty; +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 { + 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); + + 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); + + 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)); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @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; + } + + @Override + protected RenderShape getRenderShape(BlockState state) { + return RenderShape.MODEL; + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return SHAPE_BOX; + } + + @Override + protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { + return isSupported(level, pos); + } + + @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); + } + } + + @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); + } + } + + 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()) { + 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(); + + List candidates = new ArrayList<>(); + collectCandidates(level, y, minX, maxX, minZ, maxZ, candidates); + + candidates.sort(Comparator + .comparingInt(ShapeCandidate::area).reversed() + .thenComparingInt(candidate -> candidate.anchor().getX()) + .thenComparingInt(candidate -> candidate.anchor().getZ()) + .thenComparingInt(candidate -> candidate.shape().ordinal())); + + 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) { + 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); + } + } + }); + } + + 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)); + } + } + + 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 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 record TileAssignment(BlockPos pos, TilePosition tilePosition) { + } + + 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; + } + } + + public enum TilePosition implements StringRepresentable { + SINGLE("single"), + TOP_LEFT("top_left"), + TOP_MIDDLE("top_middle"), + TOP_RIGHT("top_right"), + MIDDLE_LEFT("middle_left"), + CENTER("center"), + MIDDLE_RIGHT("middle_right"), + BOTTOM_LEFT("bottom_left"), + BOTTOM_MIDDLE("bottom_middle"), + BOTTOM_RIGHT("bottom_right"); + + private final String name; + + TilePosition(String name) { + this.name = name; + } + + @Override + public String getSerializedName() { + return this.name; + } + } + + public enum PadRotation implements StringRepresentable { + DEG_0("0"), + DEG_90("90"), + DEG_180("180"), + DEG_270("270"); + + private final String name; + + PadRotation(String name) { + this.name = name; + } + + @Override + public String getSerializedName() { + return this.name; + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/StarCoralBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/StarCoralBlock.java new file mode 100644 index 00000000..c89a97df --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/StarCoralBlock.java @@ -0,0 +1,73 @@ +package com.craisinlord.antarchy.content.block; + +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import org.jetbrains.annotations.Nullable; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.RandomSource; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.BlockBehaviour.Properties; +import net.minecraft.world.level.material.FluidState; + +public class StarCoralBlock extends Block { + public static final MapCodec DEAD_CORAL_FIELD = BuiltInRegistries.BLOCK.byNameCodec().fieldOf("dead"); + public static final MapCodec CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group(DEAD_CORAL_FIELD.forGetter(block -> block.deadBlock), propertiesCodec()).apply(instance, StarCoralBlock::new) + ); + private final Block deadBlock; + + public StarCoralBlock(Block deadBlock, Properties properties) { + super(properties); + this.deadBlock = deadBlock; + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + protected void tick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + if (!this.scanForWater(level, pos)) { + level.setBlock(pos, this.deadBlock.defaultBlockState(), 2); + } + } + + @Override + protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor level, BlockPos pos, BlockPos neighborPos) { + if (!this.scanForWater(level, pos)) { + level.scheduleTick(pos, this, 60 + level.getRandom().nextInt(40)); + } + + return super.updateShape(state, direction, neighborState, level, pos, neighborPos); + } + + protected boolean scanForWater(BlockGetter level, BlockPos pos) { + for (Direction direction : Direction.values()) { + FluidState fluidState = level.getFluidState(pos.relative(direction)); + if (fluidState.is(FluidTags.WATER)) { + return true; + } + } + + return false; + } + + @Nullable + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + if (!this.scanForWater(context.getLevel(), context.getClickedPos())) { + context.getLevel().scheduleTick(context.getClickedPos(), this, 60 + context.getLevel().getRandom().nextInt(40)); + } + + return this.defaultBlockState(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/StarCoralFanBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/StarCoralFanBlock.java new file mode 100644 index 00000000..0adb2154 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/StarCoralFanBlock.java @@ -0,0 +1,60 @@ +package com.craisinlord.antarchy.content.block; + +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.block.BaseCoralFanBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.BlockBehaviour.Properties; +import net.minecraft.world.level.material.Fluids; + +public class StarCoralFanBlock extends BaseCoralFanBlock { + public static final MapCodec CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group(StarCoralBlock.DEAD_CORAL_FIELD.forGetter(block -> block.deadBlock), propertiesCodec()) + .apply(instance, StarCoralFanBlock::new) + ); + private final Block deadBlock; + + public StarCoralFanBlock(Block deadBlock, Properties properties) { + super(properties); + this.deadBlock = deadBlock; + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + protected void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean movedByPiston) { + this.tryScheduleDieTick(state, level, pos); + } + + @Override + protected void tick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + if (!scanForWater(state, level, pos)) { + level.setBlock(pos, this.deadBlock.defaultBlockState().setValue(WATERLOGGED, false), 2); + } + } + + @Override + protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor level, BlockPos pos, BlockPos neighborPos) { + if (direction == Direction.DOWN && !state.canSurvive(level, pos)) { + return Blocks.AIR.defaultBlockState(); + } else { + this.tryScheduleDieTick(state, level, pos); + if (state.getValue(WATERLOGGED)) { + level.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(level)); + } + + return super.updateShape(state, direction, neighborState, level, pos, neighborPos); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/StarCoralPlantBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/StarCoralPlantBlock.java new file mode 100644 index 00000000..8330dee8 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/StarCoralPlantBlock.java @@ -0,0 +1,69 @@ +package com.craisinlord.antarchy.content.block; + +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.block.BaseCoralPlantTypeBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.BlockBehaviour.Properties; +import net.minecraft.world.level.material.Fluids; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class StarCoralPlantBlock extends BaseCoralPlantTypeBlock { + public static final MapCodec CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group(StarCoralBlock.DEAD_CORAL_FIELD.forGetter(block -> block.deadBlock), propertiesCodec()) + .apply(instance, StarCoralPlantBlock::new) + ); + private final Block deadBlock; + protected static final VoxelShape SHAPE = Block.box(2.0, 0.0, 2.0, 14.0, 15.0, 14.0); + + public StarCoralPlantBlock(Block deadBlock, Properties properties) { + super(properties); + this.deadBlock = deadBlock; + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + protected void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean movedByPiston) { + this.tryScheduleDieTick(state, level, pos); + } + + @Override + protected void tick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + if (!scanForWater(state, level, pos)) { + level.setBlock(pos, this.deadBlock.defaultBlockState().setValue(WATERLOGGED, false), 2); + } + } + + @Override + protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor level, BlockPos pos, BlockPos neighborPos) { + if (direction == Direction.DOWN && !state.canSurvive(level, pos)) { + return Blocks.AIR.defaultBlockState(); + } else { + this.tryScheduleDieTick(state, level, pos); + if (state.getValue(WATERLOGGED)) { + level.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(level)); + } + + return super.updateShape(state, direction, neighborState, level, pos, neighborPos); + } + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return SHAPE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/StarCoralWallFanBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/StarCoralWallFanBlock.java new file mode 100644 index 00000000..7b91b2a3 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/StarCoralWallFanBlock.java @@ -0,0 +1,64 @@ +package com.craisinlord.antarchy.content.block; + +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.block.BaseCoralWallFanBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.BlockBehaviour.Properties; +import net.minecraft.world.level.material.Fluids; + +public class StarCoralWallFanBlock extends BaseCoralWallFanBlock { + public static final MapCodec CODEC = RecordCodecBuilder.mapCodec( + instance -> instance.group(StarCoralBlock.DEAD_CORAL_FIELD.forGetter(block -> block.deadBlock), propertiesCodec()) + .apply(instance, StarCoralWallFanBlock::new) + ); + private final Block deadBlock; + + public StarCoralWallFanBlock(Block deadBlock, Properties properties) { + super(properties); + this.deadBlock = deadBlock; + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + protected void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean movedByPiston) { + this.tryScheduleDieTick(state, level, pos); + } + + @Override + protected void tick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + if (!scanForWater(state, level, pos)) { + level.setBlock( + pos, + this.deadBlock.defaultBlockState().setValue(WATERLOGGED, false).setValue(FACING, state.getValue(FACING)), + 2 + ); + } + } + + @Override + protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor level, BlockPos pos, BlockPos neighborPos) { + if (direction.getOpposite() == state.getValue(FACING) && !state.canSurvive(level, pos)) { + return Blocks.AIR.defaultBlockState(); + } else { + if (state.getValue(WATERLOGGED)) { + level.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(level)); + } + + this.tryScheduleDieTick(state, level, pos); + return super.updateShape(state, direction, neighborState, level, pos, neighborPos); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/model/TentacleModel.java b/common/src/main/java/com/craisinlord/antarchy/content/client/model/TentacleModel.java new file mode 100644 index 00000000..95d1ce53 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/model/TentacleModel.java @@ -0,0 +1,22 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.content.entity.kraken.TentacleEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class TentacleModel extends GeoModel { + @Override + public ResourceLocation getModelResource(TentacleEntity animatable) { + return ResourceLocation.fromNamespaceAndPath("antarchy", "geo/tentacle.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(TentacleEntity animatable) { + return ResourceLocation.fromNamespaceAndPath("antarchy", "textures/entity/tentacle.png"); + } + + @Override + public ResourceLocation getAnimationResource(TentacleEntity animatable) { + return ResourceLocation.fromNamespaceAndPath("antarchy", "animations/tenctacle.animation.json"); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/TentacleRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/TentacleRenderer.java new file mode 100644 index 00000000..fe8e1027 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/TentacleRenderer.java @@ -0,0 +1,13 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.TentacleModel; +import com.craisinlord.antarchy.content.entity.kraken.TentacleEntity; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class TentacleRenderer extends GeoEntityRenderer { + public TentacleRenderer(EntityRendererProvider.Context context) { + super(context, new TentacleModel()); + this.shadowRadius = 0.0F; + } +} 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 ecc3edbe..acc50272 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 @@ -86,6 +86,11 @@ public class OctopusBombEntity extends Monster implements GeoEntity { // Kraken spawn flag private boolean spawnedByKraken; + // Explosive impact (fired from the R.P.O. Launcher) + private boolean explosiveImpact; + private java.util.UUID explosiveLauncherId; + private int explosiveArmTicks; + public OctopusBombEntity(EntityType entityType, Level level) { super(entityType, level); this.moveControl = new SmoothSwimmingMoveControl(this, 80, 8, 0.06F, 0.12F, true); @@ -189,6 +194,14 @@ public class OctopusBombEntity extends Monster implements GeoEntity { super.tick(); this.setNoGravity(this.isInWater() || this.canFly()); + if (this.explosiveImpact && !this.level().isClientSide) { + this.explosiveArmTicks++; + if (this.explosiveArmTicks > 3 && (this.horizontalCollision || this.verticalCollision || this.isInWater() || this.hasHitExplosiveTarget())) { + this.detonateInkExplosion(); + return; + } + } + if (this.level().isClientSide) { this.updateSwimRotation(); return; @@ -326,6 +339,13 @@ public class OctopusBombEntity extends Monster implements GeoEntity { this.setDeltaMovement(velocity); } + public void launchAsExplosiveProjectile(net.minecraft.world.entity.Entity launcher, Vec3 velocity) { + this.explosiveImpact = true; + this.explosiveLauncherId = launcher != null ? launcher.getUUID() : null; + this.setDeltaMovement(velocity); + this.hasImpulse = true; + } + // ------------------------------------------------------------------------- // Squid-style wander // ------------------------------------------------------------------------- @@ -352,6 +372,44 @@ public class OctopusBombEntity extends Monster implements GeoEntity { // Ink spray // ------------------------------------------------------------------------- + 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(); + } + + private void detonateInkExplosion() { + if (!(this.level() instanceof ServerLevel serverLevel)) { + return; + } + + double radius = com.craisinlord.antarchy.config.AntarchySettings.rpoLauncherExplosionRadius(); + float damage = (float) com.craisinlord.antarchy.config.AntarchySettings.rpoLauncherExplosionDamage(); + AABB blastArea = this.getBoundingBox().inflate(radius); + for (LivingEntity victim : serverLevel.getEntitiesOfClass(LivingEntity.class, blastArea, + e -> e.isAlive() && !e.isSpectator())) { + double distance = Math.sqrt(victim.distanceToSqr(this)); + float falloff = (float) Mth.clamp(1.0D - distance / radius, 0.0D, 1.0D); + if (falloff <= 0.0F) { + continue; + } + + victim.hurt(this.damageSources().explosion(this, this), damage * falloff); + Vec3 knockback = victim.position().subtract(this.position()); + if (knockback.lengthSqr() > 1.0E-4D) { + Vec3 normalized = knockback.normalize().scale(0.6D * falloff); + victim.push(normalized.x, 0.4D * falloff, normalized.z); + } + victim.hurtMarked = true; + } + + 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); + this.discard(); + } + private void tickInkSpray() { if (this.inkSprayCooldown > 0 || !(this.level() instanceof ServerLevel serverLevel)) return; 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 new file mode 100644 index 00000000..240141ac --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/KrakensGraspThrownTrident.java @@ -0,0 +1,109 @@ +package com.craisinlord.antarchy.content.entity.kraken; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.item.KrakensGraspItem; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.util.Mth; +import net.minecraft.world.damagesource.DamageSource; +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.level.Level; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.Vec3; + +public class KrakensGraspThrownTrident extends AbstractArrow implements ItemSupplier { + private boolean dealtDamage; + private boolean returning; + + public KrakensGraspThrownTrident(EntityType entityType, Level level) { + super(entityType, level); + } + + public KrakensGraspThrownTrident(EntityType entityType, LivingEntity owner, Level level, ItemStack stack) { + super(entityType, owner, level, stack, null); + this.setBaseDamage(AntarchySettings.krakensGraspThrownDamage()); + } + + @Override + public ItemStack getItem() { + return new ItemStack(AntarchyObjects.KRAKENS_GRASP.get()); + } + + @Override + protected ItemStack getDefaultPickupItem() { + return new ItemStack(AntarchyObjects.KRAKENS_GRASP.get()); + } + + @Override + protected net.minecraft.sounds.SoundEvent getDefaultHitGroundSoundEvent() { + return SoundEvents.TRIDENT_HIT_GROUND; + } + + @Override + protected double getDefaultGravity() { + return 0.05D; + } + + @Override + public void tick() { + if (this.inGroundTime > 4) { + this.dealtDamage = true; + } + + Entity owner = this.getOwner(); + int loyalty = this.effectiveLoyaltyLevel(); + if (loyalty > 0 && (this.dealtDamage || this.isNoPhysics()) && owner instanceof LivingEntity livingOwner && livingOwner.isAlive()) { + this.setNoPhysics(true); + Vec3 toOwner = owner.getEyePosition().subtract(this.position()); + this.setPosRaw(this.getX(), this.getY() + toOwner.y * 0.015D * loyalty, this.getZ()); + if (this.level().isClientSide) { + this.yOld = this.getY(); + } + + double speed = 0.05D * loyalty; + this.setDeltaMovement(this.getDeltaMovement().scale(0.95D).add(toOwner.normalize().scale(speed))); + if (!this.returning) { + this.returning = true; + this.playSound(SoundEvents.TRIDENT_RETURN, 10.0F, 1.0F); + } + } + + super.tick(); + } + + private int effectiveLoyaltyLevel() { + return AntarchySettings.krakensGraspInnateLoyalty() ? Mth.clamp(AntarchySettings.krakensGraspInnateLoyaltyLevel(), 1, 3) : 0; + } + + @Override + protected void onHitEntity(EntityHitResult result) { + super.onHitEntity(result); + if (!(result.getEntity() instanceof LivingEntity target) || !(this.level() instanceof ServerLevel serverLevel)) { + return; + } + + 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); + } + + this.dealtDamage = true; + } + + @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); + } + } +} 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 new file mode 100644 index 00000000..f7be5e93 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/TentacleEntity.java @@ -0,0 +1,159 @@ +package com.craisinlord.antarchy.content.entity.kraken; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.navigation.PathNavigation; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.AABB; +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.animation.AnimationController; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.util.GeckoLibUtil; + +import java.util.List; +import java.util.UUID; + +public class TentacleEntity extends Mob implements GeoEntity { + private static final RawAnimation GRASP_ANIM = RawAnimation.begin().thenLoop("animation"); + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + private int lifetimeTicks; + private UUID ownerId; + + public TentacleEntity(EntityType entityType, Level level) { + super(entityType, level); + this.setNoAi(true); + this.noPhysics = true; + this.noCulling = true; + this.xpReward = 0; + this.setInvulnerable(true); + } + + @Override + public boolean isInvulnerableTo(DamageSource damageSource) { + return true; + } + + @Override + public void push(net.minecraft.world.entity.Entity entity) { + } + + public static AttributeSupplier.Builder createAttributes() { + return Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, 20.0D) + .add(Attributes.MOVEMENT_SPEED, 0.0D) + .add(Attributes.KNOCKBACK_RESISTANCE, 1.0D); + } + + public static void spawnAt(ServerLevel level, Vec3 pos, LivingEntity owner) { + TentacleEntity tentacle = new TentacleEntity(com.craisinlord.antarchy.content.AntarchyObjects.TENTACLE.get(), level); + tentacle.moveTo(pos.x, pos.y, pos.z, 0.0F, 0.0F); + if (owner != null) { + tentacle.ownerId = owner.getUUID(); + } + level.addFreshEntity(tentacle); + level.playSound(null, pos.x, pos.y, pos.z, AntarchySoundEvents.KRAKEN_ATTACK.get(), SoundSource.HOSTILE, 1.0F, 1.0F); + } + + @Override + protected void registerGoals() { + } + + @Override + protected PathNavigation createNavigation(Level level) { + return new net.minecraft.world.entity.ai.navigation.GroundPathNavigation(this, level); + } + + @Override + public boolean isPushable() { + return false; + } + + @Override + public boolean canBeCollidedWith() { + return false; + } + + @Override + protected boolean shouldDespawnInPeaceful() { + return false; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public void tick() { + super.tick(); + if (this.level().isClientSide) { + return; + } + + this.lifetimeTicks++; + if (this.lifetimeTicks >= AntarchySettings.krakensGraspTentacleDurationTicks()) { + this.discard(); + return; + } + + int interval = Math.max(1, AntarchySettings.krakensGraspTentacleDamageIntervalTicks()); + if (this.lifetimeTicks % interval == 0) { + this.grabNearbyEntities(); + } + } + + private void grabNearbyEntities() { + double radius = AntarchySettings.krakensGraspTentacleRadius(); + AABB area = this.getBoundingBox().inflate(radius, radius * 0.6D, radius); + List victims = this.level().getEntitiesOfClass(LivingEntity.class, area, + entity -> entity.isAlive() && !entity.isSpectator() && !entity.getUUID().equals(this.ownerId) + && !(entity instanceof Player player && player.isCreative())); + + for (LivingEntity victim : victims) { + if (this.level() instanceof ServerLevel serverLevel) { + victim.hurt(this.damageSources().mobAttack(this), (float) AntarchySettings.krakensGraspTentacleDamage()); + serverLevel.sendParticles(net.minecraft.core.particles.ParticleTypes.SPLASH, + victim.getX(), victim.getY(0.6D), victim.getZ(), 8, 0.2D, 0.2D, 0.2D, 0.05D); + } + + victim.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, AntarchySettings.krakensGraspTentacleDamageIntervalTicks() + 10, 1, false, true, true)); + + Vec3 pull = this.position().subtract(victim.position()).multiply(1.0D, 0.0D, 1.0D); + if (pull.lengthSqr() > 1.0E-4D) { + victim.setDeltaMovement(victim.getDeltaMovement().add(pull.normalize().scale(0.12D))); + victim.hurtMarked = true; + } + } + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "grasp_controller", 0, this::graspAnimController)); + } + + private PlayState graspAnimController(AnimationState state) { + return state.setAndContinue(GRASP_ANIM); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } +} 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 new file mode 100644 index 00000000..51a44d3d --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/KrakensGraspItem.java @@ -0,0 +1,171 @@ +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; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.stats.Stats; +import net.minecraft.world.entity.EquipmentSlotGroup; +import net.minecraft.world.entity.LightningBolt; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.component.ItemAttributeModifiers; +import net.minecraft.world.item.TridentItem; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +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"); + 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 + public ItemAttributeModifiers getDefaultAttributeModifiers() { + return ItemAttributeModifiers.builder() + .add(Attributes.ATTACK_DAMAGE, new AttributeModifier(ATTACK_DAMAGE_MODIFIER_ID, AntarchySettings.krakensGraspAttackDamage(), AttributeModifier.Operation.ADD_VALUE), EquipmentSlotGroup.MAINHAND) + .add(Attributes.ATTACK_SPEED, new AttributeModifier(ATTACK_SPEED_MODIFIER_ID, AntarchySettings.krakensGraspAttackSpeed(), AttributeModifier.Operation.ADD_VALUE), EquipmentSlotGroup.MAINHAND) + .build(); + } + + @Override + public net.minecraft.world.item.UseAnim getUseAnimation(ItemStack stack) { + return net.minecraft.world.item.UseAnim.NONE; + } + + @Override + public void inventoryTick(ItemStack stack, Level level, Entity entity, int slotId, boolean isSelected) { + super.inventoryTick(stack, level, entity, slotId, isSelected); + if (!level.isClientSide) { + ensureInnateLoyalty(stack, level.registryAccess()); + } + } + + private static void ensureInnateLoyalty(ItemStack stack, HolderLookup.Provider registries) { + if (!AntarchySettings.krakensGraspInnateLoyalty()) { + return; + } + + var loyalty = registries.lookupOrThrow(Registries.ENCHANTMENT).getOrThrow(Enchantments.LOYALTY); + int desiredLevel = net.minecraft.util.Mth.clamp(AntarchySettings.krakensGraspInnateLoyaltyLevel(), 1, 3); + if (EnchantmentHelper.getItemEnchantmentLevel(loyalty, stack) >= desiredLevel) { + return; + } + + ItemEnchantments.Mutable enchantments = new ItemEnchantments.Mutable(stack.getEnchantments()); + enchantments.set(loyalty, desiredLevel); + EnchantmentHelper.setEnchantments(stack, enchantments.toImmutable().withTooltip(true)); + } + + @Override + public boolean hurtEnemy(ItemStack stack, LivingEntity target, LivingEntity attacker) { + boolean didHurt = super.hurtEnemy(stack, target, attacker); + if (didHurt && attacker.level() instanceof ServerLevel serverLevel) { + strikeLightning(target, serverLevel); + } + 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); + + 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); + } + + @Override + public void releaseUsing(ItemStack stack, Level level, LivingEntity user, int timeLeft) { + if (!(user instanceof Player player)) { + return; + } + + int useTime = this.getUseDuration(stack, user) - timeLeft; + if (useTime < 10) { + return; + } + + float spinStrength = EnchantmentHelper.getTridentSpinAttackStrength(stack, player); + if (spinStrength > 0.0F && player.isInWaterOrRain()) { + super.releaseUsing(stack, level, user, timeLeft); + return; + } + + if (stack.getDamageValue() >= stack.getMaxDamage() - 1) { + return; + } + + if (!level.isClientSide) { + stack.hurtAndBreak(1, player, LivingEntity.getSlotForHand(user.getUsedItemHand())); + KrakensGraspThrownTrident trident = new 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; + } + level.addFreshEntity(trident); + level.playSound(null, trident, SoundEvents.TRIDENT_THROW.value(), SoundSource.PLAYERS, 1.0F, 1.0F); + if (!player.hasInfiniteMaterials()) { + player.getInventory().removeItem(stack); + } + } + + 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 new file mode 100644 index 00000000..75adb09a --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/RpoLauncherItem.java @@ -0,0 +1,194 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.client.model.ResourceBackedGeoItemModel; +import com.craisinlord.antarchy.content.client.renderer.AnimatedHeldItemRenderer; +import com.craisinlord.antarchy.content.entity.OctopusBombEntity; +import java.util.function.Consumer; +import java.util.function.Predicate; +import net.minecraft.core.component.DataComponents; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +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.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.projectile.Projectile; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ProjectileWeaponItem; +import net.minecraft.world.item.UseAnim; +import net.minecraft.world.item.enchantment.Enchantments; +import net.minecraft.world.item.enchantment.ItemEnchantments; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.Vec2; +import net.minecraft.world.phys.Vec3; +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.animation.AnimationController; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.util.GeckoLibUtil; + +public class RpoLauncherItem extends ProjectileWeaponItem implements GeoItem { + private static final String FIRE_CONTROLLER = "fire_controller"; + private static final String FIRE_ANIMATION = "rpo_launcher_recoil"; + private static final Predicate NO_PROJECTILES = stack -> false; + private static final ResourceLocation MODEL_LOCATION = ResourceLocation.fromNamespaceAndPath("antarchy", "geo/rpo_launcher.geo.json"); + private static final ResourceLocation TEXTURE_LOCATION = ResourceLocation.fromNamespaceAndPath("antarchy", "textures/models/item/rpo_launcher.png"); + private static final ResourceLocation ANIMATION_LOCATION = ResourceLocation.fromNamespaceAndPath("antarchy", "animations/rpo_launcher.animation.json"); + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + + public RpoLauncherItem(Properties properties) { + super(properties); + GeoItem.registerSyncedAnimatable(this); + } + + @Override + public InteractionResultHolder use(Level level, Player player, InteractionHand usedHand) { + ItemStack itemStack = player.getItemInHand(usedHand); + if (player.getCooldowns().isOnCooldown(this)) { + return InteractionResultHolder.fail(itemStack); + } + + if (!level.isClientSide()) { + fireOctopusBomb(level, player, 0.0F); + if (hasMultishot(itemStack)) { + fireOctopusBomb(level, player, -10.0F); + fireOctopusBomb(level, player, 10.0F); + } + spawnFireParticles((ServerLevel) level, player); + itemStack.hurtAndBreak(1, player, usedHand == InteractionHand.MAIN_HAND ? EquipmentSlot.MAINHAND : EquipmentSlot.OFFHAND); + triggerFireAnimation((ServerLevel) level, player, itemStack); + } + + level.playSound( + null, + player.getX(), + player.getY(), + player.getZ(), + AntarchySoundEvents.SQUIDZOOKA_FIRE.get(), + SoundSource.PLAYERS, + 1.15F, + 1.0F / (level.getRandom().nextFloat() * 0.4F + 1.2F) + 0.5F + ); + player.awardStat(Stats.ITEM_USED.get(this)); + double cooldownSeconds = AntarchySettings.rpoLauncherCooldownSeconds(); + if (cooldownSeconds > 0) { + player.getCooldowns().addCooldown(this, (int) (cooldownSeconds * 20)); + } + return InteractionResultHolder.consume(itemStack); + } + + @Override + public UseAnim getUseAnimation(ItemStack stack) { + return UseAnim.NONE; + } + + @Override + public Predicate getSupportedHeldProjectiles() { + return NO_PROJECTILES; + } + + @Override + public Predicate getAllSupportedProjectiles() { + return NO_PROJECTILES; + } + + @Override + public int getDefaultProjectileRange() { + return 0; + } + + @Override + protected void shootProjectile(LivingEntity livingEntity, Projectile projectile, int i, float velocity, float inaccuracy, float angle, LivingEntity target) { + projectile.shootFromRotation(livingEntity, livingEntity.getXRot(), livingEntity.getYRot(), angle, velocity, inaccuracy); + } + + @Override + public boolean isEnchantable(ItemStack stack) { + return stack.getCount() == 1; + } + + @Override + public int getEnchantmentValue() { + return 1; + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, FIRE_CONTROLLER, state -> PlayState.STOP) + .triggerableAnim(FIRE_ANIMATION, RawAnimation.begin().thenPlay(FIRE_ANIMATION))); + } + + @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; + } + }); + } + + private void triggerFireAnimation(ServerLevel level, LivingEntity livingEntity, ItemStack stack) { + long animatableId = GeoItem.getOrAssignId(stack, level); + triggerAnim(livingEntity, animatableId, FIRE_CONTROLLER, FIRE_ANIMATION); + } + + private static void fireOctopusBomb(Level level, Player player, float yawOffset) { + OctopusBombEntity projectileBomb = AntarchyObjects.OCTOPUS_BOMB.get().create(level); + if (projectileBomb == null) { + return; + } + + float yaw = player.getYRot() + yawOffset; + Vec3 direction = Vec3.directionFromRotation(new Vec2(player.getXRot(), yaw)); + projectileBomb.moveTo( + player.getX(), + player.getEyeY() - 0.2D, + player.getZ(), + yaw, + player.getXRot() + ); + projectileBomb.launchAsExplosiveProjectile(player, direction.scale(AntarchySettings.rpoLauncherLaunchVelocity()).add(player.getDeltaMovement())); + level.addFreshEntity(projectileBomb); + } + + private static boolean hasMultishot(ItemStack stack) { + return stack.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY) + .keySet() + .stream() + .anyMatch(holder -> holder.is(Enchantments.MULTISHOT)); + } + + private static void spawnFireParticles(ServerLevel level, Player player) { + double lookX = player.getLookAngle().x; + double lookY = player.getLookAngle().y; + double lookZ = player.getLookAngle().z; + double originX = player.getX() + lookX * 0.65D; + double originY = player.getEyeY() - 0.15D + lookY * 0.15D; + double originZ = player.getZ() + lookZ * 0.65D; + + level.sendParticles(ParticleTypes.SMOKE, originX, originY, originZ, 12, 0.18D, 0.12D, 0.18D, 0.02D); + level.sendParticles(ParticleTypes.CLOUD, originX, originY - 0.05D, originZ, 8, 0.16D, 0.1D, 0.16D, 0.01D); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/ocean/StarCoralPatchFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/ocean/StarCoralPatchFeature.java new file mode 100644 index 00000000..36845b66 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/ocean/StarCoralPatchFeature.java @@ -0,0 +1,74 @@ +package com.craisinlord.antarchy.content.worldgen.ocean; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.Heightmap; +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; + +public final class StarCoralPatchFeature extends Feature { + public StarCoralPatchFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + RandomSource random = context.random(); + BlockPos origin = context.origin(); + Block starCoralBlock = AntarchyObjects.STAR_CORAL_BLOCK.get(); + Block starCoral = AntarchyObjects.STAR_CORAL.get(); + Block starCoralFan = AntarchyObjects.STAR_CORAL_FAN.get(); + + int surfaceY = level.getHeight(Heightmap.Types.OCEAN_FLOOR_WG, origin.getX(), origin.getZ()); + BlockPos floorPos = new BlockPos(origin.getX(), surfaceY - 1, origin.getZ()); + if (!level.getBlockState(floorPos).isSolid() || !level.getFluidState(floorPos.above()).is(FluidTags.WATER)) { + return false; + } + + int radius = 3 + random.nextInt(3); + int targetPlacements = 8 + random.nextInt(9); + int attempts = targetPlacements * 4; + int placed = 0; + + for (int i = 0; i < attempts && placed < targetPlacements; i++) { + int x = origin.getX() + random.nextInt(radius * 2 + 1) - radius; + int z = origin.getZ() + random.nextInt(radius * 2 + 1) - radius; + int y = level.getHeight(Heightmap.Types.OCEAN_FLOOR_WG, x, z); + BlockPos supportPos = new BlockPos(x, y - 1, z); + BlockPos placePos = supportPos.above(); + + if (!level.getBlockState(supportPos).isSolid()) { + continue; + } + if (!level.getFluidState(placePos).is(FluidTags.WATER)) { + continue; + } + if (!level.getBlockState(placePos).canBeReplaced()) { + continue; + } + + int roll = random.nextInt(10); + BlockState toPlace; + if (roll < 5) { + toPlace = starCoralBlock.defaultBlockState(); + } else if (roll < 8) { + toPlace = starCoral.defaultBlockState(); + } else { + toPlace = starCoralFan.defaultBlockState(); + } + + level.setBlock(placePos, toPlace, 2); + placed++; + } + + return placed > 0; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/SquidzookaMultishotMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/SquidzookaMultishotMixin.java index e8a51510..36314c51 100644 --- a/common/src/main/java/com/craisinlord/antarchy/mixins/SquidzookaMultishotMixin.java +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/SquidzookaMultishotMixin.java @@ -1,6 +1,6 @@ package com.craisinlord.antarchy.mixins; -import net.minecraft.core.registries.BuiltInRegistries; +import com.craisinlord.antarchy.content.AntarchyTags; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.Enchantment; import org.spongepowered.asm.mixin.Mixin; @@ -13,14 +13,14 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; public abstract class SquidzookaMultishotMixin { @Inject(method = "canEnchant", at = @At("HEAD"), cancellable = true) private void antarchy$allowSquidzookaForMultishot(ItemStack stack, CallbackInfoReturnable cir) { - if (antarchy$isMultishot() && antarchy$isSquidzooka(stack)) { + if (antarchy$isMultishot() && antarchy$isMultishotEnchantable(stack)) { cir.setReturnValue(true); } } @Inject(method = "isPrimaryItem", at = @At("HEAD"), cancellable = true) private void antarchy$allowSquidzookaAsPrimaryItem(ItemStack stack, CallbackInfoReturnable cir) { - if (antarchy$isMultishot() && antarchy$isSquidzooka(stack)) { + if (antarchy$isMultishot() && antarchy$isMultishotEnchantable(stack)) { cir.setReturnValue(true); } } @@ -31,7 +31,7 @@ public abstract class SquidzookaMultishotMixin { } @Unique - private boolean antarchy$isSquidzooka(ItemStack stack) { - return "squidzooka".equals(BuiltInRegistries.ITEM.getKey(stack.getItem()).getPath()); + private boolean antarchy$isMultishotEnchantable(ItemStack stack) { + return stack.is(AntarchyTags.Items.MULTISHOT_ENCHANTABLE); } } diff --git a/common/src/main/resources/assets/antarchy/animations/rpo_launcher.animation.json b/common/src/main/resources/assets/antarchy/animations/rpo_launcher.animation.json new file mode 100644 index 00000000..10ba25bf --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/rpo_launcher.animation.json @@ -0,0 +1,385 @@ +{ + "format_version": "1.8.0", + "animations": { + "rpo_launcher_recoil": { + "animation_length": 0.9583, + "bones": { + "all": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.3333": { + "vector": [-17.5, 0, 0], + "easing": "easeInElastic" + }, + "0.5": { + "vector": [-10, 0, 0], + "easing": "easeInOutSine" + }, + "0.875": { + "vector": [-0.91, 0, 0] + }, + "0.9583": { + "vector": [0, 0, 0], + "easing": "linear" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, 5, 4], + "easing": "easeInElastic", + "easingArgs": [2] + }, + "0.4583": { + "vector": [0, 0, 3.56], + "easing": "easeInOutSine" + }, + "0.8333": { + "vector": [0, 0, 0], + "easing": "easeInOutSine" + } + } + }, + "center": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [-8, 0, 0] + }, + "0.5417": { + "vector": [0, 0, 0] + }, + "0.875": { + "vector": [0, 0, 0] + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, 0, 2], + "easing": "easeInElastic", + "easingArgs": [1.5] + }, + "0.4583": { + "vector": [0, 0.3, 0], + "easing": "easeInOutSine" + }, + "0.9583": { + "vector": [0, 0, 0] + } + } + }, + "bazooka": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [0, 0, 6], + "easing": "easeInElastic" + }, + "0.9167": { + "vector": [0, 0, 0], + "easing": "easeInOutSine" + } + } + }, + "tentacles": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.125": { + "vector": [0, 0, 5.27] + }, + "0.2917": { + "vector": [0, 0, -5], + "easing": "easeInElastic", + "easingArgs": [2] + }, + "0.9167": { + "vector": [0, 0, 0], + "easing": "easeOutQuad" + } + }, + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.0833": { + "vector": [1, 1, 1], + "easing": "linear" + }, + "0.2917": { + "vector": [1.3, 1.3, 1.3], + "easing": "easeInElastic" + }, + "0.9583": { + "vector": [1, 1, 1] + } + } + }, + "start_1": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [40, 0, 0], + "easing": "easeInOutElastic" + }, + "0.4167": { + "vector": [40, 0, 0], + "easing": "easeInOutBack" + }, + "0.9583": { + "vector": [0, 0, 0], + "easing": "easeInOutQuad" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [0, 0, 1.8], + "easing": "easeInOutElastic" + }, + "0.4167": { + "vector": [0, 0, 1.8], + "easing": "easeInOutBack" + }, + "0.9583": { + "vector": [0, 0, 0] + } + } + }, + "end_1": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [22.5, 0, 0], + "easing": "easeOutBack" + }, + "0.2917": { + "vector": [-17.5, 0, 0] + }, + "0.4167": { + "vector": [22.5, 0, 0] + }, + "0.5833": { + "vector": [-17.5, 0, 0] + }, + "0.75": { + "vector": [10, 0, 0], + "easing": "easeInOutQuad" + }, + "0.9583": { + "vector": [0, 0, 0], + "easing": "easeOutQuart" + } + } + }, + "start_2": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [40, 0, 0], + "easing": "easeInOutElastic" + }, + "0.4167": { + "vector": [40, 0, 0], + "easing": "easeInOutBack" + }, + "0.9583": { + "vector": [0, 0, 0], + "easing": "easeInOutQuad" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [0, 0, 1.8], + "easing": "easeInOutElastic" + }, + "0.4167": { + "vector": [0, 0, 1.8], + "easing": "easeInOutBack" + }, + "0.9583": { + "vector": [0, 0, 0] + } + } + }, + "end_2": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [22.5, 0, 0], + "easing": "easeOutBack" + }, + "0.2917": { + "vector": [-17.5, 0, 0] + }, + "0.4167": { + "vector": [22.5, 0, 0] + }, + "0.5833": { + "vector": [-17.5, 0, 0] + }, + "0.75": { + "vector": [10, 0, 0], + "easing": "easeInOutQuad" + }, + "0.9583": { + "vector": [0, 0, 0], + "easing": "easeOutQuart" + } + } + }, + "start_3": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [40, 0, 0], + "easing": "easeInOutElastic" + }, + "0.4167": { + "vector": [40, 0, 0], + "easing": "easeInOutBack" + }, + "0.9583": { + "vector": [0, 0, 0], + "easing": "easeInOutQuad" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [0, 0, 1.8], + "easing": "easeInOutElastic" + }, + "0.4167": { + "vector": [0, 0, 1.8], + "easing": "easeInOutBack" + }, + "0.9583": { + "vector": [0, 0, 0] + } + } + }, + "end_3": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [22.5, 0, 0], + "easing": "easeOutBack" + }, + "0.2917": { + "vector": [-17.5, 0, 0] + }, + "0.4167": { + "vector": [22.5, 0, 0] + }, + "0.5833": { + "vector": [-17.5, 0, 0] + }, + "0.75": { + "vector": [10, 0, 0], + "easing": "easeInOutQuad" + }, + "0.9583": { + "vector": [0, 0, 0], + "easing": "easeOutQuart" + } + } + }, + "start_4": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [40, 0, 0], + "easing": "easeInOutElastic" + }, + "0.4167": { + "vector": [40, 0, 0], + "easing": "easeInOutBack" + }, + "0.9583": { + "vector": [0, 0, 0], + "easing": "easeInOutQuad" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [0, 0, 1.8], + "easing": "easeInOutElastic" + }, + "0.4167": { + "vector": [0, 0, 1.8], + "easing": "easeInOutBack" + }, + "0.9583": { + "vector": [0, 0, 0] + } + } + }, + "end_4": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [22.5, 0, 0], + "easing": "easeOutBack" + }, + "0.2917": { + "vector": [-17.5, 0, 0] + }, + "0.4167": { + "vector": [22.5, 0, 0] + }, + "0.5833": { + "vector": [-17.5, 0, 0] + }, + "0.75": { + "vector": [10, 0, 0], + "easing": "easeInOutQuad" + }, + "0.9583": { + "vector": [0, 0, 0], + "easing": "easeOutQuart" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/tenctacle.animation.json b/common/src/main/resources/assets/antarchy/animations/tenctacle.animation.json new file mode 100644 index 00000000..1dba725d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/tenctacle.animation.json @@ -0,0 +1,491 @@ +{ + "format_version": "1.8.0", + "animations": { + "animation": { + "loop": true, + "animation_length": 1.5, + "bones": { + "tentacle": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 17.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 17.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [0, 0, -20] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, -20] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 22.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 22.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [0, 0, -30] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, -30] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, 0, 20] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 20] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.1667": { + "post": { + "vector": [0, 0, -17.5] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, -17.5] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 20] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle_right": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-90, 20, 90] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [93.3776, 22.38751, -93.65422] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [46.07, 8.05, -46.19] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 27.5] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-0.05192, -0.03141, -32.49925] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-0.03, -0.02, -21.84] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 20] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.125": { + "post": { + "vector": [0, 0, -17.5] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, -15.64] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle_right4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-0.75385, -0.75162, -19.98312] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle_left": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [93.3776, -22.38751, 93.65422] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [46.07, -8.05, 46.19] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-90, -20, -90] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-0.05192, 0.03141, 32.49925] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-0.03, 0.02, 21.84] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, -27.5] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 17.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 15.64] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, -20] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tentacle_left4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-0.75385, 0.75162, 19.98312] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/blockstates/dead_star_coral.json b/common/src/main/resources/assets/antarchy/blockstates/dead_star_coral.json new file mode 100644 index 00000000..40ff406b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/dead_star_coral.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/dead_star_coral" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/dead_star_coral_block.json b/common/src/main/resources/assets/antarchy/blockstates/dead_star_coral_block.json new file mode 100644 index 00000000..4402b831 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/dead_star_coral_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/dead_star_coral_block" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/dead_star_coral_fan.json b/common/src/main/resources/assets/antarchy/blockstates/dead_star_coral_fan.json new file mode 100644 index 00000000..98ca44f2 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/dead_star_coral_fan.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/dead_star_coral_fan" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/dead_star_coral_wall_fan.json b/common/src/main/resources/assets/antarchy/blockstates/dead_star_coral_wall_fan.json new file mode 100644 index 00000000..29b8f072 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/dead_star_coral_wall_fan.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "antarchy:block/dead_star_coral_wall_fan", + "y": 90 + }, + "facing=north": { + "model": "antarchy:block/dead_star_coral_wall_fan" + }, + "facing=south": { + "model": "antarchy:block/dead_star_coral_wall_fan", + "y": 180 + }, + "facing=west": { + "model": "antarchy:block/dead_star_coral_wall_fan", + "y": 270 + } + } +} 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 new file mode 100644 index 00000000..00ae5f6a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/giant_lily_pad.json @@ -0,0 +1,220 @@ +{ + "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" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/star_coral.json b/common/src/main/resources/assets/antarchy/blockstates/star_coral.json new file mode 100644 index 00000000..e6897b90 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/star_coral.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/star_coral" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/star_coral_block.json b/common/src/main/resources/assets/antarchy/blockstates/star_coral_block.json new file mode 100644 index 00000000..d14eea97 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/star_coral_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/star_coral_block" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/star_coral_fan.json b/common/src/main/resources/assets/antarchy/blockstates/star_coral_fan.json new file mode 100644 index 00000000..98cb2826 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/star_coral_fan.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/star_coral_fan" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/star_coral_wall_fan.json b/common/src/main/resources/assets/antarchy/blockstates/star_coral_wall_fan.json new file mode 100644 index 00000000..98fab4f6 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/star_coral_wall_fan.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "antarchy:block/star_coral_wall_fan", + "y": 90 + }, + "facing=north": { + "model": "antarchy:block/star_coral_wall_fan" + }, + "facing=south": { + "model": "antarchy:block/star_coral_wall_fan", + "y": 180 + }, + "facing=west": { + "model": "antarchy:block/star_coral_wall_fan", + "y": 270 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/geo/krakens_grasp.geo.json b/common/src/main/resources/assets/antarchy/geo/krakens_grasp.geo.json new file mode 100644 index 00000000..a8e4f668 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/krakens_grasp.geo.json @@ -0,0 +1,202 @@ +{ + "format_version": "1.21.110", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.kraken_tooth_trident - Converted", + "texture_width": 32, + "texture_height": 32, + "visible_bounds_width": 2, + "visible_bounds_height": 3.5, + "visible_bounds_offset": [0, 1.25, 0] + }, + "bones": [ + { + "name": "trident", + "pivot": [1, -8, -1] + }, + { + "name": "handle", + "parent": "trident", + "pivot": [1, -8, -1], + "cubes": [ + { + "origin": [-0.5, -8, -0.5], + "size": [1, 31, 1], + "uv": { + "north": {"uv": [0, 0], "uv_size": [1, 31]}, + "east": {"uv": [0, 0], "uv_size": [1, 31]}, + "south": {"uv": [0, 0], "uv_size": [1, 31]}, + "west": {"uv": [0, 0], "uv_size": [1, 31]}, + "up": {"uv": [1, 31], "uv_size": [-1, -31]}, + "down": {"uv": [1, 31], "uv_size": [-1, -1]} + } + }, + { + "origin": [-2.825, 25.2, -0.5], + "size": [1, 4, 1], + "uv": { + "north": {"uv": [10, 12], "uv_size": [1, 4]}, + "east": {"uv": [12, 10], "uv_size": [1, 4]}, + "south": {"uv": [11, 12], "uv_size": [1, 4]}, + "west": {"uv": [13, 0], "uv_size": [1, 4]}, + "up": {"uv": [16, 6], "uv_size": [1, 1]}, + "down": {"uv": [16, 8], "uv_size": [1, -1]} + } + }, + { + "origin": [1.825, 25.2, -0.5], + "size": [1, 4, 1], + "uv": { + "north": {"uv": [13, 4], "uv_size": [1, 4]}, + "east": {"uv": [13, 8], "uv_size": [1, 4]}, + "south": {"uv": [13, 12], "uv_size": [1, 4]}, + "west": {"uv": [14, 0], "uv_size": [1, 4]}, + "up": {"uv": [16, 8], "uv_size": [1, 1]}, + "down": {"uv": [16, 10], "uv_size": [1, -1]} + } + }, + { + "origin": [-0.7, 25.2, -0.5], + "size": [1.4, 5, 1], + "uv": { + "north": {"uv": [12, 0], "uv_size": [1, 5]}, + "east": {"uv": [12, 5], "uv_size": [1, 5]}, + "south": {"uv": [8, 12], "uv_size": [1, 5]}, + "west": {"uv": [9, 12], "uv_size": [1, 5]}, + "up": {"uv": [10, 16], "uv_size": [1, 1]}, + "down": {"uv": [16, 11], "uv_size": [1, -1]} + } + } + ] + }, + { + "name": "tentacle", + "parent": "handle", + "pivot": [1, -8, -1], + "cubes": [ + { + "origin": [-0.8, -7, -0.8], + "size": [1.6, 31, 1.6], + "uv": { + "north": {"uv": [28, 0], "uv_size": [2, 31]}, + "east": {"uv": [22, 0], "uv_size": [2, 31]}, + "south": {"uv": [26, 1], "uv_size": [2, 31]}, + "west": {"uv": [30, 0], "uv_size": [2, 31]}, + "up": {"uv": [26, 31], "uv_size": [-2, -31]} + } + } + ] + }, + { + "name": "tip_base", + "parent": "trident", + "pivot": [3, -4, -1], + "cubes": [ + { + "origin": [0.5, 23, -1], + "size": [1, 2, 2], + "pivot": [0, 24.5, 0.5], + "rotation": [0, 0, -45], + "uv": { + "north": {"uv": [12, 14], "uv_size": [1, 2]}, + "east": {"uv": [14, 4], "uv_size": [2, 2]}, + "south": {"uv": [15, 0], "uv_size": [1, 2]}, + "west": {"uv": [14, 6], "uv_size": [2, 2]}, + "up": {"uv": [15, 2], "uv_size": [1, 2]}, + "down": {"uv": [16, 2], "uv_size": [1, -2]} + } + }, + { + "origin": [1.5, 23, -0.5], + "size": [1, 1, 1], + "pivot": [0, 24.5, 0], + "rotation": [0, 0, -45], + "uv": { + "north": {"uv": [11, 16], "uv_size": [1, 1]}, + "east": {"uv": [16, 11], "uv_size": [1, 1]}, + "south": {"uv": [12, 16], "uv_size": [1, 1]}, + "west": {"uv": [16, 12], "uv_size": [1, 1]}, + "up": {"uv": [13, 16], "uv_size": [1, 1]}, + "down": {"uv": [16, 14], "uv_size": [1, -1]} + } + }, + { + "origin": [1.5, 27, -0.5], + "size": [1, 1, 1], + "inflate": -0.005, + "pivot": [0, 28.5, 0], + "rotation": [0, 0, -45], + "uv": { + "north": {"uv": [14, 16], "uv_size": [1, 1]}, + "east": {"uv": [16, 14], "uv_size": [1, 1]}, + "south": {"uv": [15, 16], "uv_size": [1, 1]}, + "west": {"uv": [16, 15], "uv_size": [1, 1]}, + "up": {"uv": [16, 16], "uv_size": [1, 1]}, + "down": {"uv": [17, 1], "uv_size": [1, -1]} + } + }, + { + "origin": [-1.5, 26, -0.5], + "size": [1, 1, 1], + "pivot": [0, 24.5, 0], + "rotation": [0, 0, -45], + "uv": { + "north": {"uv": [17, 1], "uv_size": [1, 1]}, + "east": {"uv": [17, 2], "uv_size": [1, 1]}, + "south": {"uv": [17, 3], "uv_size": [1, 1]}, + "west": {"uv": [17, 4], "uv_size": [1, 1]}, + "up": {"uv": [17, 5], "uv_size": [1, 1]}, + "down": {"uv": [17, 7], "uv_size": [1, -1]} + } + }, + { + "origin": [-1.5, 30, -0.5], + "size": [1, 1, 1], + "inflate": -0.005, + "pivot": [0, 28.5, 0], + "rotation": [0, 0, -45], + "uv": { + "north": {"uv": [17, 7], "uv_size": [1, 1]}, + "east": {"uv": [8, 17], "uv_size": [1, 1]}, + "south": {"uv": [17, 8], "uv_size": [1, 1]}, + "west": {"uv": [9, 17], "uv_size": [1, 1]}, + "up": {"uv": [17, 9], "uv_size": [1, 1]}, + "down": {"uv": [10, 18], "uv_size": [1, -1]} + } + }, + { + "origin": [0.625, 31, -0.5], + "size": [1, 1, 1], + "inflate": -0.005, + "pivot": [2.125, 29.5, 0], + "rotation": [0, 0, -45], + "uv": { + "north": {"uv": [17, 10], "uv_size": [1, 1]}, + "east": {"uv": [11, 17], "uv_size": [1, 1]}, + "south": {"uv": [17, 11], "uv_size": [1, 1]}, + "west": {"uv": [12, 17], "uv_size": [1, 1]}, + "up": {"uv": [17, 12], "uv_size": [1, 1]}, + "down": {"uv": [13, 18], "uv_size": [1, -1]} + } + }, + { + "origin": [-1.5, 23, -1], + "size": [2, 3, 2], + "pivot": [0, 24.5, 0.5], + "rotation": [0, 0, -45], + "uv": { + "north": {"uv": [10, 0], "uv_size": [2, 3]}, + "east": {"uv": [10, 3], "uv_size": [2, 3]}, + "south": {"uv": [10, 6], "uv_size": [2, 3]}, + "west": {"uv": [10, 9], "uv_size": [2, 3]}, + "up": {"uv": [14, 12], "uv_size": [2, 2]}, + "down": {"uv": [14, 16], "uv_size": [2, -2]} + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/rpo_launcher.geo.json b/common/src/main/resources/assets/antarchy/geo/rpo_launcher.geo.json new file mode 100644 index 00000000..07451faf --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/rpo_launcher.geo.json @@ -0,0 +1,287 @@ +{ + "format_version": "1.21.110", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 256, + "texture_height": 256, + "visible_bounds_width": 9, + "visible_bounds_height": 3, + "visible_bounds_offset": [0, 0.5, 0] + }, + "bones": [ + { + "name": "RPO_Launcher", + "pivot": [0, 6, 0] + }, + { + "name": "all", + "parent": "RPO_Launcher", + "pivot": [0, 6, 0] + }, + { + "name": "bazooka", + "parent": "all", + "pivot": [0, 7, 0], + "cubes": [ + { + "origin": [-6, 1, -46], + "size": [12, 12, 84], + "uv": { + "north": {"uv": [84, 84], "uv_size": [12, 12]}, + "east": {"uv": [0, 84], "uv_size": [84, 12]}, + "south": {"uv": [84, 84], "uv_size": [12, 12]}, + "west": {"uv": [84, 84], "uv_size": [-84, 12]}, + "up": {"uv": [0, 84], "uv_size": [84, 12], "uv_rotation": 90}, + "down": {"uv": [84, 84], "uv_size": [-84, 12], "uv_rotation": 90} + } + }, + { + "origin": [-8, -1, -52], + "size": [16, 16, 6], + "uv": { + "north": {"uv": [28, 102], "uv_size": [16, 16]}, + "east": {"uv": [0, 102], "uv_size": [6, 16]}, + "south": {"uv": [6, 102], "uv_size": [16, 16]}, + "west": {"uv": [22, 102], "uv_size": [6, 16]}, + "up": {"uv": [6, 96], "uv_size": [16, 6]}, + "down": {"uv": [22, 102], "uv_size": [16, -6]} + } + }, + { + "origin": [-8, -1, 38], + "size": [16, 16, 6], + "uv": { + "north": {"uv": [6, 102], "uv_size": [16, 16]}, + "east": {"uv": [0, 102], "uv_size": [6, 16]}, + "south": {"uv": [0, 145], "uv_size": [16, 16]}, + "west": {"uv": [22, 102], "uv_size": [6, 16]}, + "up": {"uv": [6, 96], "uv_size": [16, 6]}, + "down": {"uv": [22, 102], "uv_size": [16, -6]} + } + } + ] + }, + { + "name": "center", + "parent": "all", + "pivot": [0, 7, 0], + "cubes": [ + { + "origin": [4.1, -7, -12], + "size": [0, 8, 12], + "uv": { + "north": {"uv": [12, 130], "uv_size": [0, 8]}, + "south": {"uv": [24, 130], "uv_size": [0, 8]}, + "west": {"uv": [12, 130], "uv_size": [12, 8]}, + "up": {"uv": [12, 118], "uv_size": [0, 12]}, + "down": {"uv": [12, 130], "uv_size": [0, -12]} + } + }, + { + "origin": [2.6, -10, 0], + "size": [3, 10, 3], + "uv": { + "north": {"uv": [114, 138], "uv_size": [3, 10]}, + "east": {"uv": [114, 138], "uv_size": [3, 10]}, + "south": {"uv": [114, 138], "uv_size": [3, 10]}, + "west": {"uv": [114, 138], "uv_size": [3, 10]}, + "up": {"uv": [111, 135], "uv_size": [3, 3]}, + "down": {"uv": [114, 138], "uv_size": [3, -3]} + } + }, + { + "origin": [-7, 0, -3], + "size": [14, 14, 6], + "uv": { + "north": {"uv": [94, 102], "uv_size": [14, 14]}, + "east": {"uv": [88, 102], "uv_size": [6, 14]}, + "south": {"uv": [114, 102], "uv_size": [14, 14]}, + "west": {"uv": [108, 102], "uv_size": [6, 14]}, + "up": {"uv": [94, 96], "uv_size": [14, 6]}, + "down": {"uv": [108, 102], "uv_size": [14, -6]} + } + }, + { + "origin": [-1, 14, -12], + "size": [2, 2, 17], + "uv": { + "north": {"uv": [105, 133], "uv_size": [2, 2]}, + "east": {"uv": [107, 133], "uv_size": [-2, -17], "uv_rotation": 90}, + "south": {"uv": [124, 133], "uv_size": [2, 2]}, + "west": {"uv": [107, 116], "uv_size": [-2, 17], "uv_rotation": 90}, + "up": {"uv": [105, 116], "uv_size": [2, 17]}, + "down": {"uv": [105, 133], "uv_size": [2, -17]} + } + } + ] + }, + { + "name": "tentacles", + "parent": "all", + "pivot": [0, 6, 0] + }, + { + "name": "start_1", + "parent": "tentacles", + "pivot": [0, 7, 44], + "cubes": [ + { + "origin": [-2.5, 10, 42], + "size": [5, 4, 10], + "uv": { + "north": {"uv": [138, 106], "uv_size": [5, 4]}, + "east": {"uv": [128, 106], "uv_size": [10, 4]}, + "south": {"uv": [153, 106], "uv_size": [5, 4]}, + "west": {"uv": [143, 106], "uv_size": [10, 4]}, + "up": {"uv": [138, 96], "uv_size": [5, 10]}, + "down": {"uv": [143, 106], "uv_size": [5, -10]} + } + } + ] + }, + { + "name": "end_1", + "parent": "start_1", + "pivot": [0, 11, 52], + "cubes": [ + { + "origin": [-2.5, 11, 51], + "size": [5, 3, 9], + "inflate": -0.01, + "uv": { + "north": {"uv": [135, 139], "uv_size": [5, 3]}, + "east": {"uv": [126, 139], "uv_size": [9, 3]}, + "south": {"uv": [149, 139], "uv_size": [5, 3]}, + "west": {"uv": [140, 139], "uv_size": [9, 3]}, + "up": {"uv": [135, 130], "uv_size": [5, 9]}, + "down": {"uv": [140, 139], "uv_size": [5, -9]} + } + } + ] + }, + { + "name": "start_2", + "parent": "tentacles", + "pivot": [0, 7, 44], + "rotation": [0, 0, -180], + "cubes": [ + { + "origin": [-2.5, 10, 42], + "size": [5, 4, 10], + "uv": { + "north": {"uv": [138, 106], "uv_size": [5, 4]}, + "east": {"uv": [128, 106], "uv_size": [10, 4]}, + "south": {"uv": [153, 106], "uv_size": [5, 4]}, + "west": {"uv": [143, 106], "uv_size": [10, 4]}, + "up": {"uv": [138, 96], "uv_size": [5, 10]}, + "down": {"uv": [143, 106], "uv_size": [5, -10]} + } + } + ] + }, + { + "name": "end_2", + "parent": "start_2", + "pivot": [0, 11, 52], + "cubes": [ + { + "origin": [-2.5, 11, 51], + "size": [5, 3, 9], + "inflate": -0.01, + "uv": { + "north": {"uv": [135, 139], "uv_size": [5, 3]}, + "east": {"uv": [126, 139], "uv_size": [9, 3]}, + "south": {"uv": [149, 139], "uv_size": [5, 3]}, + "west": {"uv": [140, 139], "uv_size": [9, 3]}, + "up": {"uv": [135, 130], "uv_size": [5, 9]}, + "down": {"uv": [140, 139], "uv_size": [5, -9]} + } + } + ] + }, + { + "name": "start_3", + "parent": "tentacles", + "pivot": [0, 7, 44], + "rotation": [0, 0, -90], + "cubes": [ + { + "origin": [-2.5, 10, 42], + "size": [5, 4, 10], + "uv": { + "north": {"uv": [138, 106], "uv_size": [5, 4]}, + "east": {"uv": [128, 106], "uv_size": [10, 4]}, + "south": {"uv": [153, 106], "uv_size": [5, 4]}, + "west": {"uv": [143, 106], "uv_size": [10, 4]}, + "up": {"uv": [138, 96], "uv_size": [5, 10]}, + "down": {"uv": [143, 106], "uv_size": [5, -10]} + } + } + ] + }, + { + "name": "end_3", + "parent": "start_3", + "pivot": [0, 11, 52], + "cubes": [ + { + "origin": [-2.5, 11, 51], + "size": [5, 3, 9], + "inflate": -0.01, + "uv": { + "north": {"uv": [135, 139], "uv_size": [5, 3]}, + "east": {"uv": [126, 139], "uv_size": [9, 3]}, + "south": {"uv": [149, 139], "uv_size": [5, 3]}, + "west": {"uv": [140, 139], "uv_size": [9, 3]}, + "up": {"uv": [135, 130], "uv_size": [5, 9]}, + "down": {"uv": [140, 139], "uv_size": [5, -9]} + } + } + ] + }, + { + "name": "start_4", + "parent": "tentacles", + "pivot": [0, 7, 44], + "rotation": [0, 0, 90], + "cubes": [ + { + "origin": [-2.5, 10, 42], + "size": [5, 4, 10], + "uv": { + "north": {"uv": [138, 106], "uv_size": [5, 4]}, + "east": {"uv": [128, 106], "uv_size": [10, 4]}, + "south": {"uv": [153, 106], "uv_size": [5, 4]}, + "west": {"uv": [143, 106], "uv_size": [10, 4]}, + "up": {"uv": [138, 96], "uv_size": [5, 10]}, + "down": {"uv": [143, 106], "uv_size": [5, -10]} + } + } + ] + }, + { + "name": "end_4", + "parent": "start_4", + "pivot": [0, 11, 52], + "cubes": [ + { + "origin": [-2.5, 11, 51], + "size": [5, 3, 9], + "inflate": -0.01, + "uv": { + "north": {"uv": [135, 139], "uv_size": [5, 3]}, + "east": {"uv": [126, 139], "uv_size": [9, 3]}, + "south": {"uv": [149, 139], "uv_size": [5, 3]}, + "west": {"uv": [140, 139], "uv_size": [9, 3]}, + "up": {"uv": [135, 130], "uv_size": [5, 9]}, + "down": {"uv": [140, 139], "uv_size": [5, -9]} + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/tentacle.geo.json b/common/src/main/resources/assets/antarchy/geo/tentacle.geo.json new file mode 100644 index 00000000..f3e0a41a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/tentacle.geo.json @@ -0,0 +1,115 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 32, + "texture_height": 32, + "visible_bounds_width": 4, + "visible_bounds_height": 4.5, + "visible_bounds_offset": [0, 1.75, 0] + }, + "bones": [ + { + "name": "tentacle", + "pivot": [0, -3.05, 9], + "cubes": [ + {"origin": [-3, -3, 8], "size": [6, 19, 2], "uv": [0, 0]} + ] + }, + { + "name": "tentacle2", + "parent": "tentacle", + "pivot": [0, 16, 9], + "cubes": [ + {"origin": [-2, 16, 8], "size": [4, 14, 2], "uv": [16, 0]} + ] + }, + { + "name": "tentacle3", + "parent": "tentacle2", + "pivot": [0, 30.00833, 9], + "cubes": [ + {"origin": [-1, 30, 8], "size": [2, 8, 2], "uv": [0, 21]} + ] + }, + { + "name": "tentacle4", + "parent": "tentacle3", + "pivot": [0, 38, 9], + "cubes": [ + {"origin": [-3, 38, 8], "size": [6, 8, 2], "uv": [16, 16]}, + {"origin": [-2, 46, 8], "size": [4, 4, 2], "uv": [8, 26]} + ] + }, + { + "name": "tentacle_right", + "pivot": [-9, -3.05, 0], + "rotation": [0, -90, 0], + "cubes": [ + {"origin": [-12, -3, -1], "size": [6, 19, 2], "uv": [0, 0]} + ] + }, + { + "name": "tentacle_right2", + "parent": "tentacle_right", + "pivot": [-9, 16, 0], + "cubes": [ + {"origin": [-11, 16, -1], "size": [4, 14, 2], "uv": [16, 0]} + ] + }, + { + "name": "tentacle_right3", + "parent": "tentacle_right2", + "pivot": [-9, 30.00833, 0], + "cubes": [ + {"origin": [-10, 30, -1], "size": [2, 8, 2], "uv": [0, 21]} + ] + }, + { + "name": "tentacle_right4", + "parent": "tentacle_right3", + "pivot": [-9, 38, 0], + "cubes": [ + {"origin": [-12, 38, -1], "size": [6, 8, 2], "uv": [16, 16]}, + {"origin": [-11, 46, -1], "size": [4, 4, 2], "uv": [8, 26]} + ] + }, + { + "name": "tentacle_left", + "pivot": [9, -3.05, 0], + "rotation": [0, 90, 0], + "cubes": [ + {"origin": [6, -3, -1], "size": [6, 19, 2], "uv": [0, 0], "mirror": true} + ] + }, + { + "name": "tentacle_left2", + "parent": "tentacle_left", + "pivot": [9, 16, 0], + "cubes": [ + {"origin": [7, 16, -1], "size": [4, 14, 2], "uv": [16, 0], "mirror": true} + ] + }, + { + "name": "tentacle_left3", + "parent": "tentacle_left2", + "pivot": [9, 30.00833, 0], + "cubes": [ + {"origin": [8, 30, -1], "size": [2, 8, 2], "uv": [0, 21], "mirror": true} + ] + }, + { + "name": "tentacle_left4", + "parent": "tentacle_left3", + "pivot": [9, 38, 0], + "cubes": [ + {"origin": [6, 38, -1], "size": [6, 8, 2], "uv": [16, 16], "mirror": true}, + {"origin": [7, 46, -1], "size": [4, 4, 2], "uv": [8, 26], "mirror": true} + ] + } + ] + } + ] +} \ 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 b6e5d521..c340bff9 100644 --- a/common/src/main/resources/assets/antarchy/lang/en_us.json +++ b/common/src/main/resources/assets/antarchy/lang/en_us.json @@ -41,6 +41,7 @@ "block.antarchy.pink_milkweed": "Pink Milkweed", "block.antarchy.camellia": "Camellia", "block.antarchy.spider_lily": "Spider Lily", + "block.antarchy.giant_lily_pad": "Giant Lily Pad", "block.antarchy.hushweed": "Hushweed", "block.antarchy.umbral_moss_block": "Umbral Moss Block", "block.antarchy.umbral_moss_carpet": "Umbral Moss Carpet", @@ -152,6 +153,12 @@ "block.antarchy.lumen": "Lumen", "block.antarchy.lumen_froglight": "Lumen Froglight", "block.antarchy.roseate_froglight": "Roseate Froglight", + "block.antarchy.star_coral": "Star Coral", + "block.antarchy.star_coral_fan": "Star Coral Fan", + "block.antarchy.star_coral_block": "Star Coral Block", + "block.antarchy.dead_star_coral": "Dead Star Coral", + "block.antarchy.dead_star_coral_fan": "Dead Star Coral Fan", + "block.antarchy.dead_star_coral_block": "Dead Star Coral Block", "entity.antarchy.apple_cow": "Apple Cow", "entity.antarchy.golden_apple_cow": "Golden Apple Cow", "entity.antarchy.enchanted_golden_apple_cow": "Enchanted Golden Apple Cow", @@ -201,6 +208,9 @@ "item.antarchy.cloud_shark_fin_soup": "Cloud Shark Fin Soup", "tooltip.antarchy.cloud_shark_fin_soup": "Grants Strength and Slow Falling.", "item.antarchy.kraken_tooth": "Kraken Tooth", + "item.antarchy.kraken_tentacle": "Kraken Tentacle", + "item.antarchy.krakens_grasp": "Kraken's Grasp", + "entity.antarchy.tentacle": "Tentacle", "item.antarchy.basilisk_fang": "Basilisk Fang", "item.antarchy.basilisk_dagger": "Basilisk Dagger", "item.antarchy.blood_crystal_block": "Blood Crystal Block", @@ -222,6 +232,7 @@ "item.antarchy.dream_torch": "Dream Torch", "item.antarchy.dream_lantern": "Dream Lantern", "item.antarchy.dream_campfire": "Dream Campfire", + "item.antarchy.giant_lily_pad": "Giant Lily Pad", "item.antarchy.nightmare_scale": "Nightmare Scale", "item.antarchy.nightmare_helmet": "Nightmare Helmet", "item.antarchy.nightmare_chestplate": "Nightmare Chestplate", @@ -377,6 +388,7 @@ "item.antarchy.antiwater_bucket": "Antiwater Bucket", "item.antarchy.reverie_bottle": "Bottle of Reverie", "item.antarchy.squidzooka": "Squidzooka", + "item.antarchy.rpo_launcher": "R.P.O. Launcher", "item.antarchy.shrink_ray": "Shrink Ray", "item.antarchy.growth_ray": "Growth Ray", "tooltip.antarchy.shrink_ray": "Permanently shrinks targets. Hold down to charge.", @@ -823,6 +835,8 @@ "advancements.antarchy.growth_ray_craft.description": "Craft a Growth Ray.", "advancements.antarchy.squidzooka_craft.title": "Ink and Destroy", "advancements.antarchy.squidzooka_craft.description": "Craft a Squidzooka.", + "advancements.antarchy.rocket_powered_octopus.title": "Rocket Powered Octopus", + "advancements.antarchy.rocket_powered_octopus.description": "Craft an R.P.O. Launcher.", "advancements.antarchy.gravity_gun_craft.title": "Pick Up Artist", "advancements.antarchy.gravity_gun_craft.description": "Craft a Gravity Gun." } diff --git a/common/src/main/resources/assets/antarchy/models/block/dead_star_coral.json b/common/src/main/resources/assets/antarchy/models/block/dead_star_coral.json new file mode 100644 index 00000000..aa26a0de --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dead_star_coral.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "antarchy:block/star_coral/dead_star_coral" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dead_star_coral_block.json b/common/src/main/resources/assets/antarchy/models/block/dead_star_coral_block.json new file mode 100644 index 00000000..d42fdd91 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dead_star_coral_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/star_coral/dead_star_coral_block" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dead_star_coral_fan.json b/common/src/main/resources/assets/antarchy/models/block/dead_star_coral_fan.json new file mode 100644 index 00000000..5794c397 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dead_star_coral_fan.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/coral_fan", + "textures": { + "fan": "antarchy:block/star_coral/dead_star_coral_fan" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/dead_star_coral_wall_fan.json b/common/src/main/resources/assets/antarchy/models/block/dead_star_coral_wall_fan.json new file mode 100644 index 00000000..3a80e1a7 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/dead_star_coral_wall_fan.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/coral_wall_fan", + "textures": { + "fan": "antarchy:block/star_coral/dead_star_coral_fan" + } +} 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 new file mode 100644 index 00000000..1be5b2e8 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/single/single/0.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..24c0e389 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/single/single/180.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..7c89781b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/single/single/270.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..d503c194 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/single/single/90.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..8f64a9d7 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_left/0.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..7eb8f5a6 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_left/180.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..01c79f1e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_left/270.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..f01d345e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_left/90.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..9951581b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_middle/0.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..b194f7a4 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_middle/180.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..99972a5f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_middle/270.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..d44dfc84 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_middle/90.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..ff296a2d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_right/0.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..bda1dd71 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_right/180.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..df5dc055 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_right/270.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..e49f458a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/bottom_right/90.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..177b9da5 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/center/0.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..2d0df505 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/center/180.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..7f32de5e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/center/270.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..0497bf63 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/center/90.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..1388a75f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_left/0.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..af8d7087 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_left/180.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..9b90ec6b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_left/270.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..66f40fa3 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_left/90.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..d0f6b288 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_right/0.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..ed857a25 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_right/180.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..bddcd717 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_right/270.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..0e61ca5a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/middle_right/90.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..fec4034c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_left/0.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..0fbefb4d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_left/180.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..3d48d8f2 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_left/270.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..36f30846 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_left/90.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..ab445e79 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_middle/0.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..53efae6a --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_middle/180.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..c3424e5f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_middle/270.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..1c896803 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_middle/90.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..148672a1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_right/0.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..73e41711 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_right/180.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..e9869984 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_right/270.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..6b4aad17 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/three_by_three/top_right/90.json @@ -0,0 +1,43 @@ +{ + "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/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 new file mode 100644 index 00000000..b4aabc6e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/bottom_middle/0.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..3400a4b0 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/bottom_middle/180.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..f3fcef58 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/bottom_middle/270.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..9339f8be --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/bottom_middle/90.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..a9c29c20 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_left/0.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..cf003f59 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_left/180.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..6e2049ac --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_left/270.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..dbca2d2d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_left/90.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..b4aabc6e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_right/0.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..3400a4b0 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_right/180.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..f3fcef58 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_right/270.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..9339f8be --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/middle_right/90.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..a9c29c20 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/top_middle/0.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..cf003f59 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/top_middle/180.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..6e2049ac --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/top_middle/270.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..dbca2d2d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_one/top_middle/90.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..7f91e262 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_left/0.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..50666a30 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_left/180.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..16776bb5 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_left/270.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..339aa8a2 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_left/90.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..1af763ba --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_right/0.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..1d0e4305 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_right/180.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..816c803e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_right/270.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..f1f585be --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/bottom_right/90.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..f697d02d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_left/0.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..e34709da --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_left/180.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..8b7be027 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_left/270.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..81c6ad6f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_left/90.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..5a64c7b5 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_right/0.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..27ac0754 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_right/180.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..020f177c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_right/270.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 00000000..3a667888 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/giant_lily_pad/two_by_two/top_right/90.json @@ -0,0 +1,43 @@ +{ + "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/star_coral.json b/common/src/main/resources/assets/antarchy/models/block/star_coral.json new file mode 100644 index 00000000..e8c9751f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/star_coral.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "antarchy:block/star_coral/star_coral" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/star_coral_block.json b/common/src/main/resources/assets/antarchy/models/block/star_coral_block.json new file mode 100644 index 00000000..7285193c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/star_coral_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/star_coral/star_coral_block" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/star_coral_fan.json b/common/src/main/resources/assets/antarchy/models/block/star_coral_fan.json new file mode 100644 index 00000000..f9921dbf --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/star_coral_fan.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/coral_fan", + "textures": { + "fan": "antarchy:block/star_coral/star_coral_fan" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/star_coral_wall_fan.json b/common/src/main/resources/assets/antarchy/models/block/star_coral_wall_fan.json new file mode 100644 index 00000000..9db77296 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/star_coral_wall_fan.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/coral_wall_fan", + "textures": { + "fan": "antarchy:block/star_coral/star_coral_fan" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/dead_star_coral.json b/common/src/main/resources/assets/antarchy/models/item/dead_star_coral.json new file mode 100644 index 00000000..12f6c85b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/dead_star_coral.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:block/star_coral/dead_star_coral" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/dead_star_coral_block.json b/common/src/main/resources/assets/antarchy/models/item/dead_star_coral_block.json new file mode 100644 index 00000000..4867c42e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/dead_star_coral_block.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/dead_star_coral_block" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/dead_star_coral_fan.json b/common/src/main/resources/assets/antarchy/models/item/dead_star_coral_fan.json new file mode 100644 index 00000000..7802084f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/dead_star_coral_fan.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:block/star_coral/dead_star_coral_fan" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/giant_lily_pad.json b/common/src/main/resources/assets/antarchy/models/item/giant_lily_pad.json new file mode 100644 index 00000000..c325d587 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/giant_lily_pad.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:block/giant_lilypad/giant_lilypad_1x1" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/kraken_tentacle.json b/common/src/main/resources/assets/antarchy/models/item/kraken_tentacle.json new file mode 100644 index 00000000..a2303ac6 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/kraken_tentacle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/kraken_tentacle" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/krakens_grasp_gui.json b/common/src/main/resources/assets/antarchy/models/item/krakens_grasp_gui.json new file mode 100644 index 00000000..8b08084b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/krakens_grasp_gui.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "gui_light": "front", + "textures": { + "layer0": "antarchy:item/krakens_grasp/krakens_grasp_item" + } +} 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 new file mode 100644 index 00000000..15217a4d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/krakens_grasp_held.json @@ -0,0 +1,121 @@ +{ + "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 diff --git a/common/src/main/resources/assets/antarchy/models/item/rpo_launcher_gui.json b/common/src/main/resources/assets/antarchy/models/item/rpo_launcher_gui.json new file mode 100644 index 00000000..035aa419 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/rpo_launcher_gui.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "gui_light": "front", + "textures": { + "layer0": "antarchy:item/rpo_launcher_item" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/rpo_launcher_held_geo.json b/common/src/main/resources/assets/antarchy/models/item/rpo_launcher_held_geo.json new file mode 100644 index 00000000..b624f476 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/rpo_launcher_held_geo.json @@ -0,0 +1,98 @@ +{ + "parent": "builtin/entity", + "texture_size": [ + 256, + 256 + ], + "display": { + "thirdperson_righthand": { + "translation": [ + 4, + 0, + 0 + ] + }, + "firstperson_righthand": { + "translation": [ + 1.5, + -1, + 3 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "firstperson_lefthand": { + "translation": [ + 1.5, + -1, + 3 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "ground": { + "translation": [ + 0, + 3, + 0 + ], + "scale": [ + 0.25, + 0.25, + 0.25 + ] + }, + "gui": { + "rotation": [ + 30, + -135, + 0 + ], + "translation": [ + 0.4, + -1, + 0 + ], + "scale": [ + 0.175, + 0.175, + 0.175 + ] + }, + "fixed": { + "rotation": [ + 90, + -45, + 90 + ], + "translation": [ + 0.5, + -2, + 0 + ], + "scale": [ + 0.25, + 0.25, + 0.25 + ] + }, + "on_shelf": { + "rotation": [ + 90, + 0, + 90 + ], + "scale": [ + 0.25, + 0.25, + 0.25 + ] + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/models/item/star_coral.json b/common/src/main/resources/assets/antarchy/models/item/star_coral.json new file mode 100644 index 00000000..a1caf1d1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/star_coral.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:block/star_coral/star_coral" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/star_coral_block.json b/common/src/main/resources/assets/antarchy/models/item/star_coral_block.json new file mode 100644 index 00000000..a8f8a15d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/star_coral_block.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/star_coral_block" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/star_coral_fan.json b/common/src/main/resources/assets/antarchy/models/item/star_coral_fan.json new file mode 100644 index 00000000..4659f552 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/star_coral_fan.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:block/star_coral/star_coral_fan" + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_1x1.png b/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_1x1.png new file mode 100644 index 0000000000000000000000000000000000000000..f9d4c1e8b05b47d92fc79811ebd0da98c69a6b7b GIT binary patch literal 456 zcmV;(0XP1MP)ucc?fyWqVyFBYXpMN2g?CNUk%2Y`HTof#iJm_yqLNNz z@xRB~R-$w@o*S9F#Q;R3heRm)BssO^l~~=)#L7-&1o>yFBCEteZ#&WVS7}3w9thFH zy%A7AIqllfh~5XOxj>y?79EE)jt{!1ib;<-J_#B&DU0h=NICpF=*a zY?!X~En%HYG(tcE^zyd@-eZf6fIXPL754vQfAU%gBEAW#qil-p8q znE_KKsWBdALI}r*)+IH2K#>CQCN)>&B0U!(Z#MDZTmt*2l{zPtHqMq5_kS$kIW7d~ yA6~>wof%2`1pom5|0FRL>;M1&21!IgR09AWy4g9wlEzv90000ZtZO&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 literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..b4406ca155506bb7f230422377e5738926675956 GIT binary patch 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-+6wmfSsqSu47p6b0amO)!uEf(j%W3M48-MMXhD&GYbF)JRZJA<z zcH`Tl<(EIs7RA&$1h{gNuXex}ove2BNHxX+w{PA*r0?LIyn4LAQvTilZj>pW%hfyI zJX%TW1y^1^U+eU*hbu2i^_^$$7&W*v7X@o^cKlU$8ctShA8>H5y>(^O4)^MtPi_6g z#popT+4znWqXbEe{owxDBGIrfy>cA)kZfSQ`tvKqL3sGXi-RW@)EAkZ{U(C5aEp?dkDf;L~HxJuv>>1VtkP)0r5=aI3E7HKJK{&@ho>baY&s9@H zE+oGv=r7JsCp*>!dLTtpAdfb7_@}R(M*Uy1=BH;ZI)_=T z=buYBz&Lv6^`{Lzg}PZvN8rU1JyJ3HR&z0&*}IW3RGhMg}!MOB=q=fj<_Y^cSoI{)!aiOOxv34_p~n z2k89a)!(SKZgxTX# zEQxvS)tA_o47Z;8%qM?#cy*>+`>{Y?6cQ^8shJa~e!g>d`-~*7#_0y?dHf(ocBmt# zA8xhB0=CJ$N|9Mn#l#gRX9!2E^K#nNkIzm_9(0>82Weh5j0Gqa_kO?l=e$0?%I&(w zX(W~b=@o{qcGdUADvy3{0h`t42nHgTWm&3Tc^VotyvWLlkKFRl>eQaILtMX+)qCYS zDV9dFM1w#bTn-=1t|0#wY8@PQ`kM#%JJu)Q^u3t(4V&Z?X6J-5yvEO3W7OGwAtLv| zq4Y)81-23mBqo{cNWA-F_XXpROgwg%slRn7>jF;SQ&6B@C-w}z;MRhdT>b1Uxvv&p^0EZmuw*c+v3{6y`u%Q6%mDO?Ex!TkKyq@z zU9UA}dH9vXo?*R03EK49?mwMk8%TrLku%@En7WDYlNPRn>(7Ro=g`>~7O2ENq~emQ zUjuex;?QkAToRw0Asn&J%OPZVoUwpA&j{)g@wt<=c>JUo*K zd^xk)^@WQQj3;2DI&^}**vyL60da8*O0Vd=#J2psPUkt?)QB7l#IQ*8O74ZiA?x4< z-~)G_JQTIg$ocikl0)4(eY|yn4DZwhIt*8vWGPn$SDeJD%k#~U{KS$^_85+3X8v^n zq>7MplCd?YJOfv|>wUqkIDdN31N{uY^%T|x>RV}^2B|=bRjH^Lq%j$r#IYbh(D~I7 z8~X05i1C2~6Qk>&SbY2y>jKr;^*?Vv8252B?7=6t#!u8`*(vOt+E()&ZNVeK)zib^ zxyo|c;xk-WAWcI~A-2;1MLSR20CgZf1CdbmnlDdWZ4$PI?*0o47_MF?#XzDM9q1YY zyCMTsAAYszaxF!&p&l69qM2t_V_m?25`ga7L?=P96v2s3-oA0VXnyy%2dk6=xL{Bm zeDz7bD)o>Ph{+A&C)cl(j4fn)@f4$1C|+$kE;&OVQa*mA;o)#~=Q?JbeFj&1c82Uif;`tE2-yE`-BRx72?C p00960GCd**00006Nkl8wuQB&*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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/block/lotus.png b/common/src/main/resources/assets/antarchy/textures/block/lotus.png new file mode 100644 index 0000000000000000000000000000000000000000..370266d77f07c5bf38dc494f59185e3748f304bc GIT binary patch literal 401 zcmV;C0dD?@P)Px$OG!jQR5*?8kuggGaTvybe>eyX?*xYoL`iV-L>wZ7hGq#tH=(7aMn8fdq0yEW zp(XrH74H0*32Wm%w&~kU;(GdL`jyq0}K0x$L@9@6Q`+J`k{`ChW(!k6x<1(wzn*YwyvzoweG7o(f1+&$W1)oY{a zYSfb~764EH-fo`>+yhj{_MzA2X@UHjyR3R`9NS0J)rc~c^T;+UC`)S^-8|0qrKYQt zIyGJ{CTz`JK4zbM+didEEuuTVIuihfK9nN8AtV4zSJwh`O)skBAuI7F$M#9(649;e v3buzI2(?B4aCdqs!*_-h;daONBm7W5X;GE)<;?}s00000NkvXXu0mjf<4UQe literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/block/star_coral/dead_star_coral.png b/common/src/main/resources/assets/antarchy/textures/block/star_coral/dead_star_coral.png new file mode 100644 index 0000000000000000000000000000000000000000..c457c8a48ecf01c0b89b991d3f7aead86fb10655 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~p#Yx{S0J5{ zl3bFN)>d6Ub8_#J1#`Ymz84A5tC**vb>Cwj=C8ik6$w_f<0a%PwlV8J})> z;=ts`9}t+)Q`URwmFSGx_Odljhx1>aQ7helaK@5~>YG)p6%4z47$+|cxX=T%kipZ{ K&t;ucLK6V@@l(10 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/block/star_coral/dead_star_coral_block.png b/common/src/main/resources/assets/antarchy/textures/block/star_coral/dead_star_coral_block.png new file mode 100644 index 0000000000000000000000000000000000000000..82670cf5c8a83f75abec7447dac96c942b12f9da GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~p#Yx{S0J5{ zl3bFN)>d6Ub8_#J1#`Ymz84A2Gjg#Q@-RJK z@&Es)#P16NlCHd1TH|kF$S#x_aLeR*zE43<_060%k3;51qx~dH-X|}4&{k}fIoWRe z?8TF}T@(9$;%kB1ZjpOa-J0J=9{zIcd6Ub8_#J1#`Ymz84AZ literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/block/star_coral/star_coral.png b/common/src/main/resources/assets/antarchy/textures/block/star_coral/star_coral.png new file mode 100644 index 0000000000000000000000000000000000000000..a6ca10b415cef2cd5f13d01cd66fd9f3dd52b1ba GIT binary patch literal 1180 zcmV;N1Y`S&P)Px(R!KxbR9J=WRy|B3R}lW5e>&sECj)D-OX3w0_-JsBNKk+kA(tl+M>LVRItAiV zQE>I8pyCh(^&wq@WLdh>vLeVyAQ8?qIf4|~fnDU~M=WdT7Cb4I_q=Ni^+jSTduHCu z_kHs`e!&02@{@h!{a(%~RL&^`0D*Q1tu{Us6gg*eNm7)shy?&3DK#D~Vi*p_hk~G` zVTx-K48uV>Z!lld*<4b<@^<4sS{kOax#YbjA#WE&34@k~>AYeCrKXP`>{_m}a!wHx z48uW)2mko%7J!4e<^}*Doi|v1vX7Ed1AvWkPNCt6H~?U8^Bn2C!9u*tk1wAISXDb9 zKIckDEI-*t!xIwX8gO2*eHt(?=cLqtqJ+`4TxHysD;+VeLF-{LgFYeHqQk| zj;3k{gs6%V#)nTg=vuA{3ckz0p~p1|?AJXJd-t76YK#d{+uj2nd}pcj^WDfc|Mg!s z-MW8SeHpxyJ9ihpZV}q~UVqlvy=q^tt&AmnL>Az5zO z2TG*zXc5zNFw!5y!NMTL)Cf$|!Bp|YFXHx$B4ByDao@qhAZ^bm5AOrhbRf%N94riy zrC$SEO&>ovx@NFKwntDfO$Q+!{PUk%z;qB(-2ebg6;Ig8Sb~&D1Hd&3*&a%L9|HjF z?^u{Bp0E(_lKnvvu#D^GKA7FAv6Zm|rPK&wDq!i?J`I?cvl3}QmctlbGZ^>HZq*pq zp!Kkr!t7R!)oc=-SH==F(jP?4CU6l2&AWRbMD&UhQzP!&;dXla<%AV_duV$`Axpm& z2)!1VDxR>9yEiaR2m3pg;Kfk(7*ySO5UD&f7>w=09(JM-a*6q&yPM}x2Cet;U>hmeOs+AmU z966fGWl)GJC1WU*>WD7xx8DaGdWY5x_REHdy?@b5-#lxI+V&ps;QI^E)E&>?D?x7< uhZneKzG}P^pL^vph{Fq@o$uAIi{w907<3;a+?V120000Px)%1J~)R9J=WmS1lhRT{>B=ge4%QrFWNoa{IqH`t0mAxIl5iL`V{q);kxL8S$> zS_z4-z$MrD5PS)4c99U56(ZS6ixM_vrEIq-vI#b^NrJ~?d(+s-%;92kPMo%U0aRa& z=RNQ9K7Y;}9dYz=N#)B9|M;TK%Dlz%p6j8a=n6_sLJ(vCXf)2KMH2D%JGT@-JyZY` zU16G!s}Y;KG4)XK;hQ%3vID?zH8ORv^M0T6Cv`qq=yT&dqodXtD^QKu-4T20>X1?s0uTjgC zdbx@QUB0hbipa7atYF5D!1}Loe+1`t3Mv8ljHf}KsKv?gay7>I= zAJo=Q;<=4WvuTvudoe*a!S^#}a*$1!TXqru`Y2F(v2NCjfGZ%HrDhsrlT^Yeec+jC zPs2t@NeU{;$N7!L?7w<8KYgB_BSnx+ zj7+=W2pWAsV=o@rjSgYGZyEr$eoD`Sf+O&K+xTJ!*@Q-4vNUVaYMtR09peGO@=Zmf zFSxg8n*_G^e&altTXs#ert13{v`n{{#rHF2w=T_ENIhMDX}Y1{2b6O(J*K z98Sa>Pn?Zs;_?$GTiT#@jSj5%#Sp?5H#cQBywphdT* z5MSTDsQ~udsf-y9DwQ19%Tx5KhwSWh*>A&N?xgPkdeuWy7xlmT>Z_{t+{Q{J2f)rw zm-3Amr{ogVLaH5$@{O3_&Z~&-Cv!?K*3Ehma0NuO)J)4a;#9&Yec+jCPsoXp#-Of=cjL~Wh2u~%i{JDrAVdC@zB_wONbF^9mCQeV7T%5rhKj%p_z+Nk-)2^4N zXxx7cr1}73TIJ$-|9%&+a4t-&08%&is)xoLr{vPB9vYBK@bnkeLQ|8Y#sP*+R0|D= z2A}a@^@G_f1EkJWyAIH}|CnmWVrQpoGOtu}?6)yY^kD0qiLrHW{M;D$&3^}|i}PT= z4Nsy0-uOA!%TxU4-))qTv|8yq0J-13)U@Be%vZ;?-%cZI+<(lBm;Nu`h>c8p#v`S_ z(|u+)>IQ(Xs+QRc+JkDxO1E;gV^OK(h-x9homY(qdQ<7TPGHopE9b#zv!?2lT(r#V z1?W98|oyY8(30000Px&21!IgR9J=WmceS9?iox22NOWM|)g(N#*5Z+~tofTC8k>s25@zh9h0 z&$>%#V%MugqlA82s-jlBIEixCXq4n+?Gywl%jDC`1z=$8b^;LuDLeZ%7bg+XD8a5* zSBQ4Kx+w2#N4*lE_3l!d&_AV`6%sNa@qw-bmyJbos5hdcW=eNe_`^&waO zk{IlE0&#k|AQ~k|Y0_!d)XBesoqd~Vln?|dIu9UptEZO>{8-^x0zb}9(X+BW^kc%NCNw>A3x~&c6I40YB){Cx=WAe}M z*%%O7aeL1q_NM??UWMUV{H(jNIi*H~kHKUm)n*7t)oGz5Tu=qLd1C|rq`*EF8i z=JTNBmhlfA zO=w(I7{>84HxpZ9<47!)SP&$e0V^UD1Pk?J;lhP0LB(aEE=0tFE|t1)p->Tbg|53* z7cN}*QK=vnM0Al&5DPIFYHS)!t!bRz-(lY2i;|P z(nr1Sb7!`|d*JcYy;1b14VvcMW`8iSAqEM2ak5HZzA>53JvpDDdFP*BOrvOAXJ~F* zC)(!t=vVIY_pd(gG4@SQrAMB9B6W{HmT2CCk3O7U`Qf1<%!50P`Q{oQ^GpQR5(O<*QcWG49`rZYHb!b=Fxj3O#AzPm z*B^gQaMxv@#>Umn1iDFOTbvta=jL+!?%A0{^I#0_JbXu*yk{aq^GxU*KA1pDf`z4_U(Yji4MQrKX=)ZyhFSiN4qiff#^I{+Pi z47Q-V&eX5)@SQit^(~Bumu*hKb_cO&^tI)LoJ6ts{AZ_H_doSo>zT9vr=xHEk&eB) znx6h}Bh#*nHz!-~TwG)B_y;{iKPM2yri}$BrYBPngSTsaJNSku;eC60fBN**zXnrj zUKlxn=x8OeGQX4}5#DzAJAd)a$(}z(9$Rlf<7pmV{Nzxw8=&o$c^FEdQy0`scQ)U> zMBswEB_74yjvq=Oc3`&)D=tY}(A;vHzUo% z!i6_m=t--*9yJx7$|Eqj?ct;I89;K8`2GHj^+85#MdQWd{@x;_jn$ zF^^MJH_a>K(bw*UTmu$0$pWAQJ3*`P*a4a+hDe0w?}h4@^RMT^InaGM7muRh1upJ_ zsyPaj=81tusr9iFw*UYD|Nl1=$8-Py00v1!K~w_(@(!AB#xRBv00000NkvXXu0mjf DpN>C) literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/item/cheep.png b/common/src/main/resources/assets/antarchy/textures/item/cheep.png new file mode 100644 index 0000000000000000000000000000000000000000..39b5499ac49541fc57bc398d11ccba0e2677c001 GIT binary patch literal 581 zcmV-L0=oT)P)Px$|4BqaR5*=|l09e>VHn4MmmU(oQWDcbsz!$n(X<4iMh8XFYOMqXmpC}6=uqks zF|%%pK@bsKigf5;_aJ_NSaDGitr`tjh&iN3X+CHp%|(uT9WM7K*JSXSo)_N#$Mb(4 zg)S9OjthUl2SBy5iqiu;e>AJK|5et5$0m|uV@L&HF;`(A8UUcKn;l>P&w6ETVVSya z0#K_oWM8eUb~D>@5KoSafoOobZlWzL6CUgX=;(jEeARt~JtvNd@L(VQH=8?Dwktl@ z``)+v66Yd_E$(Kdryqcz3Xx4-@@s|*Trxqo3`rsh&POkck)D1I`Mdz+*9=M~oSr=; z!B3OV0N9s_18{uooT9dagKF2DxPIvY0O`yHmI`GuH)mQIq$X1Wz%wTZdA!oTQ#)_R zW&bJtUXBKE@a-){xtO>jP9_fU@nO!T>X11VR3R4Wg&ob!|F)RVub@t6rxZYJV++<1 zJCbU#2ESV1;SF9J+ynwNv<4*;Q~;x3VI5VtdhIN_Rv{D)a5p`}kQPL@>@CdaS30t} z@#T)<0eF&o+;O7*U0Wp>?73r+USgwuVxxXa_JP_CQj;l>ICEI4f1dkEwOGRtwq5=< zNi;xn3(35f3S~Zg{m%a3y}Zc2V>&w}H&iaxc+DS5Z6mo3$@y3<)&OV*`(O1BK@Y`a T(B~`I00000NkvXXu0mjfd!qS< literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/item/krakens_grasp/krakens_grasp.png b/common/src/main/resources/assets/antarchy/textures/item/krakens_grasp/krakens_grasp.png new file mode 100644 index 0000000000000000000000000000000000000000..1b802a2c47b52299089850ca572bd30b0a1f1f1a GIT binary patch literal 919 zcmV;I18Dq-P)S(FjTSA!O%!Dj5h#t0Ow(kpjA?#X&c~f^KEChz#&gfP=bp#^JLf*ssas#4Q5HWv zN48}W?Jb$!*Ik*8_A8n*N5ALbsk|6XrypfLo!^nCM<;}hGk@U{i}XsBmlvp_Wku>w zGOq36AA6Hp-o9#%=0O9=pw$`ehG5H8nNvJ`l&svI-GhE(t|( zJbhcCi&dWxmFCs}7FR`ePia9sF|0bCzSG31c>ejH4rUILP;`7PI++W%2EYlR05hVrLp7oDyej@21{K^}jXec`{#2QaHpZ zfSZQ3TN-nAJ8P8J1R;HA%_L{^_kcO~l}QQ+Xm`mE{SIKrW5kI-_7dd)8st2gH7U92 z3kd6fOiahg%6=ebtO8B@Z@Pc^0+_FbduetzVLai@ubfxi52pOEPx$j7da6R5*>5lDkVnQ5?rV$AloHZW0&s0Uk z5ZT%lpZ|pkC*kg{9y~4W0IaO7((Ct95k|Ilh4rrlo|blwQ*olPB)xtw72(F_Isg_k zaDHyw7#*7?r)7!8lDJg6gmYS!8~qM|UlZiCEPA2v4*PxI(zsN+QDX+Xoa&NzeWtOf zqqeo7Ivgb82PD$xvXm=LGcRE$nh>6HnVBgCt9HfN`Kg>lv+9tIHBAr-h7IdWiT)-F z9nBUF)3?~2O$-kO@pblboQjjV%zhu^*yMttU!PFd;6iZ+@ILMX@Kj$*x8DaqG?tVp z#aGzcIzTDChvE*9zt{#Kl{pdaR6fB*mh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/item/rpo_launcher_item.png b/common/src/main/resources/assets/antarchy/textures/item/rpo_launcher_item.png new file mode 100644 index 0000000000000000000000000000000000000000..e6999aed2a848f3174aff0528e090ea4ed3ec050 GIT binary patch literal 525 zcmV+o0`mQdP)Px$$4Nv%R5*>5lRs!0VHn1LCqkzV7col<5>CV^*p?oxkR?V0gSWV)gIpm_9V*tb zn`^+OgJcL9dk~0O8i-pU2`)*xX#9hS$xy_zNuXedz8%_=CSE8$)AxPw{&=77d0&OU zN)*ci&^$e%yR)S*ixS1M)W;(AvB*N&l$nb^oww!v=P$Dt1D@vT39Uwpie(YJ`G&4X zCy+$3ERMAY0RR=t!gF@a_4Rk6`HvIGsMo|u#rPj&B25cRJf4(v`i(e{g|sR4v53B& zcZGQWy>vPaAMg|>3efEmXyAMQHRsf{7xp5~U&wZkQZjRy5X0*4BYGf!C zvJ7mSief?Jb_OV>+FN(scn$b3SQalYy)62kyIXi@k(_Bw{+MU@ z^M literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/models/item/rpo_launcher.png b/common/src/main/resources/assets/antarchy/textures/models/item/rpo_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..72bee15ec0db470634c471e2a3a2063ca612064a GIT binary patch literal 5809 zcmY*dc{tSH_aD2sZ?6aN%+g%Y3H8D}2utTAyaL;;^GByWu3m>ZGmNCq-~R0}&S2_oT|IIlwe zp)wKYI2j1JSO6>I)EKUSn;CgQ)1{oRLl5$(upF%%cyxk@23BZ^chZ*Jz~==r{-rB2 zo%cN)D{yQ}%90JNi3{S>5$Q%$m`Yqs7((s=aF!US-c|u`iy4KfkYaZbauHxH0;6sK zZwQ*5@XLb`CK|nEUt~JZ1S55=t>TlYZ2Q>i!beiX7a$r2t!WOGl)^&! z$6p9o4ZsFLaozR5mLvF&@6%KN;Vsqq2;{@5NHfLW+^08W*(6Wa9Rk~gkJfaAN`f5u zyW9j~V1o!1mP+ZVAb4yP;AueikaI=OAizGbt4*6=rS`D{CQXUDe4xZiKQbhVkGWM? zVsA=v=HZ|Yc^WKtrKh#wv7mTZ7}=c-F$41HOvzZ4Qh@>h4~`<9jLETJ%0%ceGfooQ zKo+OQbVt&3MZwqqEGd(9#{j!9_&F!&aij{%&H8(_O2h^b|36EP>O^sh1`Ef9OM-|` zpxeZ{=yKiWI0~;+eP7#5MppHKa14NTzmzEqf$W zbRK@w0ARb^W{Y5tWIz?4z5FAU$OC%Ji2S_R6=`e0WTZI+4;VRI-DRc-cHiB3+vjz+ z=S&E*rw?y^>-QP|wbIY^9*i!H+4aapor*3aQvYSVX^uRR3G*H%Cls3p524W^@nhDR z!E=SQnFm!_mi_?#%I|ycvsYsVs#!JNxPX6sj2mw}*kjqrM6IM2MLX9&hou^dNkhzU z3PrJt_l#BC`=D&{dDliS_uD3>xqoD3`GK%=HuK=#tTp0OG&Oj*rn<~K1DU;&a@8r< zgc5J%!Z?Jl>@hotPZqe2a?gA1c5KZy(tn6eOH~7RNh1ECd!D=XccUNrm6s~zJtXJE z2crU##}Dmxmr9k%K}i+lEXZ7IcJOB5TuRzl^@e6wlKK$y`KFt*i7QQ~_aiUElB+9{ zf|=9>+kG}#o|!^xc>2vD;~O99M2bB3viT@azZkCj$Yxcs(vl>}sHwOi?fRX) zidMW9))0D}8`##z8(Qp)I9**QYz97IR2C`}DbH)z-B*ouN>;v+U9ljr(V{I)G~~9; zZ(o3MlQIZ{v$NS-?yEDIm22@~MYKA)@Ya)&_L^7v=bH^5{C^4<9sFP(swZSK4L6Tf z4*kH@8~5%x%vZ8(cXQp*LWjoa4;r4*GdZLlZfQ*JS=jT)TZnHzjIXpC+09muiGN8u z_iD(fKf2}y3E`t)AZSQ_qD~Q^#Qo2|QDq(nYAKr_O&n&+myO6P6~++!BqRkghDlZx zjccWBKkOQ#`AOk&J#;6jRLd7@vd%dcXfau+Jj>G2rHMeNSB}F+`6fv&Ixm7~n z9+6JWg19OEZD5qVR;u2fxIMPJgZ|MG)=^i?D6LsaC$xS~&I`o)gVcMX{Kk&=7*1!Vh-`UnmnWTc92#3Wy;WRH zm>d3KF?KK{zLeX))t4h}>l>{#-G6&%-Lo^F1xqXbML4|HvH7EJ5>^0O|2O^o%-ZYSD#a1HA9r} z>v~~+yH5%iajhxge73m|fkjTq(mcIychMyHO+pg8k9M<*Jf%H@8*i}D|I>MzKdh3= ztE8t->75@!6{*F6WkC+UIZHj(5;SFL+}v)DGeF^cXKr(mG0hKmXZ*OXtcx~OQS#fh zl{UHYY8=FoiV6{SpQ>pGf}@j>DBdxIV!TIhEb^F`1fiy^oY@8YUkFpU$WfZzN7dyu zMg05}YI1Jq4y#1-yEj32==o8?U7~(+?-f~s-KMX~cN-Uy#lL?V(@QCxP+uZi~^ zW5=f+GZ081zkMX~RrvVcIJemxpCThO^b6P3H_bj%))F`@Ne9>6*CUcWuOAxYwPGE{ zT#ZIG3%sek#n9K&7XN`d7KM2*f^M&H-TRF&fkz}oB}FHlNX^#Hoyqq9#|Y&j^ALl3 z!%BNpL3*8GuAyuO1%6Mz(4a%h>>(ss{yF24seRDCYYZZiy;IMJ6H-XxBCqIYVzLsh2&(Y}(y-!8g~d z(}nA_U;!a1%#Mf*j(;l`mO-^?qk(?Fgr_0ZaH^=eniOsLI7%q!Cf6QgZRU>EDX#1N z%>iw>sJT>xyWanr#mB10f)e~by8N?h8%^e&on(Bs=$e%&h`YRUF6)W<+V$}DsksiF z-IKJLyvE%Rhg+uij+2~~)C(hP`$;vauKO*~srmFQ@g)sy^q!QSkWRwjtQU*R2Kv5v zc1)wA)W#uPPbBcov{yW$Yn;ofP6nunvD+Hir_Ck{A-~9pk{00;M+1vCLvi2Z)n2Z@CB=cmWlQ8`R?xE-uquau4GTKyOS zNtpB@`hM`GJUl(D${oo4TL#Q9E>W6mTI_h-jYC7PE}U-`dJtEJMhp6I+$iwWn3}dC ztR;9luN1;_`8MUHBJwU>j*aJEL=<=wfJI$6Xcr1BJ-6p z(Y0NJMS)b$FvT7Ov#Jdi`K+2M3n9n)#li-`q+Xf(Hov@qrCMs~pu!!f95#v5=Pg{J zTMJ1&HCy)%mTE?Yl}&Pb--9b8ff4>G)8RVwBA9AzS6Hh<2Vkkf;1M;T^>Y(pD*;Ag z#CTmLEESXE58YU3+=+}M>+Ge(?O)`r6`9JeVFaGr$IDj&SvDN^EGy;zUT2AN`MT7u z7Af9&j%BI%eUrlLlozm#k?@AJ+}Vv>T2JF3*=u)aZfph zRfm1vnL~YHLe-ONXuLpwxr#-Ky~XVoH9d!0x9fx(ryNYqF&GGgPDcWqu4E z<2YRTmx0pQ-d2{qD(6w~2vs4~d6H$x=%@LYCtqST!xs5GFFJ{<&-M!M{oOE%(s0vH zqR%bZy_<6hC|a$8m2O057s~|-FqUUwHqWd4p+8CTC5=-bpE_}G?oTCpeD;LpqGru& zC?(D5wuh~};iD%_dFdq<tOo5b#y+_*}!J4Nq+Kv=KsYXOELd|C^(vAZv?PhA9?5w$qIH5^%DK4z))`leav zv{Qq-&DbjA8!AMx*~vjqKe$~|r*x|veH=gM?_>W94IrORw=IXXe^qo0&fLlh)Hs~V zwYnrOa+jW>;T1YRXd!bcp~3Fa#P5zqj-2!+?Rg0>?7zXK^f#KSk|8!88o?VM_p!M$ zZWEq_KcivC_*DHSE@g9Vb!JJ&C&BnT_@`VV3!w87gW`j+*2Tu4$$~?^f0q2cTdzra zCh+s4s{-E&-8k!IP+Uh#d*gaH$|6=0u9EOKmNSHDEGmtUFYW;nfbIM9vy(htwJWTO zx1E3f(LdC?yZsGiP9f03oE+;GiKWt)3cOP1=+5)`ic{Z>Kc~y+Xu7R~H)cTgUp<@2 z^AN|qyoU-oT^HD1J>x-Aixy0b!v`ANA3Ya9)sxr~jno&P)EEtu;O=A-cC z@$x72jIgcstGDV`h0z17x%4`7Y^Iai`-RhoiaI017cGi9D;v%l)i6eDf0{wJd3wQ^ z;*|UJzP1<<4rS09!xjzF+J)fF$cU|)+PbQktiK}E6TeLlWp5ZvEjq0dnX_$2x-+fh zh)hI|$NaW{hXZCByyX$L7^n`*tEq;W6j;DRYTG(wE^zZ@-VUFlhC{PTEWky#)z!S6gQf9rj*-uBApie1N% zBK;l|d{PgaS-NDjed@DfT2`YvMo2%Fy~_=!M4T&tNqH-H}$|%|>v> z6Zz@Jd8F=E1cyP{4M0wTv`^_@)x zA`u+0tkA;a@X3AkfL=2D2FALtqp;<>eUVALvrjM3yir;O0d+8^*ENUHN6fIX-XX^O=GfXmP&`eR*oP(|J{p=;_yRUp;z(@O-B zU;+Sp2KGw@9{U*FGqH8I%@FROik;laO7d4~^>wW>L}6eT0GS*I^v>_o3+&&J zQi%k1M})Z0*!g{WV>jqYR3Q*T(_8zpIuQYsq~x-%t#ZWU;Ol8>zakLK~YQxJm|^PqhL+ma{h^~Jg|R0U+H6tJq)UNR4yO|lamjUkY0FKZi)pp z!9t@j@MNGAS$_8vEQZMdw=xm^3S?c6eP=^H^c3AVP&wA7BADsE*omjbU4^Ov_W~S1 zM3Pelx?gmiXB(m)RKFj3L!5{Jd72LUyQETiK}23QQUyF&0LXMdGBrHmI8ZE{-cmR` z8OU#zbKeB3VCukLU3?>a0A>n0&T{3qV8}8c-I5K3$~^^ 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") + ); @Override public void onInitialize() { AntarchyFabricNetworking.register(); @@ -205,6 +213,11 @@ 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.addSpawn( BiomeSelectors.tag(APPLE_COW_SPAWN_BIOMES), net.minecraft.world.entity.MobCategory.CREATURE, 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 66211ecc..480bcd53 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java @@ -256,6 +256,10 @@ public final class AntarchyFabricContent { ); AntarchyObjects.setOctopusBomb(AntarchyFabricEntities.OCTOPUS_BOMB); + AntarchyObjects.setTentacle(AntarchyFabricEntities.TENTACLE); + AntarchyObjects.setKrakensGraspTrident(AntarchyFabricEntities.KRAKENS_GRASP_TRIDENT); + AntarchyObjects.setKrakenTentacle(() -> AntarchyFabricItems.KRAKEN_TENTACLE.get()); + AntarchyObjects.setKrakensGrasp(() -> AntarchyFabricItems.KRAKENS_GRASP.get()); AntarchyObjects.setOuranwoodDeer(AntarchyFabricEntities.OURANWOOD_DEER); AntarchyObjects.setGlimmer(AntarchyFabricEntities.GLIMMER); AntarchyObjects.setSpiritApple(() -> AntarchyFabricItems.SPIRIT_APPLE.get()); @@ -264,6 +268,9 @@ public final class AntarchyFabricContent { AntarchyObjects.setCorn(() -> AntarchyFabricItems.CORN.get()); AntarchyObjects.setCornSeeds(() -> AntarchyFabricItems.CORN_SEEDS.get()); AntarchyObjects.setWildCorn(() -> AntarchyFabricBlocks.WILD_CORN.get()); + AntarchyObjects.setStarCoralBlock(() -> AntarchyFabricBlocks.STAR_CORAL_BLOCK.get()); + AntarchyObjects.setStarCoral(() -> AntarchyFabricBlocks.STAR_CORAL.get()); + AntarchyObjects.setStarCoralFan(() -> AntarchyFabricBlocks.STAR_CORAL_FAN.get()); AntarchyObjects.setCookedCorndog(() -> AntarchyFabricItems.COOKED_CORNDOG.get()); AntarchyObjects.setGlimmerBottle(() -> AntarchyFabricItems.GLIMMER_BOTTLE.get()); AntarchyObjects.setGlimmerVariantComponent(() -> AntarchyFabricMisc.GLIMMER_VARIANT.get()); @@ -274,7 +281,6 @@ public final class AntarchyFabricContent { AntarchyObjects.setLumenBlock(() -> AntarchyFabricBlocks.LUMEN_BLOCK.get()); AntarchyObjects.setLumenFroglight(() -> AntarchyFabricBlocks.LUMEN_FROGLIGHT.get()); AntarchyObjects.setPeachLeavesParticle(() -> AntarchyFabricMisc.PEACH_LEAVES_PARTICLE.get()); - // Dorrie is not part of this update yet. // AntarchyObjects.setDorrieInventoryMenu(AntarchyFabricMisc.DORRIE_INVENTORY_MENU); AntarchyObjects.bind( AntarchyFabricEntities.EASTER_BUNNY, @@ -364,6 +370,7 @@ public final class AntarchyFabricContent { () -> AntarchyFabricBlocks.HUSHWEED.get(), () -> AntarchyFabricBlocks.OURANWOOD_SQUIRREL_NEST.get(), () -> AntarchyFabricBlocks.BRUTALFLY_COCOON_SPAWNER.get(), + () -> AntarchyFabricBlocks.GIANT_LILY_PAD.get(), () -> AntarchyFabricBlocks.ANT_NEST_BLOCK_ENTITY.get(), () -> AntarchyFabricBlocks.DREAM_CAMPFIRE_BLOCK_ENTITY.get(), () -> AntarchyFabricBlocks.WASP_NEST_BLOCK_ENTITY.get(), 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 cbb7aa93..6b13c29e 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java @@ -21,6 +21,7 @@ import net.fabricmc.fabric.api.entity.event.v1.ServerLivingEntityEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; import net.minecraft.server.level.ServerPlayer; import com.craisinlord.antarchy.content.SquidzookaDispenseBehavior; +import com.craisinlord.antarchy.content.RpoLauncherDispenseBehavior; import com.craisinlord.antarchy.content.WaterCannonDispenseBehavior; import net.minecraft.world.level.block.ComposterBlock; import net.minecraft.world.level.block.DispenserBlock; @@ -51,6 +52,7 @@ public final class AntarchyFabricEvents { }); DispenserBlock.registerBehavior(AntarchyFabricItems.SQUIDZOOKA.get(), new SquidzookaDispenseBehavior()); + DispenserBlock.registerBehavior(AntarchyFabricItems.RPO_LAUNCHER.get(), new RpoLauncherDispenseBehavior()); DispenserBlock.registerBehavior(AntarchyFabricItems.WATER_CANNON.get(), new WaterCannonDispenseBehavior()); ComposterBlock.COMPOSTABLES.put(AntarchyFabricBlocks.UMBRAL_MOSS_BLOCK.get().asItem(), 0.65f); 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 860a545b..61b2ff3b 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 @@ -99,6 +99,8 @@ public final class AntarchyFabricClientBootstrap { EntityRendererRegistry.register(AntarchyFabricEntities.CLOUD_SHARK.get(), CloudSharkRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.KRAKEN.get(), KrakenRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.KRAKEN_PART.get(), MultipartPartRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.TENTACLE.get(), com.craisinlord.antarchy.content.client.renderer.TentacleRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.KRAKENS_GRASP_TRIDENT.get(), ThrownItemRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.MISSILE_SQUID.get(), MissileSquidRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.OCTOPUS_BOMB.get(), OctopusBombRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.NIGHTMARE.get(), NightmareRenderer::new); @@ -111,6 +113,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.KRAKENS_GRASP_TRIDENT.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); @@ -249,6 +252,7 @@ public final class AntarchyFabricClientBootstrap { BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.PINK_MILKWEED.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.CAMELLIA.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.SPIDER_LILY.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.CORNEA_STALK.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.CORN_CROP.get(), RenderType.cutout()); @@ -257,6 +261,12 @@ public final class AntarchyFabricClientBootstrap { BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.ANTIMETAL_SCAFFOLDING.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.UMBRAL_MOSS_CARPET.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.NYXITE_SPIKE.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.STAR_CORAL.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.STAR_CORAL_FAN.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.STAR_CORAL_WALL_FAN.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.DEAD_STAR_CORAL.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.DEAD_STAR_CORAL_FAN.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.DEAD_STAR_CORAL_WALL_FAN.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.SMALL_BLOOD_CRYSTAL_BUD.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.MEDIUM_BLOOD_CRYSTAL_BUD.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.LARGE_BLOOD_CRYSTAL_BUD.get(), RenderType.cutout()); diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/CrossbowArmPoseMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/CrossbowArmPoseMixin.java index 2c3664a7..573165a4 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/CrossbowArmPoseMixin.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/CrossbowArmPoseMixin.java @@ -1,6 +1,7 @@ package com.craisinlord.antarchy.fabric.mixin.client; import com.craisinlord.antarchy.content.item.GravityGunItem; +import com.craisinlord.antarchy.content.item.RpoLauncherItem; import com.craisinlord.antarchy.content.item.SizeRayItem; import com.craisinlord.antarchy.content.item.SquidzookaItem; import com.craisinlord.antarchy.content.item.WaterCannonItem; @@ -25,7 +26,7 @@ public class CrossbowArmPoseMixin { ItemStack stack = player.getItemInHand(hand); Item item = stack.getItem(); - if (item instanceof GravityGunItem || item instanceof SquidzookaItem || item instanceof WaterCannonItem) { + if (item instanceof GravityGunItem || item instanceof SquidzookaItem || item instanceof RpoLauncherItem || item instanceof WaterCannonItem) { cir.setReturnValue(HumanoidModel.ArmPose.CROSSBOW_HOLD); } else if (item instanceof SizeRayItem) { if (player.isUsingItem() && player.getUsedItemHand() == hand) { 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 9670f0b2..e241c595 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 @@ -351,6 +351,10 @@ public final class AntarchyFabricBlocks { () -> new com.craisinlord.antarchy.content.block.SpiderLilyBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.POPPY))); + public static final DeferredBlock GIANT_LILY_PAD = BLOCKS.register("giant_lily_pad", + () -> new GiantLilyPadBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.LILY_PAD))); + + public static final DeferredBlock OURANWOOD_SIGN = BLOCKS.register("ouranwood_sign", () -> new net.minecraft.world.level.block.StandingSignBlock(AntarchyWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SIGN))); @@ -937,6 +941,38 @@ public final class AntarchyFabricBlocks { () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_SANDSTONE_SLAB))); + public static final DeferredBlock DEAD_STAR_CORAL_BLOCK = BLOCKS.register("dead_star_coral_block", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL_BLOCK))); + + + public static final DeferredBlock DEAD_STAR_CORAL = BLOCKS.register("dead_star_coral", + () -> new net.minecraft.world.level.block.BaseCoralPlantBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL))); + + + public static final DeferredBlock DEAD_STAR_CORAL_FAN = BLOCKS.register("dead_star_coral_fan", + () -> new net.minecraft.world.level.block.BaseCoralFanBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL_FAN))); + + + public static final DeferredBlock DEAD_STAR_CORAL_WALL_FAN = BLOCKS.register("dead_star_coral_wall_fan", + () -> new net.minecraft.world.level.block.BaseCoralWallFanBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL_WALL_FAN))); + + + public static final DeferredBlock STAR_CORAL_BLOCK = BLOCKS.register("star_coral_block", + () -> new StarCoralBlock(DEAD_STAR_CORAL_BLOCK.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL_BLOCK).lightLevel(state -> 8))); + + + public static final DeferredBlock STAR_CORAL = BLOCKS.register("star_coral", + () -> new StarCoralPlantBlock(DEAD_STAR_CORAL.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL).lightLevel(state -> 8))); + + + public static final DeferredBlock STAR_CORAL_FAN = BLOCKS.register("star_coral_fan", + () -> new StarCoralFanBlock(DEAD_STAR_CORAL_FAN.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL_FAN).lightLevel(state -> 8))); + + + public static final DeferredBlock STAR_CORAL_WALL_FAN = BLOCKS.register("star_coral_wall_fan", + () -> new StarCoralWallFanBlock(DEAD_STAR_CORAL_WALL_FAN.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL_WALL_FAN).lightLevel(state -> 8))); + + public static final DeferredHolder, BlockEntityType> ANT_NEST_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("ant_nest", () -> BlockEntityType.Builder.of( AntNestBlockEntity::new, 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 2b01f8c3..f1f948e8 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 @@ -83,6 +83,8 @@ import com.craisinlord.antarchy.content.entity.WaterBombEntity; import com.craisinlord.antarchy.content.item.PrimordialArmorItem; import com.craisinlord.antarchy.content.item.WaterCannonItem; import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; +import com.craisinlord.antarchy.content.entity.kraken.KrakensGraspThrownTrident; +import com.craisinlord.antarchy.content.entity.kraken.TentacleEntity; import com.craisinlord.antarchy.content.entity.OctopusBombEntity; import com.craisinlord.antarchy.content.entity.MolevoreEntity; import com.craisinlord.antarchy.content.entity.MolewormEntity; @@ -504,6 +506,19 @@ public final class AntarchyFabricEntities { .updateInterval(1) .build("lucid_bolt")); + public static final DeferredHolder, EntityType> KRAKENS_GRASP_TRIDENT = ENTITY_TYPES.register("krakens_grasp_trident", + () -> EntityType.Builder.of(KrakensGraspThrownTrident::new, MobCategory.MISC) + .sized(0.5F, 0.5F) + .clientTrackingRange(8) + .updateInterval(1) + .build("krakens_grasp_trident")); + + public static final DeferredHolder, EntityType> TENTACLE = ENTITY_TYPES.register("tentacle", + () -> EntityType.Builder.of(TentacleEntity::new, MobCategory.MISC) + .sized(1.2F, 4.5F) + .clientTrackingRange(10) + .build("tentacle")); + public static final DeferredHolder, EntityType> SCORPION = ENTITY_TYPES.register("scorpion", () -> EntityType.Builder.of(ScorpionEntity::new, MobCategory.MONSTER) diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntityAttributes.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntityAttributes.java index 44d49620..1c82accb 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntityAttributes.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntityAttributes.java @@ -83,6 +83,7 @@ import com.craisinlord.antarchy.content.entity.WaterBombEntity; import com.craisinlord.antarchy.content.item.PrimordialArmorItem; import com.craisinlord.antarchy.content.item.WaterCannonItem; import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; +import com.craisinlord.antarchy.content.entity.kraken.TentacleEntity; import com.craisinlord.antarchy.content.entity.OctopusBombEntity; import com.craisinlord.antarchy.content.entity.MolevoreEntity; import com.craisinlord.antarchy.content.entity.MolewormEntity; @@ -292,6 +293,7 @@ public final class AntarchyFabricEntityAttributes { FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.KRAKEN.get(), KrakenEntity.createAttributes().build()); FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.MISSILE_SQUID.get(), MissileSquidEntity.createAttributes().build()); FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.OCTOPUS_BOMB.get(), OctopusBombEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.TENTACLE.get(), TentacleEntity.createAttributes().build()); FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.NIGHTMARE.get(), NightmareEntity.createAttributes().build()); FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.BED_BUG.get(), BedBugEntity.createAttributes().build()); FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.WASP.get(), WaspEntity.createAttributes().build()); 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 73ff588b..a7e9409d 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 @@ -97,6 +97,7 @@ import com.craisinlord.antarchy.content.entity.ant.RedAntEntity; import com.craisinlord.antarchy.content.item.BattleAxeItem; import com.craisinlord.antarchy.content.item.BasiliskDaggerItem; import com.craisinlord.antarchy.content.item.BigBerthaItem; +import com.craisinlord.antarchy.content.item.KrakensGraspItem; import com.craisinlord.antarchy.content.item.AntimetalBlockItem; import com.craisinlord.antarchy.fabric.item.AntimetalScaffoldingItem; import com.craisinlord.antarchy.content.item.CloudSharkFinSoupItem; @@ -119,6 +120,7 @@ import com.craisinlord.antarchy.content.item.ScorpionWhipTetherSync; import com.craisinlord.antarchy.content.network.HerculesBeetleImpactShakeSync; import com.craisinlord.antarchy.content.item.SizeRayItem; import com.craisinlord.antarchy.content.item.SquidzookaItem; +import com.craisinlord.antarchy.content.item.RpoLauncherItem; import com.craisinlord.antarchy.content.item.SimpleToolTier; import com.craisinlord.antarchy.content.item.ultimate.UltimateArmorItem; import com.craisinlord.antarchy.content.item.ultimate.UltimateBowItem; @@ -215,6 +217,7 @@ import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; +import net.minecraft.world.item.PlaceOnWaterBlockItem; import net.minecraft.world.item.Rarity; import net.minecraft.world.item.StandingAndWallBlockItem; import net.minecraft.world.food.FoodProperties; @@ -398,6 +401,10 @@ public final class AntarchyFabricItems { public static final DeferredItem SPIDER_LILY_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.SPIDER_LILY); + public static final DeferredItem GIANT_LILY_PAD_ITEM = ITEMS.register("giant_lily_pad", + () -> new PlaceOnWaterBlockItem(AntarchyFabricBlocks.GIANT_LILY_PAD.get(), new Item.Properties())); + + public static final DeferredItem OURANWOOD_SIGN_ITEM = ITEMS.register("ouranwood_sign", () -> new net.minecraft.world.item.SignItem(new Item.Properties().stacksTo(16), AntarchyFabricBlocks.OURANWOOD_SIGN.get(), AntarchyFabricBlocks.OURANWOOD_WALL_SIGN.get())); @@ -580,6 +587,24 @@ public final class AntarchyFabricItems { public static final DeferredItem CUT_DREAM_SANDSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CUT_DREAM_SANDSTONE_SLAB); + public static final DeferredItem DEAD_STAR_CORAL_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DEAD_STAR_CORAL_BLOCK); + + + public static final DeferredItem DEAD_STAR_CORAL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DEAD_STAR_CORAL); + + + public static final DeferredItem DEAD_STAR_CORAL_FAN_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DEAD_STAR_CORAL_FAN); + + + public static final DeferredItem STAR_CORAL_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.STAR_CORAL_BLOCK); + + + public static final DeferredItem STAR_CORAL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.STAR_CORAL); + + + public static final DeferredItem STAR_CORAL_FAN_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.STAR_CORAL_FAN); + + public static final DeferredItem DUCT_TAPE_ITEM = ITEMS.register("duct_tape", () -> new DuctTapeBlockItem(AntarchyFabricBlocks.DUCT_TAPE.get(), new Item.Properties().stacksTo(1))); @@ -1221,6 +1246,9 @@ public final class AntarchyFabricItems { public static final DeferredItem SQUIDZOOKA = ITEMS.register("squidzooka", () -> new SquidzookaItem(new Item.Properties().stacksTo(1).durability(384).rarity(Rarity.RARE))); + public static final DeferredItem RPO_LAUNCHER = ITEMS.register("rpo_launcher", + () -> new RpoLauncherItem(new Item.Properties().stacksTo(1).durability(384).rarity(Rarity.RARE))); + public static final DeferredItem BATTLE_AXE = ITEMS.register("battle_axe", () -> new BattleAxeItem( @@ -1266,6 +1294,20 @@ public final class AntarchyFabricItems { .fireResistant() )); + public static final DeferredItem KRAKEN_TENTACLE = ITEMS.registerSimpleItem( + "kraken_tentacle", + new Item.Properties().rarity(Rarity.RARE) + ); + + public static final DeferredItem KRAKENS_GRASP = ITEMS.register("krakens_grasp", + () -> new KrakensGraspItem( + new Item.Properties() + .stacksTo(1) + .durability(250) + .rarity(Rarity.EPIC) + .fireResistant() + )); + public static final DeferredItem EASTER_BUNNY_SPAWN_EGG = ITEMS.register("easter_bunny_spawn_egg", 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 733835db..c6b3bf88 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 @@ -689,6 +689,10 @@ public final class AntarchyFabricMisc { () -> new CornPatchFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, com.craisinlord.antarchy.content.worldgen.ocean.StarCoralPatchFeature> STAR_CORAL_PATCH = FEATURES.register("star_coral_patch", + () -> new com.craisinlord.antarchy.content.worldgen.ocean.StarCoralPatchFeature(NoneFeatureConfiguration.CODEC)); + + public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_BUTTERFLY_FIELDS_FLORA = FEATURES.register("butterfly_fields_flora", () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.BUTTERFLY_FIELDS)); diff --git a/fabric/src/main/resources/assets/antarchy/models/item/krakens_grasp.json b/fabric/src/main/resources/assets/antarchy/models/item/krakens_grasp.json new file mode 100644 index 00000000..9a00568c --- /dev/null +++ b/fabric/src/main/resources/assets/antarchy/models/item/krakens_grasp.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:item/krakens_grasp_held" +} diff --git a/fabric/src/main/resources/assets/antarchy/models/item/rpo_launcher.json b/fabric/src/main/resources/assets/antarchy/models/item/rpo_launcher.json new file mode 100644 index 00000000..9d445ed8 --- /dev/null +++ b/fabric/src/main/resources/assets/antarchy/models/item/rpo_launcher.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:item/rpo_launcher_held_geo" +} 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 8f9cd5f8..d8e1c709 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyConfigModuleNeoforge.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyConfigModuleNeoforge.java @@ -259,6 +259,16 @@ public final class AntarchyConfigModuleNeoforge { AntarchySettings.setBigBerthaBasiliskCooldownSeconds(AntarchyToolsConfig.bigBerthaBasiliskCooldownSeconds()); AntarchySettings.setBigBerthaLucidInvertedDurationSeconds(AntarchyToolsConfig.bigBerthaLucidInvertedDurationSeconds()); AntarchySettings.setBigBerthaLucidInvertedDamageBonusPercent(AntarchyToolsConfig.bigBerthaLucidInvertedDamageBonusPercent()); + AntarchySettings.setKrakensGraspAttackDamage(AntarchyToolsConfig.krakensGraspAttackDamage()); + AntarchySettings.setKrakensGraspAttackSpeed(AntarchyToolsConfig.krakensGraspAttackSpeed()); + AntarchySettings.setKrakensGraspThrownDamage(AntarchyToolsConfig.krakensGraspThrownDamage()); + AntarchySettings.setKrakensGraspLightningDamage(AntarchyToolsConfig.krakensGraspLightningDamage()); + AntarchySettings.setKrakensGraspInnateLoyalty(AntarchyToolsConfig.krakensGraspInnateLoyalty()); + AntarchySettings.setKrakensGraspInnateLoyaltyLevel(AntarchyToolsConfig.krakensGraspInnateLoyaltyLevel()); + AntarchySettings.setKrakensGraspTentacleDurationTicks(AntarchyToolsConfig.krakensGraspTentacleDurationTicks()); + AntarchySettings.setKrakensGraspTentacleDamage(AntarchyToolsConfig.krakensGraspTentacleDamage()); + AntarchySettings.setKrakensGraspTentacleRadius(AntarchyToolsConfig.krakensGraspTentacleRadius()); + AntarchySettings.setKrakensGraspTentacleDamageIntervalTicks(AntarchyToolsConfig.krakensGraspTentacleDamageIntervalTicks()); AntarchySettings.setScorpionWhipBaseDamage(AntarchyToolsConfig.scorpionWhipBaseDamage()); AntarchySettings.setScorpionWhipReachBonus(AntarchyToolsConfig.scorpionWhipReachBonus()); AntarchySettings.setScorpionWhipPoisonDurationTicks(AntarchyToolsConfig.scorpionWhipPoisonDurationTicks()); @@ -292,6 +302,10 @@ public final class AntarchyConfigModuleNeoforge { AntarchySettings.setSquidzookaCooldownSeconds(AntarchyToolsConfig.squidzookaCooldownSeconds()); AntarchySettings.setSquidzookaLaunchVelocity(AntarchyToolsConfig.squidzookaLaunchVelocity()); + AntarchySettings.setRpoLauncherCooldownSeconds(AntarchyToolsConfig.rpoLauncherCooldownSeconds()); + AntarchySettings.setRpoLauncherLaunchVelocity(AntarchyToolsConfig.rpoLauncherLaunchVelocity()); + AntarchySettings.setRpoLauncherExplosionDamage(AntarchyToolsConfig.rpoLauncherExplosionDamage()); + AntarchySettings.setRpoLauncherExplosionRadius(AntarchyToolsConfig.rpoLauncherExplosionRadius()); AntarchySettings.setSizeChangingRaysEnabled(AntarchyToolsConfig.sizeChangingRaysEnabled()); AntarchySettings.setSizeRayCooldownSeconds(AntarchyToolsConfig.sizeRayCooldownSeconds()); 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 b854ee91..0a4fee77 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java @@ -283,6 +283,7 @@ public class AntarchyNeoforge { () -> AntarchyNeoforgeBlocks.HUSHWEED.get(), () -> AntarchyNeoforgeBlocks.OURANWOOD_SQUIRREL_NEST.get(), () -> AntarchyNeoforgeBlocks.BRUTALFLY_COCOON_SPAWNER.get(), + () -> AntarchyNeoforgeBlocks.GIANT_LILY_PAD.get(), () -> AntarchyNeoforgeBlocks.ANT_NEST_BLOCK_ENTITY.get(), () -> AntarchyNeoforgeBlocks.DREAM_CAMPFIRE_BLOCK_ENTITY.get(), () -> AntarchyNeoforgeBlocks.WASP_NEST_BLOCK_ENTITY.get(), @@ -295,6 +296,10 @@ public class AntarchyNeoforge { () -> AntarchyNeoforgeMisc.BLOODGLASS_WARD ); AntarchyObjects.setOctopusBomb(AntarchyNeoforgeEntites.OCTOPUS_BOMB); + AntarchyObjects.setTentacle(AntarchyNeoforgeEntites.TENTACLE); + AntarchyObjects.setKrakensGraspTrident(AntarchyNeoforgeEntites.KRAKENS_GRASP_TRIDENT); + AntarchyObjects.setKrakenTentacle(() -> AntarchyNeoforgeItems.KRAKEN_TENTACLE.get()); + AntarchyObjects.setKrakensGrasp(() -> AntarchyNeoforgeItems.KRAKENS_GRASP.get()); AntarchyObjects.setOuranwoodDeer(AntarchyNeoforgeEntites.OURANWOOD_DEER); AntarchyObjects.setGlimmer(AntarchyNeoforgeEntites.GLIMMER); AntarchyObjects.setSpiritApple(() -> AntarchyNeoforgeItems.SPIRIT_APPLE.get()); @@ -302,6 +307,9 @@ public class AntarchyNeoforge { AntarchyObjects.setPeach(() -> AntarchyNeoforgeItems.PEACH.get()); AntarchyObjects.setCorn(() -> AntarchyNeoforgeItems.CORN.get()); AntarchyObjects.setCornSeeds(() -> AntarchyNeoforgeItems.CORN_SEEDS.get()); + AntarchyObjects.setStarCoralBlock(() -> AntarchyNeoforgeBlocks.STAR_CORAL_BLOCK.get()); + AntarchyObjects.setStarCoral(() -> AntarchyNeoforgeBlocks.STAR_CORAL.get()); + AntarchyObjects.setStarCoralFan(() -> AntarchyNeoforgeBlocks.STAR_CORAL_FAN.get()); AntarchyObjects.setCookedCorndog(() -> AntarchyNeoforgeItems.COOKED_CORNDOG.get()); AntarchyObjects.setGlimmerBottle(() -> AntarchyNeoforgeItems.GLIMMER_BOTTLE.get()); AntarchyObjects.setGlimmerVariantComponent(() -> AntarchyNeoforgeMisc.GLIMMER_VARIANT.get()); 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 2d2cb08f..c8db2817 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyToolsConfig.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyToolsConfig.java @@ -79,6 +79,16 @@ public final class AntarchyToolsConfig { private static final ModConfigSpec.DoubleValue BIG_BERTHA_ATTACK_DAMAGE; private static final ModConfigSpec.DoubleValue BIG_BERTHA_REACH_BONUS; private static final ModConfigSpec.DoubleValue BIG_BERTHA_ATTACK_SPEED; + private static final ModConfigSpec.DoubleValue KRAKENS_GRASP_ATTACK_DAMAGE; + private static final ModConfigSpec.DoubleValue KRAKENS_GRASP_ATTACK_SPEED; + private static final ModConfigSpec.DoubleValue KRAKENS_GRASP_THROWN_DAMAGE; + private static final ModConfigSpec.DoubleValue KRAKENS_GRASP_LIGHTNING_DAMAGE; + private static final ModConfigSpec.BooleanValue KRAKENS_GRASP_INNATE_LOYALTY; + private static final ModConfigSpec.IntValue KRAKENS_GRASP_INNATE_LOYALTY_LEVEL; + private static final ModConfigSpec.IntValue KRAKENS_GRASP_TENTACLE_DURATION_TICKS; + private static final ModConfigSpec.DoubleValue KRAKENS_GRASP_TENTACLE_DAMAGE; + private static final ModConfigSpec.DoubleValue KRAKENS_GRASP_TENTACLE_RADIUS; + private static final ModConfigSpec.IntValue KRAKENS_GRASP_TENTACLE_DAMAGE_INTERVAL_TICKS; private static final ModConfigSpec.IntValue BIG_BERTHA_BASILISK_PARALYZE_DURATION_TICKS; private static final ModConfigSpec.IntValue BIG_BERTHA_KRAKEN_SLOW_TICKS; private static final ModConfigSpec.DoubleValue BIG_BERTHA_BASILISK_COOLDOWN_SECONDS; @@ -145,6 +155,10 @@ public final class AntarchyToolsConfig { private static final ModConfigSpec.DoubleValue SQUIDZOOKA_COOLDOWN_SECONDS; private static final ModConfigSpec.DoubleValue SQUIDZOOKA_LAUNCH_VELOCITY; + private static final ModConfigSpec.DoubleValue RPO_LAUNCHER_COOLDOWN_SECONDS; + private static final ModConfigSpec.DoubleValue RPO_LAUNCHER_LAUNCH_VELOCITY; + private static final ModConfigSpec.DoubleValue RPO_LAUNCHER_EXPLOSION_DAMAGE; + private static final ModConfigSpec.DoubleValue RPO_LAUNCHER_EXPLOSION_RADIUS; // Size Rays @@ -303,6 +317,19 @@ public final class AntarchyToolsConfig { BIG_BERTHA_LUCID_INVERTED_DAMAGE_BONUS_PERCENT = b.comment("Bonus damage percent from Lucid mode while the wielder is inverted.") .defineInRange("lucidModeInvertedDamageBonusPercent", 25.0D, 0.0D, 1000.0D); b.pop(); + b.push("krakensGrasp"); + KRAKENS_GRASP_ATTACK_DAMAGE = b.comment("Melee attack damage of Kraken's Grasp.") .defineInRange("attackDamage", 16.0D, 0.0D, 4096.0D); + KRAKENS_GRASP_ATTACK_SPEED = b.comment("Attack speed of Kraken's Grasp.") .defineInRange("attackSpeed", -2.9D, -10.0D, 10.0D); + KRAKENS_GRASP_THROWN_DAMAGE = b.comment("Damage dealt when the thrown trident hits an entity.") .defineInRange("thrownDamage", 16.0D, 0.0D, 4096.0D); + KRAKENS_GRASP_LIGHTNING_DAMAGE = b.comment("Bonus damage from the lightning strike on every hit.") .defineInRange("lightningDamage", 6.0D, 0.0D, 4096.0D); + KRAKENS_GRASP_INNATE_LOYALTY = b.comment("Whether Kraken's Grasp automatically returns to its thrower like an enchanted Loyalty trident.").define("innateLoyalty", true); + KRAKENS_GRASP_INNATE_LOYALTY_LEVEL = b.comment("Effective Loyalty level used for the innate return, from 1 to 3.") .defineInRange("innateLoyaltyLevel", 3, 1, 3); + KRAKENS_GRASP_TENTACLE_DURATION_TICKS = b.comment("How long a summoned tentacle lasts, in ticks.") .defineInRange("tentacleDurationTicks", 100, 1, 72000); + KRAKENS_GRASP_TENTACLE_DAMAGE = b.comment("Damage a tentacle deals per damage interval to nearby entities.") .defineInRange("tentacleDamage", 3.0D, 0.0D, 4096.0D); + KRAKENS_GRASP_TENTACLE_RADIUS = b.comment("Radius in blocks around a tentacle that it can grab and damage.") .defineInRange("tentacleRadius", 3.0D, 0.0D, 32.0D); + KRAKENS_GRASP_TENTACLE_DAMAGE_INTERVAL_TICKS = b.comment("How often, in ticks, a tentacle damages nearby entities.") .defineInRange("tentacleDamageIntervalTicks", 20, 1, 2000); + b.pop(); + b.push("scorpionWhip"); SCORPION_WHIP_BASE_DAMAGE = b.comment("Base lash damage of the Scorpion Stinger Whip.").defineInRange("baseDamage", 10.0D, 0.0D, 4096.0D); SCORPION_WHIP_REACH_BONUS = b.comment("Extra entity interaction range in blocks while held in main hand.").defineInRange("reachBonus", 5.0D, 0.0D, 32.0D); @@ -393,6 +420,13 @@ public final class AntarchyToolsConfig { SQUIDZOOKA_LAUNCH_VELOCITY = b.comment("Initial launch velocity applied to the Missile Squid.") .defineInRange("launchVelocity", 2.1D, 0.1D, 20.0D); b.pop(); + b.push("rpoLauncher"); + RPO_LAUNCHER_COOLDOWN_SECONDS = b.comment("Cooldown in seconds after firing. Set to 0 to disable.").defineInRange("cooldownSeconds", 1.0D, 0.0D, 3600.0D); + RPO_LAUNCHER_LAUNCH_VELOCITY = b.comment("Initial launch velocity applied to the Octopus Bomb.") .defineInRange("launchVelocity", 2.1D, 0.1D, 20.0D); + RPO_LAUNCHER_EXPLOSION_DAMAGE = b.comment("Max damage dealt at the center of the ink explosion.") .defineInRange("explosionDamage", 14.0D, 0.0D, 4096.0D); + RPO_LAUNCHER_EXPLOSION_RADIUS = b.comment("Radius in blocks of the ink explosion.") .defineInRange("explosionRadius", 4.0D, 0.5D, 32.0D); + b.pop(); + // Size Rays @@ -543,6 +577,17 @@ public final class AntarchyToolsConfig { static double bigBerthaBasiliskCooldownSeconds() { return BIG_BERTHA_BASILISK_COOLDOWN_SECONDS.get(); } static double bigBerthaLucidInvertedDurationSeconds() { return BIG_BERTHA_LUCID_INVERTED_DURATION_SECONDS.get(); } static double bigBerthaLucidInvertedDamageBonusPercent(){ return BIG_BERTHA_LUCID_INVERTED_DAMAGE_BONUS_PERCENT.get(); } + + static double krakensGraspAttackDamage() { return KRAKENS_GRASP_ATTACK_DAMAGE.get(); } + static double krakensGraspAttackSpeed() { return KRAKENS_GRASP_ATTACK_SPEED.get(); } + static double krakensGraspThrownDamage() { return KRAKENS_GRASP_THROWN_DAMAGE.get(); } + static double krakensGraspLightningDamage() { return KRAKENS_GRASP_LIGHTNING_DAMAGE.get(); } + static boolean krakensGraspInnateLoyalty() { return KRAKENS_GRASP_INNATE_LOYALTY.get(); } + static int krakensGraspInnateLoyaltyLevel() { return KRAKENS_GRASP_INNATE_LOYALTY_LEVEL.get(); } + static int krakensGraspTentacleDurationTicks() { return KRAKENS_GRASP_TENTACLE_DURATION_TICKS.get(); } + static double krakensGraspTentacleDamage() { return KRAKENS_GRASP_TENTACLE_DAMAGE.get(); } + static double krakensGraspTentacleRadius() { return KRAKENS_GRASP_TENTACLE_RADIUS.get(); } + static int krakensGraspTentacleDamageIntervalTicks() { return KRAKENS_GRASP_TENTACLE_DAMAGE_INTERVAL_TICKS.get(); } static double scorpionWhipBaseDamage() { return SCORPION_WHIP_BASE_DAMAGE.get(); } static double scorpionWhipReachBonus() { return SCORPION_WHIP_REACH_BONUS.get(); } static int scorpionWhipPoisonDurationTicks() { return SCORPION_WHIP_POISON_DURATION_TICKS.get(); } @@ -592,6 +637,10 @@ public final class AntarchyToolsConfig { static double squidzookaCooldownSeconds() { return SQUIDZOOKA_COOLDOWN_SECONDS.get(); } static double squidzookaLaunchVelocity() { return SQUIDZOOKA_LAUNCH_VELOCITY.get(); } + static double rpoLauncherCooldownSeconds() { return RPO_LAUNCHER_COOLDOWN_SECONDS.get(); } + static double rpoLauncherLaunchVelocity() { return RPO_LAUNCHER_LAUNCH_VELOCITY.get(); } + static double rpoLauncherExplosionDamage() { return RPO_LAUNCHER_EXPLOSION_DAMAGE.get(); } + static double rpoLauncherExplosionRadius() { return RPO_LAUNCHER_EXPLOSION_RADIUS.get(); } static boolean sizeChangingRaysEnabled() { return SIZE_CHANGING_RAYS_ENABLED.get(); } static double sizeRayCooldownSeconds() { return SIZE_RAY_COOLDOWN_SECONDS.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 51617eae..63396b67 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 @@ -110,6 +110,8 @@ public final class AntarchyNeoForgeClient { event.registerEntityRenderer(AntarchyNeoforgeEntites.DR_TRAYAURUS.get(), context -> new DrTrayaurusRenderer(context, DR_TRAYAURUS_TEXTURE)); event.registerEntityRenderer(AntarchyNeoforgeEntites.CLOUD_SHARK.get(), context -> withParalyzedGeoLayer(new CloudSharkRenderer(context))); event.registerEntityRenderer(AntarchyNeoforgeEntites.KRAKEN.get(), context -> withParalyzedGeoLayer(new KrakenRenderer(context))); + event.registerEntityRenderer(AntarchyNeoforgeEntites.TENTACLE.get(), com.craisinlord.antarchy.content.client.renderer.TentacleRenderer::new); + event.registerEntityRenderer(AntarchyNeoforgeEntites.KRAKENS_GRASP_TRIDENT.get(), ThrownItemRenderer::new); event.registerEntityRenderer(AntarchyNeoforgeEntites.MISSILE_SQUID.get(), context -> withParalyzedGeoLayer(new MissileSquidRenderer(context))); event.registerEntityRenderer(AntarchyNeoforgeEntites.OCTOPUS_BOMB.get(), context -> withParalyzedGeoLayer(new OctopusBombRenderer(context))); event.registerEntityRenderer(AntarchyNeoforgeEntites.NIGHTMARE.get(), context -> withParalyzedGeoLayer(new NightmareRenderer(context))); @@ -122,6 +124,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.KRAKENS_GRASP_TRIDENT.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); @@ -469,6 +472,7 @@ public final class AntarchyNeoForgeClient { registerGeoItemExtensionSizeRay(event, AntarchyNeoforgeItems.GROWTH_RAY.get()); registerGeoItemExtension(event, AntarchyNeoforgeItems.GRAVITY_GUN.get(), HumanoidModel.ArmPose.CROSSBOW_HOLD); registerGeoItemExtension(event, AntarchyNeoforgeItems.SQUIDZOOKA.get(), HumanoidModel.ArmPose.CROSSBOW_HOLD); + registerGeoItemExtension(event, AntarchyNeoforgeItems.RPO_LAUNCHER.get(), HumanoidModel.ArmPose.CROSSBOW_HOLD); registerGeoItemExtension(event, AntarchyNeoforgeItems.WATER_CANNON.get(), HumanoidModel.ArmPose.CROSSBOW_HOLD); registerGeoItemExtension(event, AntarchyNeoforgeItems.BATTLE_AXE.get()); registerGeoItemExtension(event, AntarchyNeoforgeItems.BIG_BERTHA.get()); @@ -493,6 +497,7 @@ public final class AntarchyNeoForgeClient { ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.PINK_MILKWEED.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.CAMELLIA.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.SPIDER_LILY.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.GIANT_LILY_PAD.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.HUSHWEED.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.CORNEA_STALK.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.CORN_CROP.get(), RenderType.cutout()); @@ -500,6 +505,12 @@ public final class AntarchyNeoForgeClient { ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.ANTIMETAL_SCAFFOLDING.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.UMBRAL_MOSS_CARPET.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.NYXITE_SPIKE.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.STAR_CORAL.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.STAR_CORAL_FAN.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.STAR_CORAL_WALL_FAN.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.DEAD_STAR_CORAL.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.DEAD_STAR_CORAL_FAN.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.DEAD_STAR_CORAL_WALL_FAN.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.SMALL_BLOOD_CRYSTAL_BUD.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.MEDIUM_BLOOD_CRYSTAL_BUD.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.LARGE_BLOOD_CRYSTAL_BUD.get(), RenderType.cutout()); 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 3dc0fd81..4032a874 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 @@ -1153,6 +1153,7 @@ public final class AntarchyNeoForgeEvents { DispenserBlock.registerBehavior(AntarchyNeoforgeItems.SHRINK_RAY.get(), new com.craisinlord.antarchy.content.SizeRayDispenseBehavior()); DispenserBlock.registerBehavior(AntarchyNeoforgeItems.GROWTH_RAY.get(), new com.craisinlord.antarchy.content.SizeRayDispenseBehavior()); DispenserBlock.registerBehavior(AntarchyNeoforgeItems.SQUIDZOOKA.get(), new com.craisinlord.antarchy.content.SquidzookaDispenseBehavior()); + DispenserBlock.registerBehavior(AntarchyNeoforgeItems.RPO_LAUNCHER.get(), new com.craisinlord.antarchy.content.RpoLauncherDispenseBehavior()); DispenserBlock.registerBehavior(AntarchyNeoforgeItems.WATER_CANNON.get(), new com.craisinlord.antarchy.content.WaterCannonDispenseBehavior()); LucidEyeProjectileEntity.defaultItemSupplier = () -> AntarchyNeoforgeItems.LUCID_PEARL.get(); LucidEntity.invertedEffectSupplier = () -> AntarchyNeoforgeMisc.INVERTED; 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 0fc8d5e2..1fbfc3c0 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 @@ -89,6 +89,8 @@ public final class AntarchyNeoforgeBlocks { () -> new com.craisinlord.antarchy.content.block.CamelliaBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PEONY))); public static final DeferredBlock SPIDER_LILY = BLOCKS.register("spider_lily", () -> new com.craisinlord.antarchy.content.block.SpiderLilyBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.POPPY))); + public static final DeferredBlock GIANT_LILY_PAD = BLOCKS.register("giant_lily_pad", + () -> new GiantLilyPadBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.LILY_PAD))); 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", @@ -399,6 +401,22 @@ public final class AntarchyNeoforgeBlocks { () -> new SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SMOOTH_SANDSTONE_SLAB))); public static final DeferredBlock CUT_DREAM_SANDSTONE_SLAB = BLOCKS.register("cut_dream_sandstone_slab", () -> new SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_SANDSTONE_SLAB))); + public static final DeferredBlock DEAD_STAR_CORAL_BLOCK = BLOCKS.register("dead_star_coral_block", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL_BLOCK))); + public static final DeferredBlock DEAD_STAR_CORAL = BLOCKS.register("dead_star_coral", + () -> new net.minecraft.world.level.block.BaseCoralPlantBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL))); + public static final DeferredBlock DEAD_STAR_CORAL_FAN = BLOCKS.register("dead_star_coral_fan", + () -> new net.minecraft.world.level.block.BaseCoralFanBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL_FAN))); + public static final DeferredBlock DEAD_STAR_CORAL_WALL_FAN = BLOCKS.register("dead_star_coral_wall_fan", + () -> new net.minecraft.world.level.block.BaseCoralWallFanBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL_WALL_FAN))); + public static final DeferredBlock STAR_CORAL_BLOCK = BLOCKS.register("star_coral_block", + () -> new com.craisinlord.antarchy.content.block.StarCoralBlock(DEAD_STAR_CORAL_BLOCK.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL_BLOCK).lightLevel(state -> 8))); + public static final DeferredBlock STAR_CORAL = BLOCKS.register("star_coral", + () -> new com.craisinlord.antarchy.content.block.StarCoralPlantBlock(DEAD_STAR_CORAL.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL).lightLevel(state -> 8))); + public static final DeferredBlock STAR_CORAL_FAN = BLOCKS.register("star_coral_fan", + () -> new com.craisinlord.antarchy.content.block.StarCoralFanBlock(DEAD_STAR_CORAL_FAN.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL_FAN).lightLevel(state -> 8))); + public static final DeferredBlock STAR_CORAL_WALL_FAN = BLOCKS.register("star_coral_wall_fan", + () -> new com.craisinlord.antarchy.content.block.StarCoralWallFanBlock(DEAD_STAR_CORAL_WALL_FAN.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL_WALL_FAN).lightLevel(state -> 8))); // Block entity types public static final DeferredHolder, BlockEntityType> ANT_NEST_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("ant_nest", diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeCreativeModeTabs.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeCreativeModeTabs.java index 70dad670..b3175bfb 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeCreativeModeTabs.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeCreativeModeTabs.java @@ -100,6 +100,7 @@ public class AntarchyNeoforgeCreativeModeTabs { event.accept(AntarchyNeoforgeItems.PINK_MILKWEED_ITEM.get()); event.accept(AntarchyNeoforgeItems.CAMELLIA_ITEM.get()); event.accept(AntarchyNeoforgeItems.SPIDER_LILY_ITEM.get()); + event.accept(AntarchyNeoforgeItems.GIANT_LILY_PAD_ITEM.get()); event.accept(AntarchyNeoforgeItems.HUSHWEED_ITEM.get()); event.accept(AntarchyNeoforgeItems.INFESTED_ROOTED_DIRT_ITEM.get()); event.accept(AntarchyNeoforgeItems.INFESTED_COARSE_DIRT_ITEM.get()); @@ -116,6 +117,12 @@ public class AntarchyNeoforgeCreativeModeTabs { event.accept(AntarchyNeoforgeItems.LUMEN_FROGLIGHT_ITEM.get()); event.accept(AntarchyNeoforgeItems.ROSEATE_FROGLIGHT_ITEM.get()); event.accept(AntarchyNeoforgeItems.CORN_SEEDS.get()); + event.accept(AntarchyNeoforgeItems.STAR_CORAL_ITEM.get()); + event.accept(AntarchyNeoforgeItems.STAR_CORAL_FAN_ITEM.get()); + event.accept(AntarchyNeoforgeItems.STAR_CORAL_BLOCK_ITEM.get()); + event.accept(AntarchyNeoforgeItems.DEAD_STAR_CORAL_ITEM.get()); + event.accept(AntarchyNeoforgeItems.DEAD_STAR_CORAL_FAN_ITEM.get()); + event.accept(AntarchyNeoforgeItems.DEAD_STAR_CORAL_BLOCK_ITEM.get()); } if (event.getTabKey() == CreativeModeTabs.TOOLS_AND_UTILITIES) { @@ -163,6 +170,7 @@ public class AntarchyNeoforgeCreativeModeTabs { event.accept(AntarchyNeoforgeItems.VORTEX_EYE.get()); event.accept(AntarchyNeoforgeItems.EMPEROR_SCORPION_STINGER.get()); event.accept(AntarchyNeoforgeItems.KRAKEN_TOOTH.get()); + event.accept(AntarchyNeoforgeItems.KRAKEN_TENTACLE.get()); event.accept(AntarchyNeoforgeItems.JUMPY_BUG_LEG.get()); event.accept(AntarchyNeoforgeItems.CORNEA_EAR.get()); event.accept(AntarchyNeoforgeItems.CORN.get()); @@ -316,6 +324,8 @@ public class AntarchyNeoforgeCreativeModeTabs { event.accept(UltimateGearHelper.createUltimateBowStack(AntarchyNeoforgeItems.ULTIMATE_BOW.get(), event.getParameters().holders())); event.accept(AntarchyNeoforgeItems.ULTIMATE_CROSSBOW.get()); event.accept(AntarchyNeoforgeItems.SQUIDZOOKA.get()); + event.accept(AntarchyNeoforgeItems.RPO_LAUNCHER.get()); + event.accept(AntarchyNeoforgeItems.KRAKENS_GRASP.get()); event.accept(AntarchyNeoforgeItems.SHRINK_RAY.get()); event.accept(AntarchyNeoforgeItems.GROWTH_RAY.get()); event.accept(AntarchyNeoforgeItems.GRAVITY_GUN.get()); 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 7630daa7..2d79e54e 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 @@ -47,6 +47,8 @@ import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyOrbEntity; import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity; import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; +import com.craisinlord.antarchy.content.entity.kraken.KrakensGraspThrownTrident; +import com.craisinlord.antarchy.content.entity.kraken.TentacleEntity; import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity; import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity; @@ -250,6 +252,20 @@ public final class AntarchyNeoforgeEntites { .clientTrackingRange(8) .updateInterval(1) .build("lucid_bolt")); + + public static final DeferredHolder, EntityType> KRAKENS_GRASP_TRIDENT = ENTITY_TYPES.register("krakens_grasp_trident", + () -> EntityType.Builder.of(KrakensGraspThrownTrident::new, MobCategory.MISC) + .sized(0.5F, 0.5F) + .clientTrackingRange(8) + .updateInterval(1) + .build("krakens_grasp_trident")); + + public static final DeferredHolder, EntityType> TENTACLE = ENTITY_TYPES.register("tentacle", + () -> EntityType.Builder.of(TentacleEntity::new, MobCategory.MISC) + .sized(1.2F, 4.5F) + .clientTrackingRange(10) + .build("tentacle")); + public static final DeferredHolder, EntityType> SCORPION = ENTITY_TYPES.register("scorpion", () -> EntityType.Builder.of(ScorpionEntity::new, MobCategory.MONSTER) .sized(1.5F, 1.0F) diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntityAttributes.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntityAttributes.java index a56d950b..1e84116e 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntityAttributes.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntityAttributes.java @@ -9,6 +9,7 @@ import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity; import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity; import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; +import com.craisinlord.antarchy.content.entity.kraken.TentacleEntity; import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity; import com.craisinlord.antarchy.content.entity.ToreterrorEntity; @@ -51,6 +52,7 @@ public class AntarchyNeoforgeEntityAttributes { event.put(AntarchyNeoforgeEntites.KRAKEN.get(), KrakenEntity.createAttributes().build()); event.put(AntarchyNeoforgeEntites.MISSILE_SQUID.get(), MissileSquidEntity.createAttributes().build()); event.put(AntarchyNeoforgeEntites.OCTOPUS_BOMB.get(), OctopusBombEntity.createAttributes().build()); + event.put(AntarchyNeoforgeEntites.TENTACLE.get(), TentacleEntity.createAttributes().build()); event.put(AntarchyNeoforgeEntites.NIGHTMARE.get(), NightmareEntity.createAttributes().build()); event.put(AntarchyNeoforgeEntites.BED_BUG.get(), BedBugEntity.createAttributes().build()); event.put(AntarchyNeoforgeEntites.WASP.get(), WaspEntity.createAttributes().build()); 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 bdee968a..095af866 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 @@ -29,6 +29,7 @@ import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.food.FoodProperties; import net.minecraft.world.item.*; +import net.minecraft.world.item.PlaceOnWaterBlockItem; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.block.entity.BlockEntityType; import net.neoforged.bus.api.IEventBus; @@ -178,6 +179,8 @@ public final class AntarchyNeoforgeItems { public static final DeferredItem PINK_MILKWEED_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.PINK_MILKWEED); 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())); public static final DeferredItem OURANWOOD_SIGN_ITEM = ITEMS.register("ouranwood_sign", () -> new net.minecraft.world.item.SignItem(new Item.Properties().stacksTo(16), AntarchyNeoforgeBlocks.OURANWOOD_SIGN.get(), AntarchyNeoforgeBlocks.OURANWOOD_WALL_SIGN.get())); public static final DeferredItem OURANWOOD_HANGING_SIGN_ITEM = ITEMS.register("ouranwood_hanging_sign", @@ -248,6 +251,12 @@ public final class AntarchyNeoforgeItems { public static final DeferredItem SMOOTH_DREAM_SANDSTONE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.SMOOTH_DREAM_SANDSTONE_STAIRS); public static final DeferredItem SMOOTH_DREAM_SANDSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.SMOOTH_DREAM_SANDSTONE_SLAB); public static final DeferredItem CUT_DREAM_SANDSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CUT_DREAM_SANDSTONE_SLAB); + public static final DeferredItem DEAD_STAR_CORAL_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DEAD_STAR_CORAL_BLOCK); + public static final DeferredItem DEAD_STAR_CORAL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DEAD_STAR_CORAL); + public static final DeferredItem DEAD_STAR_CORAL_FAN_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DEAD_STAR_CORAL_FAN); + public static final DeferredItem STAR_CORAL_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.STAR_CORAL_BLOCK); + public static final DeferredItem STAR_CORAL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.STAR_CORAL); + public static final DeferredItem STAR_CORAL_FAN_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.STAR_CORAL_FAN); public static final DeferredItem DUCT_TAPE_ITEM = ITEMS.register("duct_tape", () -> new DuctTapeBlockItem(AntarchyNeoforgeBlocks.DUCT_TAPE.get(), new Item.Properties().stacksTo(1))); public static final DeferredItem INFESTED_ROOTED_DIRT_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.INFESTED_ROOTED_DIRT); @@ -567,6 +576,8 @@ public final class AntarchyNeoforgeItems { // () -> new MinersDreamItem(new Item.Properties().stacksTo(1).rarity(Rarity.RARE))); public static final DeferredItem SQUIDZOOKA = ITEMS.register("squidzooka", () -> new SquidzookaItem(new Item.Properties().stacksTo(1).durability(384).rarity(Rarity.RARE))); + public static final DeferredItem RPO_LAUNCHER = ITEMS.register("rpo_launcher", + () -> new RpoLauncherItem(new Item.Properties().stacksTo(1).durability(384).rarity(Rarity.RARE))); public static final DeferredItem BATTLE_AXE = ITEMS.register("battle_axe", () -> new BattleAxeItem(Tiers.NETHERITE, new Item.Properties().stacksTo(1).rarity(Rarity.RARE).fireResistant(), @@ -585,6 +596,13 @@ public final class AntarchyNeoforgeItems { () -> new BigBerthaItem(Tiers.NETHERITE, new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant())); + public static final DeferredItem KRAKEN_TENTACLE = ITEMS.registerSimpleItem("kraken_tentacle", + new Item.Properties().rarity(Rarity.RARE)); + + public static final DeferredItem KRAKENS_GRASP = ITEMS.register("krakens_grasp", + () -> new KrakensGraspItem( + new Item.Properties().stacksTo(1).durability(250).rarity(Rarity.EPIC).fireResistant())); + // Spawn eggs public static final DeferredItem EASTER_BUNNY_SPAWN_EGG = ITEMS.register("easter_bunny_spawn_egg", () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.EASTER_BUNNY, 0xFFF2B2, 0xFF85B5, new Item.Properties())); 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 c43600f6..589a6f01 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 @@ -239,6 +239,8 @@ public final class AntarchyNeoforgeMisc { () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.FLOWER_FOREST_MILKWEED)); public static final DeferredHolder, CornPatchFeature> CORN_PATCH = FEATURES.register("corn_patch", () -> new CornPatchFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, com.craisinlord.antarchy.content.worldgen.ocean.StarCoralPatchFeature> STAR_CORAL_PATCH = FEATURES.register("star_coral_patch", + () -> new com.craisinlord.antarchy.content.worldgen.ocean.StarCoralPatchFeature(NoneFeatureConfiguration.CODEC)); public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_BUTTERFLY_FIELDS_FLORA = FEATURES.register("butterfly_fields_flora", () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.BUTTERFLY_FIELDS)); public static final DeferredHolder, ElythiaSurfaceCoverFeature> ELYTHIA_SURFACE_COVER = FEATURES.register("elythia_surface_cover", diff --git a/neoforge/src/main/resources/assets/antarchy/models/item/krakens_grasp.json b/neoforge/src/main/resources/assets/antarchy/models/item/krakens_grasp.json new file mode 100644 index 00000000..5331dc07 --- /dev/null +++ b/neoforge/src/main/resources/assets/antarchy/models/item/krakens_grasp.json @@ -0,0 +1,25 @@ +{ + "loader": "neoforge:separate_transforms", + "gui_light": "front", + "textures": { + "layer0": "antarchy:item/krakens_grasp/krakens_grasp_item" + }, + "base": { + "parent": "antarchy:item/krakens_grasp_held" + }, + "texture_size": [ + 64, + 64 + ], + "perspectives": { + "gui": { + "parent": "antarchy:item/krakens_grasp_gui" + }, + "ground": { + "parent": "antarchy:item/krakens_grasp_gui" + }, + "fixed": { + "parent": "antarchy:item/krakens_grasp_gui" + } + } +} diff --git a/neoforge/src/main/resources/assets/antarchy/models/item/rpo_launcher.json b/neoforge/src/main/resources/assets/antarchy/models/item/rpo_launcher.json new file mode 100644 index 00000000..5d625dfa --- /dev/null +++ b/neoforge/src/main/resources/assets/antarchy/models/item/rpo_launcher.json @@ -0,0 +1,18 @@ +{ + "loader": "neoforge:separate_transforms", + "gui_light": "front", + "base": { + "parent": "antarchy:item/rpo_launcher_held_geo" + }, + "perspectives": { + "gui": { + "parent": "antarchy:item/rpo_launcher_gui" + }, + "ground": { + "parent": "antarchy:item/rpo_launcher_gui" + }, + "fixed": { + "parent": "antarchy:item/rpo_launcher_gui" + } + } +} 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 new file mode 100644 index 00000000..281f4a35 --- /dev/null +++ b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/star_coral_in_oceans.json @@ -0,0 +1,6 @@ +{ + "type": "neoforge:add_features", + "biomes": "#antarchy:has_star_coral", + "features": ["antarchy:star_coral_patch"], + "step": "vegetal_decoration" +}