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 e1723a0d..a506b801 100644 --- a/common/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java +++ b/common/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java @@ -444,6 +444,17 @@ public final class AntarchySettings { private static int bloodCrystalChestplateDurability = 112; private static int bloodCrystalLeggingsDurability = 105; private static int bloodCrystalBootsDurability = 91; + private static double toreterrorHealth = 300.0D; + private static double toreterrorJumpAttackDamage = 14.0D; + private static double toreterrorJumpAttackKnockback = 2.5D; + private static double toreterrorSpinDamage = 8.0D; + private static double toreterrorSpinKnockback = 1.5D; + private static double toreterrorRangedWaterBombChance = 0.5D; + private static double waterBombDamage = 6.0D; + private static int waterBombLifetimeTicks = 120; + private static double waterBombGravity = 0.12D; + private static double waterBombKnockback = 1.2D; + private static double waterCannonCooldownSeconds = 1.5D; private AntarchySettings() { } @@ -2306,4 +2317,27 @@ public final class AntarchySettings { public static int bloodCrystalHardMaxShields() { return bloodCrystalHardMaxShields; } public static void setBloodCrystalHardMaxShields(int v) { bloodCrystalHardMaxShields = v; } + + public static double toreterrorHealth() { return toreterrorHealth; } + public static void setToreterrorHealth(double v) { toreterrorHealth = v; } + public static double toreterrorJumpAttackDamage() { return toreterrorJumpAttackDamage; } + public static void setToreterrorJumpAttackDamage(double v) { toreterrorJumpAttackDamage = v; } + public static double toreterrorJumpAttackKnockback() { return toreterrorJumpAttackKnockback; } + public static void setToreterrorJumpAttackKnockback(double v) { toreterrorJumpAttackKnockback = v; } + public static double toreterrorSpinDamage() { return toreterrorSpinDamage; } + public static void setToreterrorSpinDamage(double v) { toreterrorSpinDamage = v; } + public static double toreterrorSpinKnockback() { return toreterrorSpinKnockback; } + public static void setToreterrorSpinKnockback(double v) { toreterrorSpinKnockback = v; } + public static double toreterrorRangedWaterBombChance() { return toreterrorRangedWaterBombChance; } + public static void setToreterrorRangedWaterBombChance(double v) { toreterrorRangedWaterBombChance = v; } + public static double waterBombDamage() { return waterBombDamage; } + public static void setWaterBombDamage(double v) { waterBombDamage = v; } + public static int waterBombLifetimeTicks() { return waterBombLifetimeTicks; } + public static void setWaterBombLifetimeTicks(int v) { waterBombLifetimeTicks = v; } + public static double waterBombGravity() { return waterBombGravity; } + public static void setWaterBombGravity(double v) { waterBombGravity = v; } + public static double waterBombKnockback() { return waterBombKnockback; } + public static void setWaterBombKnockback(double v) { waterBombKnockback = v; } + public static double waterCannonCooldownSeconds() { return waterCannonCooldownSeconds; } + public static void setWaterCannonCooldownSeconds(double v) { waterCannonCooldownSeconds = v; } } 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 f2f45f04..d70e3ecc 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java @@ -6,7 +6,9 @@ import com.craisinlord.antarchy.content.entity.ButterflyEntity; import com.craisinlord.antarchy.content.entity.CaterpillarEntity; import com.craisinlord.antarchy.content.entity.EasterBunnyEntity; import com.craisinlord.antarchy.content.entity.HushProjectileEntity; +import com.craisinlord.antarchy.content.entity.WaterBombEntity; import com.craisinlord.antarchy.content.entity.TriffidEntity; +import com.craisinlord.antarchy.content.entity.ToreterrorEntity; import com.craisinlord.antarchy.content.entity.WaspEntity; import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyOrbEntity; @@ -28,7 +30,9 @@ import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.EntityType; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; public final class AntarchyObjects { @@ -71,6 +75,10 @@ public final class AntarchyObjects { @SuppressWarnings("unchecked") public static Supplier> HUSH_PROJECTILE = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") + public static Supplier> TORETERROR = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> WATER_BOMB = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") public static Supplier DUPLICATOR_LOG = (Supplier) UNBOUND; @SuppressWarnings("unchecked") public static Supplier DUPLICATOR_SAPLING = (Supplier) UNBOUND; @@ -83,6 +91,36 @@ public final class AntarchyObjects { @SuppressWarnings("unchecked") public static Supplier NYXITE = (Supplier) UNBOUND; @SuppressWarnings("unchecked") + public static Supplier SHELLSTONE = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier POLISHED_SHELLSTONE = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier SHELLSTONE_BRICKS = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier CHISELED_SHELLSTONE = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier MOSSY_SHELLSTONE_BRICKS = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier CRACKED_SHELLSTONE_BRICKS = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier SHELLSTONE_STAIRS = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier SHELLSTONE_SLAB = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier SHELLSTONE_WALL = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier POLISHED_SHELLSTONE_STAIRS = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier POLISHED_SHELLSTONE_SLAB = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier POLISHED_SHELLSTONE_WALL = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier SHELLSTONE_BRICK_STAIRS = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier SHELLSTONE_BRICK_SLAB = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier SHELLSTONE_BRICK_WALL = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") public static Supplier CLOUD_BLOCK = (Supplier) UNBOUND; @SuppressWarnings("unchecked") public static Supplier TRIFFID_GOO_BLOCK = (Supplier) UNBOUND; @@ -176,12 +214,29 @@ public final class AntarchyObjects { Supplier> brutalfly, Supplier> brutalflyOrb, Supplier> hushProjectile, + Supplier> toreterror, + Supplier> waterBomb, Supplier duplicatorLog, Supplier duplicatorSapling, Supplier ductTape, Supplier infestedRootedDirt, Supplier infestedCoarseDirt, Supplier nyxite, + Supplier shellstone, + Supplier polishedShellstone, + Supplier shellstoneBricks, + Supplier chiseledShellstone, + Supplier mossyShellstoneBricks, + Supplier crackedShellstoneBricks, + Supplier shellstoneStairs, + Supplier shellstoneSlab, + Supplier shellstoneWall, + Supplier polishedShellstoneStairs, + Supplier polishedShellstoneSlab, + Supplier polishedShellstoneWall, + Supplier shellstoneBrickStairs, + Supplier shellstoneBrickSlab, + Supplier shellstoneBrickWall, Supplier cloudBlock, Supplier triffidGooBlock, Supplier paleNyxite, @@ -236,12 +291,29 @@ public final class AntarchyObjects { BRUTALFLY = brutalfly; BRUTALFLY_ORB = brutalflyOrb; HUSH_PROJECTILE = hushProjectile; + TORETERROR = toreterror; + WATER_BOMB = waterBomb; DUPLICATOR_LOG = duplicatorLog; DUPLICATOR_SAPLING = duplicatorSapling; DUCT_TAPE = ductTape; INFESTED_ROOTED_DIRT = infestedRootedDirt; INFESTED_COARSE_DIRT = infestedCoarseDirt; NYXITE = nyxite; + SHELLSTONE = shellstone; + POLISHED_SHELLSTONE = polishedShellstone; + SHELLSTONE_BRICKS = shellstoneBricks; + CHISELED_SHELLSTONE = chiseledShellstone; + MOSSY_SHELLSTONE_BRICKS = mossyShellstoneBricks; + CRACKED_SHELLSTONE_BRICKS = crackedShellstoneBricks; + SHELLSTONE_STAIRS = shellstoneStairs; + SHELLSTONE_SLAB = shellstoneSlab; + SHELLSTONE_WALL = shellstoneWall; + POLISHED_SHELLSTONE_STAIRS = polishedShellstoneStairs; + POLISHED_SHELLSTONE_SLAB = polishedShellstoneSlab; + POLISHED_SHELLSTONE_WALL = polishedShellstoneWall; + SHELLSTONE_BRICK_STAIRS = shellstoneBrickStairs; + SHELLSTONE_BRICK_SLAB = shellstoneBrickSlab; + SHELLSTONE_BRICK_WALL = shellstoneBrickWall; CLOUD_BLOCK = cloudBlock; TRIFFID_GOO_BLOCK = triffidGooBlock; PALE_NYXITE = paleNyxite; @@ -283,4 +355,8 @@ public final class AntarchyObjects { public static boolean isDuplicatorTreeBlock(BlockState state) { return state.is(DUPLICATOR_LOG.get()) || state.is(DUPLICATOR_SAPLING.get()); } + + public static BlockBehaviour.Properties shellstoneProperties() { + return BlockBehaviour.Properties.ofFullCopy(Blocks.STONE).requiresCorrectToolForDrops(); + } } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/DreamCampfireBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/DreamCampfireBlock.java index 13e5723e..c9b8c890 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/block/DreamCampfireBlock.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/DreamCampfireBlock.java @@ -4,7 +4,14 @@ import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; +import net.minecraft.core.registries.Registries; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.CampfireBlock; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityTicker; @@ -48,4 +55,17 @@ public class DreamCampfireBlock extends CampfireBlock { ? createTickerHelper(blockEntityType, dreamCampfireType, CampfireBlockEntity::cookTick) : createTickerHelper(blockEntityType, dreamCampfireType, CampfireBlockEntity::cooldownTick); } + + @Override + public void playerDestroy(Level level, Player player, BlockPos pos, BlockState state, BlockEntity blockEntity, ItemStack stack) { + var silkTouch = level.registryAccess().lookupOrThrow(Registries.ENCHANTMENT).getOrThrow(Enchantments.SILK_TOUCH); + boolean hasSilkTouch = EnchantmentHelper.getItemEnchantmentLevel(silkTouch, stack) > 0; + ItemStack droppedCampfire = hasSilkTouch ? this.getCloneItemStack(level, pos, state) : ItemStack.EMPTY; + + super.playerDestroy(level, player, pos, state, blockEntity, stack); + + if (hasSilkTouch && !droppedCampfire.isEmpty() && level instanceof ServerLevel serverLevel) { + Block.popResource(serverLevel, pos, droppedCampfire); + } + } } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/HushProjectileEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/HushProjectileEntity.java index b3efe369..bb336669 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/HushProjectileEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/HushProjectileEntity.java @@ -96,9 +96,7 @@ public class HushProjectileEntity extends ThrowableItemProjectile { return; } - // Smoothly steer toward the target each tick — no hard phase transition. - // The initial upward launch velocity from HushweedBlockEntity gives a natural - // rising arc before the homing takes over. + // Smoothly steer toward the target each tick Vec3 desired = toTarget.normalize().scale(TRAVEL_SPEED); this.setDeltaMovement(this.getDeltaMovement().lerp(desired, 0.1D)); } 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 b76b8891..d0ac4bc3 100644 --- a/common/src/main/resources/assets/antarchy/lang/en_us.json +++ b/common/src/main/resources/assets/antarchy/lang/en_us.json @@ -32,6 +32,21 @@ "block.antarchy.polished_nyxite": "Polished Nyxite", "block.antarchy.chiseled_nyxite": "Chiseled Nyxite", "block.antarchy.nyxite_bricks": "Nyxite Bricks", + "block.antarchy.shellstone": "Shellstone", + "block.antarchy.polished_shellstone": "Polished Shellstone", + "block.antarchy.shellstone_bricks": "Shellstone Bricks", + "block.antarchy.chiseled_shellstone": "Chiseled Shellstone", + "block.antarchy.mossy_shellstone_bricks": "Mossy Shellstone Bricks", + "block.antarchy.cracked_shellstone_bricks": "Cracked Shellstone Bricks", + "block.antarchy.shellstone_stairs": "Shellstone Stairs", + "block.antarchy.shellstone_slab": "Shellstone Slab", + "block.antarchy.shellstone_wall": "Shellstone Wall", + "block.antarchy.polished_shellstone_stairs": "Polished Shellstone Stairs", + "block.antarchy.polished_shellstone_slab": "Polished Shellstone Slab", + "block.antarchy.polished_shellstone_wall": "Polished Shellstone Wall", + "block.antarchy.shellstone_brick_stairs": "Shellstone Brick Stairs", + "block.antarchy.shellstone_brick_slab": "Shellstone Brick Slab", + "block.antarchy.shellstone_brick_wall": "Shellstone Brick Wall", "block.antarchy.nyxite_stairs": "Nyxite Stairs", "block.antarchy.nyxite_slab": "Nyxite Slab", "block.antarchy.nyxite_wall": "Nyxite Wall", @@ -132,6 +147,8 @@ "entity.antarchy.molevore": "Molevore", "entity.antarchy.mantis": "Mantis", "entity.antarchy.triffid": "Triffid", + "entity.antarchy.toreterror": "Toreterror", + "entity.antarchy.water_bomb": "Water Bomb", "subtitles.antarchy.mantis_ambient": "Mantis clicks", "subtitles.antarchy.mantis_hurt": "Mantis screeches", "subtitles.antarchy.mantis_attack": "Mantis snaps", @@ -189,6 +206,21 @@ "item.antarchy.polished_nyxite": "Polished Nyxite", "item.antarchy.chiseled_nyxite": "Chiseled Nyxite", "item.antarchy.nyxite_bricks": "Nyxite Bricks", + "item.antarchy.shellstone": "Shellstone", + "item.antarchy.polished_shellstone": "Polished Shellstone", + "item.antarchy.shellstone_bricks": "Shellstone Bricks", + "item.antarchy.chiseled_shellstone": "Chiseled Shellstone", + "item.antarchy.mossy_shellstone_bricks": "Mossy Shellstone Bricks", + "item.antarchy.cracked_shellstone_bricks": "Cracked Shellstone Bricks", + "item.antarchy.shellstone_stairs": "Shellstone Stairs", + "item.antarchy.shellstone_slab": "Shellstone Slab", + "item.antarchy.shellstone_wall": "Shellstone Wall", + "item.antarchy.polished_shellstone_stairs": "Polished Shellstone Stairs", + "item.antarchy.polished_shellstone_slab": "Polished Shellstone Slab", + "item.antarchy.polished_shellstone_wall": "Polished Shellstone Wall", + "item.antarchy.shellstone_brick_stairs": "Shellstone Brick Stairs", + "item.antarchy.shellstone_brick_slab": "Shellstone Brick Slab", + "item.antarchy.shellstone_brick_wall": "Shellstone Brick Wall", "item.antarchy.nyxite_stairs": "Nyxite Stairs", "item.antarchy.nyxite_slab": "Nyxite Slab", "item.antarchy.nyxite_wall": "Nyxite Wall", @@ -306,6 +338,13 @@ "item.antarchy.kraken_spawn_egg": "Uh, no. Don't.", "item.antarchy.missile_squid_spawn_egg": "Missile Squid Spawn Egg", "item.antarchy.nightmare_spawn_egg": "Nightmare Spawn Egg", + "item.antarchy.toreterror_spawn_egg": "Toreterror Spawn Egg", + "item.antarchy.water_cannon": "Water Cannon", + "item.antarchy.primordial_scute": "Primordial Scute", + "item.antarchy.primordial_helmet": "Primordial Helmet", + "item.antarchy.primordial_chestplate": "Primordial Chestplate", + "item.antarchy.primordial_leggings": "Primordial Leggings", + "item.antarchy.primordial_boots": "Primordial Boots", "item.antarchy.bed_bug_spawn_egg": "Bed Bug Spawn Egg", "item.antarchy.moleworm_spawn_egg": "Moleworm Spawn Egg", "item.antarchy.molevore_spawn_egg": "Molevore Spawn Egg", diff --git a/common/src/main/resources/assets/antarchy/models/item/water_cannon_gui.json b/common/src/main/resources/assets/antarchy/models/item/water_cannon_gui.json new file mode 100644 index 00000000..91aa0a67 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/water_cannon_gui.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "gui_light": "front", + "textures": { + "layer0": "antarchy:item/water_cannon_item" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/water_cannon_held_geo.json b/common/src/main/resources/assets/antarchy/models/item/water_cannon_held_geo.json new file mode 100644 index 00000000..244473f9 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/water_cannon_held_geo.json @@ -0,0 +1,37 @@ +{ + "parent": "builtin/entity", + "display": { + "thirdperson_righthand": { + "translation": [0, -2, 5], + "scale": [0.7, 0.7, 0.7] + }, + "thirdperson_lefthand": { + "translation": [0, -2, 5], + "scale": [0.7, 0.7, 0.7] + }, + "firstperson_righthand": { + "rotation": [10, 0, -5], + "translation": [2, 0, 1], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [10, 0, -5], + "translation": [2, 0, 1], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [30, -135, 0], + "translation": [-1, -1.5, 0], + "scale": [0.425, 0.425, 0.425] + }, + "fixed": { + "rotation": [90, -45, 90], + "translation": [0, -1.25, 0], + "scale": [0.4, 0.4, 0.4] + }, + "on_shelf": { + "rotation": [90, 0, 0], + "scale": [0.7, 0.7, 0.7] + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/textures/block/shellstone/chiseled_shellstone_bricks.png b/common/src/main/resources/assets/antarchy/textures/block/shellstone/chiseled_shellstone_bricks.png new file mode 100644 index 00000000..0ce86402 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/shellstone/chiseled_shellstone_bricks.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/shellstone/cracked_shellstone_bricks.png b/common/src/main/resources/assets/antarchy/textures/block/shellstone/cracked_shellstone_bricks.png new file mode 100644 index 00000000..a7034f72 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/shellstone/cracked_shellstone_bricks.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/shellstone/mossy_shellstone_bricks.png b/common/src/main/resources/assets/antarchy/textures/block/shellstone/mossy_shellstone_bricks.png new file mode 100644 index 00000000..cf3e2dd1 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/shellstone/mossy_shellstone_bricks.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/shellstone/polished_shellstone.png b/common/src/main/resources/assets/antarchy/textures/block/shellstone/polished_shellstone.png new file mode 100644 index 00000000..663d8f9d Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/shellstone/polished_shellstone.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/shellstone/shellstone.png b/common/src/main/resources/assets/antarchy/textures/block/shellstone/shellstone.png new file mode 100644 index 00000000..b4b3c1e6 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/shellstone/shellstone.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/shellstone/shellstone_bricks.png b/common/src/main/resources/assets/antarchy/textures/block/shellstone/shellstone_bricks.png new file mode 100644 index 00000000..e430d0ef Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/shellstone/shellstone_bricks.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/primordial/primordial_boots.png b/common/src/main/resources/assets/antarchy/textures/item/primordial/primordial_boots.png new file mode 100644 index 00000000..3ddfcc0f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/primordial/primordial_boots.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/primordial/primordial_chestplate.png b/common/src/main/resources/assets/antarchy/textures/item/primordial/primordial_chestplate.png new file mode 100644 index 00000000..4ccff195 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/primordial/primordial_chestplate.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/primordial/primordial_helmet.png b/common/src/main/resources/assets/antarchy/textures/item/primordial/primordial_helmet.png new file mode 100644 index 00000000..e4587733 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/primordial/primordial_helmet.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/primordial/primordial_leggings.png b/common/src/main/resources/assets/antarchy/textures/item/primordial/primordial_leggings.png new file mode 100644 index 00000000..01a3dc58 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/primordial/primordial_leggings.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/water_cannon_item.png b/common/src/main/resources/assets/antarchy/textures/item/water_cannon_item.png new file mode 100644 index 00000000..8dc1d3d4 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/water_cannon_item.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/models/armor/primordial_layer_1.png b/common/src/main/resources/assets/antarchy/textures/models/armor/primordial_layer_1.png new file mode 100644 index 00000000..1047d1ea Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/models/armor/primordial_layer_1.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/models/armor/primordial_layer_2.png b/common/src/main/resources/assets/antarchy/textures/models/armor/primordial_layer_2.png new file mode 100644 index 00000000..f2eabad6 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/models/armor/primordial_layer_2.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/models/item/water_cannon.png b/common/src/main/resources/assets/antarchy/textures/models/item/water_cannon.png new file mode 100644 index 00000000..3978fa8b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/models/item/water_cannon.png differ 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 fec4d2c7..a73bb9ab 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 @@ -36,6 +36,21 @@ "antarchy:nyxite_brick_stairs", "antarchy:nyxite_brick_slab", "antarchy:nyxite_brick_wall", + "antarchy:shellstone", + "antarchy:polished_shellstone", + "antarchy:shellstone_bricks", + "antarchy:chiseled_shellstone", + "antarchy:mossy_shellstone_bricks", + "antarchy:cracked_shellstone_bricks", + "antarchy:shellstone_stairs", + "antarchy:shellstone_slab", + "antarchy:shellstone_wall", + "antarchy:polished_shellstone_stairs", + "antarchy:polished_shellstone_slab", + "antarchy:polished_shellstone_wall", + "antarchy:shellstone_brick_stairs", + "antarchy:shellstone_brick_slab", + "antarchy:shellstone_brick_wall", "antarchy:nyxite_spike", "antarchy:potent_nyxite", "antarchy:blood_crystal_block", @@ -54,4 +69,3 @@ "antarchy:red_ant_nest" ] } - diff --git a/common/src/main/resources/data/minecraft/tags/block/needs_stone_tool.json b/common/src/main/resources/data/minecraft/tags/block/needs_stone_tool.json index 5d341ba2..d0a65c64 100644 --- a/common/src/main/resources/data/minecraft/tags/block/needs_stone_tool.json +++ b/common/src/main/resources/data/minecraft/tags/block/needs_stone_tool.json @@ -1,4 +1,20 @@ { "replace": false, - "values": [] + "values": [ + "antarchy:shellstone", + "antarchy:polished_shellstone", + "antarchy:shellstone_bricks", + "antarchy:chiseled_shellstone", + "antarchy:mossy_shellstone_bricks", + "antarchy:cracked_shellstone_bricks", + "antarchy:shellstone_stairs", + "antarchy:shellstone_slab", + "antarchy:shellstone_wall", + "antarchy:polished_shellstone_stairs", + "antarchy:polished_shellstone_slab", + "antarchy:polished_shellstone_wall", + "antarchy:shellstone_brick_stairs", + "antarchy:shellstone_brick_slab", + "antarchy:shellstone_brick_wall" + ] } diff --git a/common/src/main/resources/data/minecraft/tags/block/slabs.json b/common/src/main/resources/data/minecraft/tags/block/slabs.json index c369e8a4..f353c9ad 100644 --- a/common/src/main/resources/data/minecraft/tags/block/slabs.json +++ b/common/src/main/resources/data/minecraft/tags/block/slabs.json @@ -4,6 +4,9 @@ "antarchy:nyxite_slab", "antarchy:polished_nyxite_slab", "antarchy:nyxite_brick_slab", + "antarchy:shellstone_slab", + "antarchy:polished_shellstone_slab", + "antarchy:shellstone_brick_slab", "antarchy:dream_sandstone_slab", "antarchy:smooth_dream_sandstone_slab", "antarchy:cut_dream_sandstone_slab", diff --git a/common/src/main/resources/data/minecraft/tags/block/stairs.json b/common/src/main/resources/data/minecraft/tags/block/stairs.json index eede1ceb..4a268bb0 100644 --- a/common/src/main/resources/data/minecraft/tags/block/stairs.json +++ b/common/src/main/resources/data/minecraft/tags/block/stairs.json @@ -4,6 +4,9 @@ "antarchy:nyxite_stairs", "antarchy:nyxite_brick_stairs", "antarchy:polished_nyxite_stairs", + "antarchy:shellstone_stairs", + "antarchy:polished_shellstone_stairs", + "antarchy:shellstone_brick_stairs", "antarchy:dream_sandstone_stairs", "antarchy:smooth_dream_sandstone_stairs", "antarchy:cut_titanium_stairs", diff --git a/common/src/main/resources/data/minecraft/tags/block/walls.json b/common/src/main/resources/data/minecraft/tags/block/walls.json index 8df37e0e..a53d44da 100644 --- a/common/src/main/resources/data/minecraft/tags/block/walls.json +++ b/common/src/main/resources/data/minecraft/tags/block/walls.json @@ -4,6 +4,9 @@ "antarchy:dream_sandstone_wall", "antarchy:nyxite_wall", "antarchy:polished_nyxite_wall", - "antarchy:nyxite_brick_wall" + "antarchy:nyxite_brick_wall", + "antarchy:shellstone_wall", + "antarchy:polished_shellstone_wall", + "antarchy:shellstone_brick_wall" ] } diff --git a/common/src/main/resources/data/minecraft/tags/item/slabs.json b/common/src/main/resources/data/minecraft/tags/item/slabs.json index c369e8a4..f353c9ad 100644 --- a/common/src/main/resources/data/minecraft/tags/item/slabs.json +++ b/common/src/main/resources/data/minecraft/tags/item/slabs.json @@ -4,6 +4,9 @@ "antarchy:nyxite_slab", "antarchy:polished_nyxite_slab", "antarchy:nyxite_brick_slab", + "antarchy:shellstone_slab", + "antarchy:polished_shellstone_slab", + "antarchy:shellstone_brick_slab", "antarchy:dream_sandstone_slab", "antarchy:smooth_dream_sandstone_slab", "antarchy:cut_dream_sandstone_slab", diff --git a/common/src/main/resources/data/minecraft/tags/item/stairs.json b/common/src/main/resources/data/minecraft/tags/item/stairs.json index eede1ceb..85da72ea 100644 --- a/common/src/main/resources/data/minecraft/tags/item/stairs.json +++ b/common/src/main/resources/data/minecraft/tags/item/stairs.json @@ -4,9 +4,12 @@ "antarchy:nyxite_stairs", "antarchy:nyxite_brick_stairs", "antarchy:polished_nyxite_stairs", + "antarchy:shellstone_stairs", + "antarchy:polished_shellstone_stairs", + "antarchy:shellstone_brick_stairs", "antarchy:dream_sandstone_stairs", "antarchy:smooth_dream_sandstone_stairs", - "antarchy:cut_titanium_stairs", - "antarchy:cut_uranium_stairs" + "antarchy:cut_uranium_stairs", + "antarchy:cut_titanium_stairs" ] } diff --git a/common/src/main/resources/data/minecraft/tags/item/walls.json b/common/src/main/resources/data/minecraft/tags/item/walls.json index 389a5cde..c584b031 100644 --- a/common/src/main/resources/data/minecraft/tags/item/walls.json +++ b/common/src/main/resources/data/minecraft/tags/item/walls.json @@ -4,6 +4,9 @@ "antarchy:nyxite_wall", "antarchy:polished_nyxite_wall", "antarchy:nyxite_brick_wall", + "antarchy:shellstone_wall", + "antarchy:polished_shellstone_wall", + "antarchy:shellstone_brick_wall", "antarchy:dream_sandstone_wall" ] } 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 2ef31311..53395782 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java @@ -64,6 +64,10 @@ import com.craisinlord.antarchy.content.entity.ScorpionEntity; import com.craisinlord.antarchy.content.item.LucidEyeItem; import com.craisinlord.antarchy.content.item.LucidPearlItem; import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity; +import com.craisinlord.antarchy.content.entity.ToreterrorEntity; +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.MolevoreEntity; import com.craisinlord.antarchy.content.entity.MolewormEntity; @@ -391,6 +395,18 @@ public final class AntarchyFabricContent { 3.0F, (float) AntarchySettings.nightmareArmorKnockbackResistance() )); + public static final DeferredItem PRIMORDIAL_SCUTE = ITEMS.registerSimpleItem("primordial_scute", + new Item.Properties().rarity(Rarity.UNCOMMON)); + private static final DeferredHolder PRIMORDIAL_ARMOR_MATERIAL = ARMOR_MATERIALS.register("primordial", + () -> new ArmorMaterial( + createPrimordialArmorDefense(), + 15, + SoundEvents.ARMOR_EQUIP_NETHERITE, + () -> Ingredient.of(PRIMORDIAL_SCUTE.get()), + List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "primordial"))), + 3.0F, + 0.1F + )); private static final DeferredHolder BLOOD_CRYSTAL_ARMOR_MATERIAL = ARMOR_MATERIALS.register("blood_crystal", () -> new ArmorMaterial( createBloodCrystalArmorDefense(), @@ -510,6 +526,36 @@ public final class AntarchyFabricContent { () -> new net.minecraft.world.level.block.SlabBlock(nyxiteProperties())); public static final DeferredBlock NYXITE_BRICK_WALL = BLOCKS.register("nyxite_brick_wall", () -> new net.minecraft.world.level.block.WallBlock(nyxiteProperties())); + public static final DeferredBlock SHELLSTONE = BLOCKS.register("shellstone", + () -> new Block(AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock POLISHED_SHELLSTONE = BLOCKS.register("polished_shellstone", + () -> new Block(AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock SHELLSTONE_BRICKS = BLOCKS.register("shellstone_bricks", + () -> new Block(AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock CHISELED_SHELLSTONE = BLOCKS.register("chiseled_shellstone", + () -> new Block(AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock MOSSY_SHELLSTONE_BRICKS = BLOCKS.register("mossy_shellstone_bricks", + () -> new Block(AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock CRACKED_SHELLSTONE_BRICKS = BLOCKS.register("cracked_shellstone_bricks", + () -> new Block(AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock SHELLSTONE_STAIRS = BLOCKS.register("shellstone_stairs", + () -> new net.minecraft.world.level.block.StairBlock(SHELLSTONE.get().defaultBlockState(), AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock SHELLSTONE_SLAB = BLOCKS.register("shellstone_slab", + () -> new net.minecraft.world.level.block.SlabBlock(AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock SHELLSTONE_WALL = BLOCKS.register("shellstone_wall", + () -> new net.minecraft.world.level.block.WallBlock(AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock POLISHED_SHELLSTONE_STAIRS = BLOCKS.register("polished_shellstone_stairs", + () -> new net.minecraft.world.level.block.StairBlock(POLISHED_SHELLSTONE.get().defaultBlockState(), AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock POLISHED_SHELLSTONE_SLAB = BLOCKS.register("polished_shellstone_slab", + () -> new net.minecraft.world.level.block.SlabBlock(AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock POLISHED_SHELLSTONE_WALL = BLOCKS.register("polished_shellstone_wall", + () -> new net.minecraft.world.level.block.WallBlock(AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock SHELLSTONE_BRICK_STAIRS = BLOCKS.register("shellstone_brick_stairs", + () -> new net.minecraft.world.level.block.StairBlock(SHELLSTONE_BRICKS.get().defaultBlockState(), AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock SHELLSTONE_BRICK_SLAB = BLOCKS.register("shellstone_brick_slab", + () -> new net.minecraft.world.level.block.SlabBlock(AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock SHELLSTONE_BRICK_WALL = BLOCKS.register("shellstone_brick_wall", + () -> new net.minecraft.world.level.block.WallBlock(AntarchyObjects.shellstoneProperties())); public static final DeferredBlock TRIFFID_GOO_BLOCK = BLOCKS.register("triffid_goo_block", () -> new com.craisinlord.antarchy.content.block.TriffidGooBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SLIME_BLOCK).noOcclusion().isViewBlocking((s, l, p) -> false).isSuffocating((s, l, p) -> false))); public static final DeferredBlock CLOUD_BLOCK = BLOCKS.register("cloud_block", @@ -1031,6 +1077,21 @@ public final class AntarchyFabricContent { public static final DeferredItem NYXITE_BRICK_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_BRICK_STAIRS); public static final DeferredItem NYXITE_BRICK_SLAB_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_BRICK_SLAB); public static final DeferredItem NYXITE_BRICK_WALL_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_BRICK_WALL); + public static final DeferredItem SHELLSTONE_ITEM = ITEMS.registerSimpleBlockItem(SHELLSTONE); + public static final DeferredItem POLISHED_SHELLSTONE_ITEM = ITEMS.registerSimpleBlockItem(POLISHED_SHELLSTONE); + public static final DeferredItem SHELLSTONE_BRICKS_ITEM = ITEMS.registerSimpleBlockItem(SHELLSTONE_BRICKS); + public static final DeferredItem CHISELED_SHELLSTONE_ITEM = ITEMS.registerSimpleBlockItem(CHISELED_SHELLSTONE); + public static final DeferredItem MOSSY_SHELLSTONE_BRICKS_ITEM = ITEMS.registerSimpleBlockItem(MOSSY_SHELLSTONE_BRICKS); + public static final DeferredItem CRACKED_SHELLSTONE_BRICKS_ITEM = ITEMS.registerSimpleBlockItem(CRACKED_SHELLSTONE_BRICKS); + public static final DeferredItem SHELLSTONE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(SHELLSTONE_STAIRS); + public static final DeferredItem SHELLSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(SHELLSTONE_SLAB); + public static final DeferredItem SHELLSTONE_WALL_ITEM = ITEMS.registerSimpleBlockItem(SHELLSTONE_WALL); + public static final DeferredItem POLISHED_SHELLSTONE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(POLISHED_SHELLSTONE_STAIRS); + public static final DeferredItem POLISHED_SHELLSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(POLISHED_SHELLSTONE_SLAB); + public static final DeferredItem POLISHED_SHELLSTONE_WALL_ITEM = ITEMS.registerSimpleBlockItem(POLISHED_SHELLSTONE_WALL); + public static final DeferredItem SHELLSTONE_BRICK_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(SHELLSTONE_BRICK_STAIRS); + public static final DeferredItem SHELLSTONE_BRICK_SLAB_ITEM = ITEMS.registerSimpleBlockItem(SHELLSTONE_BRICK_SLAB); + public static final DeferredItem SHELLSTONE_BRICK_WALL_ITEM = ITEMS.registerSimpleBlockItem(SHELLSTONE_BRICK_WALL); public static final DeferredItem TRIFFID_GOO_BLOCK_ITEM = ITEMS.register("triffid_goo_block", () -> new com.craisinlord.antarchy.content.item.TriffidGooBlockItem(TRIFFID_GOO_BLOCK.get(), new Item.Properties())); public static final DeferredItem PALE_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(PALE_NYXITE); @@ -1090,8 +1151,6 @@ public final class AntarchyFabricContent { .nutrition(2) .saturationModifier(0.4F) .build()))); - public static final DeferredItem PRIMORDIAL_SCUTE = ITEMS.register("primordial_scute", - () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.UNCOMMON))); public static final DeferredItem TRIFFID_GOO = ITEMS.registerSimpleItem("triffid_goo", new Item.Properties().rarity(Rarity.UNCOMMON)); public static final DeferredItem VORTEX_EYE = ITEMS.register("vortex_eye", @@ -1505,6 +1564,33 @@ public final class AntarchyFabricContent { new Item.Properties().stacksTo(16).rarity(Rarity.UNCOMMON), LUCID_PEARL_PROJECTILE )); + public static final DeferredItem WATER_CANNON = ITEMS.register("water_cannon", + () -> new WaterCannonItem(new Item.Properties().stacksTo(1).durability(192).rarity(Rarity.RARE))); + public static final DeferredItem PRIMORDIAL_HELMET = ITEMS.register("primordial_helmet", + () -> new PrimordialArmorItem(net.minecraft.core.Holder.direct(PRIMORDIAL_ARMOR_MATERIAL.get()), ArmorItem.Type.HELMET, + new Item.Properties().rarity(Rarity.RARE).fireResistant().durability(ArmorItem.Type.HELMET.getDurability(37)))); + public static final DeferredItem PRIMORDIAL_CHESTPLATE = ITEMS.register("primordial_chestplate", + () -> new PrimordialArmorItem(net.minecraft.core.Holder.direct(PRIMORDIAL_ARMOR_MATERIAL.get()), ArmorItem.Type.CHESTPLATE, + new Item.Properties().rarity(Rarity.RARE).fireResistant().durability(ArmorItem.Type.CHESTPLATE.getDurability(37)))); + public static final DeferredItem PRIMORDIAL_LEGGINGS = ITEMS.register("primordial_leggings", + () -> new PrimordialArmorItem(net.minecraft.core.Holder.direct(PRIMORDIAL_ARMOR_MATERIAL.get()), ArmorItem.Type.LEGGINGS, + new Item.Properties().rarity(Rarity.RARE).fireResistant().durability(ArmorItem.Type.LEGGINGS.getDurability(37)))); + public static final DeferredItem PRIMORDIAL_BOOTS = ITEMS.register("primordial_boots", + () -> new PrimordialArmorItem(net.minecraft.core.Holder.direct(PRIMORDIAL_ARMOR_MATERIAL.get()), ArmorItem.Type.BOOTS, + new Item.Properties().rarity(Rarity.RARE).fireResistant().durability(ArmorItem.Type.BOOTS.getDurability(37)))); + public static final DeferredHolder, EntityType> TORETERROR = ENTITY_TYPES.register("toreterror", + () -> EntityType.Builder.of(ToreterrorEntity::new, MobCategory.MONSTER) + .sized(2.5F, 3.0F) + .clientTrackingRange(14) + .build("toreterror")); + public static final DeferredHolder, EntityType> WATER_BOMB = ENTITY_TYPES.register("water_bomb", + () -> EntityType.Builder.of(WaterBombEntity::new, MobCategory.MISC) + .sized(0.4F, 0.4F) + .clientTrackingRange(8) + .updateInterval(1) + .build("water_bomb")); + public static final DeferredItem TORETERROR_SPAWN_EGG = ITEMS.register("toreterror_spawn_egg", + () -> new DeferredSpawnEggItem(TORETERROR, 0x90EE90, 0x5C4033, new Item.Properties().rarity(Rarity.EPIC))); public static final DeferredHolder ANTARCHY_TAB = CREATIVE_MODE_TABS.register("antarchy", () -> CreativeModeTab.builder(CreativeModeTab.Row.TOP, 0) .title(net.minecraft.network.chat.Component.translatable("itemGroup.antarchy.antarchy")) @@ -1584,6 +1670,7 @@ public final class AntarchyFabricContent { FabricDefaultAttributeRegistry.register(SCORPION.get(), ScorpionEntity.createAttributes().build()); FabricDefaultAttributeRegistry.register(BASILISK.get(), BasiliskEntity.createAttributes().build()); FabricDefaultAttributeRegistry.register(EMPEROR_SCORPION.get(), EmperorScorpionEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(TORETERROR.get(), ToreterrorEntity.createAttributes().build()); FabricDefaultAttributeRegistry.register(RED_ANT.get(), buildAntAttributes( AntarchySettings.redAntHealth(), @@ -1627,6 +1714,7 @@ public final class AntarchyFabricContent { SpawnPlacements.register(SCORPION.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ScorpionEntity::canSpawn); SpawnPlacements.register(BASILISK.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, BasiliskEntity::canSpawn); SpawnPlacements.register(EMPEROR_SCORPION.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EmperorScorpionEntity::canSpawn); + SpawnPlacements.register(TORETERROR.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ToreterrorEntity::canSpawn); } private static void populateCreativeTab(CreativeModeTab.Output output) { @@ -1712,7 +1800,9 @@ public final class AntarchyFabricContent { "honeyed_apple_cow_spawn_egg", "dr_trayaurus_spawn_egg", "wasp_spawn_egg", "bomber_spawn_egg", "cloud_shark_spawn_egg", "kraken_spawn_egg", "missile_squid_spawn_egg", "nightmare_spawn_egg", "bed_bug_spawn_egg", "lucid_spawn_egg", "scorpion_spawn_egg", - "basilisk_spawn_egg", "emperor_scorpion_spawn_egg" -> 90; + "basilisk_spawn_egg", "emperor_scorpion_spawn_egg", "toreterror_spawn_egg" -> 90; + case "water_cannon" -> 52; + case "primordial_helmet", "primordial_chestplate", "primordial_leggings", "primordial_boots" -> 53; default -> 50; }; } @@ -1887,6 +1977,16 @@ public final class AntarchyFabricContent { return defense; } + private static java.util.EnumMap createPrimordialArmorDefense() { + java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); + defense.put(ArmorItem.Type.BOOTS, 3); + defense.put(ArmorItem.Type.LEGGINGS, 6); + defense.put(ArmorItem.Type.CHESTPLATE, 8); + defense.put(ArmorItem.Type.HELMET, 3); + defense.put(ArmorItem.Type.BODY, 8); + return defense; + } + private static java.util.EnumMap createFallenKingCrownDefense() { java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); defense.put(ArmorItem.Type.BOOTS, 0); @@ -2101,12 +2201,29 @@ public final class AntarchyFabricContent { BRUTALFLY, BRUTALFLY_ORB, HUSH_PROJECTILE, + TORETERROR, + WATER_BOMB, () -> DUPLICATOR_LOG.get(), () -> DUPLICATOR_SAPLING.get(), () -> DUCT_TAPE.get(), () -> INFESTED_ROOTED_DIRT.get(), () -> INFESTED_COARSE_DIRT.get(), () -> NYXITE.get(), + () -> SHELLSTONE.get(), + () -> POLISHED_SHELLSTONE.get(), + () -> SHELLSTONE_BRICKS.get(), + () -> CHISELED_SHELLSTONE.get(), + () -> MOSSY_SHELLSTONE_BRICKS.get(), + () -> CRACKED_SHELLSTONE_BRICKS.get(), + () -> SHELLSTONE_STAIRS.get(), + () -> SHELLSTONE_SLAB.get(), + () -> SHELLSTONE_WALL.get(), + () -> POLISHED_SHELLSTONE_STAIRS.get(), + () -> POLISHED_SHELLSTONE_SLAB.get(), + () -> POLISHED_SHELLSTONE_WALL.get(), + () -> SHELLSTONE_BRICK_STAIRS.get(), + () -> SHELLSTONE_BRICK_SLAB.get(), + () -> SHELLSTONE_BRICK_WALL.get(), () -> CLOUD_BLOCK.get(), () -> TRIFFID_GOO_BLOCK.get(), () -> PALE_NYXITE.get(), 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 24a38dc8..fbf5069d 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 @@ -102,6 +102,8 @@ public final class AntarchyFabricClientBootstrap { EntityRendererRegistry.register(AntarchyFabricContent.UPWARD_FALLING_BLOCK.get(), UpwardFallingBlockRenderer::new); EntityRendererRegistry.register(AntarchyFabricContent.SCORPION.get(), ScorpionRenderer::new); EntityRendererRegistry.register(AntarchyFabricContent.EMPEROR_SCORPION.get(), EmperorScorpionRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.TORETERROR.get(), ToreterrorRenderer::new); + EntityRendererRegistry.register(AntarchyFabricContent.WATER_BOMB.get(), WaterBombRenderer::new); EntityModelLayerRegistry.registerModelLayer(OuranwoodBoatRenderer.boatLayer(), BoatModel::createBodyModel); EntityModelLayerRegistry.registerModelLayer(OuranwoodBoatRenderer.chestBoatLayer(), ChestBoatModel::createBodyModel); 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 1426d5ef..2c3664a7 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 @@ -3,6 +3,7 @@ package com.craisinlord.antarchy.fabric.mixin.client; import com.craisinlord.antarchy.content.item.GravityGunItem; import com.craisinlord.antarchy.content.item.SizeRayItem; import com.craisinlord.antarchy.content.item.SquidzookaItem; +import com.craisinlord.antarchy.content.item.WaterCannonItem; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.AbstractClientPlayer; import net.minecraft.client.renderer.entity.player.PlayerRenderer; @@ -24,7 +25,7 @@ public class CrossbowArmPoseMixin { ItemStack stack = player.getItemInHand(hand); Item item = stack.getItem(); - if (item instanceof GravityGunItem || item instanceof SquidzookaItem) { + if (item instanceof GravityGunItem || item instanceof SquidzookaItem || item instanceof WaterCannonItem) { cir.setReturnValue(HumanoidModel.ArmPose.CROSSBOW_HOLD); } else if (item instanceof SizeRayItem) { if (player.isUsingItem() && player.getUsedItemHand() == hand) { 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 183505ef..3ed697be 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyConfigModuleNeoforge.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyConfigModuleNeoforge.java @@ -143,6 +143,18 @@ public final class AntarchyConfigModuleNeoforge { AntarchySettings.setDreadHallucinationMobsEnabled(AntarchyMobsConfig.dreadHallucinationMobsEnabled()); AntarchySettings.setDreadHallucinationMobMinInterval(AntarchyMobsConfig.dreadHallucinationMobMinInterval()); AntarchySettings.setDreadHallucinationMobMaxInterval(AntarchyMobsConfig.dreadHallucinationMobMaxInterval()); + + AntarchySettings.setToreterrorHealth(AntarchyMobsConfig.toreterrorHealth()); + AntarchySettings.setToreterrorJumpAttackDamage(AntarchyMobsConfig.toreterrorJumpAttackDamage()); + AntarchySettings.setToreterrorJumpAttackKnockback(AntarchyMobsConfig.toreterrorJumpAttackKnockback()); + AntarchySettings.setToreterrorSpinDamage(AntarchyMobsConfig.toreterrorSpinDamage()); + AntarchySettings.setToreterrorSpinKnockback(AntarchyMobsConfig.toreterrorSpinKnockback()); + AntarchySettings.setToreterrorRangedWaterBombChance(AntarchyMobsConfig.toreterrorRangedWaterBombChance()); + AntarchySettings.setWaterBombDamage(AntarchyMobsConfig.waterBombDamage()); + AntarchySettings.setWaterBombLifetimeTicks(AntarchyMobsConfig.waterBombLifetimeTicks()); + AntarchySettings.setWaterBombGravity(AntarchyMobsConfig.waterBombGravity()); + AntarchySettings.setWaterBombKnockback(AntarchyMobsConfig.waterBombKnockback()); + AntarchySettings.setWaterCannonCooldownSeconds(AntarchyMobsConfig.waterCannonCooldownSeconds()); } private static void bakeToolsConfig() { diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMobsConfig.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMobsConfig.java index 97715122..d5fafb82 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMobsConfig.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMobsConfig.java @@ -146,6 +146,21 @@ public final class AntarchyMobsConfig { private static final ModConfigSpec.IntValue BASILISK_PREY_PETRIFY_TICKS; + // Toreterror + + private static final ModConfigSpec.DoubleValue TORETERROR_HEALTH; + private static final ModConfigSpec.DoubleValue TORETERROR_JUMP_ATTACK_DAMAGE; + private static final ModConfigSpec.DoubleValue TORETERROR_JUMP_ATTACK_KNOCKBACK; + private static final ModConfigSpec.DoubleValue TORETERROR_SPIN_DAMAGE; + private static final ModConfigSpec.DoubleValue TORETERROR_SPIN_KNOCKBACK; + private static final ModConfigSpec.DoubleValue TORETERROR_RANGED_WATER_BOMB_CHANCE; + private static final ModConfigSpec.DoubleValue WATER_BOMB_DAMAGE; + private static final ModConfigSpec.IntValue WATER_BOMB_LIFETIME_TICKS; + private static final ModConfigSpec.DoubleValue WATER_BOMB_GRAVITY; + private static final ModConfigSpec.DoubleValue WATER_BOMB_KNOCKBACK; + private static final ModConfigSpec.DoubleValue WATER_CANNON_COOLDOWN_SECONDS; + + // Lucid private static final ModConfigSpec.DoubleValue LUCID_ATTACK_RANGE; @@ -417,6 +432,20 @@ public final class AntarchyMobsConfig { b.pop(); // dread + b.push("toreterror"); + TORETERROR_HEALTH = b.comment("Base max health.").defineInRange("health", 300.0D, 1.0D, 32768.0D); + TORETERROR_JUMP_ATTACK_DAMAGE = b.comment("Damage dealt by the jump shockwave.").defineInRange("jumpAttackDamage", 14.0D, 0.0D, 1024.0D); + TORETERROR_JUMP_ATTACK_KNOCKBACK = b.comment("Knockback strength of the jump shockwave.").defineInRange("jumpAttackKnockback", 2.5D, 0.0D, 10.0D); + TORETERROR_SPIN_DAMAGE = b.comment("Damage per spin-attack tick.").defineInRange("spinDamage", 8.0D, 0.0D, 1024.0D); + TORETERROR_SPIN_KNOCKBACK = b.comment("Knockback strength of the spin attack.").defineInRange("spinKnockback", 1.5D, 0.0D, 10.0D); + TORETERROR_RANGED_WATER_BOMB_CHANCE = b.comment("Chance (0.0-1.0) the ranged attack fires a Water Bomb instead of Bombers.").defineInRange("rangedWaterBombChance", 0.5D, 0.0D, 1.0D); + WATER_BOMB_DAMAGE = b.comment("Damage dealt by a Water Bomb hit.").defineInRange("waterBombDamage", 6.0D, 0.0D, 1024.0D); + WATER_BOMB_LIFETIME_TICKS = b.comment("Ticks before a Water Bomb despawns.").defineInRange("waterBombLifetimeTicks", 120, 1, 6000); + WATER_BOMB_GRAVITY = b.comment("Gravity applied to Water Bombs (higher = steeper arc).").defineInRange("waterBombGravity", 0.12D, 0.0D, 2.0D); + WATER_BOMB_KNOCKBACK = b.comment("Knockback strength when a Water Bomb hits an entity.").defineInRange("waterBombKnockback", 1.2D, 0.0D, 10.0D); + WATER_CANNON_COOLDOWN_SECONDS = b.comment("Cooldown in seconds between Water Cannon shots.").defineInRange("waterCannonCooldownSeconds", 1.5D, 0.0D, 300.0D); + b.pop(); + SPEC = b.build(); } @@ -529,6 +558,18 @@ public final class AntarchyMobsConfig { static double lucidAttackRange() { return LUCID_ATTACK_RANGE.get(); } static double lucidPearlInvertedDurationSeconds() { return LUCID_PEARL_INVERTED_DURATION_SECONDS.get(); } + static double toreterrorHealth() { return TORETERROR_HEALTH.get(); } + static double toreterrorJumpAttackDamage() { return TORETERROR_JUMP_ATTACK_DAMAGE.get(); } + static double toreterrorJumpAttackKnockback() { return TORETERROR_JUMP_ATTACK_KNOCKBACK.get(); } + static double toreterrorSpinDamage() { return TORETERROR_SPIN_DAMAGE.get(); } + static double toreterrorSpinKnockback() { return TORETERROR_SPIN_KNOCKBACK.get(); } + static double toreterrorRangedWaterBombChance() { return TORETERROR_RANGED_WATER_BOMB_CHANCE.get(); } + static double waterBombDamage() { return WATER_BOMB_DAMAGE.get(); } + static int waterBombLifetimeTicks() { return WATER_BOMB_LIFETIME_TICKS.get(); } + static double waterBombGravity() { return WATER_BOMB_GRAVITY.get(); } + static double waterBombKnockback() { return WATER_BOMB_KNOCKBACK.get(); } + static double waterCannonCooldownSeconds() { return WATER_CANNON_COOLDOWN_SECONDS.get(); } + static boolean dreadHallucinationSoundsEnabled() { return DREAD_HALLUCINATION_SOUNDS_ENABLED.get(); } static double dreadHallucinationSoundMinInterval() { return DREAD_HALLUCINATION_SOUND_MIN_INTERVAL.get(); } static double dreadHallucinationSoundMaxInterval() { return DREAD_HALLUCINATION_SOUND_MAX_INTERVAL.get(); } 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 91e35dab..8e04b344 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java @@ -181,12 +181,29 @@ public class AntarchyNeoforge { AntarchyNeoforgeEntites.BRUTALFLY, AntarchyNeoforgeEntites.BRUTALFLY_ORB, AntarchyNeoforgeEntites.HUSH_PROJECTILE, + AntarchyNeoforgeEntites.TORETERROR, + AntarchyNeoforgeEntites.WATER_BOMB, () -> AntarchyNeoforgeBlocks.DUPLICATOR_LOG.get(), () -> AntarchyNeoforgeBlocks.DUPLICATOR_SAPLING.get(), () -> AntarchyNeoforgeBlocks.DUCT_TAPE.get(), () -> AntarchyNeoforgeBlocks.INFESTED_ROOTED_DIRT.get(), () -> AntarchyNeoforgeBlocks.INFESTED_COARSE_DIRT.get(), () -> AntarchyNeoforgeBlocks.NYXITE.get(), + () -> AntarchyNeoforgeBlocks.SHELLSTONE.get(), + () -> AntarchyNeoforgeBlocks.POLISHED_SHELLSTONE.get(), + () -> AntarchyNeoforgeBlocks.SHELLSTONE_BRICKS.get(), + () -> AntarchyNeoforgeBlocks.CHISELED_SHELLSTONE.get(), + () -> AntarchyNeoforgeBlocks.MOSSY_SHELLSTONE_BRICKS.get(), + () -> AntarchyNeoforgeBlocks.CRACKED_SHELLSTONE_BRICKS.get(), + () -> AntarchyNeoforgeBlocks.SHELLSTONE_STAIRS.get(), + () -> AntarchyNeoforgeBlocks.SHELLSTONE_SLAB.get(), + () -> AntarchyNeoforgeBlocks.SHELLSTONE_WALL.get(), + () -> AntarchyNeoforgeBlocks.POLISHED_SHELLSTONE_STAIRS.get(), + () -> AntarchyNeoforgeBlocks.POLISHED_SHELLSTONE_SLAB.get(), + () -> AntarchyNeoforgeBlocks.POLISHED_SHELLSTONE_WALL.get(), + () -> AntarchyNeoforgeBlocks.SHELLSTONE_BRICK_STAIRS.get(), + () -> AntarchyNeoforgeBlocks.SHELLSTONE_BRICK_SLAB.get(), + () -> AntarchyNeoforgeBlocks.SHELLSTONE_BRICK_WALL.get(), () -> AntarchyNeoforgeBlocks.CLOUD_BLOCK.get(), () -> AntarchyNeoforgeBlocks.TRIFFID_GOO_BLOCK.get(), () -> AntarchyNeoforgeBlocks.PALE_NYXITE.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 0bb864b8..d17e35eb 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 @@ -114,6 +114,8 @@ public final class AntarchyNeoForgeClient { event.registerEntityRenderer(AntarchyNeoforgeEntites.UPWARD_FALLING_BLOCK.get(), com.craisinlord.antarchy.content.client.renderer.UpwardFallingBlockRenderer::new); event.registerEntityRenderer(AntarchyNeoforgeEntites.SCORPION.get(), context -> withParalyzedGeoLayer(new ScorpionRenderer(context))); event.registerEntityRenderer(AntarchyNeoforgeEntites.EMPEROR_SCORPION.get(), context -> withParalyzedGeoLayer(new EmperorScorpionRenderer(context))); + event.registerEntityRenderer(AntarchyNeoforgeEntites.TORETERROR.get(), ToreterrorRenderer::new); + event.registerEntityRenderer(AntarchyNeoforgeEntites.WATER_BOMB.get(), WaterBombRenderer::new); } @SubscribeEvent @@ -325,6 +327,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.WATER_CANNON.get(), HumanoidModel.ArmPose.CROSSBOW_HOLD); registerGeoItemExtension(event, AntarchyNeoforgeItems.BATTLE_AXE.get()); registerGeoItemExtension(event, AntarchyNeoforgeItems.BIG_BERTHA.get()); } 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 4199df5f..e3f2f2de 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 @@ -2,6 +2,7 @@ package com.craisinlord.antarchy.neoforge.registry; import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.block.*; import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; @@ -123,6 +124,36 @@ public final class AntarchyNeoforgeBlocks { () -> new SlabBlock(nyxiteProperties())); public static final DeferredBlock NYXITE_BRICK_WALL = BLOCKS.register("nyxite_brick_wall", () -> new WallBlock(nyxiteProperties())); + public static final DeferredBlock SHELLSTONE = BLOCKS.register("shellstone", + () -> new Block(AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock POLISHED_SHELLSTONE = BLOCKS.register("polished_shellstone", + () -> new Block(AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock SHELLSTONE_BRICKS = BLOCKS.register("shellstone_bricks", + () -> new Block(AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock CHISELED_SHELLSTONE = BLOCKS.register("chiseled_shellstone", + () -> new Block(AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock MOSSY_SHELLSTONE_BRICKS = BLOCKS.register("mossy_shellstone_bricks", + () -> new Block(AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock CRACKED_SHELLSTONE_BRICKS = BLOCKS.register("cracked_shellstone_bricks", + () -> new Block(AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock SHELLSTONE_STAIRS = BLOCKS.register("shellstone_stairs", + () -> new StairBlock(SHELLSTONE.get().defaultBlockState(), AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock SHELLSTONE_SLAB = BLOCKS.register("shellstone_slab", + () -> new SlabBlock(AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock SHELLSTONE_WALL = BLOCKS.register("shellstone_wall", + () -> new WallBlock(AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock POLISHED_SHELLSTONE_STAIRS = BLOCKS.register("polished_shellstone_stairs", + () -> new StairBlock(POLISHED_SHELLSTONE.get().defaultBlockState(), AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock POLISHED_SHELLSTONE_SLAB = BLOCKS.register("polished_shellstone_slab", + () -> new SlabBlock(AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock POLISHED_SHELLSTONE_WALL = BLOCKS.register("polished_shellstone_wall", + () -> new WallBlock(AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock SHELLSTONE_BRICK_STAIRS = BLOCKS.register("shellstone_brick_stairs", + () -> new StairBlock(SHELLSTONE_BRICKS.get().defaultBlockState(), AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock SHELLSTONE_BRICK_SLAB = BLOCKS.register("shellstone_brick_slab", + () -> new SlabBlock(AntarchyObjects.shellstoneProperties())); + public static final DeferredBlock SHELLSTONE_BRICK_WALL = BLOCKS.register("shellstone_brick_wall", + () -> new WallBlock(AntarchyObjects.shellstoneProperties())); public static final DeferredBlock TRIFFID_GOO_BLOCK = BLOCKS.register("triffid_goo_block", () -> new com.craisinlord.antarchy.content.block.TriffidGooBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SLIME_BLOCK).noOcclusion().isViewBlocking((s, l, p) -> false).isSuffocating((s, l, p) -> false))); public static final DeferredBlock CLOUD_BLOCK = BLOCKS.register("cloud_block", 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 44558ddc..989331ea 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 @@ -76,6 +76,7 @@ public class AntarchyNeoforgeCreativeModeTabs { event.accept(AntarchyNeoforgeItems.SCORPION_SPAWN_EGG.get()); event.accept(AntarchyNeoforgeItems.BASILISK_SPAWN_EGG.get()); event.accept(AntarchyNeoforgeItems.EMPEROR_SCORPION_SPAWN_EGG.get()); + event.accept(AntarchyNeoforgeItems.TORETERROR_SPAWN_EGG.get()); } if (event.getTabKey() == CreativeModeTabs.NATURAL_BLOCKS) { @@ -168,6 +169,21 @@ public class AntarchyNeoforgeCreativeModeTabs { event.accept(AntarchyNeoforgeItems.OURANWOOD_BUTTON_ITEM.get()); event.accept(AntarchyNeoforgeItems.OURANWOOD_SIGN_ITEM.get()); event.accept(AntarchyNeoforgeItems.OURANWOOD_HANGING_SIGN_ITEM.get()); + event.accept(AntarchyNeoforgeItems.SHELLSTONE_ITEM.get()); + event.accept(AntarchyNeoforgeItems.SHELLSTONE_STAIRS_ITEM.get()); + event.accept(AntarchyNeoforgeItems.SHELLSTONE_SLAB_ITEM.get()); + event.accept(AntarchyNeoforgeItems.SHELLSTONE_WALL_ITEM.get()); + event.accept(AntarchyNeoforgeItems.POLISHED_SHELLSTONE_ITEM.get()); + event.accept(AntarchyNeoforgeItems.POLISHED_SHELLSTONE_STAIRS_ITEM.get()); + event.accept(AntarchyNeoforgeItems.POLISHED_SHELLSTONE_SLAB_ITEM.get()); + event.accept(AntarchyNeoforgeItems.POLISHED_SHELLSTONE_WALL_ITEM.get()); + event.accept(AntarchyNeoforgeItems.SHELLSTONE_BRICKS_ITEM.get()); + event.accept(AntarchyNeoforgeItems.SHELLSTONE_BRICK_STAIRS_ITEM.get()); + event.accept(AntarchyNeoforgeItems.SHELLSTONE_BRICK_SLAB_ITEM.get()); + event.accept(AntarchyNeoforgeItems.SHELLSTONE_BRICK_WALL_ITEM.get()); + event.accept(AntarchyNeoforgeItems.CHISELED_SHELLSTONE_ITEM.get()); + event.accept(AntarchyNeoforgeItems.MOSSY_SHELLSTONE_BRICKS_ITEM.get()); + event.accept(AntarchyNeoforgeItems.CRACKED_SHELLSTONE_BRICKS_ITEM.get()); event.accept(AntarchyNeoforgeItems.NYXITE_ITEM.get()); event.accept(AntarchyNeoforgeItems.NYXITE_STAIRS_ITEM.get()); event.accept(AntarchyNeoforgeItems.NYXITE_SLAB_ITEM.get()); @@ -246,7 +262,12 @@ public class AntarchyNeoforgeCreativeModeTabs { event.accept(AntarchyNeoforgeItems.SHRINK_RAY.get()); event.accept(AntarchyNeoforgeItems.GROWTH_RAY.get()); event.accept(AntarchyNeoforgeItems.GRAVITY_GUN.get()); + event.accept(AntarchyNeoforgeItems.WATER_CANNON.get()); event.accept(AntarchyNeoforgeItems.LUCID_PEARL.get()); + event.accept(AntarchyNeoforgeItems.PRIMORDIAL_HELMET.get()); + event.accept(AntarchyNeoforgeItems.PRIMORDIAL_CHESTPLATE.get()); + event.accept(AntarchyNeoforgeItems.PRIMORDIAL_LEGGINGS.get()); + event.accept(AntarchyNeoforgeItems.PRIMORDIAL_BOOTS.get()); event.accept(AntarchyNeoforgeItems.NIGHTMARE_HELMET.get()); event.accept(AntarchyNeoforgeItems.NIGHTMARE_CHESTPLATE.get()); event.accept(AntarchyNeoforgeItems.NIGHTMARE_LEGGINGS.get()); @@ -356,12 +377,14 @@ public class AntarchyNeoforgeCreativeModeTabs { // 17 - Weapons case "battle_axe", "basilisk_dagger", "squidzooka", "shrink_ray", "growth_ray", - "gravity_gun", "nightmare_sword", "lucid_pearl", "scorpion_whip", "blood_crystal_katana", + "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" -> 17; // 18 - Armor sets - case "blood_crystal_helmet", "blood_crystal_chestplate", + case "primordial_helmet", "primordial_chestplate", + "primordial_leggings", "primordial_boots", + "blood_crystal_helmet", "blood_crystal_chestplate", "blood_crystal_leggings", "blood_crystal_boots", "nightmare_helmet", "nightmare_chestplate", "nightmare_leggings", "nightmare_boots", 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 b2b0d9ef..29f9b395 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 @@ -40,6 +40,8 @@ import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity; import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity; import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity; +import com.craisinlord.antarchy.content.entity.ToreterrorEntity; +import com.craisinlord.antarchy.content.entity.WaterBombEntity; import net.minecraft.core.registries.Registries; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; @@ -240,6 +242,17 @@ public final class AntarchyNeoforgeEntites { .clientTrackingRange(10) .updateInterval(1) .build("brutalfly_orb")); + public static final DeferredHolder, EntityType> TORETERROR = ENTITY_TYPES.register("toreterror", + () -> EntityType.Builder.of(ToreterrorEntity::new, MobCategory.MONSTER) + .sized(2.5F, 3.0F) + .clientTrackingRange(14) + .build("toreterror")); + public static final DeferredHolder, EntityType> WATER_BOMB = ENTITY_TYPES.register("water_bomb", + () -> EntityType.Builder.of(WaterBombEntity::new, MobCategory.MISC) + .sized(0.4F, 0.4F) + .clientTrackingRange(8) + .updateInterval(1) + .build("water_bomb")); public static final DeferredHolder, EntityType> UPWARD_FALLING_BLOCK = ENTITY_TYPES.register("upward_falling_block", () -> EntityType.Builder.of( UpwardFallingBlockEntity::new, MobCategory.MISC) 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 6f3cd66b..2bb79a56 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.flying_squirrel.FlyingSquirrelEnt import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity; +import com.craisinlord.antarchy.content.entity.ToreterrorEntity; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.animal.Cow; @@ -51,6 +52,7 @@ public class AntarchyNeoforgeEntityAttributes { event.put(AntarchyNeoforgeEntites.SCORPION.get(), ScorpionEntity.createAttributes().build()); event.put(AntarchyNeoforgeEntites.BASILISK.get(), BasiliskEntity.createAttributes().build()); event.put(AntarchyNeoforgeEntites.EMPEROR_SCORPION.get(), EmperorScorpionEntity.createAttributes().build()); + event.put(AntarchyNeoforgeEntites.TORETERROR.get(), ToreterrorEntity.createAttributes().build()); AttributeSupplier redAntAttributes = buildAntAttributes(AntarchySettings.redAntHealth(), AntarchySettings.redAntMovementSpeed(), AntarchySettings.redAntAttackDamage()).build(); AttributeSupplier brownAntAttributes = buildAntAttributes(AntarchySettings.brownAntHealth(), AntarchySettings.brownAntMovementSpeed(), AntarchySettings.brownAntAttackDamage()).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 6fe690b5..d7dad96e 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 @@ -13,6 +13,8 @@ import com.craisinlord.antarchy.content.item.BloodCrystalKatanaItem; import com.craisinlord.antarchy.content.item.BloodCrystalShardItem; import com.craisinlord.antarchy.content.item.ultimate.*; import com.craisinlord.antarchy.content.item.NightmareArmorItem; +import com.craisinlord.antarchy.content.item.PrimordialArmorItem; +import com.craisinlord.antarchy.content.item.WaterCannonItem; import com.craisinlord.antarchy.content.item.NightmareSwordItem; import com.craisinlord.antarchy.content.item.LucidEyeItem; import com.craisinlord.antarchy.content.item.LucidPearlItem; @@ -103,6 +105,18 @@ public final class AntarchyNeoforgeItems { 0.0F, 0.0F )); + public static final DeferredItem PRIMORDIAL_SCUTE = ITEMS.registerSimpleItem("primordial_scute", + new Item.Properties().rarity(Rarity.UNCOMMON)); + private static final DeferredHolder PRIMORDIAL_ARMOR_MATERIAL = ARMOR_MATERIALS.register("primordial", + () -> new ArmorMaterial( + createPrimordialArmorDefense(), + 15, + SoundEvents.ARMOR_EQUIP_NETHERITE, + () -> Ingredient.of(PRIMORDIAL_SCUTE.get()), + List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "primordial"))), + 3.0F, + 0.1F + )); private static final DeferredHolder FALLEN_KING_CROWN_ARMOR_MATERIAL = ARMOR_MATERIALS.register("fallen_king_crown", () -> new ArmorMaterial( createFallenKingCrownDefense(), @@ -215,6 +229,21 @@ public final class AntarchyNeoforgeItems { public static final DeferredItem NYXITE_BRICK_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.NYXITE_BRICK_STAIRS); public static final DeferredItem NYXITE_BRICK_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.NYXITE_BRICK_SLAB); public static final DeferredItem NYXITE_BRICK_WALL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.NYXITE_BRICK_WALL); + public static final DeferredItem SHELLSTONE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.SHELLSTONE); + public static final DeferredItem POLISHED_SHELLSTONE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.POLISHED_SHELLSTONE); + public static final DeferredItem SHELLSTONE_BRICKS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.SHELLSTONE_BRICKS); + public static final DeferredItem CHISELED_SHELLSTONE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CHISELED_SHELLSTONE); + public static final DeferredItem MOSSY_SHELLSTONE_BRICKS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.MOSSY_SHELLSTONE_BRICKS); + public static final DeferredItem CRACKED_SHELLSTONE_BRICKS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CRACKED_SHELLSTONE_BRICKS); + public static final DeferredItem SHELLSTONE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.SHELLSTONE_STAIRS); + public static final DeferredItem SHELLSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.SHELLSTONE_SLAB); + public static final DeferredItem SHELLSTONE_WALL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.SHELLSTONE_WALL); + public static final DeferredItem POLISHED_SHELLSTONE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.POLISHED_SHELLSTONE_STAIRS); + public static final DeferredItem POLISHED_SHELLSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.POLISHED_SHELLSTONE_SLAB); + public static final DeferredItem POLISHED_SHELLSTONE_WALL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.POLISHED_SHELLSTONE_WALL); + public static final DeferredItem SHELLSTONE_BRICK_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.SHELLSTONE_BRICK_STAIRS); + public static final DeferredItem SHELLSTONE_BRICK_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.SHELLSTONE_BRICK_SLAB); + public static final DeferredItem SHELLSTONE_BRICK_WALL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.SHELLSTONE_BRICK_WALL); public static final DeferredItem TRIFFID_GOO_BLOCK_ITEM = ITEMS.register("triffid_goo_block", () -> new com.craisinlord.antarchy.content.item.TriffidGooBlockItem(AntarchyNeoforgeBlocks.TRIFFID_GOO_BLOCK.get(), new Item.Properties())); public static final DeferredItem PALE_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.PALE_NYXITE); @@ -274,8 +303,6 @@ public final class AntarchyNeoforgeItems { .nutrition(2) .saturationModifier(0.4F) .build()))); - public static final DeferredItem PRIMORDIAL_SCUTE = ITEMS.register("primordial_scute", - () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.UNCOMMON))); public static final DeferredItem TRIFFID_GOO = ITEMS.registerSimpleItem("triffid_goo", new Item.Properties().rarity(Rarity.UNCOMMON)); public static final DeferredItem VORTEX_EYE = ITEMS.register("vortex_eye", @@ -490,6 +517,18 @@ public final class AntarchyNeoforgeItems { new Item.Properties().stacksTo(16).rarity(Rarity.UNCOMMON), AntarchyNeoforgeEntites.LUCID_PEARL_PROJECTILE )); + public static final DeferredItem WATER_CANNON = ITEMS.register("water_cannon", + () -> new WaterCannonItem(new Item.Properties().stacksTo(1).durability(192).rarity(Rarity.RARE))); + public static final DeferredItem PRIMORDIAL_HELMET = ITEMS.register("primordial_helmet", + () -> new PrimordialArmorItem(PRIMORDIAL_ARMOR_MATERIAL, ArmorItem.Type.HELMET, new Item.Properties().rarity(Rarity.RARE).fireResistant())); + public static final DeferredItem PRIMORDIAL_CHESTPLATE = ITEMS.register("primordial_chestplate", + () -> new PrimordialArmorItem(PRIMORDIAL_ARMOR_MATERIAL, ArmorItem.Type.CHESTPLATE, new Item.Properties().rarity(Rarity.RARE).fireResistant())); + public static final DeferredItem PRIMORDIAL_LEGGINGS = ITEMS.register("primordial_leggings", + () -> new PrimordialArmorItem(PRIMORDIAL_ARMOR_MATERIAL, ArmorItem.Type.LEGGINGS, new Item.Properties().rarity(Rarity.RARE).fireResistant())); + public static final DeferredItem PRIMORDIAL_BOOTS = ITEMS.register("primordial_boots", + () -> new PrimordialArmorItem(PRIMORDIAL_ARMOR_MATERIAL, ArmorItem.Type.BOOTS, new Item.Properties().rarity(Rarity.RARE).fireResistant())); + public static final DeferredItem TORETERROR_SPAWN_EGG = ITEMS.register("toreterror_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.TORETERROR, 0x90EE90, 0x5C4033, new Item.Properties().rarity(Rarity.EPIC))); private AntarchyNeoforgeItems() {} @@ -571,6 +610,16 @@ public final class AntarchyNeoforgeItems { return defense; } + private static EnumMap createPrimordialArmorDefense() { + EnumMap defense = new EnumMap<>(ArmorItem.Type.class); + defense.put(ArmorItem.Type.BOOTS, 3); + defense.put(ArmorItem.Type.LEGGINGS, 6); + defense.put(ArmorItem.Type.CHESTPLATE, 8); + defense.put(ArmorItem.Type.HELMET, 3); + defense.put(ArmorItem.Type.BODY, 8); + return defense; + } + private static EnumMap createFallenKingCrownDefense() { EnumMap defense = new EnumMap<>(ArmorItem.Type.class); defense.put(ArmorItem.Type.BOOTS, 0);