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 00000000..f9d4c1e8 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_1x1.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_2x1.png b/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_2x1.png new file mode 100644 index 00000000..1ae4f41c Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_2x1.png differ 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 00000000..b4406ca1 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_2x2.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_3x3.png b/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_3x3.png new file mode 100644 index 00000000..60f667b9 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_3x3.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_full_1x1.png b/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_full_1x1.png new file mode 100644 index 00000000..bd23f84a Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_full_1x1.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_full_2x1.png b/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_full_2x1.png new file mode 100644 index 00000000..89fcc376 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_full_2x1.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_full_2x2.png b/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_full_2x2.png new file mode 100644 index 00000000..d2f9d2fc Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_full_2x2.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_full_3x3.png b/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_full_3x3.png new file mode 100644 index 00000000..1b6b3e6a Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/giant_lilypad/giant_lilypad_full_3x3.png differ 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 00000000..370266d7 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/lotus.png differ 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 00000000..c457c8a4 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/star_coral/dead_star_coral.png differ 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 00000000..82670cf5 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/star_coral/dead_star_coral_block.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/star_coral/dead_star_coral_fan.png b/common/src/main/resources/assets/antarchy/textures/block/star_coral/dead_star_coral_fan.png new file mode 100644 index 00000000..b2384f70 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/star_coral/dead_star_coral_fan.png differ 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 00000000..a6ca10b4 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/star_coral/star_coral.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/star_coral/star_coral.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/block/star_coral/star_coral.png.mcmeta new file mode 100644 index 00000000..3d71a468 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/block/star_coral/star_coral.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "frametime": 16, + "interpolate": true + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/textures/block/star_coral/star_coral_block.png b/common/src/main/resources/assets/antarchy/textures/block/star_coral/star_coral_block.png new file mode 100644 index 00000000..4df432c4 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/star_coral/star_coral_block.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/star_coral/star_coral_block.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/block/star_coral/star_coral_block.png.mcmeta new file mode 100644 index 00000000..3d71a468 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/block/star_coral/star_coral_block.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "frametime": 16, + "interpolate": true + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/textures/block/star_coral/star_coral_fan.png b/common/src/main/resources/assets/antarchy/textures/block/star_coral/star_coral_fan.png new file mode 100644 index 00000000..2cfec079 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/star_coral/star_coral_fan.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/star_coral/star_coral_fan.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/block/star_coral/star_coral_fan.png.mcmeta new file mode 100644 index 00000000..3d71a468 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/block/star_coral/star_coral_fan.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "frametime": 16, + "interpolate": true + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/textures/entity/tentacle.png b/common/src/main/resources/assets/antarchy/textures/entity/tentacle.png new file mode 100644 index 00000000..8c1f1187 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/tentacle.png differ 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 00000000..39b5499a Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/cheep.png differ 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 00000000..1b802a2c Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/krakens_grasp/krakens_grasp.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/krakens_grasp/krakens_grasp_item.png b/common/src/main/resources/assets/antarchy/textures/item/krakens_grasp/krakens_grasp_item.png new file mode 100644 index 00000000..55a3bb7b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/krakens_grasp/krakens_grasp_item.png differ 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 00000000..e6999aed Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/rpo_launcher_item.png differ 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 00000000..72bee15e Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/models/item/rpo_launcher.png differ diff --git a/common/src/main/resources/data/antarchy/advancement/rocket_powered_octopus.json b/common/src/main/resources/data/antarchy/advancement/rocket_powered_octopus.json new file mode 100644 index 00000000..3bc55c0d --- /dev/null +++ b/common/src/main/resources/data/antarchy/advancement/rocket_powered_octopus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:adventure/root", + "criteria": { + "craft_rpo_launcher": { + "conditions": { + "items": [ + { + "items": "antarchy:rpo_launcher" + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.antarchy.rocket_powered_octopus.description" + }, + "frame": "task", + "icon": { + "count": 1, + "id": "antarchy:rpo_launcher" + }, + "show_toast": true, + "title": { + "translate": "advancements.antarchy.rocket_powered_octopus.title" + } + }, + "requirements": [ + [ + "craft_rpo_launcher" + ] + ], + "sends_telemetry_event": true +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/dead_star_coral.json b/common/src/main/resources/data/antarchy/loot_table/blocks/dead_star_coral.json new file mode 100644 index 00000000..d34f10d0 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/dead_star_coral.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "components": { + "minecraft:enchantments": { + "levels": { + "minecraft:silk_touch": 1 + } + } + } + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:dead_star_coral" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/dead_star_coral_block.json b/common/src/main/resources/data/antarchy/loot_table/blocks/dead_star_coral_block.json new file mode 100644 index 00000000..06d2dfd0 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/dead_star_coral_block.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:dead_star_coral_block" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/dead_star_coral_fan.json b/common/src/main/resources/data/antarchy/loot_table/blocks/dead_star_coral_fan.json new file mode 100644 index 00000000..43218c24 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/dead_star_coral_fan.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "components": { + "minecraft:enchantments": { + "levels": { + "minecraft:silk_touch": 1 + } + } + } + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:dead_star_coral_fan" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/dead_star_coral_wall_fan.json b/common/src/main/resources/data/antarchy/loot_table/blocks/dead_star_coral_wall_fan.json new file mode 100644 index 00000000..43218c24 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/dead_star_coral_wall_fan.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "components": { + "minecraft:enchantments": { + "levels": { + "minecraft:silk_touch": 1 + } + } + } + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:dead_star_coral_fan" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/giant_lily_pad.json b/common/src/main/resources/data/antarchy/loot_table/blocks/giant_lily_pad.json new file mode 100644 index 00000000..1737450b --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/giant_lily_pad.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:giant_lily_pad" + } + ] + } + ], + "random_sequence": "antarchy:blocks/giant_lily_pad" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/star_coral.json b/common/src/main/resources/data/antarchy/loot_table/blocks/star_coral.json new file mode 100644 index 00000000..f7397a97 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/star_coral.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "components": { + "minecraft:enchantments": { + "levels": { + "minecraft:silk_touch": 1 + } + } + } + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:star_coral" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/star_coral_block.json b/common/src/main/resources/data/antarchy/loot_table/blocks/star_coral_block.json new file mode 100644 index 00000000..726008ad --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/star_coral_block.json @@ -0,0 +1,42 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "components": { + "minecraft:enchantments": { + "levels": { + "minecraft:silk_touch": 1 + } + } + } + } + } + ], + "name": "antarchy:star_coral_block" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "name": "antarchy:dead_star_coral_block" + } + ] + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/star_coral_fan.json b/common/src/main/resources/data/antarchy/loot_table/blocks/star_coral_fan.json new file mode 100644 index 00000000..62bea052 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/star_coral_fan.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "components": { + "minecraft:enchantments": { + "levels": { + "minecraft:silk_touch": 1 + } + } + } + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:star_coral_fan" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/star_coral_wall_fan.json b/common/src/main/resources/data/antarchy/loot_table/blocks/star_coral_wall_fan.json new file mode 100644 index 00000000..62bea052 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/star_coral_wall_fan.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "components": { + "minecraft:enchantments": { + "levels": { + "minecraft:silk_touch": 1 + } + } + } + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:star_coral_fan" + } + ] + } + ] +} diff --git a/common/src/main/resources/data/antarchy/loot_table/entities/kraken.json b/common/src/main/resources/data/antarchy/loot_table/entities/kraken.json index d99cdada..dbaa8297 100644 --- a/common/src/main/resources/data/antarchy/loot_table/entities/kraken.json +++ b/common/src/main/resources/data/antarchy/loot_table/entities/kraken.json @@ -18,6 +18,24 @@ "condition": "minecraft:killed_by_player" } ] + }, + { + "rolls": { + "type": "minecraft:uniform", + "min": 1, + "max": 2 + }, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:kraken_tentacle" + } + ], + "conditions": [ + { + "condition": "minecraft:killed_by_player" + } + ] } ] } diff --git a/common/src/main/resources/data/antarchy/recipe/krakens_grasp.json b/common/src/main/resources/data/antarchy/recipe/krakens_grasp.json new file mode 100644 index 00000000..45d4c2d6 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/krakens_grasp.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "EEE", + " T ", + " T " + ], + "key": { + "E": { "item": "antarchy:kraken_tooth" }, + "T": { "item": "antarchy:kraken_tentacle" } + }, + "result": { "id": "antarchy:krakens_grasp", "count": 1 } +} diff --git a/common/src/main/resources/data/antarchy/recipe/miners_dream.json.disabled b/common/src/main/resources/data/antarchy/recipe/miners_dream.json.disabled new file mode 100644 index 00000000..b35b1c80 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/miners_dream.json.disabled @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + "GGG", + "RDR", + "TTT" + ], + "key": { + "G": { "item": "antarchy:triffid_goo" }, + "R": { "item": "minecraft:redstone_block" }, + "D": { "item": "minecraft:diamond_pickaxe" }, + "T": { "item": "minecraft:tnt" } + }, + "result": { + "id": "antarchy:miners_dream", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/recipe/rpo_launcher.json b/common/src/main/resources/data/antarchy/recipe/rpo_launcher.json new file mode 100644 index 00000000..02ea37b5 --- /dev/null +++ b/common/src/main/resources/data/antarchy/recipe/rpo_launcher.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "TTT", + "III", + "TTT" + ], + "key": { + "T": { + "item": "antarchy:titanium_block" + }, + "I": { + "item": "minecraft:ink_sac" + } + }, + "result": { + "id": "antarchy:rpo_launcher", + "count": 1 + } +} diff --git a/common/src/main/resources/data/antarchy/tags/block/coral_blocks.json b/common/src/main/resources/data/antarchy/tags/block/coral_blocks.json new file mode 100644 index 00000000..731c04f2 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/block/coral_blocks.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:star_coral_block" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/block/coral_plants.json b/common/src/main/resources/data/antarchy/tags/block/coral_plants.json new file mode 100644 index 00000000..964b717d --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/block/coral_plants.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:star_coral" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/block/corals.json b/common/src/main/resources/data/antarchy/tags/block/corals.json new file mode 100644 index 00000000..d900f62f --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/block/corals.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:star_coral", + "antarchy:star_coral_fan" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/block/wall_corals.json b/common/src/main/resources/data/antarchy/tags/block/wall_corals.json new file mode 100644 index 00000000..a42a8397 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/block/wall_corals.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:star_coral_wall_fan" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/fluids/giant_lily_pad_supporting_fluids.json b/common/src/main/resources/data/antarchy/tags/fluids/giant_lily_pad_supporting_fluids.json new file mode 100644 index 00000000..db6013a5 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/fluids/giant_lily_pad_supporting_fluids.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "minecraft:water", + "antarchy:lumen" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/item/multishot_enchantable.json b/common/src/main/resources/data/antarchy/tags/item/multishot_enchantable.json index 6fd60b67..1b6b505d 100644 --- a/common/src/main/resources/data/antarchy/tags/item/multishot_enchantable.json +++ b/common/src/main/resources/data/antarchy/tags/item/multishot_enchantable.json @@ -2,6 +2,7 @@ "replace": false, "values": [ "#minecraft:enchantable/crossbow", - "antarchy:squidzooka" + "antarchy:squidzooka", + "antarchy:rpo_launcher" ] } diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/has_star_coral.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/has_star_coral.json new file mode 100644 index 00000000..d70e35cc --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/has_star_coral.json @@ -0,0 +1,14 @@ +{ + "replace": false, + "values": [ + "#minecraft:is_ocean", + { + "id": "#neoforge:is_ocean", + "required": false + }, + { + "id": "#c:ocean", + "required": false + } + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/biome/butterfly_fields.json b/common/src/main/resources/data/antarchy/worldgen/biome/butterfly_fields.json index e876c597..27fac466 100644 --- a/common/src/main/resources/data/antarchy/worldgen/biome/butterfly_fields.json +++ b/common/src/main/resources/data/antarchy/worldgen/biome/butterfly_fields.json @@ -64,14 +64,14 @@ ], [] ], - "creature_spawn_probability": 0.8, + "creature_spawn_probability": 0.20, "spawners": { "monster": [ ], "creature": [ { "type": "antarchy:caterpillar", - "weight": 90, + "weight": 30, "minCount": 6, "maxCount": 12 }, @@ -84,8 +84,8 @@ { "type": "antarchy:enchanted_golden_apple_cow", "weight": 4, - "minCount": 2, - "maxCount": 3 + "minCount": 1, + "maxCount": 1 } ], "ambient": [ diff --git a/common/src/main/resources/data/antarchy/worldgen/biome/peach_forest.json b/common/src/main/resources/data/antarchy/worldgen/biome/peach_forest.json index d44f64ae..26bd17d6 100644 --- a/common/src/main/resources/data/antarchy/worldgen/biome/peach_forest.json +++ b/common/src/main/resources/data/antarchy/worldgen/biome/peach_forest.json @@ -28,7 +28,6 @@ "liquid": [] }, "features": [ - [], [], [ "antarchy:peach_forest_ponds_large", @@ -38,6 +37,7 @@ [], [], [], + [], [ "minecraft:ore_coal_upper", "minecraft:ore_coal_lower", diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/star_coral_patch.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/star_coral_patch.json new file mode 100644 index 00000000..26ef9212 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/star_coral_patch.json @@ -0,0 +1,4 @@ +{ + "type": "antarchy:star_coral_patch", + "config": {} +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/star_coral_patch.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/star_coral_patch.json new file mode 100644 index 00000000..4d42abb9 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/star_coral_patch.json @@ -0,0 +1,19 @@ +{ + "feature": "antarchy:star_coral_patch", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 14 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:heightmap", + "heightmap": "OCEAN_FLOOR_WG" + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/mineable/pickaxe.json b/common/src/main/resources/data/minecraft/tags/block/mineable/pickaxe.json index aabf86b1..72954032 100644 --- a/common/src/main/resources/data/minecraft/tags/block/mineable/pickaxe.json +++ b/common/src/main/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -69,6 +69,14 @@ "antarchy:smooth_dream_sandstone_stairs", "antarchy:smooth_dream_sandstone_slab", "antarchy:cut_dream_sandstone_slab", - "antarchy:red_ant_nest" + "antarchy:red_ant_nest", + "antarchy:star_coral", + "antarchy:star_coral_fan", + "antarchy:star_coral_wall_fan", + "antarchy:star_coral_block", + "antarchy:dead_star_coral", + "antarchy:dead_star_coral_fan", + "antarchy:dead_star_coral_wall_fan", + "antarchy:dead_star_coral_block" ] } diff --git a/common/src/main/resources/data/minecraft/tags/block/underwater_bonemeals.json b/common/src/main/resources/data/minecraft/tags/block/underwater_bonemeals.json new file mode 100644 index 00000000..a8614dfb --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/underwater_bonemeals.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:star_coral", + "antarchy:star_coral_wall_fan" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/item/enchantable/trident.json b/common/src/main/resources/data/minecraft/tags/item/enchantable/trident.json new file mode 100644 index 00000000..4d4e3067 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/item/enchantable/trident.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:krakens_grasp" + ] +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabric.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabric.java index 0df07e3d..f3d23fb8 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabric.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabric.java @@ -107,6 +107,14 @@ public final class AntarchyFabric implements ModInitializer { Registries.PLACED_FEATURE, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "corn_patch") ); + private static final TagKey HAS_STAR_CORAL = TagKey.create( + Registries.BIOME, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "has_star_coral") + ); + private static final ResourceKey STAR_CORAL_PATCH = ResourceKey.create( + Registries.PLACED_FEATURE, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "star_coral_patch") + ); @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" +}