From b37b49dff1439bdab05afd7ee0a663257fc863b8 Mon Sep 17 00:00:00 2001 From: craisinlord Date: Thu, 23 Jul 2026 02:10:50 -0500 Subject: [PATCH] fixed krakens graps missing tags improved upward falling block entity started bluestone fixed herc beetle mounted behavior --- .../com/craisinlord/antarchy/Antarchy.java | 4 +- .../antarchy/config/AntarchySettings.java | 586 ++---------------- .../antarchy/content/AntarchyGameRules.java | 28 + .../antarchy/content/AntarchyTags.java | 2 + .../block/AbstractCeilingBluestoneBlock.java | 34 + .../block/AbstractCeilingDiodeBlock.java | 34 + .../content/block/BluestoneBlock.java | 48 ++ .../block/BluestoneComparatorBlock.java | 82 +++ .../content/block/BluestoneOreBlock.java | 71 +++ .../block/BluestonePlacementHelper.java | 21 + .../content/block/BluestoneRepeaterBlock.java | 67 ++ .../antarchy/content/block/BluestoneSide.java | 20 + .../content/block/BluestoneSignalHelper.java | 55 ++ .../content/block/BluestoneSignalSource.java | 10 + .../content/block/BluestoneTorchBlock.java | 154 +++++ .../content/block/BluestoneWireBlock.java | 319 ++++++++++ .../content/block/DreamCeilingTorchBlock.java | 53 ++ .../BluestoneComparatorBlockEntity.java | 38 ++ .../{ => creative}/CreativeTabContents.java | 8 +- .../{ => creative}/CreativeTabOrder.java | 2 +- .../antarchy/content/entity/BedBugEntity.java | 9 +- .../content/entity/ButterflyEntity.java | 7 +- .../content/entity/CaterpillarEntity.java | 4 +- .../content/entity/HerculesBeetleEntity.java | 142 +++-- .../content/entity/MissileSquidEntity.java | 11 +- .../content/entity/MolevoreEntity.java | 5 +- .../content/entity/MolewormEntity.java | 7 +- .../content/entity/ScorpionEntity.java | 11 +- .../entity/UpwardFallingBlockEntity.java | 16 +- .../content/entity/ant/AntMarchManager.java | 19 +- .../content/entity/ant/BaseAntEntity.java | 17 +- .../content/entity/ant/TermiteEntity.java | 9 +- .../entity/brutalfly/BrutalflyEntity.java | 10 +- .../entity/cloud_shark/CloudSharkEntity.java | 11 +- .../flying_squirrel/FlyingSquirrelEntity.java | 5 +- .../content/entity/kraken/KrakenEntity.java | 13 +- .../content/entity/lucid/LucidEntity.java | 8 +- .../entity/nightmare/NightmareEntity.java | 7 +- .../content/horde/CavarynHordeManager.java | 51 +- .../content/item/BluestoneDustItem.java | 63 ++ .../CeilingPlacementTooltipBlockItem.java | 22 + .../item/CeilingPlacementTooltipItem.java | 20 + .../antarchy/content/item/DreamTorchItem.java | 69 +++ .../antarchy/content/item/MantisClawItem.java | 11 + .../HerculesBeetleFlightTogglePayload.java | 19 + .../{ => util}/AttributeRangeInit.java | 2 +- .../mixins/MantisClawWallClimbMixin.java | 53 ++ .../mixins/RedStoneWireBlockMixin.java | 27 + .../resources/antarchy-common.mixins.json | 1 + .../antarchy/blockstates/bluestone_block.json | 7 + .../blockstates/bluestone_comparator.json | 176 ++++++ .../antarchy/blockstates/bluestone_ore.json | 10 + .../blockstates/bluestone_repeater.json | 82 +++ .../antarchy/blockstates/bluestone_torch.json | 10 + .../antarchy/blockstates/bluestone_wire.json | 48 ++ .../blockstates/dream_ceiling_torch.json | 8 + .../assets/antarchy/items/bluestone.json | 6 + .../antarchy/items/bluestone_block.json | 6 + .../antarchy/items/bluestone_comparator.json | 6 + .../assets/antarchy/items/bluestone_ore.json | 6 + .../antarchy/items/bluestone_repeater.json | 6 + .../antarchy/items/bluestone_torch.json | 6 + .../resources/assets/antarchy/lang/en_us.json | 8 + .../models/block/bluestone_block.json | 6 + .../models/block/bluestone_comparator.json | 57 ++ .../models/block/bluestone_comparator_on.json | 60 ++ .../block/bluestone_comparator_subtract.json | 3 + .../bluestone_comparator_subtract_on.json | 3 + .../antarchy/models/block/bluestone_ore.json | 6 + .../models/block/bluestone_repeater.json | 46 ++ .../models/block/bluestone_repeater_on.json | 48 ++ .../models/block/bluestone_torch.json | 22 + .../models/block/bluestone_torch_off.json | 22 + .../models/block/bluestone_wire_dot.json | 7 + .../models/block/bluestone_wire_line0.json | 7 + .../models/block/bluestone_wire_line1.json | 7 + .../antarchy/models/item/bluestone_block.json | 3 + .../models/item/bluestone_comparator.json | 6 + .../antarchy/models/item/bluestone_dust.json | 6 + .../antarchy/models/item/bluestone_ore.json | 3 + .../models/item/bluestone_repeater.json | 6 + .../antarchy/models/item/bluestone_torch.json | 6 + .../antimetal/antimetal_activator_rail.png | Bin 0 -> 487 bytes .../antimetal/antimetal_activator_rail_on.png | Bin 0 -> 499 bytes .../antimetal/antimetal_detector_rail.png | Bin 0 -> 455 bytes .../antimetal/antimetal_detector_rail_on.png | Bin 0 -> 455 bytes .../antimetal/antimetal_powered_rail.png | Bin 0 -> 522 bytes .../antimetal/antimetal_powered_rail_on.png | Bin 0 -> 523 bytes .../block/antimetal/antimetal_rail.png | Bin 0 -> 388 bytes .../block/antimetal/antimetal_rail_corner.png | Bin 0 -> 463 bytes .../block/bluestone/bluestone_block.png | Bin 0 -> 426 bytes .../block/bluestone/bluestone_comparator.png | Bin 0 -> 531 bytes .../bluestone/bluestone_comparator_on.png | Bin 0 -> 535 bytes .../block/bluestone/bluestone_dust_dot.png | Bin 0 -> 113 bytes .../bluestone/bluestone_dust_dot.png.mcmeta | 5 + .../block/bluestone/bluestone_dust_line0.png | Bin 0 -> 111 bytes .../bluestone/bluestone_dust_line0.png.mcmeta | 5 + .../block/bluestone/bluestone_dust_line1.png | Bin 0 -> 116 bytes .../bluestone/bluestone_dust_line1.png.mcmeta | 5 + .../bluestone/bluestone_dust_overlay.png | Bin 0 -> 71 bytes .../bluestone_dust_overlay.png.mcmeta | 5 + .../block/bluestone/bluestone_ore.png | Bin 0 -> 677 bytes .../block/bluestone/bluestone_repeater.png | Bin 0 -> 458 bytes .../block/bluestone/bluestone_repeater_on.png | Bin 0 -> 455 bytes .../block/bluestone/bluestone_torch.png | Bin 0 -> 256 bytes .../block/bluestone/bluestone_torch_off.png | Bin 0 -> 219 bytes .../textures/item/bluestone/bluestone.png | Bin 0 -> 375 bytes .../item/bluestone/bluestone_comparator.png | Bin 0 -> 376 bytes .../item/bluestone/bluestone_repeater.png | Bin 0 -> 357 bytes .../loot_table/blocks/bluestone_block.json | 19 + .../blocks/bluestone_comparator.json | 14 + .../loot_table/blocks/bluestone_ore.json | 52 ++ .../loot_table/blocks/bluestone_repeater.json | 14 + .../loot_table/blocks/bluestone_torch.json | 19 + .../loot_table/blocks/bluestone_wire.json | 14 + .../data/antarchy/recipe/bluestone_block.json | 15 + .../antarchy/recipe/bluestone_comparator.json | 17 + ...bluestone_from_blasting_bluestone_ore.json | 10 + ...bluestone_from_smelting_bluestone_ore.json | 10 + .../antarchy/recipe/bluestone_repeater.json | 16 + .../data/antarchy/recipe/bluestone_torch.json | 15 + .../tags/block/bluestone_components.json | 10 + .../tags/block/bluestone_connectable.json | 10 + .../data/c/tags/block/ores/bluestone.json | 6 + .../resources/data/c/tags/item/armors.json | 9 + .../resources/data/c/tags/item/boots.json | 3 +- .../data/c/tags/item/enchantables.json | 6 + .../data/c/tags/item/ores/bluestone.json | 6 + .../resources/data/c/tags/item/swords.json | 3 +- .../tags/block/mineable/pickaxe.json | 109 +--- .../tags/block/needs_stone_tool.json | 23 +- .../tags/item/enchantable/durability.json | 3 + .../tags/item/enchantable/equippable.json | 3 +- .../tags/item/enchantable/vanishing.json | 6 + .../tags/item/enchantable/weapon.json | 3 +- .../data/minecraft/tags/item/foot_armor.json | 3 +- .../data/minecraft/tags/item/swords.json | 3 +- .../minecraft/tags/item/trimmable_armor.json | 3 +- .../antarchy/fabric/AntarchyFabric.java | 6 + .../client/AntarchyFabricClientBootstrap.java | 20 + .../fabric/client/AntarchyKeyBindings.java | 12 + .../HerculesBeetleChargeHudRenderer.java | 2 +- .../client/HerculesBeetleClientHandler.java | 9 + .../network/AntarchyFabricNetworking.java | 9 + .../fabric/registry/AntarchyFabricBlocks.java | 249 +------- .../AntarchyFabricCreativeModeTabs.java | 251 +------- .../registry/AntarchyFabricEntities.java | 204 ------ .../AntarchyFabricEntityAttributes.java | 220 ------- .../fabric/registry/AntarchyFabricItems.java | 218 +------ .../fabric/registry/AntarchyFabricSounds.java | 249 -------- .../AntarchyFabricSpawnPlacements.java | 225 ------- .../antarchy/neoforge/AntarchyMiscConfig.java | 12 +- .../antarchy/neoforge/AntarchyMobsConfig.java | 24 +- .../antarchy/neoforge/AntarchyNeoforge.java | 29 +- .../neoforge/AntarchyToolsConfig.java | 39 +- .../neoforge/client/AntarchyKeyBindings.java | 13 + .../client/AntarchyNeoForgeClient.java | 20 + .../HerculesBeetleChargeHudRenderer.java | 2 +- .../client/HerculesBeetleClientHandler.java | 9 + .../network/HerculesBeetleNetworking.java | 16 + .../registry/AntarchyNeoforgeBlocks.java | 23 + .../AntarchyNeoforgeCreativeModeTabs.java | 3 +- .../registry/AntarchyNeoforgeItems.java | 18 +- 163 files changed, 2903 insertions(+), 2417 deletions(-) create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/AntarchyGameRules.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/block/AbstractCeilingBluestoneBlock.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/block/AbstractCeilingDiodeBlock.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneBlock.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneComparatorBlock.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneOreBlock.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/block/BluestonePlacementHelper.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneRepeaterBlock.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneSide.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneSignalHelper.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneSignalSource.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneTorchBlock.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneWireBlock.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/block/DreamCeilingTorchBlock.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/block/entity/BluestoneComparatorBlockEntity.java rename common/src/main/java/com/craisinlord/antarchy/content/{ => creative}/CreativeTabContents.java (98%) rename common/src/main/java/com/craisinlord/antarchy/content/{ => creative}/CreativeTabOrder.java (92%) create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/item/BluestoneDustItem.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/item/CeilingPlacementTooltipBlockItem.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/item/CeilingPlacementTooltipItem.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/item/DreamTorchItem.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/network/HerculesBeetleFlightTogglePayload.java rename common/src/main/java/com/craisinlord/antarchy/content/{ => util}/AttributeRangeInit.java (96%) create mode 100644 common/src/main/java/com/craisinlord/antarchy/mixins/RedStoneWireBlockMixin.java create mode 100644 common/src/main/resources/assets/antarchy/blockstates/bluestone_block.json create mode 100644 common/src/main/resources/assets/antarchy/blockstates/bluestone_comparator.json create mode 100644 common/src/main/resources/assets/antarchy/blockstates/bluestone_ore.json create mode 100644 common/src/main/resources/assets/antarchy/blockstates/bluestone_repeater.json create mode 100644 common/src/main/resources/assets/antarchy/blockstates/bluestone_torch.json create mode 100644 common/src/main/resources/assets/antarchy/blockstates/bluestone_wire.json create mode 100644 common/src/main/resources/assets/antarchy/blockstates/dream_ceiling_torch.json create mode 100644 common/src/main/resources/assets/antarchy/items/bluestone.json create mode 100644 common/src/main/resources/assets/antarchy/items/bluestone_block.json create mode 100644 common/src/main/resources/assets/antarchy/items/bluestone_comparator.json create mode 100644 common/src/main/resources/assets/antarchy/items/bluestone_ore.json create mode 100644 common/src/main/resources/assets/antarchy/items/bluestone_repeater.json create mode 100644 common/src/main/resources/assets/antarchy/items/bluestone_torch.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/bluestone_block.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/bluestone_comparator.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/bluestone_comparator_on.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/bluestone_comparator_subtract.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/bluestone_comparator_subtract_on.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/bluestone_ore.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/bluestone_repeater.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/bluestone_repeater_on.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/bluestone_torch.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/bluestone_torch_off.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/bluestone_wire_dot.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/bluestone_wire_line0.json create mode 100644 common/src/main/resources/assets/antarchy/models/block/bluestone_wire_line1.json create mode 100644 common/src/main/resources/assets/antarchy/models/item/bluestone_block.json create mode 100644 common/src/main/resources/assets/antarchy/models/item/bluestone_comparator.json create mode 100644 common/src/main/resources/assets/antarchy/models/item/bluestone_dust.json create mode 100644 common/src/main/resources/assets/antarchy/models/item/bluestone_ore.json create mode 100644 common/src/main/resources/assets/antarchy/models/item/bluestone_repeater.json create mode 100644 common/src/main/resources/assets/antarchy/models/item/bluestone_torch.json create mode 100644 common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_activator_rail.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_activator_rail_on.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_detector_rail.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_detector_rail_on.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_powered_rail.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_powered_rail_on.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_rail.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_rail_corner.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_block.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_comparator.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_comparator_on.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_dust_dot.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_dust_dot.png.mcmeta create mode 100644 common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_dust_line0.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_dust_line0.png.mcmeta create mode 100644 common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_dust_line1.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_dust_line1.png.mcmeta create mode 100644 common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_dust_overlay.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_dust_overlay.png.mcmeta create mode 100644 common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_ore.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_repeater.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_repeater_on.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_torch.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_torch_off.png create mode 100644 common/src/main/resources/assets/antarchy/textures/item/bluestone/bluestone.png create mode 100644 common/src/main/resources/assets/antarchy/textures/item/bluestone/bluestone_comparator.png create mode 100644 common/src/main/resources/assets/antarchy/textures/item/bluestone/bluestone_repeater.png create mode 100644 common/src/main/resources/data/antarchy/loot_table/blocks/bluestone_block.json create mode 100644 common/src/main/resources/data/antarchy/loot_table/blocks/bluestone_comparator.json create mode 100644 common/src/main/resources/data/antarchy/loot_table/blocks/bluestone_ore.json create mode 100644 common/src/main/resources/data/antarchy/loot_table/blocks/bluestone_repeater.json create mode 100644 common/src/main/resources/data/antarchy/loot_table/blocks/bluestone_torch.json create mode 100644 common/src/main/resources/data/antarchy/loot_table/blocks/bluestone_wire.json create mode 100644 common/src/main/resources/data/antarchy/recipe/bluestone_block.json create mode 100644 common/src/main/resources/data/antarchy/recipe/bluestone_comparator.json create mode 100644 common/src/main/resources/data/antarchy/recipe/bluestone_from_blasting_bluestone_ore.json create mode 100644 common/src/main/resources/data/antarchy/recipe/bluestone_from_smelting_bluestone_ore.json create mode 100644 common/src/main/resources/data/antarchy/recipe/bluestone_repeater.json create mode 100644 common/src/main/resources/data/antarchy/recipe/bluestone_torch.json create mode 100644 common/src/main/resources/data/antarchy/tags/block/bluestone_components.json create mode 100644 common/src/main/resources/data/antarchy/tags/block/bluestone_connectable.json create mode 100644 common/src/main/resources/data/c/tags/block/ores/bluestone.json create mode 100644 common/src/main/resources/data/c/tags/item/armors.json create mode 100644 common/src/main/resources/data/c/tags/item/enchantables.json create mode 100644 common/src/main/resources/data/c/tags/item/ores/bluestone.json create mode 100644 common/src/main/resources/data/minecraft/tags/item/enchantable/vanishing.json diff --git a/common/src/main/java/com/craisinlord/antarchy/Antarchy.java b/common/src/main/java/com/craisinlord/antarchy/Antarchy.java index a462f362..ea6644dd 100644 --- a/common/src/main/java/com/craisinlord/antarchy/Antarchy.java +++ b/common/src/main/java/com/craisinlord/antarchy/Antarchy.java @@ -1,6 +1,6 @@ package com.craisinlord.antarchy; -import com.craisinlord.antarchy.content.AttributeRangeInit; +import com.craisinlord.antarchy.content.util.AttributeRangeInit; import com.craisinlord.integrated_api.events.lifecycle.ServerGoingToStartEvent; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -16,4 +16,4 @@ public class Antarchy { } private static void serverAboutToStart(final ServerGoingToStartEvent event) { } -} \ No newline at end of file +} 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 3ef9c91e..a354e105 100644 --- a/common/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java +++ b/common/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java @@ -15,7 +15,6 @@ public final class AntarchySettings { private static boolean termiteRequiresReagent = false; private static boolean antsStealFromChests = true; private static boolean duplicatorTreeEnabled = true; - private static boolean glowingTorchflowers = true; private static boolean glowVinesUnderLeaves = true; private static boolean swingThroughGrassEnabled = true; private static boolean fabricKeybindingConflictFixEnabled = true; @@ -71,12 +70,12 @@ public final class AntarchySettings { private static double scorpionWhipReachBonus = 5.0D; private static int scorpionWhipPoisonDurationTicks = 100; private static double scorpionWhipTetherMaxRange = 10.0D; - private static int scorpionWhipReelCooldownTicks = 10; private static double scorpionWhipSnapBonusDamage = 6.0D; - private static int scorpionWhipSnapCooldownTicks = 30; private static double scorpionWhipPullStrength = 0.75D; private static double scorpionWhipHeavyPullMultiplier = 0.25D; private static double scorpionWhipSelfPullMultiplier = 0.45D; + private static int scorpionWhipReelCooldownTicks = 10; + private static int scorpionWhipSnapCooldownTicks = 30; private static int bloodCrystalKatanaAttackDamage = 7; private static double bloodCrystalKatanaLaunchStrength = 1.1D; private static int bloodCrystalKatanaTrailDurationTicks = 12; @@ -124,13 +123,12 @@ public final class AntarchySettings { private static double rollyPollyHealth = 25.0D; private static double rollyPollyMovementSpeed = 0.3D; private static double rollyPollyRollSpeedMultiplier = 2.2D; - private static double rollyPollyTumbleDamage = 1.0D; private static int rollyPollyTameChance = 3; private static double rollyPollyBowlingDamage = 3.0D; + private static double rollyPollyTumbleDamage = 3.0D; private static double rollyPollyBowlingKnockback = 0.8D; private static double rollyPollyArmor = 2.0D; private static double rollyPollyRolledArmorBonus = 16.0D; - private static double krakenProjectileDamageTakenMultiplier = 0.5D; private static boolean krakenSquidSpawnEnabled = true; private static boolean krakenMassSpawnEnabled = true; private static boolean krakenRequireBadOmenToSummon = true; @@ -165,15 +163,12 @@ public final class AntarchySettings { private static double americanBonusSaturation = 1.0D; private static int americanRegenerationDurationTicks = 60; private static int americanRegenerationAmplifier = 0; - private static int mogglesVisionRadius = 2; - private static int mogglesVisionMaxLight = 7; - private static float mogglesVisionAlpha = 0.35f; private static boolean dreamSandEnabled = true; private static boolean entitySpecificFireOverlayEnabled = true; private static double dreamSandJumpVelocityMultiplier = 1.3D; private static double dreamSandGravityMultiplier = 0.45D; - private static double dreamSandFallDamageMultiplier = 0.35D; private static double dreamSandEffectDurationSeconds = 7.0D; + private static double dreamSandFallDamageMultiplier = 0.4D; private static double dreamSandFallingBlockGravityMultiplier = 0.4D; private static boolean ichorWitherEnabled = true; private static int nightmareHelmetArmorValue = 3; @@ -185,7 +180,6 @@ public final class AntarchySettings { private static double nightmareLeggingsArmorToughness = 3.0D; private static double nightmareBootsArmorToughness = 3.0D; - private static double nightmareArmorDreadAuraRangePerPiece = 1.25D; private static double nightmareHelmetDoubleDamageChance = 0.04D; private static double nightmareChestplateDoubleDamageChance = 0.06D; private static double nightmareLeggingsDoubleDamageChance = 0.05D; @@ -239,32 +233,27 @@ public final class AntarchySettings { private static double termiteAttackDamage = 1.0D; private static double flyingSquirrelHealth = 10.0D; private static double flyingSquirrelMovementSpeed = 0.35D; - private static double flyingSquirrelFollowRange = 16.0D; private static double caterpillarHealth = 6.0D; private static double caterpillarMovementSpeed = 0.24D; - private static double caterpillarFollowRange = 14.0D; private static double caterpillarPupationTimeSeconds = 600.0D; private static double butterflyHealth = 6.0D; private static double butterflyMovementSpeed = 0.3D; private static double butterflyFlyingSpeed = 0.55D; - private static double butterflyFollowRange = 32.0D; private static double reverieHealth = 20.0D; private static double reverieInterestRadius = 16.0D; private static double reverieAbandonPlayerDistance = 24.0D; private static int reverieNoticeDurationTicks = 20; private static int reverieInterestDurationTicks = 360; private static int reverieRebindCooldownTicks = 100; - private static int reverieDamageReactionDurationTicks = 40; + private static int reverieDamageReactionDurationTicks = 60; private static double reverieDangerousFallDistance = 4.0D; private static double reverieDangerousFallSpeed = 0.18D; private static double reverieWarningThreatRadius = 10.0D; private static double reverieWarningThreatVerticalRange = 5.0D; private static int reverieDuplicationCooldownTicks = 6000; - private static final boolean reverieOnlyPlayerDamage = true; private static final double reveriePreferredFollowMinDistance = 2.5D; private static final double reveriePreferredFollowMaxDistance = 2.5D; private static final double reverieCatchUpDistance = 12.0D; - private static final double reveriePurpleProtectRadius = 2.7D; private static final int reverieWarningApproachTicks = 8; private static final int reverieWarningHoverTicks = 6; private static final int reverieWarningReturnTicks = 8; @@ -299,126 +288,44 @@ public final class AntarchySettings { private static double scorpionMovementSpeed = 0.29D; private static double scorpionArmor = 2.0D; private static double scorpionKnockbackResistance = 0.2D; - private static double scorpionFollowRange = 24.0D; - private static int scorpionXpReward = 5; - private static int scorpionAttackAnimTicks = 12; - private static int scorpionAttackHitTick = 6; - private static int scorpionAttackCooldownTicks = 16; - private static int scorpionPoisonTicks = 80; private static double bedBugHealth = 18.0D; private static double bedBugAttackDamage = 4.0D; private static double bedBugMovementSpeed = 0.24D; private static double bedBugArmor = 2.0D; - private static double bedBugFollowRange = 20.0D; - private static int bedBugXpReward = 4; - private static int bedBugBiteAnimTicks = 10; - private static int bedBugAttackHitTick = 5; - private static int bedBugAttackCooldownTicks = 12; - private static int bedBugMinLayEggDelay = 80; - private static int bedBugMaxLayEggDelay = 160; - private static double bedBugFoodSearchRadius = 10.0D; - private static double bedBugEggGuardRadius = 7.0D; - private static double bedBugAttackStartReachBuffer = 1.15D; - private static double bedBugAttackReachBuffer = 0.3D; - private static double bedBugAttackLungeHorizontalSpeed = 0.42D; - private static double bedBugAttackLungeVerticalSpeed = 0.1D; - private static float bedBugHealAmount = 2.0F; private static double jumpyBugHealth = 100.0D; private static double jumpyBugPounceDamage = 12.0D; - private static double jumpyBugLatchDamage = 1.0D; + private static double jumpyBugLatchDamage = 12.0D; private static double jumpyBugCamouflageAlpha = 0.18D; private static double brutalflyArmor = 10.0D; private static double brutalflyArmorToughness = 4.0D; private static double brutalflyKnockbackResistance = 0.7D; private static double brutalflyMovementSpeed = 0.34D; private static double brutalflyFlyingSpeed = 0.55D; - private static double brutalflyFollowRange = 48.0D; - private static int brutalflyXpReward = 80; - private static int brutalflyDeathSpawnCountMin = 5; - private static int brutalflyDeathSpawnCountMax = 10; - private static int brutalflySpitWindupTicks = 16; - private static int brutalflySwipeTicks = 18; - private static float brutalflySwipeKnockback = 2.8F; - private static int brutalflyPhaseOneSpitCooldownMin = 70; - private static int brutalflyPhaseOneSpitCooldownMax = 95; - private static int brutalflyPhaseTwoSpitCooldownMin = 42; - private static int brutalflyPhaseTwoSpitCooldownMax = 60; - private static int brutalflyPhaseThreeSpitCooldownMin = 26; - private static int brutalflyPhaseThreeSpitCooldownMax = 40; - private static int brutalflyPhaseOneMeleeCooldownMin = 42; - private static int brutalflyPhaseOneMeleeCooldownMax = 51; - private static int brutalflyPhaseTwoMeleeCooldownMin = 30; - private static int brutalflyPhaseTwoMeleeCooldownMax = 37; - private static int brutalflyPhaseThreeMeleeCooldownMin = 20; - private static int brutalflyPhaseThreeMeleeCooldownMax = 26; private static double cloudSharkHealth = 40.0D; private static double cloudSharkAttackDamage = 5.0D; private static double cloudSharkMovementSpeed = 0.34D; private static double cloudSharkFlyingSpeed = 0.5D; - private static double cloudSharkFollowRange = 40.0D; private static double cloudSharkKnockbackResistance = 0.2D; - private static int cloudSharkXpReward = 8; private static double krakenMovementSpeed = 0.24D; private static double krakenFlyingSpeed = 0.24D; - private static double krakenFollowRange = 64.0D; private static double krakenKnockbackResistance = 0.8D; private static double krakenArmor = 8.0D; - private static int krakenXpReward = 60; - private static double krakenPhaseTwoSpeedBonus = 0.15D; - private static double krakenPhaseTwoFlyingSpeedBonus = 0.15D; - private static double krakenPhaseTwoDamageBonus = 4.0D; + private static double krakenProjectileDamageTakenMultiplier = 0.5D; private static double krakenBossBarRange = 40.0D; private static float krakenLightningDamagePhaseOne = 8.0F; - private static float krakenLightningDamagePhaseTwo = 12.0F; - private static int krakenLightningAmbientCooldownPhaseOneMin = 80; - private static int krakenLightningAmbientCooldownPhaseOneMax = 160; - private static int krakenLightningAmbientCooldownPhaseTwoMin = 35; - private static int krakenLightningAmbientCooldownPhaseTwoMax = 70; - private static int krakenLightningStrikeCooldownPhaseOneMin = 60; - private static int krakenLightningStrikeCooldownPhaseOneMax = 140; - private static int krakenLightningStrikeCooldownPhaseTwoMin = 26; - private static int krakenLightningStrikeCooldownPhaseTwoMax = 46; - private static int krakenPhaseSummonCooldownPhaseOneMin = 90; - private static int krakenPhaseSummonCooldownPhaseOneMax = 140; - private static int krakenPhaseSummonCooldownPhaseTwoMin = 90; - private static int krakenPhaseSummonCooldownPhaseTwoMax = 140; - private static int krakenPhaseSummonedMinionsMin = 1; - private static int krakenPhaseSummonedMinionsMax = 2; - private static int krakenPhaseTwoMinionsNearbyCap = 12; - private static int krakenPhaseTwoMinionSpawnAttempts = 18; private static double lucidHealth = 30.0D; private static double lucidAttackDamage = 4.0D; private static double lucidMovementSpeed = 0.22D; private static double lucidFlyingSpeed = 0.35D; - private static double lucidFollowRange = 40.0D; private static double lucidKnockbackResistance = 0.5D; - private static int lucidXpReward = 10; - private static int lucidAttackWindupTicks = 16; - private static int lucidAttackRecoveryTicks = 8; - private static int lucidBurstShots = 3; - private static int lucidBurstIntervalTicks = 6; - private static int lucidAttackCooldownTicks = 52; - private static double lucidMinEffectiveAttackRange = 10.0D; - private static double lucidMinHoverRange = 6.5D; - private static double lucidCloseRange = 4.5D; - private static double lucidDefaultHoverHeight = 2.75D; - private static double lucidHitboxWidthScale = 1.3D; - private static double lucidHitboxHeightScale = 1.48D; - private static double lucidHitboxYOffset = 1.08D; private static double missileSquidHealth = 50.0D; private static double missileSquidAttackDamage = 6.0D; private static double missileSquidMovementSpeed = 0.84D; private static double missileSquidFlyingSpeed = 0.84D; - private static double missileSquidFollowRange = 20.0D; private static double missileSquidKnockbackResistance = 0.15D; - private static int missileSquidXpReward = 6; - private static int missileSquidLatchDamageInterval = 15; - private static float missileSquidLatchDamage = 2.0F; - private static double missileSquidAttachRangeSqr = 2.25D; private static double molewormHealth = 8.0D; private static double molewormAttackDamage = 1.0D; private static double molewormMovementSpeed = 0.25D; - private static int molewormXpReward = 0; private static double triffidHealth = 80.0D; private static double triffidAttackDamage = 10.0D; private static double triffidGrabDamage = 15.0D; @@ -452,19 +359,6 @@ public final class AntarchySettings { private static int nightmareBedBugEggSearchInterval = 30; private static int nightmareDreadTicks = 160; private static int nightmareWeaknessTicks = 100; - private static double nightmarePatrolSpeed = 0.34D; - private static double nightmareCombatFlightSpeed = 0.58D; - private static double nightmareGroundApproachSpeed = 0.82D; - private static double nightmareAttackStartRangeSqr = 42.25D; - private static double nightmareGroundApproachRangeSqr = 16.0D * 16.0D; - private static double nightmareAttackReachRadius = 2.65D; - private static double nightmareAttackCommitHorizontalRange = 4.2D; - private static double nightmareAttackCommitVerticalRange = 2.8D; - private static double nightmareFlightReengageRangeSqr = 10.0D * 10.0D; - private static double nightmareCloseApproachRangeSqr = 6.0D * 6.0D; - private static double nightmareRoarRetryDistanceSqr = 20.0D * 20.0D; - private static double nightmareBedBugEggBreakRangeSqr = 2.8D * 2.8D; - private static float nightmareAirPatrolChance = 0.2F; private static double battleAxeAttackSpeed = -3.1D; private static double basiliskDaggerAttackDamage = 6.0D; private static double basiliskDaggerAttackSpeed = -1.8D; @@ -482,7 +376,11 @@ public final class AntarchySettings { private static double ductTapeRepairPercentPerUse = 0.25D; private static double ultimateArmorKnockbackResistance = 0.1D; private static double nightmareArmorKnockbackResistance = 0.1D; + private static double nightmareArmorDreadAuraRangePerPiece = 2.0D; private static double primordialArmorKnockbackPerPiece = 0.5D; + private static double mogglesVisionRadius = 20.0D; + private static int mogglesVisionMaxLight = 7; + private static double mogglesVisionAlpha = 0.65D; private static int fallenKingCrownArmorValue = 2; private static double fallenKingCrownArmorToughness = 0.0D; private static boolean permanentPortalsEnabled = true; @@ -491,6 +389,7 @@ public final class AntarchySettings { private static boolean thoraxisPortalEnabled = true; private static boolean cavarynPortalEnabled = true; private static boolean elythiaFireflyParticlesEnabled = true; + private static boolean glowingTorchflowers = true; private static int bloodCrystalArmorShieldRechargeTicks = 600; private static int bloodCrystalAppleShieldCount = 2; private static int bloodCrystalAppleDurationTicks = 2400; @@ -511,7 +410,7 @@ public final class AntarchySettings { private static double toreterrorJumpAttackKnockback = 2.5D; private static double toreterrorSpinDamage = 6.0D; private static double toreterrorSpinKnockback = 0.9D; - private static double toreterrorRangedWaterBombChance = 0.5D; + private static double toreterrorRangedWaterBombChance = 0.35D; private static double toreterrorProjectileDamageMultiplier = 0.5D; private static double waterBombDamage = 6.0D; private static int waterBombLifetimeTicks = 120; @@ -586,14 +485,14 @@ public final class AntarchySettings { return duplicatorTreeEnabled; } - public static boolean glowingTorchflowers() { - return glowingTorchflowers; - } - public static boolean glowVinesUnderLeaves() { return glowVinesUnderLeaves; } + public static boolean glowingTorchflowers() { + return glowingTorchflowers; + } + public static boolean swingThroughGrassEnabled() { return swingThroughGrassEnabled; } @@ -829,7 +728,6 @@ public final class AntarchySettings { 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; } @@ -921,10 +819,6 @@ public final class AntarchySettings { return rollyPollyRollSpeedMultiplier; } - public static double rollyPollyTumbleDamage() { - return rollyPollyTumbleDamage; - } - public static int rollyPollyTameChance() { return rollyPollyTameChance; } @@ -933,6 +827,10 @@ public final class AntarchySettings { return rollyPollyBowlingDamage; } + public static double rollyPollyTumbleDamage() { + return rollyPollyTumbleDamage; + } + public static double rollyPollyBowlingKnockback() { return rollyPollyBowlingKnockback; } @@ -977,10 +875,6 @@ public final class AntarchySettings { return bomberExplosionRadius; } - public static double krakenProjectileDamageTakenMultiplier() { - return krakenProjectileDamageTakenMultiplier; - } - public static boolean krakenSquidSpawnEnabled() { return krakenSquidSpawnEnabled; } @@ -1140,14 +1034,14 @@ public final class AntarchySettings { duplicatorTreeEnabled = value; } - public static void setGlowingTorchflowers(boolean value) { - glowingTorchflowers = value; - } - public static void setGlowVinesUnderLeaves(boolean value) { glowVinesUnderLeaves = value; } + public static void setGlowingTorchflowers(boolean value) { + glowingTorchflowers = value; + } + public static void setSwingThroughGrassEnabled(boolean value) { swingThroughGrassEnabled = value; } @@ -1479,10 +1373,6 @@ public final class AntarchySettings { rollyPollyRollSpeedMultiplier = value; } - public static void setRollyPollyTumbleDamage(double value) { - rollyPollyTumbleDamage = value; - } - public static void setRollyPollyTameChance(int value) { rollyPollyTameChance = value; } @@ -1491,6 +1381,10 @@ public final class AntarchySettings { rollyPollyBowlingDamage = value; } + public static void setRollyPollyTumbleDamage(double value) { + rollyPollyTumbleDamage = value; + } + public static void setRollyPollyBowlingKnockback(double value) { rollyPollyBowlingKnockback = value; } @@ -1503,10 +1397,6 @@ public final class AntarchySettings { rollyPollyRolledArmorBonus = value; } - public static void setKrakenProjectileDamageTakenMultiplier(double value) { - krakenProjectileDamageTakenMultiplier = value; - } - public static void setKrakenSquidSpawnEnabled(boolean value) { krakenSquidSpawnEnabled = value; } @@ -1664,30 +1554,6 @@ public final class AntarchySettings { americanRegenerationAmplifier = value; } - public static int mogglesVisionRadius() { - return mogglesVisionRadius; - } - - public static void setMogglesVisionRadius(int value) { - mogglesVisionRadius = value; - } - - public static int mogglesVisionMaxLight() { - return mogglesVisionMaxLight; - } - - public static void setMogglesVisionMaxLight(int value) { - mogglesVisionMaxLight = value; - } - - public static float mogglesVisionAlpha() { - return mogglesVisionAlpha; - } - - public static void setMogglesVisionAlpha(float value) { - mogglesVisionAlpha = value; - } - public static boolean dreamSandEnabled() { return dreamSandEnabled; } @@ -1720,14 +1586,6 @@ public final class AntarchySettings { dreamSandGravityMultiplier = value; } - public static double dreamSandFallDamageMultiplier() { - return dreamSandFallDamageMultiplier; - } - - public static void setDreamSandFallDamageMultiplier(double value) { - dreamSandFallDamageMultiplier = value; - } - public static double dreamSandEffectDurationSeconds() { return dreamSandEffectDurationSeconds; } @@ -1736,6 +1594,14 @@ public final class AntarchySettings { dreamSandEffectDurationSeconds = value; } + public static double dreamSandFallDamageMultiplier() { + return dreamSandFallDamageMultiplier; + } + + public static void setDreamSandFallDamageMultiplier(double value) { + dreamSandFallDamageMultiplier = value; + } + public static double dreamSandFallingBlockGravityMultiplier() { return dreamSandFallingBlockGravityMultiplier; } @@ -1776,8 +1642,14 @@ public final class AntarchySettings { public static double nightmareBootsArmorToughness() { return nightmareBootsArmorToughness; } public static void setNightmareBootsArmorToughness(double v) { nightmareBootsArmorToughness = v; } - public static double nightmareArmorDreadAuraRangePerPiece() { return nightmareArmorDreadAuraRangePerPiece; } public static void setNightmareArmorDreadAuraRangePerPiece(double v) { nightmareArmorDreadAuraRangePerPiece = v; } + public static double nightmareArmorDreadAuraRangePerPiece() { return nightmareArmorDreadAuraRangePerPiece; } + public static void setMogglesVisionRadius(double v) { mogglesVisionRadius = v; } + public static double mogglesVisionRadius() { return mogglesVisionRadius; } + public static void setMogglesVisionMaxLight(int v) { mogglesVisionMaxLight = v; } + public static int mogglesVisionMaxLight() { return mogglesVisionMaxLight; } + public static void setMogglesVisionAlpha(double v) { mogglesVisionAlpha = v; } + public static double mogglesVisionAlpha() { return mogglesVisionAlpha; } public static double nightmareHelmetDoubleDamageChance() { return nightmareHelmetDoubleDamageChance; } public static void setNightmareHelmetDoubleDamageChance(double v) { nightmareHelmetDoubleDamageChance = v; } @@ -1972,18 +1844,12 @@ public final class AntarchySettings { public static double flyingSquirrelMovementSpeed() { return flyingSquirrelMovementSpeed; } public static void setFlyingSquirrelMovementSpeed(double value) { flyingSquirrelMovementSpeed = value; } - public static double flyingSquirrelFollowRange() { return flyingSquirrelFollowRange; } - public static void setFlyingSquirrelFollowRange(double value) { flyingSquirrelFollowRange = value; } - public static double caterpillarHealth() { return caterpillarHealth; } public static void setCaterpillarHealth(double value) { caterpillarHealth = value; } public static double caterpillarMovementSpeed() { return caterpillarMovementSpeed; } public static void setCaterpillarMovementSpeed(double value) { caterpillarMovementSpeed = value; } - public static double caterpillarFollowRange() { return caterpillarFollowRange; } - public static void setCaterpillarFollowRange(double value) { caterpillarFollowRange = value; } - public static double caterpillarPupationTimeSeconds() { return caterpillarPupationTimeSeconds; } public static void setCaterpillarPupationTimeSeconds(double value) { caterpillarPupationTimeSeconds = value; } public static int caterpillarPupationTimeTicks() { return Math.max(1, (int)Math.round(caterpillarPupationTimeSeconds * 20.0D)); } @@ -2002,9 +1868,6 @@ public final class AntarchySettings { public static double butterflyFlyingSpeed() { return butterflyFlyingSpeed; } public static void setButterflyFlyingSpeed(double value) { butterflyFlyingSpeed = value; } - public static double butterflyFollowRange() { return butterflyFollowRange; } - public static void setButterflyFollowRange(double value) { butterflyFollowRange = value; } - public static double reverieHealth() { return reverieHealth; } public static void setReverieHealth(double value) { reverieHealth = value; } @@ -2022,9 +1885,8 @@ public final class AntarchySettings { public static int reverieRebindCooldownTicks() { return reverieRebindCooldownTicks; } public static void setReverieRebindCooldownTicks(int v) { reverieRebindCooldownTicks = v; } - public static int reverieDamageReactionDurationTicks() { return reverieDamageReactionDurationTicks; } - public static void setReverieDamageReactionDurationTicks(int v){ reverieDamageReactionDurationTicks = v; } + public static void setReverieDamageReactionDurationTicks(int v) { reverieDamageReactionDurationTicks = v; } public static double reverieDangerousFallDistance() { return reverieDangerousFallDistance; } public static void setReverieDangerousFallDistance(double v){ reverieDangerousFallDistance = v; } @@ -2042,11 +1904,9 @@ public final class AntarchySettings { public static void setReverieDuplicationCooldownTicks(int v){ reverieDuplicationCooldownTicks = v; } // Hardcoded AI tuning — getters only, no config wiring - public static boolean reverieOnlyPlayerDamage() { return reverieOnlyPlayerDamage; } public static double reveriePreferredFollowMinDistance() { return reveriePreferredFollowMinDistance; } public static double reveriePreferredFollowMaxDistance() { return reveriePreferredFollowMaxDistance; } public static double reverieCatchUpDistance() { return reverieCatchUpDistance; } - public static double reveriePurpleProtectRadius() { return reveriePurpleProtectRadius; } public static int reverieWarningApproachTicks() { return reverieWarningApproachTicks; } public static int reverieWarningHoverTicks() { return reverieWarningHoverTicks; } public static int reverieWarningReturnTicks() { return reverieWarningReturnTicks; } @@ -2073,15 +1933,9 @@ public final class AntarchySettings { public static double scorpionWhipTetherMaxRange() { return scorpionWhipTetherMaxRange; } public static void setScorpionWhipTetherMaxRange(double value) { scorpionWhipTetherMaxRange = value; } - public static int scorpionWhipReelCooldownTicks() { return scorpionWhipReelCooldownTicks; } - public static void setScorpionWhipReelCooldownTicks(int value) { scorpionWhipReelCooldownTicks = value; } - public static double scorpionWhipSnapBonusDamage() { return scorpionWhipSnapBonusDamage; } public static void setScorpionWhipSnapBonusDamage(double value) { scorpionWhipSnapBonusDamage = value; } - public static int scorpionWhipSnapCooldownTicks() { return scorpionWhipSnapCooldownTicks; } - public static void setScorpionWhipSnapCooldownTicks(int value) { scorpionWhipSnapCooldownTicks = value; } - public static double scorpionWhipPullStrength() { return scorpionWhipPullStrength; } public static void setScorpionWhipPullStrength(double value) { scorpionWhipPullStrength = value; } @@ -2090,6 +1944,10 @@ public final class AntarchySettings { public static double scorpionWhipSelfPullMultiplier() { return scorpionWhipSelfPullMultiplier; } public static void setScorpionWhipSelfPullMultiplier(double value) { scorpionWhipSelfPullMultiplier = value; } + public static int scorpionWhipReelCooldownTicks() { return scorpionWhipReelCooldownTicks; } + public static void setScorpionWhipReelCooldownTicks(int value) { scorpionWhipReelCooldownTicks = value; } + public static int scorpionWhipSnapCooldownTicks() { return scorpionWhipSnapCooldownTicks; } + public static void setScorpionWhipSnapCooldownTicks(int value) { scorpionWhipSnapCooldownTicks = value; } public static int bloodCrystalKatanaAttackDamage() { return bloodCrystalKatanaAttackDamage; } public static void setBloodCrystalKatanaAttackDamage(int value) { bloodCrystalKatanaAttackDamage = value; } @@ -2169,24 +2027,6 @@ public final class AntarchySettings { public static double scorpionKnockbackResistance() { return scorpionKnockbackResistance; } public static void setScorpionKnockbackResistance(double value) { scorpionKnockbackResistance = value; } - public static double scorpionFollowRange() { return scorpionFollowRange; } - public static void setScorpionFollowRange(double value) { scorpionFollowRange = value; } - - public static int scorpionXpReward() { return scorpionXpReward; } - public static void setScorpionXpReward(int value) { scorpionXpReward = value; } - - public static int scorpionAttackAnimTicks() { return scorpionAttackAnimTicks; } - public static void setScorpionAttackAnimTicks(int value) { scorpionAttackAnimTicks = value; } - - public static int scorpionAttackHitTick() { return scorpionAttackHitTick; } - public static void setScorpionAttackHitTick(int value) { scorpionAttackHitTick = value; } - - public static int scorpionAttackCooldownTicks() { return scorpionAttackCooldownTicks; } - public static void setScorpionAttackCooldownTicks(int value) { scorpionAttackCooldownTicks = value; } - - public static int scorpionPoisonTicks() { return scorpionPoisonTicks; } - public static void setScorpionPoisonTicks(int value) { scorpionPoisonTicks = value; } - public static double bedBugHealth() { return bedBugHealth; } public static void setBedBugHealth(double value) { bedBugHealth = value; } @@ -2199,54 +2039,11 @@ public final class AntarchySettings { public static double bedBugArmor() { return bedBugArmor; } public static void setBedBugArmor(double value) { bedBugArmor = value; } - public static double bedBugFollowRange() { return bedBugFollowRange; } - public static void setBedBugFollowRange(double value) { bedBugFollowRange = value; } - - public static int bedBugXpReward() { return bedBugXpReward; } - public static void setBedBugXpReward(int value) { bedBugXpReward = value; } - - public static int bedBugBiteAnimTicks() { return bedBugBiteAnimTicks; } - public static void setBedBugBiteAnimTicks(int value) { bedBugBiteAnimTicks = value; } - - public static int bedBugAttackHitTick() { return bedBugAttackHitTick; } - public static void setBedBugAttackHitTick(int value) { bedBugAttackHitTick = value; } - - public static int bedBugAttackCooldownTicks() { return bedBugAttackCooldownTicks; } - public static void setBedBugAttackCooldownTicks(int value) { bedBugAttackCooldownTicks = value; } - - public static int bedBugMinLayEggDelay() { return bedBugMinLayEggDelay; } - public static void setBedBugMinLayEggDelay(int value) { bedBugMinLayEggDelay = value; } - - public static int bedBugMaxLayEggDelay() { return bedBugMaxLayEggDelay; } - public static void setBedBugMaxLayEggDelay(int value) { bedBugMaxLayEggDelay = value; } - - public static double bedBugFoodSearchRadius() { return bedBugFoodSearchRadius; } - public static void setBedBugFoodSearchRadius(double value) { bedBugFoodSearchRadius = value; } - - public static double bedBugEggGuardRadius() { return bedBugEggGuardRadius; } - public static void setBedBugEggGuardRadius(double value) { bedBugEggGuardRadius = value; } - - public static double bedBugAttackStartReachBuffer() { return bedBugAttackStartReachBuffer; } - public static void setBedBugAttackStartReachBuffer(double value) { bedBugAttackStartReachBuffer = value; } - - public static double bedBugAttackReachBuffer() { return bedBugAttackReachBuffer; } - public static void setBedBugAttackReachBuffer(double value) { bedBugAttackReachBuffer = value; } - - public static double bedBugAttackLungeHorizontalSpeed() { return bedBugAttackLungeHorizontalSpeed; } - public static void setBedBugAttackLungeHorizontalSpeed(double value) { bedBugAttackLungeHorizontalSpeed = value; } - - public static double bedBugAttackLungeVerticalSpeed() { return bedBugAttackLungeVerticalSpeed; } - public static void setBedBugAttackLungeVerticalSpeed(double value) { bedBugAttackLungeVerticalSpeed = value; } - - public static float bedBugHealAmount() { return bedBugHealAmount; } - public static void setBedBugHealAmount(float value) { bedBugHealAmount = value; } - public static double jumpyBugHealth() { return jumpyBugHealth; } public static void setJumpyBugHealth(double value) { jumpyBugHealth = value; } public static double jumpyBugPounceDamage() { return jumpyBugPounceDamage; } public static void setJumpyBugPounceDamage(double value) { jumpyBugPounceDamage = value; } - public static double jumpyBugLatchDamage() { return jumpyBugLatchDamage; } public static void setJumpyBugLatchDamage(double value) { jumpyBugLatchDamage = value; } @@ -2268,63 +2065,6 @@ public final class AntarchySettings { public static double brutalflyFlyingSpeed() { return brutalflyFlyingSpeed; } public static void setBrutalflyFlyingSpeed(double value) { brutalflyFlyingSpeed = value; } - public static double brutalflyFollowRange() { return brutalflyFollowRange; } - public static void setBrutalflyFollowRange(double value) { brutalflyFollowRange = value; } - - public static int brutalflyXpReward() { return brutalflyXpReward; } - public static void setBrutalflyXpReward(int value) { brutalflyXpReward = value; } - - public static int brutalflyDeathSpawnCountMin() { return brutalflyDeathSpawnCountMin; } - public static void setBrutalflyDeathSpawnCountMin(int value) { brutalflyDeathSpawnCountMin = value; } - - public static int brutalflyDeathSpawnCountMax() { return brutalflyDeathSpawnCountMax; } - public static void setBrutalflyDeathSpawnCountMax(int value) { brutalflyDeathSpawnCountMax = value; } - - public static int brutalflySpitWindupTicks() { return brutalflySpitWindupTicks; } - public static void setBrutalflySpitWindupTicks(int value) { brutalflySpitWindupTicks = value; } - - public static int brutalflySwipeTicks() { return brutalflySwipeTicks; } - public static void setBrutalflySwipeTicks(int value) { brutalflySwipeTicks = value; } - - public static float brutalflySwipeKnockback() { return brutalflySwipeKnockback; } - public static void setBrutalflySwipeKnockback(float value) { brutalflySwipeKnockback = value; } - - public static int brutalflyPhaseOneSpitCooldownMin() { return brutalflyPhaseOneSpitCooldownMin; } - public static void setBrutalflyPhaseOneSpitCooldownMin(int value) { brutalflyPhaseOneSpitCooldownMin = value; } - - public static int brutalflyPhaseOneSpitCooldownMax() { return brutalflyPhaseOneSpitCooldownMax; } - public static void setBrutalflyPhaseOneSpitCooldownMax(int value) { brutalflyPhaseOneSpitCooldownMax = value; } - - public static int brutalflyPhaseTwoSpitCooldownMin() { return brutalflyPhaseTwoSpitCooldownMin; } - public static void setBrutalflyPhaseTwoSpitCooldownMin(int value) { brutalflyPhaseTwoSpitCooldownMin = value; } - - public static int brutalflyPhaseTwoSpitCooldownMax() { return brutalflyPhaseTwoSpitCooldownMax; } - public static void setBrutalflyPhaseTwoSpitCooldownMax(int value) { brutalflyPhaseTwoSpitCooldownMax = value; } - - public static int brutalflyPhaseThreeSpitCooldownMin() { return brutalflyPhaseThreeSpitCooldownMin; } - public static void setBrutalflyPhaseThreeSpitCooldownMin(int value) { brutalflyPhaseThreeSpitCooldownMin = value; } - - public static int brutalflyPhaseThreeSpitCooldownMax() { return brutalflyPhaseThreeSpitCooldownMax; } - public static void setBrutalflyPhaseThreeSpitCooldownMax(int value) { brutalflyPhaseThreeSpitCooldownMax = value; } - - public static int brutalflyPhaseOneMeleeCooldownMin() { return brutalflyPhaseOneMeleeCooldownMin; } - public static void setBrutalflyPhaseOneMeleeCooldownMin(int value) { brutalflyPhaseOneMeleeCooldownMin = value; } - - public static int brutalflyPhaseOneMeleeCooldownMax() { return brutalflyPhaseOneMeleeCooldownMax; } - public static void setBrutalflyPhaseOneMeleeCooldownMax(int value) { brutalflyPhaseOneMeleeCooldownMax = value; } - - public static int brutalflyPhaseTwoMeleeCooldownMin() { return brutalflyPhaseTwoMeleeCooldownMin; } - public static void setBrutalflyPhaseTwoMeleeCooldownMin(int value) { brutalflyPhaseTwoMeleeCooldownMin = value; } - - public static int brutalflyPhaseTwoMeleeCooldownMax() { return brutalflyPhaseTwoMeleeCooldownMax; } - public static void setBrutalflyPhaseTwoMeleeCooldownMax(int value) { brutalflyPhaseTwoMeleeCooldownMax = value; } - - public static int brutalflyPhaseThreeMeleeCooldownMin() { return brutalflyPhaseThreeMeleeCooldownMin; } - public static void setBrutalflyPhaseThreeMeleeCooldownMin(int value) { brutalflyPhaseThreeMeleeCooldownMin = value; } - - public static int brutalflyPhaseThreeMeleeCooldownMax() { return brutalflyPhaseThreeMeleeCooldownMax; } - public static void setBrutalflyPhaseThreeMeleeCooldownMax(int value) { brutalflyPhaseThreeMeleeCooldownMax = value; } - public static double cloudSharkHealth() { return cloudSharkHealth; } public static void setCloudSharkHealth(double value) { cloudSharkHealth = value; } @@ -2337,41 +2077,22 @@ public final class AntarchySettings { public static double cloudSharkFlyingSpeed() { return cloudSharkFlyingSpeed; } public static void setCloudSharkFlyingSpeed(double value) { cloudSharkFlyingSpeed = value; } - public static double cloudSharkFollowRange() { return cloudSharkFollowRange; } - public static void setCloudSharkFollowRange(double value) { cloudSharkFollowRange = value; } - public static double cloudSharkKnockbackResistance() { return cloudSharkKnockbackResistance; } public static void setCloudSharkKnockbackResistance(double value) { cloudSharkKnockbackResistance = value; } - public static int cloudSharkXpReward() { return cloudSharkXpReward; } - public static void setCloudSharkXpReward(int value) { cloudSharkXpReward = value; } - public static double krakenMovementSpeed() { return krakenMovementSpeed; } public static void setKrakenMovementSpeed(double value) { krakenMovementSpeed = value; } public static double krakenFlyingSpeed() { return krakenFlyingSpeed; } public static void setKrakenFlyingSpeed(double value) { krakenFlyingSpeed = value; } - public static double krakenFollowRange() { return krakenFollowRange; } - public static void setKrakenFollowRange(double value) { krakenFollowRange = value; } - public static double krakenKnockbackResistance() { return krakenKnockbackResistance; } public static void setKrakenKnockbackResistance(double value) { krakenKnockbackResistance = value; } public static double krakenArmor() { return krakenArmor; } public static void setKrakenArmor(double value) { krakenArmor = value; } - - public static int krakenXpReward() { return krakenXpReward; } - public static void setKrakenXpReward(int value) { krakenXpReward = value; } - - public static double krakenPhaseTwoSpeedBonus() { return krakenPhaseTwoSpeedBonus; } - public static void setKrakenPhaseTwoSpeedBonus(double value) { krakenPhaseTwoSpeedBonus = value; } - - public static double krakenPhaseTwoFlyingSpeedBonus() { return krakenPhaseTwoFlyingSpeedBonus; } - public static void setKrakenPhaseTwoFlyingSpeedBonus(double value) { krakenPhaseTwoFlyingSpeedBonus = value; } - - public static double krakenPhaseTwoDamageBonus() { return krakenPhaseTwoDamageBonus; } - public static void setKrakenPhaseTwoDamageBonus(double value) { krakenPhaseTwoDamageBonus = value; } + public static double krakenProjectileDamageTakenMultiplier() { return krakenProjectileDamageTakenMultiplier; } + public static void setKrakenProjectileDamageTakenMultiplier(double value) { krakenProjectileDamageTakenMultiplier = value; } public static double krakenBossBarRange() { return krakenBossBarRange; } public static void setKrakenBossBarRange(double value) { krakenBossBarRange = value; } @@ -2379,57 +2100,6 @@ public final class AntarchySettings { public static float krakenLightningDamagePhaseOne() { return krakenLightningDamagePhaseOne; } public static void setKrakenLightningDamagePhaseOne(float value) { krakenLightningDamagePhaseOne = value; } - public static float krakenLightningDamagePhaseTwo() { return krakenLightningDamagePhaseTwo; } - public static void setKrakenLightningDamagePhaseTwo(float value) { krakenLightningDamagePhaseTwo = value; } - - public static int krakenLightningAmbientCooldownPhaseOneMin() { return krakenLightningAmbientCooldownPhaseOneMin; } - public static void setKrakenLightningAmbientCooldownPhaseOneMin(int value) { krakenLightningAmbientCooldownPhaseOneMin = value; } - - public static int krakenLightningAmbientCooldownPhaseOneMax() { return krakenLightningAmbientCooldownPhaseOneMax; } - public static void setKrakenLightningAmbientCooldownPhaseOneMax(int value) { krakenLightningAmbientCooldownPhaseOneMax = value; } - - public static int krakenLightningAmbientCooldownPhaseTwoMin() { return krakenLightningAmbientCooldownPhaseTwoMin; } - public static void setKrakenLightningAmbientCooldownPhaseTwoMin(int value) { krakenLightningAmbientCooldownPhaseTwoMin = value; } - - public static int krakenLightningAmbientCooldownPhaseTwoMax() { return krakenLightningAmbientCooldownPhaseTwoMax; } - public static void setKrakenLightningAmbientCooldownPhaseTwoMax(int value) { krakenLightningAmbientCooldownPhaseTwoMax = value; } - - public static int krakenLightningStrikeCooldownPhaseOneMin() { return krakenLightningStrikeCooldownPhaseOneMin; } - public static void setKrakenLightningStrikeCooldownPhaseOneMin(int value) { krakenLightningStrikeCooldownPhaseOneMin = value; } - - public static int krakenLightningStrikeCooldownPhaseOneMax() { return krakenLightningStrikeCooldownPhaseOneMax; } - public static void setKrakenLightningStrikeCooldownPhaseOneMax(int value) { krakenLightningStrikeCooldownPhaseOneMax = value; } - - public static int krakenLightningStrikeCooldownPhaseTwoMin() { return krakenLightningStrikeCooldownPhaseTwoMin; } - public static void setKrakenLightningStrikeCooldownPhaseTwoMin(int value) { krakenLightningStrikeCooldownPhaseTwoMin = value; } - - public static int krakenLightningStrikeCooldownPhaseTwoMax() { return krakenLightningStrikeCooldownPhaseTwoMax; } - public static void setKrakenLightningStrikeCooldownPhaseTwoMax(int value) { krakenLightningStrikeCooldownPhaseTwoMax = value; } - - public static int krakenPhaseSummonCooldownPhaseOneMin() { return krakenPhaseSummonCooldownPhaseOneMin; } - public static void setKrakenPhaseSummonCooldownPhaseOneMin(int value) { krakenPhaseSummonCooldownPhaseOneMin = value; } - - public static int krakenPhaseSummonCooldownPhaseOneMax() { return krakenPhaseSummonCooldownPhaseOneMax; } - public static void setKrakenPhaseSummonCooldownPhaseOneMax(int value) { krakenPhaseSummonCooldownPhaseOneMax = value; } - - public static int krakenPhaseSummonCooldownPhaseTwoMin() { return krakenPhaseSummonCooldownPhaseTwoMin; } - public static void setKrakenPhaseSummonCooldownPhaseTwoMin(int value) { krakenPhaseSummonCooldownPhaseTwoMin = value; } - - public static int krakenPhaseSummonCooldownPhaseTwoMax() { return krakenPhaseSummonCooldownPhaseTwoMax; } - public static void setKrakenPhaseSummonCooldownPhaseTwoMax(int value) { krakenPhaseSummonCooldownPhaseTwoMax = value; } - - public static int krakenPhaseSummonedMinionsMin() { return krakenPhaseSummonedMinionsMin; } - public static void setKrakenPhaseSummonedMinionsMin(int value) { krakenPhaseSummonedMinionsMin = value; } - - public static int krakenPhaseSummonedMinionsMax() { return krakenPhaseSummonedMinionsMax; } - public static void setKrakenPhaseSummonedMinionsMax(int value) { krakenPhaseSummonedMinionsMax = value; } - - public static int krakenPhaseTwoMinionsNearbyCap() { return krakenPhaseTwoMinionsNearbyCap; } - public static void setKrakenPhaseTwoMinionsNearbyCap(int value) { krakenPhaseTwoMinionsNearbyCap = value; } - - public static int krakenPhaseTwoMinionSpawnAttempts() { return krakenPhaseTwoMinionSpawnAttempts; } - public static void setKrakenPhaseTwoMinionSpawnAttempts(int value) { krakenPhaseTwoMinionSpawnAttempts = value; } - public static double lucidHealth() { return lucidHealth; } public static void setLucidHealth(double value) { lucidHealth = value; } @@ -2442,51 +2112,9 @@ public final class AntarchySettings { public static double lucidFlyingSpeed() { return lucidFlyingSpeed; } public static void setLucidFlyingSpeed(double value) { lucidFlyingSpeed = value; } - public static double lucidFollowRange() { return lucidFollowRange; } - public static void setLucidFollowRange(double value) { lucidFollowRange = value; } - public static double lucidKnockbackResistance() { return lucidKnockbackResistance; } public static void setLucidKnockbackResistance(double value) { lucidKnockbackResistance = value; } - public static int lucidXpReward() { return lucidXpReward; } - public static void setLucidXpReward(int value) { lucidXpReward = value; } - - public static int lucidAttackWindupTicks() { return lucidAttackWindupTicks; } - public static void setLucidAttackWindupTicks(int value) { lucidAttackWindupTicks = value; } - - public static int lucidAttackRecoveryTicks() { return lucidAttackRecoveryTicks; } - public static void setLucidAttackRecoveryTicks(int value) { lucidAttackRecoveryTicks = value; } - - public static int lucidBurstShots() { return lucidBurstShots; } - public static void setLucidBurstShots(int value) { lucidBurstShots = value; } - - public static int lucidBurstIntervalTicks() { return lucidBurstIntervalTicks; } - public static void setLucidBurstIntervalTicks(int value) { lucidBurstIntervalTicks = value; } - - public static int lucidAttackCooldownTicks() { return lucidAttackCooldownTicks; } - public static void setLucidAttackCooldownTicks(int value) { lucidAttackCooldownTicks = value; } - - public static double lucidMinEffectiveAttackRange() { return lucidMinEffectiveAttackRange; } - public static void setLucidMinEffectiveAttackRange(double value) { lucidMinEffectiveAttackRange = value; } - - public static double lucidMinHoverRange() { return lucidMinHoverRange; } - public static void setLucidMinHoverRange(double value) { lucidMinHoverRange = value; } - - public static double lucidCloseRange() { return lucidCloseRange; } - public static void setLucidCloseRange(double value) { lucidCloseRange = value; } - - public static double lucidDefaultHoverHeight() { return lucidDefaultHoverHeight; } - public static void setLucidDefaultHoverHeight(double value) { lucidDefaultHoverHeight = value; } - - public static double lucidHitboxWidthScale() { return lucidHitboxWidthScale; } - public static void setLucidHitboxWidthScale(double value) { lucidHitboxWidthScale = value; } - - public static double lucidHitboxHeightScale() { return lucidHitboxHeightScale; } - public static void setLucidHitboxHeightScale(double value) { lucidHitboxHeightScale = value; } - - public static double lucidHitboxYOffset() { return lucidHitboxYOffset; } - public static void setLucidHitboxYOffset(double value) { lucidHitboxYOffset = value; } - public static double missileSquidHealth() { return missileSquidHealth; } public static void setMissileSquidHealth(double value) { missileSquidHealth = value; } @@ -2499,24 +2127,9 @@ public final class AntarchySettings { public static double missileSquidFlyingSpeed() { return missileSquidFlyingSpeed; } public static void setMissileSquidFlyingSpeed(double value) { missileSquidFlyingSpeed = value; } - public static double missileSquidFollowRange() { return missileSquidFollowRange; } - public static void setMissileSquidFollowRange(double value) { missileSquidFollowRange = value; } - public static double missileSquidKnockbackResistance() { return missileSquidKnockbackResistance; } public static void setMissileSquidKnockbackResistance(double value) { missileSquidKnockbackResistance = value; } - public static int missileSquidXpReward() { return missileSquidXpReward; } - public static void setMissileSquidXpReward(int value) { missileSquidXpReward = value; } - - public static int missileSquidLatchDamageInterval() { return missileSquidLatchDamageInterval; } - public static void setMissileSquidLatchDamageInterval(int value) { missileSquidLatchDamageInterval = value; } - - public static float missileSquidLatchDamage() { return missileSquidLatchDamage; } - public static void setMissileSquidLatchDamage(float value) { missileSquidLatchDamage = value; } - - public static double missileSquidAttachRangeSqr() { return missileSquidAttachRangeSqr; } - public static void setMissileSquidAttachRangeSqr(double value) { missileSquidAttachRangeSqr = value; } - public static double molewormHealth() { return molewormHealth; } public static void setMolewormHealth(double value) { molewormHealth = value; } @@ -2526,9 +2139,6 @@ public final class AntarchySettings { public static double molewormMovementSpeed() { return molewormMovementSpeed; } public static void setMolewormMovementSpeed(double value) { molewormMovementSpeed = value; } - public static int molewormXpReward() { return molewormXpReward; } - public static void setMolewormXpReward(int value) { molewormXpReward = value; } - public static double triffidHealth() { return triffidHealth; } public static void setTriffidHealth(double value) { triffidHealth = value; } @@ -2544,21 +2154,6 @@ public final class AntarchySettings { public static double molevoreAttackDamage() { return molevoreAttackDamage; } public static void setMolevoreAttackDamage(double value) { molevoreAttackDamage = value; } - public static double molevoreMovementSpeed() { return molevoreMovementSpeed; } - public static void setMolevoreMovementSpeed(double value) { molevoreMovementSpeed = value; } - - public static double molevoreArmor() { return molevoreArmor; } - public static void setMolevoreArmor(double value) { molevoreArmor = value; } - - public static double molevoreKnockbackResistance() { return molevoreKnockbackResistance; } - public static void setMolevoreKnockbackResistance(double value) { molevoreKnockbackResistance = value; } - - public static double molevoreFollowRange() { return molevoreFollowRange; } - public static void setMolevoreFollowRange(double value) { molevoreFollowRange = value; } - - public static int molevoreXpReward() { return molevoreXpReward; } - public static void setMolevoreXpReward(int value) { molevoreXpReward = value; } - public static int molevoreSpinTicks() { return molevoreSpinTicks; } public static void setMolevoreSpinTicks(int value) { molevoreSpinTicks = value; } @@ -2586,87 +2181,12 @@ public final class AntarchySettings { public static double nightmareMovementSpeed() { return nightmareMovementSpeed; } public static void setNightmareMovementSpeed(double value) { nightmareMovementSpeed = value; } - public static double nightmareFlyingSpeed() { return nightmareFlyingSpeed; } - public static void setNightmareFlyingSpeed(double value) { nightmareFlyingSpeed = value; } - - public static double nightmareFollowRange() { return nightmareFollowRange; } - public static void setNightmareFollowRange(double value) { nightmareFollowRange = value; } - - public static double nightmareKnockbackResistance() { return nightmareKnockbackResistance; } - public static void setNightmareKnockbackResistance(double value) { nightmareKnockbackResistance = value; } - - public static double nightmareArmor() { return nightmareArmor; } - public static void setNightmareArmor(double value) { nightmareArmor = value; } - - public static int nightmareXpReward() { return nightmareXpReward; } - public static void setNightmareXpReward(int value) { nightmareXpReward = value; } - - public static int nightmareAttackTotalTicks() { return nightmareAttackTotalTicks; } - public static void setNightmareAttackTotalTicks(int value) { nightmareAttackTotalTicks = value; } - - public static int nightmareAttackDamageTick() { return nightmareAttackDamageTick; } - public static void setNightmareAttackDamageTick(int value) { nightmareAttackDamageTick = value; } - - public static int nightmareIntroRoarTicks() { return nightmareIntroRoarTicks; } - public static void setNightmareIntroRoarTicks(int value) { nightmareIntroRoarTicks = value; } - - public static int nightmareCombatRoarTicks() { return nightmareCombatRoarTicks; } - public static void setNightmareCombatRoarTicks(int value) { nightmareCombatRoarTicks = value; } - - public static int nightmareDeathTicks() { return nightmareDeathTicks; } - public static void setNightmareDeathTicks(int value) { nightmareDeathTicks = value; } - - public static int nightmareTargetResetTicks() { return nightmareTargetResetTicks; } - public static void setNightmareTargetResetTicks(int value) { nightmareTargetResetTicks = value; } - - public static int nightmareBedBugEggSearchInterval() { return nightmareBedBugEggSearchInterval; } - public static void setNightmareBedBugEggSearchInterval(int value) { nightmareBedBugEggSearchInterval = value; } - public static int nightmareDreadTicks() { return nightmareDreadTicks; } public static void setNightmareDreadTicks(int value) { nightmareDreadTicks = value; } public static int nightmareWeaknessTicks() { return nightmareWeaknessTicks; } public static void setNightmareWeaknessTicks(int value) { nightmareWeaknessTicks = value; } - public static double nightmarePatrolSpeed() { return nightmarePatrolSpeed; } - public static void setNightmarePatrolSpeed(double value) { nightmarePatrolSpeed = value; } - - public static double nightmareCombatFlightSpeed() { return nightmareCombatFlightSpeed; } - public static void setNightmareCombatFlightSpeed(double value) { nightmareCombatFlightSpeed = value; } - - public static double nightmareGroundApproachSpeed() { return nightmareGroundApproachSpeed; } - public static void setNightmareGroundApproachSpeed(double value) { nightmareGroundApproachSpeed = value; } - - public static double nightmareAttackStartRangeSqr() { return nightmareAttackStartRangeSqr; } - public static void setNightmareAttackStartRangeSqr(double value) { nightmareAttackStartRangeSqr = value; } - - public static double nightmareGroundApproachRangeSqr() { return nightmareGroundApproachRangeSqr; } - public static void setNightmareGroundApproachRangeSqr(double value) { nightmareGroundApproachRangeSqr = value; } - - public static double nightmareAttackReachRadius() { return nightmareAttackReachRadius; } - public static void setNightmareAttackReachRadius(double value) { nightmareAttackReachRadius = value; } - - public static double nightmareAttackCommitHorizontalRange() { return nightmareAttackCommitHorizontalRange; } - public static void setNightmareAttackCommitHorizontalRange(double value) { nightmareAttackCommitHorizontalRange = value; } - - public static double nightmareAttackCommitVerticalRange() { return nightmareAttackCommitVerticalRange; } - public static void setNightmareAttackCommitVerticalRange(double value) { nightmareAttackCommitVerticalRange = value; } - - public static double nightmareFlightReengageRangeSqr() { return nightmareFlightReengageRangeSqr; } - public static void setNightmareFlightReengageRangeSqr(double value) { nightmareFlightReengageRangeSqr = value; } - - public static double nightmareCloseApproachRangeSqr() { return nightmareCloseApproachRangeSqr; } - public static void setNightmareCloseApproachRangeSqr(double value) { nightmareCloseApproachRangeSqr = value; } - - public static double nightmareRoarRetryDistanceSqr() { return nightmareRoarRetryDistanceSqr; } - public static void setNightmareRoarRetryDistanceSqr(double value) { nightmareRoarRetryDistanceSqr = value; } - - public static double nightmareBedBugEggBreakRangeSqr() { return nightmareBedBugEggBreakRangeSqr; } - public static void setNightmareBedBugEggBreakRangeSqr(double value) { nightmareBedBugEggBreakRangeSqr = value; } - - public static float nightmareAirPatrolChance() { return nightmareAirPatrolChance; } - public static void setNightmareAirPatrolChance(float value) { nightmareAirPatrolChance = value; } - public static double battleAxeAttackSpeed() { return battleAxeAttackSpeed; } public static void setBattleAxeAttackSpeed(double value) { battleAxeAttackSpeed = value; } @@ -2774,8 +2294,8 @@ public final class AntarchySettings { 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 toreterrorRangedWaterBombChance() { return toreterrorRangedWaterBombChance; } public static double toreterrorProjectileDamageMultiplier() { return toreterrorProjectileDamageMultiplier; } public static void setToreterrorProjectileDamageMultiplier(double v) { toreterrorProjectileDamageMultiplier = v; } public static double waterBombDamage() { return waterBombDamage; } @@ -2786,8 +2306,8 @@ public final class AntarchySettings { 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; } + public static double waterCannonCooldownSeconds() { return waterCannonCooldownSeconds; } public static double creepingHorrorHealth() { return creepingHorrorHealth; } public static void setCreepingHorrorHealth(double v) { creepingHorrorHealth = v; } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/AntarchyGameRules.java b/common/src/main/java/com/craisinlord/antarchy/content/AntarchyGameRules.java new file mode 100644 index 00000000..3be17a3b --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/AntarchyGameRules.java @@ -0,0 +1,28 @@ +package com.craisinlord.antarchy.content; + +import net.minecraft.world.level.GameRules; + +public final class AntarchyGameRules { + public static GameRules.Key RULE_DO_ANT_GREIFING; + public static GameRules.Key RULE_DO_HERCULES_BEETLE_GREIFING; + public static GameRules.Key RULE_DO_TERMITE_GREIFING; + public static GameRules.Key RULE_DO_CAVARYN_HORDES; + + private AntarchyGameRules() { + } + + public static void bootstrap(BooleanRuleRegistrar registrar) { + if (RULE_DO_ANT_GREIFING != null) { + return; + } + RULE_DO_ANT_GREIFING = registrar.register("doAntGreifing", GameRules.Category.MOBS, true); + RULE_DO_HERCULES_BEETLE_GREIFING = registrar.register("doHerculesBeetleGreifing", GameRules.Category.MOBS, true); + RULE_DO_TERMITE_GREIFING = registrar.register("doTermiteGreifing", GameRules.Category.MOBS, true); + RULE_DO_CAVARYN_HORDES = registrar.register("doCavarynHordes", GameRules.Category.MOBS, true); + } + + @FunctionalInterface + public interface BooleanRuleRegistrar { + GameRules.Key register(String name, GameRules.Category category, boolean defaultValue); + } +} 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 b89e94b9..7030f07c 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/AntarchyTags.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/AntarchyTags.java @@ -40,6 +40,8 @@ public final class AntarchyTags { public static final TagKey CAVARYN_PORTAL_FRAMES = TagKey.create(Registries.BLOCK, id("cavaryn_portal_frames")); public static final TagKey ROLLY_CAVERN_CARVEABLE = TagKey.create(Registries.BLOCK, id("rolly_cavern_carveable")); public static final TagKey MINERS_DREAM_CARVABLE = TagKey.create(Registries.BLOCK, id("miners_dream_carvable")); + public static final TagKey BLUESTONE_COMPONENTS = TagKey.create(Registries.BLOCK, id("bluestone_components")); + public static final TagKey BLUESTONE_CONNECTABLE = TagKey.create(Registries.BLOCK, id("bluestone_connectable")); private Blocks() { } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/AbstractCeilingBluestoneBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/AbstractCeilingBluestoneBlock.java new file mode 100644 index 00000000..f09752c6 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/AbstractCeilingBluestoneBlock.java @@ -0,0 +1,34 @@ +package com.craisinlord.antarchy.content.block; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; + +public abstract class AbstractCeilingBluestoneBlock extends Block { + protected AbstractCeilingBluestoneBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + @Override + protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { + return BluestonePlacementHelper.hasCeilingSupport(level, pos); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return BluestonePlacementHelper.canPlaceOnCeiling(context) ? this.defaultBlockState() : null; + } + + @Override + protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor level, BlockPos pos, BlockPos neighborPos) { + if (!state.canSurvive(level, pos)) { + return net.minecraft.world.level.block.Blocks.AIR.defaultBlockState(); + } + return super.updateShape(state, direction, neighborState, level, pos, neighborPos); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/AbstractCeilingDiodeBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/AbstractCeilingDiodeBlock.java new file mode 100644 index 00000000..5e3c3d53 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/AbstractCeilingDiodeBlock.java @@ -0,0 +1,34 @@ +package com.craisinlord.antarchy.content.block; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.block.DiodeBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; + +public abstract class AbstractCeilingDiodeBlock extends DiodeBlock { + protected AbstractCeilingDiodeBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + @Override + protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { + return BluestonePlacementHelper.hasCeilingSupport(level, pos); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return BluestonePlacementHelper.canPlaceOnCeiling(context) ? super.getStateForPlacement(context) : null; + } + + @Override + protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor level, BlockPos pos, BlockPos neighborPos) { + if (!state.canSurvive(level, pos)) { + return net.minecraft.world.level.block.Blocks.AIR.defaultBlockState(); + } + return super.updateShape(state, direction, neighborState, level, pos, neighborPos); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneBlock.java new file mode 100644 index 00000000..d7697751 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneBlock.java @@ -0,0 +1,48 @@ +package com.craisinlord.antarchy.content.block; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; + +public class BluestoneBlock extends Block implements BluestoneSignalSource { + public BluestoneBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + @Override + protected boolean isSignalSource(BlockState state) { + return true; + } + + @Override + protected int getSignal(BlockState state, net.minecraft.world.level.BlockGetter level, BlockPos pos, Direction direction) { + return 15; + } + + @Override + protected int getDirectSignal(BlockState state, net.minecraft.world.level.BlockGetter level, BlockPos pos, Direction direction) { + return 15; + } + + @Override + protected void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean moving) { + super.onPlace(state, level, pos, oldState, moving); + BluestoneSignalHelper.updateBluestoneNeighbors(level, pos); + } + + @Override + protected void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean movedByPiston) { + super.onRemove(state, level, pos, newState, movedByPiston); + if (!state.is(newState.getBlock())) { + BluestoneSignalHelper.updateBluestoneNeighbors(level, pos); + } + } + + @Override + public int getBluestoneSignal(net.minecraft.world.level.LevelReader level, BlockPos pos, BlockState state, Direction direction) { + return 15; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneComparatorBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneComparatorBlock.java new file mode 100644 index 00000000..e7f81d41 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneComparatorBlock.java @@ -0,0 +1,82 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.content.block.entity.BluestoneComparatorBlockEntity; +import com.mojang.serialization.MapCodec; +import java.util.function.Supplier; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.DustParticleOptions; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +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.ComparatorBlock; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; +import net.minecraft.util.RandomSource; +import org.joml.Vector3f; + +public class BluestoneComparatorBlock extends ComparatorBlock { + public static final MapCodec CODEC = simpleCodec(BluestoneComparatorBlock::new); + private static final VoxelShape SHAPE = Block.box(0.0D, 14.0D, 0.0D, 16.0D, 16.0D, 16.0D); + private static final DustParticleOptions BLUESTONE_PARTICLE = new DustParticleOptions(new Vector3f(0.18F, 0.54F, 1.0F), 1.0F); + private final Supplier> blockEntityTypeSupplier; + + public BluestoneComparatorBlock(BlockBehaviour.Properties properties) { + this(properties, null); + } + + public BluestoneComparatorBlock(BlockBehaviour.Properties properties, Supplier> blockEntityTypeSupplier) { + super(properties); + this.blockEntityTypeSupplier = blockEntityTypeSupplier; + } + + @Override + public MapCodec codec() { + return (MapCodec) (MapCodec) CODEC; + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return SHAPE; + } + + @Override + protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { + return BluestonePlacementHelper.hasCeilingSupport(level, pos); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return BluestonePlacementHelper.canPlaceOnCeiling(context) ? super.getStateForPlacement(context) : null; + } + + @Override + public BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor level, BlockPos pos, BlockPos neighborPos) { + if (!state.canSurvive(level, pos)) { + return net.minecraft.world.level.block.Blocks.AIR.defaultBlockState(); + } + return super.updateShape(state, direction, neighborState, level, pos, neighborPos); + } + + @Override + public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { + return new BluestoneComparatorBlockEntity(pos, state, this.blockEntityTypeSupplier); + } + + @Override + public void animateTick(BlockState state, net.minecraft.world.level.Level level, BlockPos pos, RandomSource random) { + if (!state.getValue(POWERED)) { + return; + } + double x = pos.getX() + 0.5D + (random.nextDouble() - 0.5D) * 0.2D; + double y = pos.getY() + 0.8D; + double z = pos.getZ() + 0.5D + (random.nextDouble() - 0.5D) * 0.2D; + level.addParticle(BLUESTONE_PARTICLE, x, y, z, 0.0D, 0.0D, 0.0D); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneOreBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneOreBlock.java new file mode 100644 index 00000000..cffc3b34 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneOreBlock.java @@ -0,0 +1,71 @@ +package com.craisinlord.antarchy.content.block; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.DustParticleOptions; +import net.minecraft.util.RandomSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.RedStoneOreBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.phys.BlockHitResult; +import org.joml.Vector3f; + +public class BluestoneOreBlock extends RedStoneOreBlock { + private static final DustParticleOptions BLUESTONE_PARTICLE = new DustParticleOptions(new Vector3f(0.18F, 0.54F, 1.0F), 1.0F); + + public BluestoneOreBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + @Override + public void attack(BlockState state, Level level, BlockPos pos, Player player) { + activate(state, level, pos); + } + + @Override + public void stepOn(Level level, BlockPos pos, BlockState state, Entity entity) { + activate(state, level, pos); + } + + @Override + protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + activate(state, level, pos); + return ItemInteractionResult.sidedSuccess(level.isClientSide); + } + + @Override + public void animateTick(BlockState state, Level level, BlockPos pos, RandomSource random) { + if (state.getValue(BlockStateProperties.LIT)) { + spawnBluestoneParticles(level, pos); + } + } + + private static void activate(BlockState state, Level level, BlockPos pos) { + spawnBluestoneParticles(level, pos); + if (!state.getValue(BlockStateProperties.LIT)) { + level.setBlock(pos, state.setValue(BlockStateProperties.LIT, true), 3); + } + } + + private static void spawnBluestoneParticles(Level level, BlockPos pos) { + RandomSource random = level.random; + for (Direction direction : Direction.values()) { + BlockPos neighborPos = pos.relative(direction); + if (level.getBlockState(neighborPos).isSolidRender(level, neighborPos)) { + continue; + } + Direction.Axis axis = direction.getAxis(); + double x = axis == Direction.Axis.X ? 0.5D + 0.5625D * direction.getStepX() : random.nextFloat(); + double y = axis == Direction.Axis.Y ? 0.5D + 0.5625D * direction.getStepY() : random.nextFloat(); + double z = axis == Direction.Axis.Z ? 0.5D + 0.5625D * direction.getStepZ() : random.nextFloat(); + level.addParticle(BLUESTONE_PARTICLE, pos.getX() + x, pos.getY() + y, pos.getZ() + z, 0.0D, 0.0D, 0.0D); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/BluestonePlacementHelper.java b/common/src/main/java/com/craisinlord/antarchy/content/block/BluestonePlacementHelper.java new file mode 100644 index 00000000..bdc18e16 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/BluestonePlacementHelper.java @@ -0,0 +1,21 @@ +package com.craisinlord.antarchy.content.block; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; + +public final class BluestonePlacementHelper { + private BluestonePlacementHelper() { + } + + public static boolean hasCeilingSupport(LevelReader level, BlockPos pos) { + BlockPos supportPos = pos.above(); + return Block.canSupportCenter(level, supportPos, Direction.DOWN); + } + + public static boolean canPlaceOnCeiling(BlockPlaceContext context) { + return context.getClickedFace() == Direction.DOWN && hasCeilingSupport(context.getLevel(), context.getClickedPos()); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneRepeaterBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneRepeaterBlock.java new file mode 100644 index 00000000..42788e29 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneRepeaterBlock.java @@ -0,0 +1,67 @@ +package com.craisinlord.antarchy.content.block; + +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.DustParticleOptions; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +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.RepeaterBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; +import net.minecraft.util.RandomSource; +import org.joml.Vector3f; + +public class BluestoneRepeaterBlock extends RepeaterBlock { + public static final MapCodec CODEC = simpleCodec(BluestoneRepeaterBlock::new); + private static final VoxelShape SHAPE = Block.box(0.0D, 14.0D, 0.0D, 16.0D, 16.0D, 16.0D); + private static final DustParticleOptions BLUESTONE_PARTICLE = new DustParticleOptions(new Vector3f(0.18F, 0.54F, 1.0F), 1.0F); + + public BluestoneRepeaterBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + @Override + public MapCodec codec() { + return (MapCodec) (MapCodec) CODEC; + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return SHAPE; + } + + @Override + protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { + return BluestonePlacementHelper.hasCeilingSupport(level, pos); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return BluestonePlacementHelper.canPlaceOnCeiling(context) ? super.getStateForPlacement(context) : null; + } + + @Override + public BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor level, BlockPos pos, BlockPos neighborPos) { + if (!state.canSurvive(level, pos)) { + return net.minecraft.world.level.block.Blocks.AIR.defaultBlockState(); + } + return super.updateShape(state, direction, neighborState, level, pos, neighborPos); + } + + @Override + public void animateTick(BlockState state, net.minecraft.world.level.Level level, BlockPos pos, RandomSource random) { + if (!state.getValue(POWERED)) { + return; + } + double x = pos.getX() + 0.5D + (random.nextDouble() - 0.5D) * 0.2D; + double y = pos.getY() + 0.8D; + double z = pos.getZ() + 0.5D + (random.nextDouble() - 0.5D) * 0.2D; + level.addParticle(BLUESTONE_PARTICLE, x, y, z, 0.0D, 0.0D, 0.0D); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneSide.java b/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneSide.java new file mode 100644 index 00000000..c39b5c41 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneSide.java @@ -0,0 +1,20 @@ +package com.craisinlord.antarchy.content.block; + +import net.minecraft.util.StringRepresentable; + +public enum BluestoneSide implements StringRepresentable { + NONE("none"), + SIDE("side"), + DOWN("down"); + + private final String name; + + BluestoneSide(String name) { + this.name = name; + } + + @Override + public String getSerializedName() { + return this.name; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneSignalHelper.java b/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneSignalHelper.java new file mode 100644 index 00000000..fa3daa87 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneSignalHelper.java @@ -0,0 +1,55 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.content.AntarchyTags; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.state.BlockState; + +public final class BluestoneSignalHelper { + private BluestoneSignalHelper() { + } + + public static int getBestNeighborSignal(LevelReader level, BlockPos pos) { + int signal = 0; + for (Direction direction : Direction.values()) { + signal = Math.max(signal, getDirectBluestoneSignal(level, pos.relative(direction), direction)); + if (signal >= 15) { + return 15; + } + } + return signal; + } + + public static int getDirectBluestoneSignal(LevelReader level, BlockPos pos, Direction direction) { + BlockState state = level.getBlockState(pos); + if (state.getBlock() instanceof BluestoneSignalSource source) { + return source.getBluestoneSignal(level, pos, state, direction); + } + return 0; + } + + public static int getWireSignal(LevelReader level, BlockPos pos) { + BlockState state = level.getBlockState(pos); + if (state.getBlock() instanceof BluestoneSignalSource source) { + return source.getBluestoneSignal(level, pos, state, Direction.DOWN); + } + return 0; + } + + public static boolean canBluestoneConnectTo(BlockState state) { + return state.is(AntarchyTags.Blocks.BLUESTONE_CONNECTABLE); + } + + public static boolean isBluestoneComponent(BlockState state) { + return state.is(AntarchyTags.Blocks.BLUESTONE_COMPONENTS); + } + + public static void updateBluestoneNeighbors(Level level, BlockPos pos) { + level.updateNeighborsAt(pos, level.getBlockState(pos).getBlock()); + for (Direction direction : Direction.values()) { + level.updateNeighborsAt(pos.relative(direction), level.getBlockState(pos).getBlock()); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneSignalSource.java b/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneSignalSource.java new file mode 100644 index 00000000..f2b5d4b9 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneSignalSource.java @@ -0,0 +1,10 @@ +package com.craisinlord.antarchy.content.block; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.state.BlockState; + +public interface BluestoneSignalSource { + int getBluestoneSignal(LevelReader level, BlockPos pos, BlockState state, Direction direction); +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneTorchBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneTorchBlock.java new file mode 100644 index 00000000..87202838 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneTorchBlock.java @@ -0,0 +1,154 @@ +package com.craisinlord.antarchy.content.block; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.WeakHashMap; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.DustParticleOptions; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +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.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; +import org.joml.Vector3f; + +public class BluestoneTorchBlock extends AbstractCeilingBluestoneBlock implements BluestoneSignalSource { + public static final BooleanProperty LIT = BlockStateProperties.LIT; + private static final VoxelShape SHAPE = Block.box(6.0D, 6.0D, 6.0D, 10.0D, 16.0D, 10.0D); + private static final DustParticleOptions BLUESTONE_PARTICLE = new DustParticleOptions(new Vector3f(0.18F, 0.54F, 1.0F), 1.0F); + private static final Map> RECENT_TOGGLES = new WeakHashMap<>(); + + public BluestoneTorchBlock(BlockBehaviour.Properties properties) { + super(properties); + this.registerDefaultState(this.defaultBlockState().setValue(LIT, true)); + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return SHAPE; + } + + @Override + protected boolean isSignalSource(BlockState state) { + return true; + } + + @Override + protected int getSignal(BlockState state, BlockGetter level, BlockPos pos, Direction direction) { + if (direction == Direction.DOWN) { + return 0; + } + return state.getValue(LIT) ? 15 : 0; + } + + @Override + protected int getDirectSignal(BlockState state, BlockGetter level, BlockPos pos, Direction direction) { + return this.getSignal(state, level, pos, direction); + } + + @Override + protected void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean moving) { + super.onPlace(state, level, pos, oldState, moving); + BluestoneSignalHelper.updateBluestoneNeighbors(level, pos); + } + + @Override + protected void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean movedByPiston) { + super.onRemove(state, level, pos, newState, movedByPiston); + if (!state.is(newState.getBlock())) { + BluestoneSignalHelper.updateBluestoneNeighbors(level, pos); + } + } + + @Override + protected void neighborChanged(BlockState state, Level level, BlockPos pos, Block block, BlockPos fromPos, boolean moving) { + if (!level.isClientSide) { + boolean powered = this.hasInputSignal(level, pos); + if (state.getValue(LIT) == powered) { + level.scheduleTick(pos, this, 2); + } + } + } + + @Override + protected void tick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + boolean powered = this.hasInputSignal(level, pos); + boolean lit = state.getValue(LIT); + + if (lit) { + if (powered) { + level.setBlock(pos, state.setValue(LIT, false), 3); + if (this.isToggledTooFrequently(level, pos, true)) { + level.levelEvent(1502, pos, 0); + level.playSound(null, pos, SoundEvents.REDSTONE_TORCH_BURNOUT, SoundSource.BLOCKS, 0.5F, 2.6F + (level.random.nextFloat() - level.random.nextFloat()) * 0.8F); + level.scheduleTick(pos, this, 160); + } + } + } else if (!powered && !this.isToggledTooFrequently(level, pos, false)) { + level.setBlock(pos, state.setValue(LIT, true), 3); + } + } + + @Override + public void animateTick(BlockState state, Level level, BlockPos pos, RandomSource random) { + if (!state.getValue(LIT)) { + return; + } + double x = pos.getX() + 0.5D; + double y = pos.getY() + 0.3D; + double z = pos.getZ() + 0.5D; + level.addParticle(ParticleTypes.SMOKE, x, y, z, 0.0D, 0.0D, 0.0D); + level.addParticle(BLUESTONE_PARTICLE, x, y, z, 0.0D, 0.0D, 0.0D); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(LIT); + } + + @Override + public int getBluestoneSignal(LevelReader level, BlockPos pos, BlockState state, Direction direction) { + return direction == Direction.DOWN ? 0 : state.getValue(LIT) ? 15 : 0; + } + + private boolean hasInputSignal(Level level, BlockPos pos) { + return level.hasNeighborSignal(pos.above()); + } + + private boolean isToggledTooFrequently(Level level, BlockPos pos, boolean addNew) { + List toggles = RECENT_TOGGLES.computeIfAbsent(level, ignored -> new ArrayList<>()); + if (addNew) { + toggles.add(new Toggle(pos.immutable(), level.getGameTime())); + } + + long cutoff = level.getGameTime() - 60L; + toggles.removeIf(toggle -> toggle.gameTime < cutoff); + + int count = 0; + for (Toggle toggle : toggles) { + if (toggle.pos.equals(pos)) { + count++; + if (count >= 8) { + return true; + } + } + } + return false; + } + + private record Toggle(BlockPos pos, long gameTime) { + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneWireBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneWireBlock.java new file mode 100644 index 00000000..89e8435a --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/BluestoneWireBlock.java @@ -0,0 +1,319 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.content.AntarchyTags; +import com.google.common.collect.ImmutableMap; +import com.mojang.serialization.MapCodec; +import java.util.Map; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.HorizontalDirectionalBlock; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.Rotation; +import net.minecraft.world.level.block.SoundType; +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.level.block.state.properties.IntegerProperty; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class BluestoneWireBlock extends Block implements BluestoneSignalSource { + public static final MapCodec CODEC = simpleCodec(BluestoneWireBlock::new); + public static final EnumProperty NORTH = EnumProperty.create("north", BluestoneSide.class); + public static final EnumProperty EAST = EnumProperty.create("east", BluestoneSide.class); + public static final EnumProperty SOUTH = EnumProperty.create("south", BluestoneSide.class); + public static final EnumProperty WEST = EnumProperty.create("west", BluestoneSide.class); + public static final IntegerProperty POWER = IntegerProperty.create("power", 0, 15); + public static final Map> PROPERTY_BY_DIRECTION = ImmutableMap.of( + Direction.NORTH, NORTH, + Direction.EAST, EAST, + Direction.SOUTH, SOUTH, + Direction.WEST, WEST + ); + private static final VoxelShape DOT_SHAPE = Block.box(3.0D, 14.0D, 3.0D, 13.0D, 16.0D, 13.0D); + private static final VoxelShape NORTH_SHAPE = Block.box(3.0D, 14.0D, 0.0D, 13.0D, 16.0D, 13.0D); + private static final VoxelShape SOUTH_SHAPE = Block.box(3.0D, 14.0D, 3.0D, 13.0D, 16.0D, 16.0D); + private static final VoxelShape WEST_SHAPE = Block.box(0.0D, 14.0D, 3.0D, 13.0D, 16.0D, 13.0D); + private static final VoxelShape EAST_SHAPE = Block.box(3.0D, 14.0D, 3.0D, 16.0D, 16.0D, 13.0D); + private static boolean shouldSignal = true; + + public BluestoneWireBlock() { + this(BlockBehaviour.Properties.of().noCollission().instabreak().sound(SoundType.WOOL)); + } + + public BluestoneWireBlock(BlockBehaviour.Properties properties) { + super(properties); + this.registerDefaultState(this.defaultBlockState() + .setValue(NORTH, BluestoneSide.NONE) + .setValue(EAST, BluestoneSide.NONE) + .setValue(SOUTH, BluestoneSide.NONE) + .setValue(WEST, BluestoneSide.NONE) + .setValue(POWER, 0)); + } + + public MapCodec codec() { + return CODEC; + } + + @Override + protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { + return BluestonePlacementHelper.hasCeilingSupport(level, pos); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + if (!BluestonePlacementHelper.canPlaceOnCeiling(context)) { + return null; + } + return this.updatePowerFromNeighbors(context.getLevel(), context.getClickedPos(), this.calculateShape(context.getLevel(), context.getClickedPos(), this.defaultBlockState())); + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + VoxelShape shape = DOT_SHAPE; + if (state.getValue(NORTH) != BluestoneSide.NONE) { + shape = Shapes.or(shape, NORTH_SHAPE); + } + if (state.getValue(EAST) != BluestoneSide.NONE) { + shape = Shapes.or(shape, EAST_SHAPE); + } + if (state.getValue(SOUTH) != BluestoneSide.NONE) { + shape = Shapes.or(shape, SOUTH_SHAPE); + } + if (state.getValue(WEST) != BluestoneSide.NONE) { + shape = Shapes.or(shape, WEST_SHAPE); + } + return shape; + } + + @Override + protected VoxelShape getCollisionShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return Shapes.empty(); + } + + @Override + protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor level, BlockPos pos, BlockPos neighborPos) { + if (!state.canSurvive(level, pos)) { + return net.minecraft.world.level.block.Blocks.AIR.defaultBlockState(); + } + if (direction.getAxis().isHorizontal() || direction == Direction.UP || direction == Direction.DOWN) { + return this.calculateShape(level, pos, state); + } + return super.updateShape(state, direction, neighborState, level, pos, neighborPos); + } + + @Override + protected void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean moving) { + if (!oldState.is(state.getBlock())) { + this.updateNeighbors(level, pos, state); + } + } + + @Override + protected void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean movedByPiston) { + if (!state.is(newState.getBlock())) { + BluestoneSignalHelper.updateBluestoneNeighbors(level, pos); + for (Direction direction : Direction.Plane.HORIZONTAL) { + BlockPos neighborPos = pos.relative(direction); + BlockState neighborState = level.getBlockState(neighborPos); + if (neighborState.is(this)) { + this.updateNeighbors(level, neighborPos, neighborState); + } + } + } + super.onRemove(state, level, pos, newState, movedByPiston); + } + + @Override + protected void neighborChanged(BlockState state, Level level, BlockPos pos, Block block, BlockPos fromPos, boolean moving) { + if (!level.isClientSide) { + this.updateNeighbors(level, pos, state); + } + } + + @Override + protected boolean isSignalSource(BlockState state) { + return shouldSignal; + } + + @Override + protected int getSignal(BlockState state, BlockGetter level, BlockPos pos, Direction direction) { + if (!shouldSignal || direction == Direction.UP) { + return 0; + } + if (direction.getAxis().isHorizontal()) { + EnumProperty property = PROPERTY_BY_DIRECTION.get(direction); + if (property != null && state.getValue(property) == BluestoneSide.NONE) { + return 0; + } + } + return state.getValue(POWER); + } + + @Override + protected int getDirectSignal(BlockState state, BlockGetter level, BlockPos pos, Direction direction) { + return this.getSignal(state, level, pos, direction); + } + + @Override + protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult hitResult) { + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } + boolean isDot = state.getValue(NORTH) == BluestoneSide.NONE + && state.getValue(EAST) == BluestoneSide.NONE + && state.getValue(SOUTH) == BluestoneSide.NONE + && state.getValue(WEST) == BluestoneSide.NONE; + BlockState updated = isDot + ? this.calculateShape(level, pos, state) + : state.setValue(NORTH, BluestoneSide.NONE) + .setValue(EAST, BluestoneSide.NONE) + .setValue(SOUTH, BluestoneSide.NONE) + .setValue(WEST, BluestoneSide.NONE); + level.setBlock(pos, updated, 3); + this.updateNeighbors(level, pos, updated); + return InteractionResult.SUCCESS; + } + + @Override + protected BlockState rotate(BlockState state, Rotation rotation) { + return switch (rotation) { + case CLOCKWISE_180 -> state.setValue(NORTH, state.getValue(SOUTH)) + .setValue(EAST, state.getValue(WEST)) + .setValue(SOUTH, state.getValue(NORTH)) + .setValue(WEST, state.getValue(EAST)); + case COUNTERCLOCKWISE_90 -> state.setValue(NORTH, state.getValue(EAST)) + .setValue(EAST, state.getValue(SOUTH)) + .setValue(SOUTH, state.getValue(WEST)) + .setValue(WEST, state.getValue(NORTH)); + case CLOCKWISE_90 -> state.setValue(NORTH, state.getValue(WEST)) + .setValue(EAST, state.getValue(NORTH)) + .setValue(SOUTH, state.getValue(EAST)) + .setValue(WEST, state.getValue(SOUTH)); + default -> state; + }; + } + + @Override + protected BlockState mirror(BlockState state, Mirror mirror) { + return switch (mirror) { + case LEFT_RIGHT -> state.setValue(NORTH, state.getValue(SOUTH)).setValue(SOUTH, state.getValue(NORTH)); + case FRONT_BACK -> state.setValue(EAST, state.getValue(WEST)).setValue(WEST, state.getValue(EAST)); + default -> super.mirror(state, mirror); + }; + } + + @Override + public void animateTick(BlockState state, Level level, BlockPos pos, RandomSource random) { + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(NORTH, EAST, SOUTH, WEST, POWER); + } + + @Override + public int getBluestoneSignal(LevelReader level, BlockPos pos, BlockState state, Direction direction) { + return direction == Direction.UP ? 0 : state.getValue(POWER); + } + + private void updateNeighbors(Level level, BlockPos pos, BlockState state) { + if (!state.is(this)) { + return; + } + BlockState shaped = this.calculateShape(level, pos, state); + BlockState powered = this.updatePowerFromNeighbors(level, pos, shaped); + if (!powered.equals(state)) { + level.setBlock(pos, powered, 3); + } + BluestoneSignalHelper.updateBluestoneNeighbors(level, pos); + } + + private BlockState updatePowerFromNeighbors(Level level, BlockPos pos, BlockState state) { + int newPower = this.calculateTargetStrength(level, pos); + return state.getValue(POWER) == newPower ? state : state.setValue(POWER, newPower); + } + + private int calculateTargetStrength(Level level, BlockPos pos) { + int external = this.getExternalSignal(level, pos); + int neighborWirePower = 0; + + for (Direction direction : Direction.Plane.HORIZONTAL) { + BlockPos sidePos = pos.relative(direction); + neighborWirePower = Math.max(neighborWirePower, BluestoneSignalHelper.getWireSignal(level, sidePos)); + neighborWirePower = Math.max(neighborWirePower, BluestoneSignalHelper.getWireSignal(level, sidePos.below())); + if (level.getBlockState(sidePos).isRedstoneConductor(level, sidePos)) { + neighborWirePower = Math.max(neighborWirePower, BluestoneSignalHelper.getWireSignal(level, sidePos.above())); + } + } + + return Math.max(external, Math.max(0, neighborWirePower - 1)); + } + + private int getExternalSignal(Level level, BlockPos pos) { + int signal = 0; + for (Direction direction : Direction.values()) { + BlockPos neighborPos = pos.relative(direction); + BlockState neighborState = level.getBlockState(neighborPos); + if (neighborState.is(net.minecraft.world.level.block.Blocks.REDSTONE_WIRE)) { + continue; + } + if (neighborState.getBlock() instanceof BluestoneWireBlock) { + continue; + } + signal = Math.max(signal, neighborState.getSignal(level, neighborPos, direction)); + if (signal >= 15) { + return 15; + } + } + return signal; + } + + private BlockState calculateShape(LevelReader level, BlockPos pos, BlockState state) { + return state.setValue(NORTH, this.getConnectingSide(level, pos, Direction.NORTH)) + .setValue(EAST, this.getConnectingSide(level, pos, Direction.EAST)) + .setValue(SOUTH, this.getConnectingSide(level, pos, Direction.SOUTH)) + .setValue(WEST, this.getConnectingSide(level, pos, Direction.WEST)); + } + + private BluestoneSide getConnectingSide(LevelReader level, BlockPos pos, Direction direction) { + BlockPos sidePos = pos.relative(direction); + BlockState sideState = level.getBlockState(sidePos); + if (this.canConnectTo(sideState, direction)) { + return BluestoneSide.SIDE; + } + + if (!sideState.isRedstoneConductor(level, sidePos) && this.canConnectTo(level.getBlockState(sidePos.below()), direction)) { + return BluestoneSide.DOWN; + } + + if (sideState.isRedstoneConductor(level, sidePos) && this.canConnectTo(level.getBlockState(sidePos.above()), direction)) { + return BluestoneSide.SIDE; + } + + return BluestoneSide.NONE; + } + + private boolean canConnectTo(BlockState state, Direction direction) { + if (state.getBlock() instanceof BluestoneWireBlock || state.getBlock() instanceof BluestoneTorchBlock || state.getBlock() instanceof BluestoneBlock) { + return true; + } + if (state.getBlock() instanceof BluestoneRepeaterBlock || state.getBlock() instanceof BluestoneComparatorBlock) { + Direction facing = state.getValue(HorizontalDirectionalBlock.FACING); + return facing == direction || facing == direction.getOpposite(); + } + return state.is(AntarchyTags.Blocks.BLUESTONE_CONNECTABLE); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/DreamCeilingTorchBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/DreamCeilingTorchBlock.java new file mode 100644 index 00000000..671e720e --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/DreamCeilingTorchBlock.java @@ -0,0 +1,53 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.Antarchy; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.TorchBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class DreamCeilingTorchBlock extends TorchBlock { + private static final ResourceLocation DREAM_FIRE_FLAME_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "dream_fire_flame"); + private static final VoxelShape SHAPE = Block.box(6.0D, 6.0D, 6.0D, 10.0D, 16.0D, 10.0D); + + public DreamCeilingTorchBlock(BlockBehaviour.Properties properties) { + super(ParticleTypes.SOUL_FIRE_FLAME, properties); + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return SHAPE; + } + + @Override + protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { + return Block.canSupportCenter(level, pos.above(), Direction.DOWN); + } + + @Override + public void animateTick(BlockState state, Level level, BlockPos pos, RandomSource random) { + double x = pos.getX() + 0.5D; + double y = pos.getY() + 0.3D; + double z = pos.getZ() + 0.5D; + level.addParticle(ParticleTypes.SMOKE, x, y, z, 0.0D, 0.0D, 0.0D); + level.addParticle(getDreamFlameParticle(), x, y, z, 0.0D, 0.0D, 0.0D); + } + + private static ParticleOptions getDreamFlameParticle() { + return BuiltInRegistries.PARTICLE_TYPE.get(DREAM_FIRE_FLAME_ID) instanceof ParticleOptions particleOptions + ? particleOptions + : ParticleTypes.SOUL_FIRE_FLAME; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/entity/BluestoneComparatorBlockEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/block/entity/BluestoneComparatorBlockEntity.java new file mode 100644 index 00000000..7708199d --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/entity/BluestoneComparatorBlockEntity.java @@ -0,0 +1,38 @@ +package com.craisinlord.antarchy.content.block.entity; + +import java.util.function.Supplier; +import net.minecraft.core.BlockPos; +import net.minecraft.core.HolderLookup; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; + +public class BluestoneComparatorBlockEntity extends BlockEntity { + private int outputSignal; + + public BluestoneComparatorBlockEntity(BlockPos pos, BlockState state, Supplier> blockEntityTypeSupplier) { + super(blockEntityTypeSupplier.get(), pos, state); + } + + public int getOutputSignal() { + return this.outputSignal; + } + + public void setOutputSignal(int outputSignal) { + this.outputSignal = outputSignal; + this.setChanged(); + } + + @Override + protected void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.saveAdditional(tag, registries); + tag.putInt("OutputSignal", this.outputSignal); + } + + @Override + protected void loadAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.loadAdditional(tag, registries); + this.outputSignal = tag.getInt("OutputSignal"); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/CreativeTabContents.java b/common/src/main/java/com/craisinlord/antarchy/content/creative/CreativeTabContents.java similarity index 98% rename from common/src/main/java/com/craisinlord/antarchy/content/CreativeTabContents.java rename to common/src/main/java/com/craisinlord/antarchy/content/creative/CreativeTabContents.java index 187e7dec..5be42b26 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/CreativeTabContents.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/creative/CreativeTabContents.java @@ -1,4 +1,4 @@ -package com.craisinlord.antarchy.content; +package com.craisinlord.antarchy.content.creative; import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant; @@ -170,6 +170,10 @@ public final class CreativeTabContents { entry("uranium_trapdoor", "building_blocks"), entry("uranium_bars", "building_blocks"), entry("uranium_bulb", "building_blocks"), + entry("bluestone_block", "building_blocks"), + entry("bluestone_repeater", "building_blocks"), + entry("bluestone_comparator", "building_blocks"), + entry("bluestone_torch", "building_blocks"), entry("titanium_block", "building_blocks"), entry("raw_titanium_block", "building_blocks"), entry("cut_titanium", "building_blocks"), @@ -218,6 +222,7 @@ public final class CreativeTabContents { entry("deepslate_uranium_ore", "natural_blocks"), entry("titanium_ore", "natural_blocks"), entry("deepslate_titanium_ore", "natural_blocks"), + entry("bluestone_ore", "natural_blocks"), entry("corn_seeds", "natural_blocks"), entry("star_coral", "natural_blocks"), entry("star_coral_fan", "natural_blocks"), @@ -279,6 +284,7 @@ public final class CreativeTabContents { entry("jumpy_boots", "combat"), entry("raw_uranium_scrap", "ingredients"), entry("raw_titanium_scrap", "ingredients"), + entry("bluestone", "ingredients"), entry("raw_uranium", "ingredients"), entry("raw_titanium", "ingredients"), entry("uranium_nugget", "ingredients"), diff --git a/common/src/main/java/com/craisinlord/antarchy/content/CreativeTabOrder.java b/common/src/main/java/com/craisinlord/antarchy/content/creative/CreativeTabOrder.java similarity index 92% rename from common/src/main/java/com/craisinlord/antarchy/content/CreativeTabOrder.java rename to common/src/main/java/com/craisinlord/antarchy/content/creative/CreativeTabOrder.java index bdfe445c..c0197a1c 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/CreativeTabOrder.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/creative/CreativeTabOrder.java @@ -1,4 +1,4 @@ -package com.craisinlord.antarchy.content; +package com.craisinlord.antarchy.content.creative; import java.util.Comparator; import net.minecraft.core.registries.BuiltInRegistries; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/BedBugEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/BedBugEntity.java index 4369d4be..adcd7c92 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/BedBugEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/BedBugEntity.java @@ -1,5 +1,6 @@ package com.craisinlord.antarchy.content.entity; +import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.block.BedBugEggBlock; @@ -103,11 +104,11 @@ public class BedBugEntity extends Animal implements GeoEntity { public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes() - .add(Attributes.MAX_HEALTH, 18.0D) - .add(Attributes.MOVEMENT_SPEED, 0.24D) - .add(Attributes.ATTACK_DAMAGE, 4.0D) + .add(Attributes.MAX_HEALTH, AntarchySettings.bedBugHealth()) + .add(Attributes.MOVEMENT_SPEED, AntarchySettings.bedBugMovementSpeed()) + .add(Attributes.ATTACK_DAMAGE, AntarchySettings.bedBugAttackDamage()) .add(Attributes.FOLLOW_RANGE, 20.0D) - .add(Attributes.ARMOR, 2.0D); + .add(Attributes.ARMOR, AntarchySettings.bedBugArmor()); } public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/ButterflyEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/ButterflyEntity.java index 95683035..a058d6ef 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/ButterflyEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/ButterflyEntity.java @@ -1,6 +1,7 @@ package com.craisinlord.antarchy.content.entity; import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.AntarchySoundEvents; @@ -143,9 +144,9 @@ public class ButterflyEntity extends Animal implements FlyingAnimal, GeoEntity { public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes() - .add(Attributes.MAX_HEALTH, 6.0D) - .add(Attributes.FLYING_SPEED, 0.55D) - .add(Attributes.MOVEMENT_SPEED, 0.3D) + .add(Attributes.MAX_HEALTH, AntarchySettings.butterflyHealth()) + .add(Attributes.FLYING_SPEED, AntarchySettings.butterflyFlyingSpeed()) + .add(Attributes.MOVEMENT_SPEED, AntarchySettings.butterflyMovementSpeed()) .add(Attributes.FOLLOW_RANGE, 16.0D); } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/CaterpillarEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/CaterpillarEntity.java index 833d2707..7744f504 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/CaterpillarEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/CaterpillarEntity.java @@ -123,8 +123,8 @@ public class CaterpillarEntity extends Animal implements GeoEntity { public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes() - .add(Attributes.MAX_HEALTH, 6.0D) - .add(Attributes.MOVEMENT_SPEED, 0.156D) + .add(Attributes.MAX_HEALTH, AntarchySettings.caterpillarHealth()) + .add(Attributes.MOVEMENT_SPEED, AntarchySettings.caterpillarMovementSpeed()) .add(Attributes.FOLLOW_RANGE, 14.0D); } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/HerculesBeetleEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/HerculesBeetleEntity.java index d3f9ddb1..a67d5f87 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/HerculesBeetleEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/HerculesBeetleEntity.java @@ -1,6 +1,7 @@ package com.craisinlord.antarchy.content.entity; import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyGameRules; import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.damage.AntarchyDamageSources; @@ -172,11 +173,11 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl private int mountedChargeTicks; private boolean attackDamageApplied; private boolean riderJumpPressed; - private boolean riderJumpPressedLastTick; private boolean mountedChargeActive; private boolean combatCryDone; private boolean pendingChargeStart; private boolean pendingMountedCharge; + private boolean groundedMountedCharge; private int pendingChargeDuration; @Nullable private UUID attackTargetId; @@ -372,8 +373,9 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl this.tickMountedMotion(); } - this.setNoGravity(this.isFlying() || this.chargeTicksRemaining > 0); - if (this.isFlying() || this.chargeTicksRemaining > 0) { + boolean airborneCharge = this.chargeTicksRemaining > 0 && !this.groundedMountedCharge; + this.setNoGravity(this.isFlying() || airborneCharge); + if (this.isFlying() || airborneCharge) { this.fallDistance = 0.0F; } @@ -450,8 +452,10 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl if (this.getAnimationState() != ANIM_CHARGE) { this.setAnimationState(ANIM_CHARGE); } - this.setFlying(true); - this.setNoGravity(true); + if (!this.groundedMountedCharge) { + this.setFlying(true); + this.setNoGravity(true); + } this.noPhysics = true; this.fallDistance = 0.0F; @@ -481,14 +485,13 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl } private void tickFlightState() { - if (this.isFlying() && this.onGround() && this.groundedTicks > 10 && this.getTarget() == null && !this.riderJumpPressed) { + if (!this.isVehicle() && this.isFlying() && this.onGround() && this.groundedTicks > 10 && this.getTarget() == null && !this.riderJumpPressed) { this.requestFlightStop(); } } private void tickMountedMotion() { if (!(this.getControllingPassenger() instanceof Player rider) || this.isKnockedDown()) { - this.riderJumpPressedLastTick = false; return; } if (this.chargeTicksRemaining > 0 || this.getAnimationState() == ANIM_CHARGE_START || this.getAnimationState() == ANIM_OPEN_WINGS) { @@ -498,37 +501,19 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl this.setYRot(rider.getYHeadRot()); this.yHeadRot = this.getYRot(); this.yBodyRot = this.getYRot(); - - if (this.isFlying() && this.onGround()) { - this.forceMountedFlightStop(); - return; - } - if (this.isFlying()) { - this.riderJumpPressedLastTick = this.riderJumpPressed; - return; - } - - boolean jumpPressedThisTick = this.riderJumpPressed; - boolean jumpPressedEdge = jumpPressedThisTick && !this.riderJumpPressedLastTick; - - if (jumpPressedEdge && this.onGround()) { - if (this.flightCooldown <= 0) { - this.requestFlightStart(); + this.setNoGravity(true); + this.noPhysics = false; + this.fallDistance = 0.0F; + if (this.onGround() && this.getDeltaMovement().y <= 0.0D) { + Vec3 motion = this.getDeltaMovement(); + this.setDeltaMovement(motion.x, MOUNTED_FLIGHT_LIFT, motion.z); + this.hasImpulse = true; } + } else { + this.setNoGravity(false); + this.noPhysics = false; } - - this.riderJumpPressedLastTick = jumpPressedThisTick; - } - - private void forceMountedFlightStop() { - this.setFlying(false); - this.actionTicks = 0; - this.flightCooldown = 8; - if (this.getAnimationState() == ANIM_OPEN_WINGS || this.getAnimationState() == ANIM_CLOSE_WINGS) { - this.setAnimationState(ANIM_IDLE); - } - this.updateAmbientAnimation(); } private void updateAmbientAnimation() { @@ -625,6 +610,7 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl this.setNoGravity(false); this.noPhysics = false; this.pendingChargeStart = false; + this.groundedMountedCharge = false; this.chargeTicksRemaining = 0; this.attackCooldown = 0; this.getNavigation().stop(); @@ -716,6 +702,32 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl } } + private boolean isMountedFlightPoseActive() { + return this.isFlying() && (!this.onGround() || this.getDeltaMovement().y > 0.08D); + } + + private void startMountedFlight() { + this.pendingChargeStart = false; + this.setFlying(true); + this.setNoGravity(true); + this.noPhysics = false; + this.fallDistance = 0.0F; + this.groundedTicks = 0; + Vec3 motion = this.getDeltaMovement(); + this.setDeltaMovement(motion.x, Math.max(motion.y, MOUNTED_FLIGHT_LIFT), motion.z); + this.hasImpulse = true; + this.setAnimationState(ANIM_FLY); + } + + private void stopMountedFlight() { + this.setFlying(false); + this.setNoGravity(false); + this.noPhysics = false; + this.fallDistance = 0.0F; + this.flightCooldown = 8; + this.updateAmbientAnimation(); + } + public boolean isKnockedDown() { return this.entityData.get(KNOCKED_DOWN); } @@ -830,7 +842,7 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl this.pendingChargeDuration = Mth.clamp(durationTicks, MIN_MOUNTED_CHARGE_TICKS, MAX_CHARGE_TICKS); this.pendingMountedCharge = mountedCharge; - if (!this.isFlying()) { + if (!this.isFlying() && !mountedCharge) { this.pendingChargeStart = true; this.requestFlightStart(); return; @@ -854,11 +866,15 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl this.chargeDistanceTarget = CHARGE_DISTANCE; this.chargeCooldown = CHARGE_COOLDOWN_TICKS; this.pendingChargeDuration = 0; + this.groundedMountedCharge = this.pendingMountedCharge && !this.isFlying(); this.pendingMountedCharge = false; - this.setFlying(true); + if (!this.groundedMountedCharge) { + this.setFlying(true); + } } private void finishChargeImpact() { + this.groundedMountedCharge = false; if (!(this.level() instanceof ServerLevel serverLevel)) { this.chargeTicksRemaining = 0; this.noPhysics = false; @@ -901,7 +917,7 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl } private void breakBlocksForChargeImpact(ServerLevel level) { - if (!level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { + if (!this.isHerculesBeetleGriefingEnabled(level)) { return; } @@ -929,7 +945,7 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl } private void breakBlocksForChargePath(Vec3 nextPosition) { - if (!(this.level() instanceof ServerLevel serverLevel) || !serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { + if (!(this.level() instanceof ServerLevel serverLevel) || !this.isHerculesBeetleGriefingEnabled(serverLevel)) { return; } @@ -957,7 +973,7 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl } private void breakBlocksForSuffocation() { - if (!(this.level() instanceof ServerLevel serverLevel) || !serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { + if (!(this.level() instanceof ServerLevel serverLevel) || !this.isHerculesBeetleGriefingEnabled(serverLevel)) { return; } @@ -1005,6 +1021,11 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl return false; } + private boolean isHerculesBeetleGriefingEnabled(ServerLevel level) { + return level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) + && level.getGameRules().getBoolean(AntarchyGameRules.RULE_DO_HERCULES_BEETLE_GREIFING); + } + private void broadcastImpactShake(ServerLevel level) { for (ServerPlayer player : level.players()) { if (player.distanceToSqr(this) <= 48.0D * 48.0D) { @@ -1029,6 +1050,17 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl this.startRegularAttack(this.isFlying(), target); } + public void toggleMountedFlight(ServerPlayer player) { + if (!this.canPlayerControl(player) || this.isKnockedDown() || this.chargeTicksRemaining > 0 || this.isInBusyAnimation()) { + return; + } + if (this.isFlying()) { + this.stopMountedFlight(); + return; + } + this.startMountedFlight(); + } + public void startMountedCharge(ServerPlayer player) { if (!this.canPlayerControl(player) || this.chargeCooldown > 0 || this.isKnockedDown() || this.isInBusyAnimation() || this.chargeTicksRemaining > 0) { this.resetMountedChargeState(); @@ -1077,8 +1109,13 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl protected void positionRider(Entity passenger, MoveFunction moveFunction) { if (this.hasPassenger(passenger)) { Vec3 forward = this.getLookAngle().multiply(1.0D, 0.0D, 1.0D); - double yOffset = this.isFlying() ? 5.3D : 0.5D; - double forwardOffset = this.isFlying() ? 2.2D : 0.0D; + boolean mountedFlightPose = this.isMountedFlightPoseActive(); + double yOffset = mountedFlightPose ? 5.3D : 3.0D; + double forwardOffset = mountedFlightPose ? 2.2D : 1.25D; + if (!this.isFlying()) { + yOffset -= 0.25D; + forwardOffset += 0.25D; + } moveFunction.accept( passenger, this.getX() + forward.x * forwardOffset, @@ -1108,15 +1145,11 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl this.setSpeed(this.getRiddenSpeed(rider)); if (!this.isFlying()) { - Vec3 currentMotion = this.getDeltaMovement(); - Vec3 horizontalMotion = new Vec3(currentMotion.x, 0.0D, currentMotion.z).scale(MOUNTED_GROUND_BRAKE); - this.setDeltaMovement(horizontalMotion.x, currentMotion.y, horizontalMotion.z); - this.moveRelative(this.getSpeed(), new Vec3(riddenInput.x, 0.0D, riddenInput.z)); - this.move(MoverType.SELF, this.getDeltaMovement()); + super.travel(new Vec3(riddenInput.x, travelVector.y, riddenInput.z)); if (Math.abs(rider.zza) < 0.05F && Math.abs(rider.xxa) < 0.05F && this.onGround()) { Vec3 dampedMotion = this.getDeltaMovement(); - this.setDeltaMovement(dampedMotion.x * 0.35D, dampedMotion.y, dampedMotion.z * 0.35D); + this.setDeltaMovement(dampedMotion.x * MOUNTED_GROUND_BRAKE, dampedMotion.y, dampedMotion.z * MOUNTED_GROUND_BRAKE); } } else { Vec3 motion = new Vec3(0.0D, this.getDeltaMovement().y, 0.0D); @@ -1125,14 +1158,6 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl this.setDeltaMovement(motion); this.move(MoverType.SELF, this.getDeltaMovement()); } - - if (!this.isFlying() && rider.zza > 0.0F && this.horizontalCollision) { - Vec3 stepUpPos = this.position().add(0.0D, 1.0D, 0.0D); - this.setPos(stepUpPos.x, stepUpPos.y, stepUpPos.z); - this.setDeltaMovement(Vec3.ZERO); - this.moveRelative(this.getSpeed(), new Vec3(riddenInput.x, 0.0D, riddenInput.z)); - this.move(MoverType.SELF, this.getDeltaMovement()); - } } @Override @@ -1166,6 +1191,11 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl return this.entityData.get(FLYING); } + @Override + public float maxUpStep() { + return this.isFlying() ? 0.6F : 1.5F; + } + @Override public EntityDimensions getDefaultDimensions(Pose pose) { return DEFAULT_DIMENSIONS; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/MissileSquidEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/MissileSquidEntity.java index ca60ec8b..19a5bb69 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/MissileSquidEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/MissileSquidEntity.java @@ -1,5 +1,6 @@ package com.craisinlord.antarchy.content.entity; +import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; import net.minecraft.core.BlockPos; @@ -100,12 +101,12 @@ public class MissileSquidEntity extends Monster implements GeoEntity { public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes() - .add(Attributes.MAX_HEALTH, 50.0D) - .add(Attributes.ATTACK_DAMAGE, 6.0D) - .add(Attributes.MOVEMENT_SPEED, 0.84D) - .add(Attributes.FLYING_SPEED, 0.84D) + .add(Attributes.MAX_HEALTH, AntarchySettings.missileSquidHealth()) + .add(Attributes.ATTACK_DAMAGE, AntarchySettings.missileSquidAttackDamage()) + .add(Attributes.MOVEMENT_SPEED, AntarchySettings.missileSquidMovementSpeed()) + .add(Attributes.FLYING_SPEED, AntarchySettings.missileSquidFlyingSpeed()) .add(Attributes.FOLLOW_RANGE, 20.0D) - .add(Attributes.KNOCKBACK_RESISTANCE, 0.15D); + .add(Attributes.KNOCKBACK_RESISTANCE, AntarchySettings.missileSquidKnockbackResistance()); } public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/MolevoreEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/MolevoreEntity.java index 201a34db..90b61a27 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/MolevoreEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/MolevoreEntity.java @@ -1,6 +1,7 @@ package com.craisinlord.antarchy.content.entity; import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.AntarchySoundEvents; import java.util.HashSet; @@ -108,9 +109,9 @@ public class MolevoreEntity extends Monster implements GeoEntity { public static AttributeSupplier.Builder createAttributes() { return Monster.createMonsterAttributes() - .add(Attributes.MAX_HEALTH, 60.0D) + .add(Attributes.MAX_HEALTH, AntarchySettings.molevoreHealth()) .add(Attributes.MOVEMENT_SPEED, 0.27D) - .add(Attributes.ATTACK_DAMAGE, 10.0D) + .add(Attributes.ATTACK_DAMAGE, AntarchySettings.molevoreAttackDamage()) .add(Attributes.ARMOR, 6.0D) .add(Attributes.KNOCKBACK_RESISTANCE, 0.65D) .add(Attributes.FOLLOW_RANGE, 28.0D); diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/MolewormEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/MolewormEntity.java index 6787d82e..8fd69153 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/MolewormEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/MolewormEntity.java @@ -1,5 +1,6 @@ package com.craisinlord.antarchy.content.entity; +import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchySoundEvents; import java.util.EnumSet; @@ -74,9 +75,9 @@ public class MolewormEntity extends Monster implements GeoEntity { public static AttributeSupplier.Builder createAttributes() { return Monster.createMonsterAttributes() - .add(Attributes.MAX_HEALTH, 8.0D) - .add(Attributes.MOVEMENT_SPEED, 0.25D) - .add(Attributes.ATTACK_DAMAGE, 1.0D); + .add(Attributes.MAX_HEALTH, AntarchySettings.molewormHealth()) + .add(Attributes.MOVEMENT_SPEED, AntarchySettings.molewormMovementSpeed()) + .add(Attributes.ATTACK_DAMAGE, AntarchySettings.molewormAttackDamage()); } @SuppressWarnings("unchecked") diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/ScorpionEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/ScorpionEntity.java index 40437f18..595e138b 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/ScorpionEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/ScorpionEntity.java @@ -1,5 +1,6 @@ package com.craisinlord.antarchy.content.entity; +import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchySoundEvents; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; @@ -74,12 +75,12 @@ public class ScorpionEntity extends Monster implements GeoEntity { public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes() - .add(Attributes.MAX_HEALTH, 30.0D) - .add(Attributes.MOVEMENT_SPEED, 0.29D) - .add(Attributes.ATTACK_DAMAGE, 5.0D) + .add(Attributes.MAX_HEALTH, AntarchySettings.scorpionHealth()) + .add(Attributes.MOVEMENT_SPEED, AntarchySettings.scorpionMovementSpeed()) + .add(Attributes.ATTACK_DAMAGE, AntarchySettings.scorpionAttackDamage()) .add(Attributes.FOLLOW_RANGE, 24.0D) - .add(Attributes.ARMOR, 2.0D) - .add(Attributes.KNOCKBACK_RESISTANCE, 0.2D); + .add(Attributes.ARMOR, AntarchySettings.scorpionArmor()) + .add(Attributes.KNOCKBACK_RESISTANCE, AntarchySettings.scorpionKnockbackResistance()); } public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/UpwardFallingBlockEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/UpwardFallingBlockEntity.java index 964b09f0..25eb1818 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/UpwardFallingBlockEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/UpwardFallingBlockEntity.java @@ -62,23 +62,29 @@ public class UpwardFallingBlockEntity extends Entity { @Override public void tick() { super.tick(); - - if (level().isClientSide) return; + this.setOldPosAndRot(); BlockState blockState = getBlockState(); if (blockState.isAir()) { - discard(); + if (!level().isClientSide) { + discard(); + } return; } + // Move upward directly — noPhysics=true means move() just calls setPos(). + // Runs on both sides so the client simulates the same deterministic rise + // instead of relying on interpolated network updates, matching vanilla FallingBlockEntity. + setPos(getX(), getY() + RISE_SPEED, getZ()); + + if (level().isClientSide) return; + time++; if (time > MAX_TICKS || getY() >= level().getMaxBuildHeight()) { dropAndRemove(blockState); return; } - // Move upward directly — noPhysics=true means move() just calls setPos() - setPos(getX(), getY() + RISE_SPEED, getZ()); damageEntitiesAlongPath(blockState); BlockPos headPos = BlockPos.containing(getX(), getY() + getBbHeight(), getZ()); diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/AntMarchManager.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/AntMarchManager.java index b3bc48dc..be4a658e 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/AntMarchManager.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/AntMarchManager.java @@ -13,6 +13,7 @@ import java.util.UUID; import java.util.WeakHashMap; final class AntMarchManager { + private static final Object INSTANCES_LOCK = new Object(); private static final WeakHashMap INSTANCES = new WeakHashMap<>(); @@ -21,16 +22,18 @@ final class AntMarchManager { private AntMarchManager() {} static AntMarchManager get(ServerLevel level) { - return INSTANCES.computeIfAbsent(level, l -> new AntMarchManager()); + synchronized (INSTANCES_LOCK) { + return INSTANCES.computeIfAbsent(level, l -> new AntMarchManager()); + } } - void register(UUID leaderUuid, int marchOrder, BaseAntEntity ant) { + synchronized void register(UUID leaderUuid, int marchOrder, BaseAntEntity ant) { marches.computeIfAbsent(leaderUuid, k -> new TreeMap<>()).put(marchOrder, ant); } - void unregister(UUID leaderUuid, int marchOrder) { + synchronized void unregister(UUID leaderUuid, int marchOrder) { TreeMap march = marches.get(leaderUuid); if (march == null) return; march.remove(marchOrder); @@ -39,25 +42,25 @@ final class AntMarchManager { @Nullable - BaseAntEntity getLeader(UUID leaderUuid) { + synchronized BaseAntEntity getLeader(UUID leaderUuid) { return getByOrder(leaderUuid, 0); } @Nullable - BaseAntEntity getPredecessor(UUID leaderUuid, int order) { + synchronized BaseAntEntity getPredecessor(UUID leaderUuid, int order) { return order > 0 ? getByOrder(leaderUuid, order - 1) : null; } - int getNextOrder(UUID leaderUuid) { + synchronized int getNextOrder(UUID leaderUuid) { TreeMap march = marches.get(leaderUuid); if (march == null || march.isEmpty()) return 1; return march.lastKey() + 1; } - List getParticipantsNear(BaseAntEntity seeker, double radius, double verticalRange) { + synchronized List getParticipantsNear(BaseAntEntity seeker, double radius, double verticalRange) { double radiusSqr = radius * radius; List result = new ArrayList<>(); for (TreeMap march : marches.values()) { @@ -76,7 +79,7 @@ final class AntMarchManager { } - void cleanup() { + synchronized void cleanup() { Iterator>> marchIter = marches.entrySet().iterator(); while (marchIter.hasNext()) { Map.Entry> entry = marchIter.next(); diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/BaseAntEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/BaseAntEntity.java index 5b09bb03..65151fb6 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/BaseAntEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/BaseAntEntity.java @@ -1,6 +1,7 @@ package com.craisinlord.antarchy.content.entity.ant; import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.AntarchyGameRules; import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchySoundEvents; @@ -47,6 +48,7 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.GameRules; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntity; @@ -474,6 +476,10 @@ public abstract class BaseAntEntity extends Animal implements GeoEntity { protected boolean canGroupWithNestmates() { return true; } protected boolean canMarch() { return true; } protected boolean canTraverseFluidFloor(FluidState fluidState) { return false; } + protected boolean isAntGriefingEnabled() { + return this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) + && this.level().getGameRules().getBoolean(AntarchyGameRules.RULE_DO_ANT_GREIFING); + } protected boolean handlePriorityForaging() { return false; } @@ -606,7 +612,7 @@ public abstract class BaseAntEntity extends Animal implements GeoEntity { } private boolean handleGroundFoodForaging() { - if (!this.canForageGroundFood() || this.isCarryingFood() || this.isInLove()) { + if (!this.isAntGriefingEnabled() || !this.canForageGroundFood() || this.isCarryingFood() || this.isInLove()) { return false; } @@ -626,7 +632,7 @@ public abstract class BaseAntEntity extends Animal implements GeoEntity { } private boolean handleChestFoodForaging() { - if (!AntarchySettings.antsStealFromChests()) { + if (!this.isAntGriefingEnabled() || !AntarchySettings.antsStealFromChests()) { return false; } @@ -647,7 +653,7 @@ public abstract class BaseAntEntity extends Animal implements GeoEntity { } private boolean handleSharedMarchChestForaging() { - if (this.isCarryingFood() || this.isInLove() || !AntarchySettings.antsStealFromChests()) { + if (!this.isAntGriefingEnabled() || this.isCarryingFood() || this.isInLove() || !AntarchySettings.antsStealFromChests()) { return false; } @@ -669,7 +675,7 @@ public abstract class BaseAntEntity extends Animal implements GeoEntity { } private boolean handleSharedMarchGroundFoodForaging() { - if (this.isCarryingFood() || this.isInLove()) { + if (!this.isAntGriefingEnabled() || this.isCarryingFood() || this.isInLove()) { return false; } @@ -1051,7 +1057,8 @@ public abstract class BaseAntEntity extends Animal implements GeoEntity { } private boolean hasForageTarget() { - return this.nearestGroundFood() != null || this.getCurrentFoodChestPos() != null; + return this.isAntGriefingEnabled() + && (this.nearestGroundFood() != null || this.getCurrentFoodChestPos() != null); } private boolean sharesNestWith(BaseAntEntity otherAnt) { diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/TermiteEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/TermiteEntity.java index 21ecc39a..69a7bcc3 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/TermiteEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/ant/TermiteEntity.java @@ -2,6 +2,7 @@ package com.craisinlord.antarchy.content.entity.ant; import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchyTags; +import com.craisinlord.antarchy.content.AntarchyGameRules; import com.craisinlord.antarchy.config.AntarchySettings; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -100,6 +101,11 @@ public class TermiteEntity extends BaseAntEntity implements GeoEntity { return false; } + @Override + protected boolean canMarch() { + return false; + } + @Override protected boolean shouldUseBiteAnimation() { return true; @@ -107,7 +113,8 @@ public class TermiteEntity extends BaseAntEntity implements GeoEntity { @Override protected boolean handlePriorityForaging() { - if (!this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { + if (!this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) + || !this.level().getGameRules().getBoolean(AntarchyGameRules.RULE_DO_TERMITE_GREIFING)) { this.targetWoodPos = null; return false; } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/brutalfly/BrutalflyEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/brutalfly/BrutalflyEntity.java index b33fa169..dce82e1e 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/brutalfly/BrutalflyEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/brutalfly/BrutalflyEntity.java @@ -128,11 +128,11 @@ public class BrutalflyEntity extends Monster implements GeoEntity { return Mob.createMobAttributes() .add(Attributes.MAX_HEALTH, AntarchySettings.brutalflyHealth()) .add(Attributes.ATTACK_DAMAGE, AntarchySettings.brutalflySwipeDamage()) - .add(Attributes.ARMOR, 10.0D) - .add(Attributes.ARMOR_TOUGHNESS, 4.0D) - .add(Attributes.KNOCKBACK_RESISTANCE, 0.7D) - .add(Attributes.MOVEMENT_SPEED, 0.34D) - .add(Attributes.FLYING_SPEED, 0.55D) + .add(Attributes.ARMOR, AntarchySettings.brutalflyArmor()) + .add(Attributes.ARMOR_TOUGHNESS, AntarchySettings.brutalflyArmorToughness()) + .add(Attributes.KNOCKBACK_RESISTANCE, AntarchySettings.brutalflyKnockbackResistance()) + .add(Attributes.MOVEMENT_SPEED, AntarchySettings.brutalflyMovementSpeed()) + .add(Attributes.FLYING_SPEED, AntarchySettings.brutalflyFlyingSpeed()) .add(Attributes.FOLLOW_RANGE, 48.0D); } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/cloud_shark/CloudSharkEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/cloud_shark/CloudSharkEntity.java index 7e82de57..4c9c26d0 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/cloud_shark/CloudSharkEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/cloud_shark/CloudSharkEntity.java @@ -1,5 +1,6 @@ package com.craisinlord.antarchy.content.entity.cloud_shark; +import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchySoundEvents; import net.minecraft.core.BlockPos; import net.minecraft.core.particles.ParticleTypes; @@ -102,12 +103,12 @@ public class CloudSharkEntity extends Monster implements GeoEntity { public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes() - .add(Attributes.MAX_HEALTH, 40.0D) - .add(Attributes.ATTACK_DAMAGE, 5.0D) - .add(Attributes.MOVEMENT_SPEED, 0.34D) - .add(Attributes.FLYING_SPEED, 0.5D) + .add(Attributes.MAX_HEALTH, AntarchySettings.cloudSharkHealth()) + .add(Attributes.ATTACK_DAMAGE, AntarchySettings.cloudSharkAttackDamage()) + .add(Attributes.MOVEMENT_SPEED, AntarchySettings.cloudSharkMovementSpeed()) + .add(Attributes.FLYING_SPEED, AntarchySettings.cloudSharkFlyingSpeed()) .add(Attributes.FOLLOW_RANGE, 40.0D) - .add(Attributes.KNOCKBACK_RESISTANCE, 0.2D); + .add(Attributes.KNOCKBACK_RESISTANCE, AntarchySettings.cloudSharkKnockbackResistance()); } public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/flying_squirrel/FlyingSquirrelEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/flying_squirrel/FlyingSquirrelEntity.java index 6b12ca98..82cb6c0e 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/flying_squirrel/FlyingSquirrelEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/flying_squirrel/FlyingSquirrelEntity.java @@ -1,6 +1,7 @@ package com.craisinlord.antarchy.content.entity.flying_squirrel; import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.block.OuranwoodAcornBlock; @@ -177,8 +178,8 @@ public class FlyingSquirrelEntity extends TamableAnimal implements GeoEntity { public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes() - .add(Attributes.MAX_HEALTH, 10.0D) - .add(Attributes.MOVEMENT_SPEED, 0.35D) + .add(Attributes.MAX_HEALTH, AntarchySettings.flyingSquirrelHealth()) + .add(Attributes.MOVEMENT_SPEED, AntarchySettings.flyingSquirrelMovementSpeed()) .add(Attributes.FOLLOW_RANGE, 16.0D); } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/KrakenEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/KrakenEntity.java index bbac9700..d150ef9b 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/KrakenEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/KrakenEntity.java @@ -1,6 +1,7 @@ package com.craisinlord.antarchy.content.entity.kraken; import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.damage.AntarchyDamageSources; @@ -144,13 +145,13 @@ public class KrakenEntity extends Monster implements GeoEntity, MultipartEntityO public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes() - .add(Attributes.MAX_HEALTH, 750.0D) - .add(Attributes.ATTACK_DAMAGE, 45.0D) - .add(Attributes.MOVEMENT_SPEED, 0.24D) - .add(Attributes.FLYING_SPEED, 0.24D) + .add(Attributes.MAX_HEALTH, AntarchySettings.krakenHealth()) + .add(Attributes.ATTACK_DAMAGE, AntarchySettings.krakenAttackDamage()) + .add(Attributes.MOVEMENT_SPEED, AntarchySettings.krakenMovementSpeed()) + .add(Attributes.FLYING_SPEED, AntarchySettings.krakenFlyingSpeed()) .add(Attributes.FOLLOW_RANGE, 64.0D) - .add(Attributes.KNOCKBACK_RESISTANCE, 0.8D) - .add(Attributes.ARMOR, 8.0D); + .add(Attributes.KNOCKBACK_RESISTANCE, AntarchySettings.krakenKnockbackResistance()) + .add(Attributes.ARMOR, AntarchySettings.krakenArmor()); } public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/lucid/LucidEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/lucid/LucidEntity.java index 4862a37b..d5ad5e71 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/lucid/LucidEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/lucid/LucidEntity.java @@ -97,11 +97,11 @@ public class LucidEntity extends Monster implements GeoEntity { public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes() .add(Attributes.MAX_HEALTH, AntarchySettings.lucidHealth()) - .add(Attributes.ATTACK_DAMAGE, 4.0D) - .add(Attributes.MOVEMENT_SPEED, 0.22D) - .add(Attributes.FLYING_SPEED, 0.35D) + .add(Attributes.ATTACK_DAMAGE, AntarchySettings.lucidAttackDamage()) + .add(Attributes.MOVEMENT_SPEED, AntarchySettings.lucidMovementSpeed()) + .add(Attributes.FLYING_SPEED, AntarchySettings.lucidFlyingSpeed()) .add(Attributes.FOLLOW_RANGE, 40.0D) - .add(Attributes.KNOCKBACK_RESISTANCE, 0.5D); + .add(Attributes.KNOCKBACK_RESISTANCE, AntarchySettings.lucidKnockbackResistance()); } public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmareEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmareEntity.java index b30b012b..bc44bf3b 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmareEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmareEntity.java @@ -1,5 +1,6 @@ package com.craisinlord.antarchy.content.entity.nightmare; +import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchyTags; @@ -128,9 +129,9 @@ public class NightmareEntity extends Monster implements GeoEntity { public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes() - .add(Attributes.MAX_HEALTH, 180.0D) - .add(Attributes.ATTACK_DAMAGE, 14.0D) - .add(Attributes.MOVEMENT_SPEED, 0.28D) + .add(Attributes.MAX_HEALTH, AntarchySettings.nightmareHealth()) + .add(Attributes.ATTACK_DAMAGE, AntarchySettings.nightmareAttackDamage()) + .add(Attributes.MOVEMENT_SPEED, AntarchySettings.nightmareMovementSpeed()) .add(Attributes.FLYING_SPEED, 0.375D) .add(Attributes.FOLLOW_RANGE, 48.0D) .add(Attributes.KNOCKBACK_RESISTANCE, 0.75D) diff --git a/common/src/main/java/com/craisinlord/antarchy/content/horde/CavarynHordeManager.java b/common/src/main/java/com/craisinlord/antarchy/content/horde/CavarynHordeManager.java index febaef1e..3a86d921 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/horde/CavarynHordeManager.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/horde/CavarynHordeManager.java @@ -1,6 +1,7 @@ package com.craisinlord.antarchy.content.horde; import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.AntarchyGameRules; import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.entity.JerryEntity; @@ -96,6 +97,10 @@ public final class CavarynHordeManager { } HordeData data = get(level); + if (!hordesEnabled(level)) { + clearDisabledState(level, data); + return; + } long gameTime = level.getGameTime(); if (gameTime % PLAYER_CHECK_INTERVAL == 0L) { tickPlayers(level, data, gameTime); @@ -107,10 +112,10 @@ public final class CavarynHordeManager { } public static void recordMobKill(ServerPlayer player, LivingEntity killed) { - if (!(player.level() instanceof ServerLevel level) || !level.dimension().equals(CAVARYN)) { + if (!(player.level() instanceof ServerLevel level) || !level.dimension().equals(CAVARYN) || !hordesEnabled(level)) { return; } - if (!isHordeBiome(level, player.blockPosition())) { + if (!isValidHordeTarget(player) || !isHordeBiome(level, player.blockPosition())) { return; } if (isPlayerInActiveEncounter(level, player)) { @@ -120,10 +125,10 @@ public final class CavarynHordeManager { } public static void recordBlockBreak(ServerPlayer player, BlockState brokenState, BlockPos pos) { - if (!(player.level() instanceof ServerLevel level) || !level.dimension().equals(CAVARYN)) { + if (!(player.level() instanceof ServerLevel level) || !level.dimension().equals(CAVARYN) || !hordesEnabled(level)) { return; } - if (!isHordeBiome(level, pos) || isPlayerInActiveEncounter(level, player)) { + if (!isValidHordeTarget(player) || !isHordeBiome(level, pos) || isPlayerInActiveEncounter(level, player)) { return; } addAttention(level, player, scaleActionAttention(level, isEggOrNest(brokenState) ? EGG_OR_NEST_BREAK_ATTENTION : BLOCK_BREAK_ATTENTION)); @@ -147,7 +152,7 @@ public final class CavarynHordeManager { } public static boolean shouldAccelerateNearbyEggHatching(ServerLevel level, BlockPos pos, double playerRadius, RandomSource random) { - if (!level.dimension().equals(CAVARYN) || !isHordeBiome(level, pos)) { + if (!level.dimension().equals(CAVARYN) || !hordesEnabled(level) || !isHordeBiome(level, pos)) { return false; } @@ -178,10 +183,18 @@ public final class CavarynHordeManager { if (!(player.level() instanceof ServerLevel level) || !level.dimension().equals(CAVARYN)) { return -1; } + if (!isValidHordeTarget(player)) { + return -1; + } HordeData data = get(level); PlayerAttention attention = data.players.computeIfAbsent(player.getUUID(), ignored -> new PlayerAttention()); - attention.attention = Mth.clamp(levelValue, 0, ATTENTION_THRESHOLD); + int currentAttention = attention.attention; + int clampedLevel = Mth.clamp(levelValue, 0, ATTENTION_THRESHOLD); + if (!hordesEnabled(level) && clampedLevel > currentAttention) { + return currentAttention; + } + attention.attention = clampedLevel; attention.areaKey = areaKey(player.blockPosition()); attention.areaTicks = 0; attention.lastSeenGameTime = level.getGameTime(); @@ -196,7 +209,13 @@ public final class CavarynHordeManager { private static void tickPlayers(ServerLevel level, HordeData data, long gameTime) { Set seen = new HashSet<>(); for (ServerPlayer player : level.players()) { - if (player.isSpectator()) { + if (player.isSpectator() || player.isCreative()) { + HordeIntensitySync.send(player, 0.0F); + PlayerAttention attention = data.players.get(player.getUUID()); + if (attention != null && attention.attention > 0) { + attention.fade(10); + data.setDirty(); + } continue; } @@ -612,6 +631,24 @@ public final class CavarynHordeManager { } } + private static boolean hordesEnabled(ServerLevel level) { + return level.getGameRules().getBoolean(AntarchyGameRules.RULE_DO_CAVARYN_HORDES); + } + + private static void clearDisabledState(ServerLevel level, HordeData data) { + boolean dirty = false; + if (!data.encounters.isEmpty()) { + data.encounters.clear(); + dirty = true; + } + for (ServerPlayer player : level.players()) { + HordeIntensitySync.send(player, 0.0F); + } + if (dirty) { + data.setDirty(); + } + } + private static boolean isPlayerInActiveEncounter(ServerLevel level, ServerPlayer player) { HordeData data = get(level); Encounter encounter = findNearbyEncounter(data, player.blockPosition()); diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/BluestoneDustItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/BluestoneDustItem.java new file mode 100644 index 00000000..55beb3f2 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/BluestoneDustItem.java @@ -0,0 +1,63 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.content.block.BluestoneWireBlock; +import java.util.List; +import net.minecraft.ChatFormatting; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.state.BlockState; + +public class BluestoneDustItem extends Item { + private final BluestoneWireBlock wireBlock; + + public BluestoneDustItem(BluestoneWireBlock wireBlock, Properties properties) { + super(properties); + this.wireBlock = wireBlock; + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.bluestone_placement").withStyle(ChatFormatting.BLUE)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } + + @Override + public InteractionResult useOn(UseOnContext context) { + if (context.getClickedFace() != net.minecraft.core.Direction.DOWN) { + return InteractionResult.FAIL; + } + + Level level = context.getLevel(); + BlockPos targetPos = context.getClickedPos().relative(context.getClickedFace()); + BlockState existing = level.getBlockState(targetPos); + if (!existing.canBeReplaced() && !existing.isAir()) { + return InteractionResult.FAIL; + } + + BlockPlaceContext placeContext = BlockPlaceContext.at(new BlockPlaceContext(context), targetPos, context.getClickedFace()); + BlockState placeState = this.wireBlock.getStateForPlacement(placeContext); + if (placeState == null) { + return InteractionResult.FAIL; + } + + if (!level.setBlock(targetPos, placeState, 11)) { + return InteractionResult.FAIL; + } + + SoundType soundType = placeState.getSoundType(); + level.playSound(context.getPlayer(), targetPos, soundType.getPlaceSound(), SoundSource.BLOCKS, (soundType.getVolume() + 1.0F) / 2.0F, soundType.getPitch() * 0.8F); + if (context.getPlayer() == null || !context.getPlayer().getAbilities().instabuild) { + context.getItemInHand().shrink(1); + } + return InteractionResult.sidedSuccess(level.isClientSide); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/CeilingPlacementTooltipBlockItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/CeilingPlacementTooltipBlockItem.java new file mode 100644 index 00000000..80040022 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/CeilingPlacementTooltipBlockItem.java @@ -0,0 +1,22 @@ +package com.craisinlord.antarchy.content.item; + +import java.util.List; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.block.Block; + +public class CeilingPlacementTooltipBlockItem extends BlockItem { + public CeilingPlacementTooltipBlockItem(Block block, Properties properties) { + super(block, properties); + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.bluestone_placement").withStyle(ChatFormatting.BLUE)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/CeilingPlacementTooltipItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/CeilingPlacementTooltipItem.java new file mode 100644 index 00000000..ee64aaf8 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/CeilingPlacementTooltipItem.java @@ -0,0 +1,20 @@ +package com.craisinlord.antarchy.content.item; + +import java.util.List; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; + +public class CeilingPlacementTooltipItem extends Item { + public CeilingPlacementTooltipItem(Properties properties) { + super(properties); + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.bluestone_placement").withStyle(ChatFormatting.BLUE)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/DreamTorchItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/DreamTorchItem.java new file mode 100644 index 00000000..e314b77e --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/DreamTorchItem.java @@ -0,0 +1,69 @@ +package com.craisinlord.antarchy.content.item; + +import java.util.Map; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; + +public class DreamTorchItem extends BlockItem { + private final Block standingBlock; + private final Block wallBlock; + private final Block ceilingBlock; + + public DreamTorchItem(Block standingBlock, Block wallBlock, Block ceilingBlock, Item.Properties properties) { + super(standingBlock, properties); + this.standingBlock = standingBlock; + this.wallBlock = wallBlock; + this.ceilingBlock = ceilingBlock; + } + + @Override + protected BlockState getPlacementState(BlockPlaceContext context) { + Direction clickedFace = context.getClickedFace(); + LevelReader level = context.getLevel(); + BlockPos pos = context.getClickedPos(); + + if (clickedFace == Direction.DOWN) { + BlockState ceilingState = this.ceilingBlock.defaultBlockState(); + if (ceilingState.canSurvive(level, pos)) { + return ceilingState; + } + } + + if (clickedFace == Direction.UP) { + BlockState standingState = this.standingBlock.defaultBlockState(); + if (standingState.canSurvive(level, pos)) { + return standingState; + } + } + + BlockState wallState = this.wallBlock.getStateForPlacement(context); + if (wallState != null && wallState.canSurvive(level, pos)) { + return wallState; + } + + BlockState standingState = this.standingBlock.defaultBlockState(); + if (standingState.canSurvive(level, pos)) { + return standingState; + } + + BlockState ceilingState = this.ceilingBlock.defaultBlockState(); + if (ceilingState.canSurvive(level, pos)) { + return ceilingState; + } + + return null; + } + + @Override + public void registerBlocks(Map blockToItemMap, Item item) { + super.registerBlocks(blockToItemMap, item); + blockToItemMap.put(this.wallBlock, item); + blockToItemMap.put(this.ceilingBlock, item); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/MantisClawItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/MantisClawItem.java index 818d39cd..175f84de 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/item/MantisClawItem.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/MantisClawItem.java @@ -9,13 +9,19 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.SwordItem; import net.minecraft.world.item.Tier; import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.component.ItemAttributeModifiers; public class MantisClawItem extends SwordItem { public static final double WALL_CLING_FALL_SPEED = -0.02D; public static final double WALL_CLIMB_JUMP_VELOCITY = 0.42D; + private static final int DEFAULT_ATTACK_DAMAGE = 7; + private static final float DEFAULT_ATTACK_SPEED = -2.4F; + + private final Tier tier; public MantisClawItem(Tier tier, Item.Properties properties) { super(tier, properties); + this.tier = tier; } public static boolean isDualWielding(LivingEntity entity) { @@ -23,6 +29,11 @@ public class MantisClawItem extends SwordItem { && entity.getOffhandItem().getItem() instanceof MantisClawItem; } + @Override + public ItemAttributeModifiers getDefaultAttributeModifiers() { + return SwordItem.createAttributes(this.tier, DEFAULT_ATTACK_DAMAGE, DEFAULT_ATTACK_SPEED); + } + @Override public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { tooltipComponents.add(Component.translatable("tooltip.antarchy.mantis_claw.wall_cling").withStyle(ChatFormatting.GRAY)); diff --git a/common/src/main/java/com/craisinlord/antarchy/content/network/HerculesBeetleFlightTogglePayload.java b/common/src/main/java/com/craisinlord/antarchy/content/network/HerculesBeetleFlightTogglePayload.java new file mode 100644 index 00000000..4ed68146 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/network/HerculesBeetleFlightTogglePayload.java @@ -0,0 +1,19 @@ +package com.craisinlord.antarchy.content.network; + +import com.craisinlord.antarchy.Antarchy; +import io.netty.buffer.ByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; + +public record HerculesBeetleFlightTogglePayload() implements CustomPacketPayload { + public static final Type TYPE = + new Type<>(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "hercules_beetle_flight_toggle")); + public static final StreamCodec STREAM_CODEC = + StreamCodec.unit(new HerculesBeetleFlightTogglePayload()); + + @Override + public Type type() { + return TYPE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/AttributeRangeInit.java b/common/src/main/java/com/craisinlord/antarchy/content/util/AttributeRangeInit.java similarity index 96% rename from common/src/main/java/com/craisinlord/antarchy/content/AttributeRangeInit.java rename to common/src/main/java/com/craisinlord/antarchy/content/util/AttributeRangeInit.java index 271ebc32..e119bb0c 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/AttributeRangeInit.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/util/AttributeRangeInit.java @@ -1,4 +1,4 @@ -package com.craisinlord.antarchy.content; +package com.craisinlord.antarchy.content.util; import com.craisinlord.antarchy.mixins.AccessorRangedAttribute; import com.google.common.collect.ImmutableSet; diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/MantisClawWallClimbMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/MantisClawWallClimbMixin.java index 63c1acc3..2424a6c2 100644 --- a/common/src/main/java/com/craisinlord/antarchy/mixins/MantisClawWallClimbMixin.java +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/MantisClawWallClimbMixin.java @@ -1,10 +1,14 @@ package com.craisinlord.antarchy.mixins; import com.craisinlord.antarchy.content.item.MantisClawItem; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; import org.spongepowered.asm.mixin.Mixin; @@ -15,10 +19,14 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(Player.class) public abstract class MantisClawWallClimbMixin extends LivingEntity { + @Unique + private static final int antarchy$MANTIS_CLAW_CLIMB_DURABILITY_INTERVAL = 20; @Unique private boolean antarchy$mantisClinging; @Unique private int antarchy$mantisWallJumpCooldown; + @Unique + private int antarchy$mantisClingDurabilityTicks; protected MantisClawWallClimbMixin(EntityType entityType, Level level) { super(entityType, level); @@ -32,6 +40,7 @@ public abstract class MantisClawWallClimbMixin extends LivingEntity { if (!this.antarchy$canMantisCling()) { this.antarchy$mantisClinging = false; + this.antarchy$mantisClingDurabilityTicks = 0; return; } @@ -54,6 +63,7 @@ public abstract class MantisClawWallClimbMixin extends LivingEntity { this.hasImpulse = true; this.fallDistance = 0.0F; this.antarchy$mantisClinging = true; + this.antarchy$damageMantisClawsWhileClimbing(); } @Unique @@ -68,4 +78,47 @@ public abstract class MantisClawWallClimbMixin extends LivingEntity { && !player.getAbilities().flying && !player.isSpectator(); } + + @Unique + private void antarchy$damageMantisClawsWhileClimbing() { + if (this.level().isClientSide()) { + return; + } + + this.antarchy$mantisClingDurabilityTicks++; + if (this.antarchy$mantisClingDurabilityTicks < antarchy$MANTIS_CLAW_CLIMB_DURABILITY_INTERVAL) { + return; + } + this.antarchy$mantisClingDurabilityTicks = 0; + + Player player = (Player) (Object) this; + this.antarchy$damageClaw(player.getMainHandItem(), player, InteractionHand.MAIN_HAND); + this.antarchy$damageClaw(player.getOffhandItem(), player, InteractionHand.OFF_HAND); + } + + @Unique + private void antarchy$damageClaw(ItemStack stack, Player player, InteractionHand hand) { + if (!(stack.getItem() instanceof MantisClawItem)) { + return; + } + + EquipmentSlot slot = hand == InteractionHand.MAIN_HAND ? EquipmentSlot.MAINHAND : EquipmentSlot.OFFHAND; + if (!stack.isDamageableItem()) { + return; + } + + ItemStack updatedStack = stack.copy(); + int nextDamage = updatedStack.getDamageValue() + 1; + if (nextDamage < updatedStack.getMaxDamage()) { + updatedStack.setDamageValue(nextDamage); + player.setItemSlot(slot, updatedStack); + } else { + player.setItemSlot(slot, ItemStack.EMPTY); + player.onEquippedItemBroken(updatedStack.getItem(), slot); + } + + if (player instanceof ServerPlayer serverPlayer) { + serverPlayer.containerMenu.broadcastChanges(); + } + } } diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/RedStoneWireBlockMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/RedStoneWireBlockMixin.java new file mode 100644 index 00000000..7ccd14ac --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/RedStoneWireBlockMixin.java @@ -0,0 +1,27 @@ +package com.craisinlord.antarchy.mixins; + +import com.craisinlord.antarchy.content.AntarchyTags; +import net.minecraft.core.Direction; +import net.minecraft.world.level.block.RedStoneWireBlock; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(RedStoneWireBlock.class) +public class RedStoneWireBlockMixin { + @Inject(method = "shouldConnectTo(Lnet/minecraft/world/level/block/state/BlockState;)Z", at = @At("HEAD"), cancellable = true) + private static void antarchy$rejectBluestone(BlockState state, CallbackInfoReturnable cir) { + if (state.is(AntarchyTags.Blocks.BLUESTONE_COMPONENTS)) { + cir.setReturnValue(false); + } + } + + @Inject(method = "shouldConnectTo(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/Direction;)Z", at = @At("HEAD"), cancellable = true) + private static void antarchy$rejectBluestone(BlockState state, Direction direction, CallbackInfoReturnable cir) { + if (state.is(AntarchyTags.Blocks.BLUESTONE_COMPONENTS)) { + cir.setReturnValue(false); + } + } +} diff --git a/common/src/main/resources/antarchy-common.mixins.json b/common/src/main/resources/antarchy-common.mixins.json index ecf4cd68..48ec149d 100644 --- a/common/src/main/resources/antarchy-common.mixins.json +++ b/common/src/main/resources/antarchy-common.mixins.json @@ -26,6 +26,7 @@ "ExperimentalSettingsLevelSummaryMixin", "NightmareSwordDamageMixin", "PotionBrewingMixin", + "RedStoneWireBlockMixin", "StinkyCrouchMixin", "VillagerTradesMixin", "WaterlilyLumenMixin", diff --git a/common/src/main/resources/assets/antarchy/blockstates/bluestone_block.json b/common/src/main/resources/assets/antarchy/blockstates/bluestone_block.json new file mode 100644 index 00000000..7631e6bd --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/bluestone_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/bluestone_block" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/bluestone_comparator.json b/common/src/main/resources/assets/antarchy/blockstates/bluestone_comparator.json new file mode 100644 index 00000000..f630faed --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/bluestone_comparator.json @@ -0,0 +1,176 @@ +{ + "multipart": [ + { + "when": { + "facing": "north", + "mode": "compare", + "powered": "false" + }, + "apply": { + "model": "antarchy:block/bluestone_comparator" + } + }, + { + "when": { + "facing": "east", + "mode": "compare", + "powered": "false" + }, + "apply": { + "model": "antarchy:block/bluestone_comparator", + "y": 90 + } + }, + { + "when": { + "facing": "south", + "mode": "compare", + "powered": "false" + }, + "apply": { + "model": "antarchy:block/bluestone_comparator", + "y": 180 + } + }, + { + "when": { + "facing": "west", + "mode": "compare", + "powered": "false" + }, + "apply": { + "model": "antarchy:block/bluestone_comparator", + "y": 270 + } + }, + { + "when": { + "facing": "north", + "mode": "compare", + "powered": "true" + }, + "apply": { + "model": "antarchy:block/bluestone_comparator_on" + } + }, + { + "when": { + "facing": "east", + "mode": "compare", + "powered": "true" + }, + "apply": { + "model": "antarchy:block/bluestone_comparator_on", + "y": 90 + } + }, + { + "when": { + "facing": "south", + "mode": "compare", + "powered": "true" + }, + "apply": { + "model": "antarchy:block/bluestone_comparator_on", + "y": 180 + } + }, + { + "when": { + "facing": "west", + "mode": "compare", + "powered": "true" + }, + "apply": { + "model": "antarchy:block/bluestone_comparator_on", + "y": 270 + } + }, + { + "when": { + "facing": "north", + "mode": "subtract", + "powered": "false" + }, + "apply": { + "model": "antarchy:block/bluestone_comparator_subtract" + } + }, + { + "when": { + "facing": "east", + "mode": "subtract", + "powered": "false" + }, + "apply": { + "model": "antarchy:block/bluestone_comparator_subtract", + "y": 90 + } + }, + { + "when": { + "facing": "south", + "mode": "subtract", + "powered": "false" + }, + "apply": { + "model": "antarchy:block/bluestone_comparator_subtract", + "y": 180 + } + }, + { + "when": { + "facing": "west", + "mode": "subtract", + "powered": "false" + }, + "apply": { + "model": "antarchy:block/bluestone_comparator_subtract", + "y": 270 + } + }, + { + "when": { + "facing": "north", + "mode": "subtract", + "powered": "true" + }, + "apply": { + "model": "antarchy:block/bluestone_comparator_subtract_on" + } + }, + { + "when": { + "facing": "east", + "mode": "subtract", + "powered": "true" + }, + "apply": { + "model": "antarchy:block/bluestone_comparator_subtract_on", + "y": 90 + } + }, + { + "when": { + "facing": "south", + "mode": "subtract", + "powered": "true" + }, + "apply": { + "model": "antarchy:block/bluestone_comparator_subtract_on", + "y": 180 + } + }, + { + "when": { + "facing": "west", + "mode": "subtract", + "powered": "true" + }, + "apply": { + "model": "antarchy:block/bluestone_comparator_subtract_on", + "y": 270 + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/bluestone_ore.json b/common/src/main/resources/assets/antarchy/blockstates/bluestone_ore.json new file mode 100644 index 00000000..3bd83425 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/bluestone_ore.json @@ -0,0 +1,10 @@ +{ + "variants": { + "lit=false": { + "model": "antarchy:block/bluestone_ore" + }, + "lit=true": { + "model": "antarchy:block/bluestone_ore" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/bluestone_repeater.json b/common/src/main/resources/assets/antarchy/blockstates/bluestone_repeater.json new file mode 100644 index 00000000..9a62138f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/bluestone_repeater.json @@ -0,0 +1,82 @@ +{ + "multipart": [ + { + "when": { + "facing": "north", + "powered": "false" + }, + "apply": { + "model": "antarchy:block/bluestone_repeater" + } + }, + { + "when": { + "facing": "east", + "powered": "false" + }, + "apply": { + "model": "antarchy:block/bluestone_repeater", + "y": 90 + } + }, + { + "when": { + "facing": "south", + "powered": "false" + }, + "apply": { + "model": "antarchy:block/bluestone_repeater", + "y": 180 + } + }, + { + "when": { + "facing": "west", + "powered": "false" + }, + "apply": { + "model": "antarchy:block/bluestone_repeater", + "y": 270 + } + }, + { + "when": { + "facing": "north", + "powered": "true" + }, + "apply": { + "model": "antarchy:block/bluestone_repeater_on" + } + }, + { + "when": { + "facing": "east", + "powered": "true" + }, + "apply": { + "model": "antarchy:block/bluestone_repeater_on", + "y": 90 + } + }, + { + "when": { + "facing": "south", + "powered": "true" + }, + "apply": { + "model": "antarchy:block/bluestone_repeater_on", + "y": 180 + } + }, + { + "when": { + "facing": "west", + "powered": "true" + }, + "apply": { + "model": "antarchy:block/bluestone_repeater_on", + "y": 270 + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/bluestone_torch.json b/common/src/main/resources/assets/antarchy/blockstates/bluestone_torch.json new file mode 100644 index 00000000..97d8ea11 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/bluestone_torch.json @@ -0,0 +1,10 @@ +{ + "variants": { + "lit=false": { + "model": "antarchy:block/bluestone_torch_off" + }, + "lit=true": { + "model": "antarchy:block/bluestone_torch" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/bluestone_wire.json b/common/src/main/resources/assets/antarchy/blockstates/bluestone_wire.json new file mode 100644 index 00000000..ada417f6 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/bluestone_wire.json @@ -0,0 +1,48 @@ +{ + "multipart": [ + { + "apply": { + "model": "antarchy:block/bluestone_wire_dot", + "x": 180 + } + }, + { + "when": { + "north": "side|down" + }, + "apply": { + "model": "antarchy:block/bluestone_wire_line0", + "x": 180 + } + }, + { + "when": { + "east": "side|down" + }, + "apply": { + "model": "antarchy:block/bluestone_wire_line1", + "x": 180 + } + }, + { + "when": { + "south": "side|down" + }, + "apply": { + "model": "antarchy:block/bluestone_wire_line0", + "x": 180, + "y": 180 + } + }, + { + "when": { + "west": "side|down" + }, + "apply": { + "model": "antarchy:block/bluestone_wire_line1", + "x": 180, + "y": 180 + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/dream_ceiling_torch.json b/common/src/main/resources/assets/antarchy/blockstates/dream_ceiling_torch.json new file mode 100644 index 00000000..09fca465 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/dream_ceiling_torch.json @@ -0,0 +1,8 @@ +{ + "variants": { + "": { + "model": "antarchy:block/dream_torch", + "x": 180 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/items/bluestone.json b/common/src/main/resources/assets/antarchy/items/bluestone.json new file mode 100644 index 00000000..4ee42f0b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/items/bluestone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "antarchy:item/bluestone" + } +} diff --git a/common/src/main/resources/assets/antarchy/items/bluestone_block.json b/common/src/main/resources/assets/antarchy/items/bluestone_block.json new file mode 100644 index 00000000..6492eaf8 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/items/bluestone_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "antarchy:item/bluestone_block" + } +} diff --git a/common/src/main/resources/assets/antarchy/items/bluestone_comparator.json b/common/src/main/resources/assets/antarchy/items/bluestone_comparator.json new file mode 100644 index 00000000..c78171b6 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/items/bluestone_comparator.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "antarchy:item/bluestone_comparator" + } +} diff --git a/common/src/main/resources/assets/antarchy/items/bluestone_ore.json b/common/src/main/resources/assets/antarchy/items/bluestone_ore.json new file mode 100644 index 00000000..dea04e06 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/items/bluestone_ore.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "antarchy:item/bluestone_ore" + } +} diff --git a/common/src/main/resources/assets/antarchy/items/bluestone_repeater.json b/common/src/main/resources/assets/antarchy/items/bluestone_repeater.json new file mode 100644 index 00000000..075290b3 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/items/bluestone_repeater.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "antarchy:item/bluestone_repeater" + } +} diff --git a/common/src/main/resources/assets/antarchy/items/bluestone_torch.json b/common/src/main/resources/assets/antarchy/items/bluestone_torch.json new file mode 100644 index 00000000..13eadd1d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/items/bluestone_torch.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "antarchy:item/bluestone_torch" + } +} 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 eb0f7ab8..7ef2c1c5 100644 --- a/common/src/main/resources/assets/antarchy/lang/en_us.json +++ b/common/src/main/resources/assets/antarchy/lang/en_us.json @@ -131,6 +131,11 @@ "block.antarchy.deepslate_uranium_ore": "Deepslate Uranium Ore", "block.antarchy.titanium_ore": "Titanium Ore", "block.antarchy.deepslate_titanium_ore": "Deepslate Titanium Ore", + "block.antarchy.bluestone_ore": "Bluestone Ore", + "block.antarchy.bluestone_block": "Bluestone Block", + "block.antarchy.bluestone_repeater": "Bluestone Repeater", + "block.antarchy.bluestone_comparator": "Bluestone Comparator", + "block.antarchy.bluestone_torch": "Bluestone Torch", "block.antarchy.uranium_block": "Block of Uranium", "block.antarchy.titanium_block": "Block of Titanium", "block.antarchy.raw_uranium_block": "Block of Raw Uranium", @@ -152,6 +157,7 @@ "block.antarchy.uranium_bars": "Uranium Bars", "block.antarchy.titanium_bars": "Titanium Bars", "tooltip.antarchy.signal_saving_bulb": "Toggles on/off. Has light level equal to the signal strength stored on it.", + "tooltip.antarchy.bluestone_placement": "Places below blocks", "block.antarchy.bile": "Bile", "block.antarchy.ichor": "Ichor", "block.antarchy.antiwater": "Antiwater", @@ -201,6 +207,7 @@ "subtitles.antarchy.mantis_attack": "Mantis snaps", "subtitles.antarchy.mantis_fly_loop": "Mantis wings buzz", "item.antarchy.big_bertha": "Big Bertha", + "item.antarchy.bluestone": "Bluestone Dust", "item.antarchy.wasp_nest": "Wasp Nest", "item.antarchy.stink_bug": "Stink Bug", "item.antarchy.wasp_spawn_egg": "Wasp Spawn Egg", @@ -356,6 +363,7 @@ "tooltip.antarchy.jerry_nucleus.hatch": "Right-click any bug egg or turtle egg to hatch it instantly.", "key.antarchy.dorrie_charge_jump": "Dorrie Charge Jump", "key.antarchy.hercules_beetle_charge": "Hercules Beetle Charge", + "key.antarchy.hercules_beetle_flight_toggle": "Hercules Beetle Flight Toggle", "item.antarchy.carapace": "Carapace", "item.antarchy.jumpy_bug_leg": "Jumpy Bug Leg", "item.antarchy.jumpy_boots": "Jumpy Boots", diff --git a/common/src/main/resources/assets/antarchy/models/block/bluestone_block.json b/common/src/main/resources/assets/antarchy/models/block/bluestone_block.json new file mode 100644 index 00000000..5643a8d9 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/bluestone_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/bluestone/bluestone_block" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/bluestone_comparator.json b/common/src/main/resources/assets/antarchy/models/block/bluestone_comparator.json new file mode 100644 index 00000000..1ba59573 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/bluestone_comparator.json @@ -0,0 +1,57 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "antarchy:block/bluestone/bluestone_comparator", + "slab": "minecraft:block/smooth_stone", + "top": "antarchy:block/bluestone/bluestone_comparator", + "unlit": "antarchy:block/bluestone/bluestone_torch_off", + "lit": "antarchy:block/bluestone/bluestone_torch" + }, + "elements": [ + { + "from": [0, 14, 0], + "to": [16, 16, 16], + "faces": { + "down": { "uv": [0, 0, 16, 16], "texture": "#top", "cullface": "down" }, + "up": { "uv": [0, 0, 16, 16], "texture": "#slab", "cullface": "up" }, + "north": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "north" }, + "south": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "south" }, + "west": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "west" }, + "east": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "east" } + } + }, + { + "from": [4, 9, 11], + "to": [6, 14, 13], + "faces": { + "down": { "uv": [7, 6, 9, 8], "texture": "#unlit" }, + "north": { "uv": [7, 6, 9, 11], "texture": "#unlit" }, + "south": { "uv": [7, 6, 9, 11], "texture": "#unlit" }, + "west": { "uv": [7, 6, 9, 11], "texture": "#unlit" }, + "east": { "uv": [7, 6, 9, 11], "texture": "#unlit" } + } + }, + { + "from": [10, 9, 11], + "to": [12, 14, 13], + "faces": { + "down": { "uv": [7, 6, 9, 8], "texture": "#unlit" }, + "north": { "uv": [7, 6, 9, 11], "texture": "#unlit" }, + "south": { "uv": [7, 6, 9, 11], "texture": "#unlit" }, + "west": { "uv": [7, 6, 9, 11], "texture": "#unlit" }, + "east": { "uv": [7, 6, 9, 11], "texture": "#unlit" } + } + }, + { + "from": [7, 11, 2], + "to": [9, 14, 4], + "faces": { + "down": { "uv": [7, 6, 9, 8], "texture": "#unlit" }, + "north": { "uv": [7, 6, 9, 9], "texture": "#unlit" }, + "south": { "uv": [7, 6, 9, 9], "texture": "#unlit" }, + "west": { "uv": [7, 6, 9, 9], "texture": "#unlit" }, + "east": { "uv": [7, 6, 9, 9], "texture": "#unlit" } + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/bluestone_comparator_on.json b/common/src/main/resources/assets/antarchy/models/block/bluestone_comparator_on.json new file mode 100644 index 00000000..16282ddc --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/bluestone_comparator_on.json @@ -0,0 +1,60 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "antarchy:block/bluestone/bluestone_comparator_on", + "slab": "minecraft:block/smooth_stone", + "top": "antarchy:block/bluestone/bluestone_comparator_on", + "unlit": "antarchy:block/bluestone/bluestone_torch_off", + "lit": "antarchy:block/bluestone/bluestone_torch" + }, + "elements": [ + { + "from": [0, 14, 0], + "to": [16, 16, 16], + "faces": { + "down": { "uv": [0, 0, 16, 16], "texture": "#top", "cullface": "down" }, + "up": { "uv": [0, 0, 16, 16], "texture": "#slab", "cullface": "up" }, + "north": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "north" }, + "south": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "south" }, + "west": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "west" }, + "east": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "east" } + } + }, + { + "from": [4, 9, 11], + "to": [6, 14, 13], + "shade": false, + "faces": { + "down": { "uv": [7, 6, 9, 8], "texture": "#lit" }, + "north": { "uv": [7, 6, 9, 11], "texture": "#lit" }, + "south": { "uv": [7, 6, 9, 11], "texture": "#lit" }, + "west": { "uv": [7, 6, 9, 11], "texture": "#lit" }, + "east": { "uv": [7, 6, 9, 11], "texture": "#lit" } + } + }, + { + "from": [10, 9, 11], + "to": [12, 14, 13], + "shade": false, + "faces": { + "down": { "uv": [7, 6, 9, 8], "texture": "#lit" }, + "north": { "uv": [7, 6, 9, 11], "texture": "#lit" }, + "south": { "uv": [7, 6, 9, 11], "texture": "#lit" }, + "west": { "uv": [7, 6, 9, 11], "texture": "#lit" }, + "east": { "uv": [7, 6, 9, 11], "texture": "#lit" } + } + }, + { + "from": [7, 11, 2], + "to": [9, 14, 4], + "shade": false, + "faces": { + "down": { "uv": [7, 6, 9, 8], "texture": "#unlit" }, + "north": { "uv": [7, 6, 9, 9], "texture": "#unlit" }, + "south": { "uv": [7, 6, 9, 9], "texture": "#unlit" }, + "west": { "uv": [7, 6, 9, 9], "texture": "#unlit" }, + "east": { "uv": [7, 6, 9, 9], "texture": "#unlit" } + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/bluestone_comparator_subtract.json b/common/src/main/resources/assets/antarchy/models/block/bluestone_comparator_subtract.json new file mode 100644 index 00000000..5336ab38 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/bluestone_comparator_subtract.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/bluestone_comparator" +} diff --git a/common/src/main/resources/assets/antarchy/models/block/bluestone_comparator_subtract_on.json b/common/src/main/resources/assets/antarchy/models/block/bluestone_comparator_subtract_on.json new file mode 100644 index 00000000..b4b434ba --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/bluestone_comparator_subtract_on.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/bluestone_comparator_on" +} diff --git a/common/src/main/resources/assets/antarchy/models/block/bluestone_ore.json b/common/src/main/resources/assets/antarchy/models/block/bluestone_ore.json new file mode 100644 index 00000000..b0a5df1b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/bluestone_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/bluestone/bluestone_ore" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/bluestone_repeater.json b/common/src/main/resources/assets/antarchy/models/block/bluestone_repeater.json new file mode 100644 index 00000000..b909f091 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/bluestone_repeater.json @@ -0,0 +1,46 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "antarchy:block/bluestone/bluestone_repeater", + "slab": "minecraft:block/smooth_stone", + "top": "antarchy:block/bluestone/bluestone_repeater", + "unlit": "antarchy:block/bluestone/bluestone_torch_off", + "lit": "antarchy:block/bluestone/bluestone_torch" + }, + "elements": [ + { + "from": [0, 14, 0], + "to": [16, 16, 16], + "faces": { + "down": { "uv": [0, 0, 16, 16], "texture": "#top", "cullface": "down" }, + "up": { "uv": [0, 0, 16, 16], "texture": "#slab", "cullface": "up" }, + "north": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "north" }, + "south": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "south" }, + "west": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "west" }, + "east": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "east" } + } + }, + { + "from": [7, 9, 11], + "to": [9, 14, 13], + "faces": { + "down": { "uv": [7, 6, 9, 8], "texture": "#unlit" }, + "north": { "uv": [7, 6, 9, 11], "texture": "#unlit" }, + "south": { "uv": [7, 6, 9, 11], "texture": "#unlit" }, + "west": { "uv": [7, 6, 9, 11], "texture": "#unlit" }, + "east": { "uv": [7, 6, 9, 11], "texture": "#unlit" } + } + }, + { + "from": [7, 11, 4], + "to": [9, 14, 6], + "faces": { + "down": { "uv": [7, 6, 9, 8], "texture": "#unlit" }, + "north": { "uv": [7, 6, 9, 9], "texture": "#unlit" }, + "south": { "uv": [7, 6, 9, 9], "texture": "#unlit" }, + "west": { "uv": [7, 6, 9, 9], "texture": "#unlit" }, + "east": { "uv": [7, 6, 9, 9], "texture": "#unlit" } + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/bluestone_repeater_on.json b/common/src/main/resources/assets/antarchy/models/block/bluestone_repeater_on.json new file mode 100644 index 00000000..516c905b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/bluestone_repeater_on.json @@ -0,0 +1,48 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "antarchy:block/bluestone/bluestone_repeater_on", + "slab": "minecraft:block/smooth_stone", + "top": "antarchy:block/bluestone/bluestone_repeater_on", + "unlit": "antarchy:block/bluestone/bluestone_torch_off", + "lit": "antarchy:block/bluestone/bluestone_torch" + }, + "elements": [ + { + "from": [0, 14, 0], + "to": [16, 16, 16], + "faces": { + "down": { "uv": [0, 0, 16, 16], "texture": "#top", "cullface": "down" }, + "up": { "uv": [0, 0, 16, 16], "texture": "#slab", "cullface": "up" }, + "north": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "north" }, + "south": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "south" }, + "west": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "west" }, + "east": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "east" } + } + }, + { + "from": [7, 9, 11], + "to": [9, 14, 13], + "shade": false, + "faces": { + "down": { "uv": [7, 6, 9, 8], "texture": "#lit" }, + "north": { "uv": [7, 6, 9, 11], "texture": "#lit" }, + "south": { "uv": [7, 6, 9, 11], "texture": "#lit" }, + "west": { "uv": [7, 6, 9, 11], "texture": "#lit" }, + "east": { "uv": [7, 6, 9, 11], "texture": "#lit" } + } + }, + { + "from": [7, 11, 4], + "to": [9, 14, 6], + "shade": false, + "faces": { + "down": { "uv": [7, 6, 9, 8], "texture": "#lit" }, + "north": { "uv": [7, 6, 9, 9], "texture": "#lit" }, + "south": { "uv": [7, 6, 9, 9], "texture": "#lit" }, + "west": { "uv": [7, 6, 9, 9], "texture": "#lit" }, + "east": { "uv": [7, 6, 9, 9], "texture": "#lit" } + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/bluestone_torch.json b/common/src/main/resources/assets/antarchy/models/block/bluestone_torch.json new file mode 100644 index 00000000..5993f56d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/bluestone_torch.json @@ -0,0 +1,22 @@ +{ + "ambientocclusion": false, + "textures": { + "torch": "antarchy:block/bluestone/bluestone_torch", + "particle": "antarchy:block/bluestone/bluestone_torch" + }, + "elements": [ + { + "from": [7, 6, 7], + "to": [9, 16, 9], + "shade": false, + "faces": { + "down": { "uv": [7, 6, 9, 8], "texture": "#torch" }, + "up": { "uv": [7, 13, 9, 15], "texture": "#torch", "cullface": "up" }, + "north": { "uv": [7, 6, 9, 16], "texture": "#torch" }, + "east": { "uv": [7, 6, 9, 16], "texture": "#torch" }, + "south": { "uv": [7, 6, 9, 16], "texture": "#torch" }, + "west": { "uv": [7, 6, 9, 16], "texture": "#torch" } + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/bluestone_torch_off.json b/common/src/main/resources/assets/antarchy/models/block/bluestone_torch_off.json new file mode 100644 index 00000000..c1d49a31 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/bluestone_torch_off.json @@ -0,0 +1,22 @@ +{ + "ambientocclusion": false, + "textures": { + "torch": "antarchy:block/bluestone/bluestone_torch_off", + "particle": "antarchy:block/bluestone/bluestone_torch_off" + }, + "elements": [ + { + "from": [7, 6, 7], + "to": [9, 16, 9], + "shade": false, + "faces": { + "down": { "uv": [7, 6, 9, 8], "texture": "#torch" }, + "up": { "uv": [7, 13, 9, 15], "texture": "#torch", "cullface": "up" }, + "north": { "uv": [7, 6, 9, 16], "texture": "#torch" }, + "east": { "uv": [7, 6, 9, 16], "texture": "#torch" }, + "south": { "uv": [7, 6, 9, 16], "texture": "#torch" }, + "west": { "uv": [7, 6, 9, 16], "texture": "#torch" } + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/bluestone_wire_dot.json b/common/src/main/resources/assets/antarchy/models/block/bluestone_wire_dot.json new file mode 100644 index 00000000..4ffe05af --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/bluestone_wire_dot.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/redstone_dust_dot", + "textures": { + "cross": "antarchy:block/bluestone/bluestone_dust_dot", + "overlay": "antarchy:block/bluestone/bluestone_dust_overlay" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/bluestone_wire_line0.json b/common/src/main/resources/assets/antarchy/models/block/bluestone_wire_line0.json new file mode 100644 index 00000000..363d7a8e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/bluestone_wire_line0.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/redstone_dust_line0", + "textures": { + "line": "antarchy:block/bluestone/bluestone_dust_line0", + "overlay": "antarchy:block/bluestone/bluestone_dust_overlay" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/bluestone_wire_line1.json b/common/src/main/resources/assets/antarchy/models/block/bluestone_wire_line1.json new file mode 100644 index 00000000..c74602f4 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/bluestone_wire_line1.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/redstone_dust_line1", + "textures": { + "line": "antarchy:block/bluestone/bluestone_dust_line1", + "overlay": "antarchy:block/bluestone/bluestone_dust_overlay" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/bluestone_block.json b/common/src/main/resources/assets/antarchy/models/item/bluestone_block.json new file mode 100644 index 00000000..6735591f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/bluestone_block.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/bluestone_block" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/bluestone_comparator.json b/common/src/main/resources/assets/antarchy/models/item/bluestone_comparator.json new file mode 100644 index 00000000..fb5709d3 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/bluestone_comparator.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/bluestone/bluestone_comparator" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/bluestone_dust.json b/common/src/main/resources/assets/antarchy/models/item/bluestone_dust.json new file mode 100644 index 00000000..4bb6d35c --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/bluestone_dust.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/bluestone/bluestone" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/bluestone_ore.json b/common/src/main/resources/assets/antarchy/models/item/bluestone_ore.json new file mode 100644 index 00000000..16df4f89 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/bluestone_ore.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/bluestone_ore" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/bluestone_repeater.json b/common/src/main/resources/assets/antarchy/models/item/bluestone_repeater.json new file mode 100644 index 00000000..ab8aeb9e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/bluestone_repeater.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/bluestone/bluestone_repeater" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/bluestone_torch.json b/common/src/main/resources/assets/antarchy/models/item/bluestone_torch.json new file mode 100644 index 00000000..5dd84bd1 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/bluestone_torch.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:block/bluestone/bluestone_torch" + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_activator_rail.png b/common/src/main/resources/assets/antarchy/textures/block/antimetal/antimetal_activator_rail.png new file mode 100644 index 0000000000000000000000000000000000000000..26df11404dfa467e92e59a77a74560cc62fb5fa8 GIT binary patch literal 487 zcmVNWc`@q!C1jh*&6M6(ZrP zCXGd%Qg_Xl#K=Wch z5b^nTs8vCX7~`eICDnS32%cUOE09TNes5dqGYB%j>!C{^-job)5ueTl&JC`hg4 ztw8N@b>8CRzR?Tn7nEe?H6n05)JOd`>>0Ha_4d2Gpnd@a?AB{U(0~VH6O&d%t<+8Z z^}B_U2h>l1fQvQUMZkwbO!%NKGsz-wJu-+M0MuRE>ss@4d3Fy(%sBu!2mJrJ6Vi|Q zP!7JPJV4CU9(4lpAUg+$aTe4ilBYbNvxw){gnqvq8;(Gs2R;YQlb?|Xm<`T>xdH0cU`qeuA?hACSauy+#DCN9@@-;QNq*vmtVPoY7h!E^j34Va(qFqvi11+r5DhMh8mBdCt z!(MNYKy811NSwP(4T#US zQX-tJr1e7xqsDq=a!Oq1NZ{cmv1)Z%2ljn!_V;X;Hyz>X?!%tmzEtB`|My3|kh{bjw1s1l*4TVg>+x*B6g0K4=XyK;5~{k%0TrA?E<# z9Psz&N+<)&hkEeg90|A|U5`EiWl)?0)Hn;eB?O!!0qm75*Ahnj`&k}13KDQXQm0SA z=OErY9b~{6KwY;4(K!-uKd9$3&lw=-pU?~-8}@K&og)GFBlY4O@c)p3vmsCcaLzvf p00960F2fYq00006Nkl^C`4iz}nmI6MBhP(!U3$Y6eEq$^yUtH#ax zc)YtbC9wB9*8YJ(X9>HR4!A}JTtv|W%dg;1@x#)-^Kl xJh+qdKX2g^00960NoJTgb*8_VHpT$uW!!(XDG_Kpr1rI%nAJ;MGT(LjxfLHUoIO9XLLPA7;rNU8YGH zcpe6%oN>Ds!I?FhZNUZNl7nkx;CbLY=T3FnD)pRIt_nhW2GqGm2A+rZlrzX>tX1fN zeF8YT#K1K&;DX7r{slg8YGvSga3?3=4S=t2f-VudMh2b-f*JU?&pSxJ2{>x#)-^Kl xJh+qdKX2g^00960VD=*u00006NkligP)UTVZLj7>)~tkc9p?o-v2Hekg!)sW>Pq zj7$Uh?NB|~ltufiLFX1@QFeTS4vN`I0QH*}L0RR8;mj(p@000I_L_t&o026W(mfJX3!To5S*k+p&+EN79wJ+2!dFq&_W9lQPkGTA0UF*r4sxBmWOs}Li{LFS;l~c8ox*c zQ4k3V3a0YhnY)b_1OuCWZ{O~`oq2m{#J{=O<#2L5A0Fm%VI2D7c*Y#&`k?>{>-kPm zF5M4|oQ37xMOm;t9qQa-EXwrs(m^p>37~rQh-}shEigFR2YlV)pi-9|*Pe0t@TwTW z+n*oGWsRjn0L996iW{OIRd0a$QYt8&r-F-l1W$Y5nlXVh(adWEV0*M$FLd3O8R**I z)!xBNl0gADA0Dtx4DW~J9xMb1X0|{*sLTEL?*I8d!`JbZ&pFF&Bx*g`~}0cU_l{xsNZ z{5uCMCc4@*zS4l-Lu{~^z7r;zxduM~00960dH6&!00006Nklen*GL!|u-hFk3DxX3S=w49-rr{}1Ae)4k#9{Gf!hr><{o)>#b7 z;Q6)h#^WvP4nIvky1U1>5}tnkbgJI(_gBqg2g>03eloJ)jxTRsM)Ra+j>2VNqwlB6 zQu&j1s0@-v1IsUaWKDWzC|m}~BOjJuX1aZNueY$L=djy`%RrtyB5w1yYs`ScWng1f zxn(@5|2Gl<0000V|DN}G?n3gZSMqgNU;@FI0?&N>jWQoo#gkW-$ctRwsx!G8MfL_5kx^DS)23 zWtr0NeB&EZ&gmNnRmmmTu==VM1*o@r!cW3?PA#;BBt0aO5fG}9%O~!PElH_9>&_s1 zQZ%B`7&0SRxRRPhnHaE+cvXQL$0UE>` z5YjNJv(Ky+lTq0_x;B0Q00960v*JT700006Nkl#R1;iCcZy39T>1>+-q-SF#J$hpQc#!bN=p}#Xra)a?=+L77wDoPlYg#f z&di^|>Fv*a9~p$6gZecPsXo!CzG>x_UQAF}e<+ z6mXh>4C?}=7^c+79R@&g;^DEoVs8`1ntnZa#Ect&?gW{WP8nQ3+n5?rL)-u;A!m7V zwUdE!HL8~_!vJaIV$4QC7TD^#6}gtLnk|*+c7Vh4NlB{gWq5WcPjolY6lXItAj2%0 zV883+?VfNqn&<<(aSOQ=c0olSBz4EsgwZnJ44`8MLZ{fYm57dbq{eohoOv1`>2M4D zD2fLO*mR|%ZGLkF(RKJW01Q&>)hBHLk+l1#(qaJs0RR7}s@eSj000I_L_t&o08u~L U(M!rb5C8xG07*qoM6N<$f?EE%1^@s6 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_comparator.png b/common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_comparator.png new file mode 100644 index 0000000000000000000000000000000000000000..ae17005a7902976073c0c40bd8aa6cf99efc354e GIT binary patch literal 531 zcmV+u0_^>XP)ZlY^pDpd@a=i}sfOhqeZ3XsAV^vHBB&h9GjNA?b&!QbW*U zAZP@kHV9Es_jB^TUQ^=d-FweD-*fIg_d11*!dG#p=<(m$AIsbk^GhXD5{*QabRw-I zHpu7ll3B?70Xy+VDo!XAl5V>z!O@_EXTu(WU;w|;>-MDe*zzD=9puAfKQm5}T3CZEKy0Ve5luig3qe3Y>7*opXgV^jN5zhxc#iLorF>ad zr>$1Itx5H+Dl2YInF|e~(LNz02^zExSpWf*0Ee4R%GBhH1crvC_wg>xMpNuAh(!Z> zgpN6jyXkD5Q~Pn!yRLwkr;4j^|5gklZ2hvUBr`dy-qY} zoyt{34V=wioyv&qNOHRiVkwALn}`#rzP0}#+0`Q%pWl?2yZ19LZcAdRC^0kA3z}`? zwTWcJ;PKg(f!_TuZ%;DN$Ht)Xn#i@_;9NJSYjS?LE@#KP9@iHKVxc-WWi@&WJWcDs zNix>J9Giu+TQNROKr?_Q@<13_19Lz1MqPlnK!R@o00960e+sG%00006Nklo=$vEwJ6;|F9pJ3lk0 zuXb~HqvCy03%MC%AZ$WoeL_eQG-v~|00Jrjj$AgQtI~uL%`K{beyH?XlHUcfXuyt8 zb!W-V=d23VZQ?$2y|>yejJuiScfo>KG|U6;7z2&OfP?CtZS5vr&0gD1{4RzvLw22L z&<2+mmuBE>@#?29BSOr`PDt)|K`aH)S`%>s)i+M^%C66Aai>*-E0aItQcA{@W0e2^002ovPDHLkV1g3g>mvXF literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_dust_dot.png b/common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_dust_dot.png new file mode 100644 index 0000000000000000000000000000000000000000..f5f0970cc1c0bd691f7fdd6a800f4f723c674e0b GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6EIeHtLn>}1OB6l0UoWulr+oXD zv;P%NUU&E;ucx}c@lt}&ZlM`}1JFu_+Zydn!Z{e(l z%!9s6Tn(4ZId?WKko^De@ziBk#Q$?x3#=EKpz>2q!Drz%eTK;w)YiUkWa9>!z~JfX K=d#Wzp$P!;?If%K literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_dust_line0.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_dust_line0.png.mcmeta new file mode 100644 index 00000000..5cb0fb73 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_dust_line0.png.mcmeta @@ -0,0 +1,5 @@ +{ + "texture": { + "mipmap_strategy": "mean" + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_dust_line1.png b/common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_dust_line1.png new file mode 100644 index 0000000000000000000000000000000000000000..7eaff5a75795c36d9caee33ca98be382abc7b697 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6tUX;ELn>}9ov@LY!GVM6X1#NI z0{i>l`YOk=ZG|1|-Q1;oXLvP}1ORz3x;ACK65@29_ T_(CfjD8u0C>gTe~DWM4f&bkiQ literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_dust_overlay.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_dust_overlay.png.mcmeta new file mode 100644 index 00000000..5cb0fb73 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_dust_overlay.png.mcmeta @@ -0,0 +1,5 @@ +{ + "texture": { + "mipmap_strategy": "mean" + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_ore.png b/common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..376985c504c8a339a7b33fc74d745f9c708c89c9 GIT binary patch literal 677 zcmV;W0$TlvP)Y|`hfA$6h z5h`>ct|Z`35o*LXMs(8JB(=5?9p}4cieTX7zWd%e_uX^e8)s`O8>BN`!S21?7NdFo zP+!n{d>|lp9ytA9jPOp zSOI`6p!MCsf}*S9K>=bftgYgfM|zqWwJRlO-GS_etzu^H=7RdVC3I%rpApg`AHbzQ zoz#vOC#(Zh4*1J5^7tA7(x9TsVY0c&A? zR=z)Fj|U=a6p!8nc)s9RJYlc#F8}}l|NohS6iEO800v1!K~w_(C-`($`3sh^00000 LNkvXXu0mjfV9h$a literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_repeater.png b/common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_repeater.png new file mode 100644 index 0000000000000000000000000000000000000000..1209edde56c8c5727164773f996ab4891b3fa6d6 GIT binary patch literal 458 zcmV;*0X6=KP)qZG{ADA)iQ6qzgzsK#F{ibdmhAk|;?X3<#P|uMtv&WPcCm z*jxyT?{;qAdow$88wTft@8Q)j$G-PeOB^iz+O4)V>J6cD+|kM&=$-bgd(!;{_R&YH zg-WGj**dfGVcDuj)f}aA30~M{TU))aa-bIxA38xb8ZjVD5&8U20e}_|Ln^^)mp#o) zoB}cM0&ttn#*~0;4n&aC*QrgOC&GL&w_3fXR^iZ~r~N>d(fvpyZ2%0Amp5+)7@C_f zk^~RlfDlm8j|YK4_*!dOE|&Qz(Bc7V0Ym?+FX8NErqv$@pC1aTsvthl;)$UJzA+mN zk_`wl6BofLnyscjCmy_E{4mxAy?J%NB*g@N3bYi&t0B7ZPxW2@&a-j~22G4!LnI>` z;J@l{De%y$hUiD5uk@A`4RBQFYq>`WQUVeq1A4l>u*bV=!vx^y-OcEffMEcJ$OU2L zy$JTXWPrOsf*$|?0RR8#$ng~b000I_L_t&o07FkJ@Q=t@H2?qr07*qoM6N<$f+c*y A7XSbN literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_repeater_on.png b/common/src/main/resources/assets/antarchy/textures/block/bluestone/bluestone_repeater_on.png new file mode 100644 index 0000000000000000000000000000000000000000..2cf5231fbed15b5751c998716a2af139ed64279d GIT binary patch literal 455 zcmV;&0XY7NP)=)7)8JBw)%EhNKNBsRRC^ptTTet^Fy%kW|40t;8ZiAXj?V99ZdokLB`tWNDl5z1^BU+y_=irAc_RjdF+5-YDFDy{Vn`*(kJ;nQ#4!+q zPyntd3R42I1t5alylia!v=(;zowYk{wF-v@J?%TP%pd0>X#-$@yj|QFU}(XFktBHV zI)s3V;dl@jgwIzkhy9^G1zJ2nEnt{jO(fhtZ?)Es>P;b475E2QJU%qXH)exDvH?M6 z;wCsnuiw+>#DmwZ7AtMgTc{o`Ni#t>1zHN?)ewX5SM_86foJ6u44N3dhDb&>z+ctj zV&I`w4KW;zzT#WfG{8}vuN6E>5EGCX8PM{+vgO06VFGZuzqP@PP6-$WV2E50R^FRn xpGyX~3ncgk009602cBCv00006NklpHX+3 zNYmU32JT!P(}Y}YjwbaJf;J8A0{jmxbJhk&cPJ!vZHUlWJvr%M(tnf8&1Vb_pZlLb z-SfhSEes9s69Q{L&QG~1qtI4!-FaH+(#H##rcGv9zK1bk_y2@lR-d1z9;z?!v_Ae* zYW79O32|F4K46$Ao%}&d`(?$7hFfMYmX|JE$+Twc6$v)21v{oz*xYxNUaOU0CU>Y> z-n7kIv_SV=!8z94E&qV-{{P=7Fy$|h!3OdGGsDp*Y7=G8=w1MdFnGH9xvX<$-!ta(=j{_`u-U_GZ~NdF zd#T2*=32&WZJ#bHi~JOi{Is3D;M~RD*|rUaZHaMj8Be{mv{#)zKW35C!%HiLRTivD zFZsK~`>YewB7=r0m)=|n6bcB_Z4uaYMMoXzr2qfD?B=Bb8Ehc8F*C%nC{0|k?V~+V Ogu&C*&t;ucLK6V9TThh$ literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/item/bluestone/bluestone.png b/common/src/main/resources/assets/antarchy/textures/item/bluestone/bluestone.png new file mode 100644 index 0000000000000000000000000000000000000000..d09832263a1325f78cdc92f521cb3ecb4df35543 GIT binary patch literal 375 zcmV--0f_#IP)FtuOm>+=H{6G6#{&g!w>#9FNV1J*KzuyQ6UHu4deqb+x za<@?N!!E2KP&$n4=(CheejYHhBld)YZJvo*AG_C7-~tYiWUp5;=_46GJ6*}QVG5c8 zGU+h#BG<`7?p6WhjGEe-6;y{5*H@KqeftHi!oF|}00960cVWcK00006Nkl7zKR+5iG>QLa0#4e4;hIzc+>Z9}d8+<+MW$)WV+DZr{I6S?yk(;RP%xaW5mY%w%U60@cVK92 zkbp+3F0V!}6)lKOB3>9x0$}3#e31!3fc*P|mfL6&U@VsO6;4n*TOistiFQ)~$yIk? z)7jDNj0E_;f3$L`Mv$KVBR%zY1UXvQ?a}NS<&^-O=JHt$YPY%s36Kq&8XM*6;AJTQ zJ_G~;1bX=hP$-%dQ1);<3*aOm5XOVB=Nv~@0Gr(60RRC1|G1;w#{d8T21!IgR09A) WU4S8!@y;#)0000zqab#QWWQFIX%A%8${$l@TPtAmSzh=asU zF*r$l=gNBqKal8P$a(K3_ndPt=MGmsH!yfe1-SnR^x~IoupVkXA{*qM+epTimm5$y zn9O+zB5xq7(6KYv3rBNmP9-3|lHU^C*jvE&ecj&6AQTQog#A+o5sN>HC{yiN-M(kZ zhdRs#Ivlszkcsx+2n3cr2o(9)YYf + GameRuleRegistry.register(name, category, GameRuleFactory.createBooleanRule(defaultValue)) + ); AntarchyFabricNetworking.register(); AntarchyFabricNetworking.bootstrapMultipartCommon(); AntarchyConfigModuleFabric.init(); 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 320d2335..1fbe5467 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 @@ -154,6 +154,10 @@ public final class AntarchyFabricClientBootstrap { } private static void registerColors() { + ColorProviderRegistry.BLOCK.register( + (state, level, pos, tintIndex) -> tintIndex == 0 ? bluestoneWireColor(state.getValue(com.craisinlord.antarchy.content.block.BluestoneWireBlock.POWER)) : -1, + AntarchyFabricBlocks.BLUESTONE_WIRE.get() + ); ColorProviderRegistry.BLOCK.register( (state, level, pos, tintIndex) -> level != null && pos != null ? BiomeColors.getAverageFoliageColor(level, pos) @@ -173,6 +177,10 @@ public final class AntarchyFabricClientBootstrap { : net.minecraft.world.level.GrassColor.getDefaultColor(), AntarchyFabricBlocks.POTTED_SPIDER_LILY.get() ); + ColorProviderRegistry.ITEM.register( + (stack, tintIndex) -> tintIndex == 0 ? bluestoneWireColor(15) : -1, + AntarchyFabricItems.BLUESTONE_DUST.get() + ); ColorProviderRegistry.ITEM.register((stack, tintIndex) -> FoliageColor.getDefaultColor(), AntarchyFabricItems.OURANWOOD_LEAVES_ITEM.get()); ColorProviderRegistry.ITEM.register( (stack, tintIndex) -> tintIndex == 0 ? net.minecraft.world.level.GrassColor.getDefaultColor() : -1, @@ -325,6 +333,10 @@ public final class AntarchyFabricClientBootstrap { BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.BLOOD_CRYSTAL_CRYSTAL.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.DREAM_TORCH.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.DREAM_WALL_TORCH.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.BLUESTONE_WIRE.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.BLUESTONE_REPEATER.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.BLUESTONE_COMPARATOR.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.BLUESTONE_TORCH.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.DREAM_LANTERN.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.DREAM_CAMPFIRE.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.DREAM_FIRE.get(), RenderType.cutout()); @@ -484,4 +496,12 @@ public final class AntarchyFabricClientBootstrap { ScorpionWhipTetherRenderHandler.render(context); }); } + + private static int bluestoneWireColor(int power) { + float normalized = power / 15.0F; + int red = (int) (6.0F + normalized * 54.0F); + int green = (int) (22.0F + normalized * 132.0F); + int blue = (int) (64.0F + normalized * 191.0F); + return red << 16 | green << 8 | blue; + } } diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyKeyBindings.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyKeyBindings.java index 592f64ea..955d42cb 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyKeyBindings.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyKeyBindings.java @@ -31,12 +31,20 @@ public final class AntarchyKeyBindings { CATEGORY ); + public static final KeyMapping HERCULES_BEETLE_FLIGHT_TOGGLE = new KeyMapping( + "key.antarchy.hercules_beetle_flight_toggle", + InputConstants.Type.KEYSYM, + GLFW.GLFW_KEY_R, + CATEGORY + ); + private AntarchyKeyBindings() {} public static void register() { KeyBindingHelper.registerKeyBinding(BRUTALFLY_FLAP); KeyBindingHelper.registerKeyBinding(DORRIE_CHARGE_JUMP); KeyBindingHelper.registerKeyBinding(HERCULES_BEETLE_CHARGE); + KeyBindingHelper.registerKeyBinding(HERCULES_BEETLE_FLIGHT_TOGGLE); } public static boolean isBrutalflyFlapPressed() { @@ -50,4 +58,8 @@ public final class AntarchyKeyBindings { public static boolean isHerculesBeetleChargePressed() { return Minecraft.getInstance().screen == null && HERCULES_BEETLE_CHARGE.isDown(); } + + public static boolean isHerculesBeetleFlightTogglePressed() { + return Minecraft.getInstance().screen == null && HERCULES_BEETLE_FLIGHT_TOGGLE.isDown(); + } } diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/HerculesBeetleChargeHudRenderer.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/HerculesBeetleChargeHudRenderer.java index 42eb0f77..7c603fea 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/HerculesBeetleChargeHudRenderer.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/HerculesBeetleChargeHudRenderer.java @@ -36,7 +36,7 @@ public final class HerculesBeetleChargeHudRenderer { int width = mc.getWindow().getGuiScaledWidth(); int height = mc.getWindow().getGuiScaledHeight(); int x0 = width / 2 - BAR_WIDTH / 2; - int y0 = height - 39; + int y0 = height - 29; float chargeRatio = Mth.clamp(charge / 100.0F, 0.0F, 1.0F); int filledWidth = Mth.clamp((int) (chargeRatio * BAR_WIDTH), 0, BAR_WIDTH); diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/HerculesBeetleClientHandler.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/HerculesBeetleClientHandler.java index cfe07b58..90687c21 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/HerculesBeetleClientHandler.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/HerculesBeetleClientHandler.java @@ -1,6 +1,7 @@ package com.craisinlord.antarchy.fabric.client; import com.craisinlord.antarchy.content.entity.HerculesBeetleEntity; +import com.craisinlord.antarchy.content.network.HerculesBeetleFlightTogglePayload; import com.craisinlord.antarchy.content.network.HerculesBeetleJumpInputPayload; import com.craisinlord.antarchy.content.network.HerculesBeetleMountedAttackPayload; import com.craisinlord.antarchy.content.network.HerculesBeetleMountedChargePayload; @@ -12,6 +13,7 @@ public final class HerculesBeetleClientHandler { private static boolean wasPressingJump; private static boolean wasPressingAttack; private static boolean wasCharging; + private static boolean wasPressingFlightToggle; private HerculesBeetleClientHandler() { } @@ -46,6 +48,12 @@ public final class HerculesBeetleClientHandler { ClientPlayNetworking.send(new HerculesBeetleMountedChargePayload(charging)); } wasCharging = charging; + + boolean pressingFlightToggle = AntarchyKeyBindings.isHerculesBeetleFlightTogglePressed(); + if (pressingFlightToggle && !wasPressingFlightToggle) { + ClientPlayNetworking.send(new HerculesBeetleFlightTogglePayload()); + } + wasPressingFlightToggle = pressingFlightToggle; } private static void resetAll() { @@ -55,5 +63,6 @@ public final class HerculesBeetleClientHandler { } wasPressingAttack = false; wasCharging = false; + wasPressingFlightToggle = false; } } diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricNetworking.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricNetworking.java index f478e3b4..5c908e15 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricNetworking.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricNetworking.java @@ -87,6 +87,7 @@ public final class AntarchyFabricNetworking { PayloadTypeRegistry.playC2S().register(DorrieJumpInputPayload.TYPE, DorrieJumpInputPayload.STREAM_CODEC); PayloadTypeRegistry.playC2S().register(com.craisinlord.antarchy.content.network.DorrieChargeJumpPayload.TYPE, com.craisinlord.antarchy.content.network.DorrieChargeJumpPayload.STREAM_CODEC); PayloadTypeRegistry.playC2S().register(HerculesBeetleJumpInputPayload.TYPE, HerculesBeetleJumpInputPayload.STREAM_CODEC); + PayloadTypeRegistry.playC2S().register(HerculesBeetleFlightTogglePayload.TYPE, HerculesBeetleFlightTogglePayload.STREAM_CODEC); PayloadTypeRegistry.playC2S().register(HerculesBeetleMountedAttackPayload.TYPE, HerculesBeetleMountedAttackPayload.STREAM_CODEC); PayloadTypeRegistry.playC2S().register(HerculesBeetleMountedChargePayload.TYPE, HerculesBeetleMountedChargePayload.STREAM_CODEC); PayloadTypeRegistry.playC2S().register(MultipartAttackPayload.TYPE, MultipartAttackPayload.STREAM_CODEC); @@ -112,6 +113,8 @@ public final class AntarchyFabricNetworking { context.server().execute(() -> handleDorrieChargeJumpInput(context.player(), payload))); ServerPlayNetworking.registerGlobalReceiver(HerculesBeetleJumpInputPayload.TYPE, (payload, context) -> context.server().execute(() -> handleHerculesBeetleJumpInput(context.player(), payload))); + ServerPlayNetworking.registerGlobalReceiver(HerculesBeetleFlightTogglePayload.TYPE, (payload, context) -> + context.server().execute(() -> handleHerculesBeetleFlightToggle(context.player(), payload))); ServerPlayNetworking.registerGlobalReceiver(HerculesBeetleMountedAttackPayload.TYPE, (payload, context) -> context.server().execute(() -> handleHerculesBeetleMountedAttack(context.player(), payload))); ServerPlayNetworking.registerGlobalReceiver(HerculesBeetleMountedChargePayload.TYPE, (payload, context) -> @@ -389,6 +392,12 @@ public final class AntarchyFabricNetworking { } } + private static void handleHerculesBeetleFlightToggle(ServerPlayer player, HerculesBeetleFlightTogglePayload payload) { + if (player.getVehicle() instanceof HerculesBeetleEntity beetle) { + beetle.toggleMountedFlight(player); + } + } + private static void handleHerculesBeetleMountedCharge(ServerPlayer player, HerculesBeetleMountedChargePayload payload) { if (player.getVehicle() instanceof HerculesBeetleEntity beetle) { if (payload.pressing()) { 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 b062546b..3923017a 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 @@ -2,16 +2,8 @@ package com.craisinlord.antarchy.fabric.registry; import com.craisinlord.antarchy.fabric.AntarchyWoodTypes; import com.craisinlord.antarchy.Antarchy; -import com.craisinlord.antarchy.compat.infinity.InfinityCompat; -import com.craisinlord.antarchy.compat.infinity.InfinityCompatVersion; -import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchyObjects; -import com.craisinlord.antarchy.content.CreativeTabOrder; import com.craisinlord.antarchy.content.block.*; -import com.craisinlord.antarchy.content.AntarchySoundEvents; -import com.craisinlord.antarchy.content.item.BloodCrystalArmorItem; -import com.craisinlord.antarchy.content.item.BloodCrystalAppleItem; -import com.craisinlord.antarchy.content.item.BloodCrystalKatanaItem; import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; import com.craisinlord.antarchy.content.block.entity.CritterCageBlockEntity; import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; @@ -21,214 +13,11 @@ import com.craisinlord.antarchy.content.block.entity.SeashellBlockEntity; import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity; import com.craisinlord.antarchy.content.fluid.BileLiquidBlock; import com.craisinlord.antarchy.content.fluid.LumenLiquidBlock; -import com.craisinlord.antarchy.content.worldgen.ants.BrownAntNestFeature; -import com.craisinlord.antarchy.content.worldgen.ants.RainbowAntNestFeature; -import com.craisinlord.antarchy.content.worldgen.ants.RedAntNestFeature; -import com.craisinlord.antarchy.content.worldgen.ants.TermiteNestFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileCystFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileVeinFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynCreepvineFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynWallAmberMossFeature; -import com.craisinlord.antarchy.content.worldgen.overworld.CornPatchFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.PotentNyxiteFeature; -import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterFluid; import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterLiquidBlock; -import com.craisinlord.antarchy.fabric.item.DeferredSpawnEggItem; -import com.craisinlord.antarchy.fabric.network.AntarchyFabricNetworking; -import com.craisinlord.antarchy.fabric.registry.DeferredBlock; -import com.craisinlord.antarchy.fabric.registry.DeferredHolder; -import com.craisinlord.antarchy.fabric.registry.DeferredItem; -import com.craisinlord.antarchy.fabric.registry.DeferredRegister; -import com.craisinlord.antarchy.content.effect.DreadMobEffect; -import com.craisinlord.antarchy.content.effect.GrowthMobEffect; -import com.craisinlord.antarchy.content.effect.InvertedMobEffect; -import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect; -import com.craisinlord.antarchy.content.effect.ShrinkMobEffect; -import com.craisinlord.antarchy.content.effect.StinkyMobEffect; -import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.AppleCow; -import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.EnchantedGoldenAppleCow; -import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.GoldenAppleCow; -import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity; -import com.craisinlord.antarchy.content.entity.BedBugEntity; -import com.craisinlord.antarchy.content.entity.ButterflyEntity; -import com.craisinlord.antarchy.content.entity.CaterpillarEntity; -import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; -import com.craisinlord.antarchy.content.entity.DrTrayaurusEntity; -import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; -import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyOrbEntity; -import com.craisinlord.antarchy.content.entity.EasterBunnyEntity; -import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity; -import com.craisinlord.antarchy.content.entity.ReverieEntity; -import com.craisinlord.antarchy.content.entity.MissileSquidEntity; -import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; -import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity; -import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity; -import com.craisinlord.antarchy.content.entity.HushProjectileEntity; -import com.craisinlord.antarchy.content.entity.JumpyBugEntity; -import com.craisinlord.antarchy.content.entity.StinkBugEntity; -import com.craisinlord.antarchy.content.entity.OuranwoodBoatEntity; -import com.craisinlord.antarchy.content.entity.OuranwoodChestBoatEntity; -import com.craisinlord.antarchy.content.entity.AlphaMantisEntity; -import com.craisinlord.antarchy.content.entity.MantisEntity; -import com.craisinlord.antarchy.content.entity.RollyPollyEntity; -import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity; -import com.craisinlord.antarchy.content.entity.EmperorScorpionEntity; -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.OctopusBombEntity; -import com.craisinlord.antarchy.content.entity.MolevoreEntity; -import com.craisinlord.antarchy.content.entity.MolewormEntity; -import com.craisinlord.antarchy.content.entity.BomberEntity; -import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity; -import com.craisinlord.antarchy.content.entity.TriffidEntity; -import com.craisinlord.antarchy.content.entity.WaspEntity; -import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; -import com.craisinlord.antarchy.content.entity.ant.BrownAntEntity; -import com.craisinlord.antarchy.content.entity.ant.RainbowAntEntity; -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.AntimetalBlockItem; -import com.craisinlord.antarchy.fabric.item.AntimetalScaffoldingItem; -import com.craisinlord.antarchy.content.item.CloudSharkFinSoupItem; -import com.craisinlord.antarchy.content.item.CorneaEarItem; -import com.craisinlord.antarchy.content.item.GravityGunItem; -import com.craisinlord.antarchy.content.item.MinersDreamItem; -import com.craisinlord.antarchy.content.item.DuctTapeBlockItem; -import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; -import com.craisinlord.antarchy.content.item.MobComingSoonTooltipItem; -import com.craisinlord.antarchy.content.item.MogglesItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateAxeItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateHoeItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimatePickaxeItem; -import com.craisinlord.antarchy.content.item.ultimate.UtlimateShovelItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateSwordItem; -import com.craisinlord.antarchy.content.item.DiamondMinecartItem; -import com.craisinlord.antarchy.content.item.ReverieBottleItem; -import com.craisinlord.antarchy.content.item.ScorpionWhipItem; -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.SimpleToolTier; -import com.craisinlord.antarchy.content.item.ultimate.UltimateArmorItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateBowItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateCrossbowItem; -import com.craisinlord.antarchy.content.item.NightmareArmorItem; -import com.craisinlord.antarchy.content.item.NightmareSwordItem; -import com.craisinlord.antarchy.content.item.OuranwoodBoatOnlyItem; -import com.craisinlord.antarchy.content.item.OuranwoodChestBoatItem; -import com.craisinlord.antarchy.content.item.RainbowSugarItem; -import com.craisinlord.antarchy.content.worldgen.elythia.CoralSpikeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaBiomeSource; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaRiverCarveFunction; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaFloraFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaLargeTuffBoulderFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestMossyBoulderFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondConfiguration; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaPondFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaSurfaceCoverFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaTuffBoulderFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaUndergroundFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormCaveEntranceFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormSurfaceMoundsFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.BrutalflyCocoonFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.LumenPoolFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.LumenLilyPadFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.LumenStreamFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormTunnelsFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormWarrensFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodCocoonTreeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeConfiguration; -import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeConfiguration; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.TriffidPatchFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynEggPatchFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeConfiguration; -import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugNestFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugSurfaceClusterFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.CloudSeaCalciteFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.LucidAntiwaterPoolFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBiomeSource; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeFeature; -import com.craisinlord.antarchy.content.client.particle.InvertedGeyserBaseParticleOptions; -import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions; import com.craisinlord.antarchy.content.portal.PermanentPortalType; -import java.util.List; -import java.util.ArrayList; -import java.util.Comparator; import com.mojang.serialization.MapCodec; -import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; -import net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistryBuilder; -import net.minecraft.advancements.critereon.EntitySubPredicate; -import net.minecraft.core.Holder; import net.minecraft.core.registries.Registries; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.sounds.SoundEvent; -import net.minecraft.sounds.SoundEvents; -import net.minecraft.world.item.alchemy.Potion; -import net.minecraft.world.item.alchemy.PotionContents; -import net.minecraft.world.effect.MobEffect; -import net.minecraft.world.effect.MobEffectInstance; -import net.minecraft.world.effect.MobEffects; -import net.minecraft.tags.TagKey; -import net.minecraft.world.damagesource.DamageType; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.MobCategory; -import net.minecraft.world.entity.ai.attributes.Attribute; -import net.minecraft.world.entity.ai.attributes.AttributeSupplier; -import net.minecraft.world.entity.ai.attributes.Attributes; -import net.minecraft.world.entity.animal.Cow; -import net.minecraft.world.entity.animal.Rabbit; -import net.minecraft.world.entity.SpawnPlacementTypes; -import net.minecraft.world.entity.SpawnPlacements; -import net.minecraft.world.entity.npc.Villager; -import net.minecraft.world.entity.monster.Monster; -import net.minecraft.world.item.ArmorItem; -import net.minecraft.world.item.ArmorMaterial; -import net.minecraft.world.item.BucketItem; -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.Rarity; -import net.minecraft.world.item.StandingAndWallBlockItem; -import net.minecraft.world.food.FoodProperties; -import net.minecraft.world.item.Tier; -import net.minecraft.world.item.Tiers; -import net.minecraft.world.item.alchemy.Potions; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.flag.FeatureFlags; import net.minecraft.core.Direction; -import net.minecraft.core.particles.ParticleType; -import net.minecraft.core.particles.SimpleParticleType; import net.minecraft.util.valueproviders.UniformInt; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.AmethystClusterBlock; @@ -248,18 +37,9 @@ import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.MapColor; import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.biome.BiomeSource; -import net.minecraft.world.level.levelgen.DensityFunction; -import net.minecraft.world.level.levelgen.feature.Feature; -import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration; -import net.minecraft.world.level.levelgen.Heightmap; -import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.world.level.material.Fluid; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.block.Mirror; import net.minecraft.world.level.block.Rotation; -import com.craisinlord.antarchy.fabric.AntarchyFabricContent; public final class AntarchyFabricBlocks { @@ -787,6 +567,8 @@ public final class AntarchyFabricBlocks { public static final DeferredBlock DREAM_WALL_TORCH = BLOCKS.register("dream_wall_torch", () -> new DreamWallTorchBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_WALL_TORCH))); + public static final DeferredBlock DREAM_CEILING_TORCH = BLOCKS.register("dream_ceiling_torch", + () -> new com.craisinlord.antarchy.content.block.DreamCeilingTorchBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_TORCH))); public static final DeferredBlock DREAM_LANTERN = BLOCKS.register("dream_lantern", @@ -927,6 +709,24 @@ public final class AntarchyFabricBlocks { () -> createOre(Blocks.DEEPSLATE_DIAMOND_ORE, 4, 8, MapColor.COLOR_LIGHT_BLUE)); + public static final DeferredBlock BLUESTONE_ORE = BLOCKS.register("bluestone_ore", + () -> new BluestoneOreBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.REDSTONE_ORE).mapColor(MapColor.COLOR_BLUE))); + + + public static final DeferredBlock BLUESTONE_WIRE = BLOCKS.register("bluestone_wire", + () -> new BluestoneWireBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.REDSTONE_WIRE).mapColor(MapColor.COLOR_BLUE).noCollission().instabreak())); + + + public static final DeferredBlock BLUESTONE_BLOCK = BLOCKS.register("bluestone_block", + () -> new BluestoneBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.REDSTONE_BLOCK).mapColor(MapColor.COLOR_BLUE))); + public static final DeferredBlock BLUESTONE_REPEATER = BLOCKS.register("bluestone_repeater", + () -> new BluestoneRepeaterBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.REPEATER).mapColor(MapColor.COLOR_BLUE).noCollission())); + public static final DeferredBlock BLUESTONE_COMPARATOR = BLOCKS.register("bluestone_comparator", + () -> new BluestoneComparatorBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COMPARATOR).mapColor(MapColor.COLOR_BLUE).noCollission(), AntarchyFabricBlocks::bluestoneComparatorBlockEntityType)); + public static final DeferredBlock BLUESTONE_TORCH = BLOCKS.register("bluestone_torch", + () -> new BluestoneTorchBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.REDSTONE_TORCH).mapColor(MapColor.COLOR_BLUE).lightLevel(state -> state.getValue(BluestoneTorchBlock.LIT) ? 7 : 0).noCollission().instabreak())); + + public static final DeferredBlock URANIUM_BLOCK = BLOCKS.register("uranium_block", () -> createStorageBlock(Blocks.EMERALD_BLOCK, MapColor.COLOR_YELLOW)); @@ -1202,6 +1002,11 @@ public final class AntarchyFabricBlocks { CritterCageBlockEntity::new, CRITTER_CAGE_BLOCK.get() ).build(null)); + public static final DeferredHolder, BlockEntityType> BLUESTONE_COMPARATOR_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("bluestone_comparator", + () -> BlockEntityType.Builder.of( + (pos, state) -> new com.craisinlord.antarchy.content.block.entity.BluestoneComparatorBlockEntity(pos, state, AntarchyFabricBlocks::bluestoneComparatorBlockEntityType), + BLUESTONE_COMPARATOR.get() + ).build(null)); @@ -1225,6 +1030,10 @@ public final class AntarchyFabricBlocks { return SEASHELL_BLOCK_ENTITY.get(); } + private static BlockEntityType bluestoneComparatorBlockEntityType() { + return BLUESTONE_COMPARATOR_BLOCK_ENTITY.get(); + } + private static Block smallBloodCrystalBudBlock() { diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricCreativeModeTabs.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricCreativeModeTabs.java index dc6f5b10..f91c4591 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricCreativeModeTabs.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricCreativeModeTabs.java @@ -1,259 +1,10 @@ package com.craisinlord.antarchy.fabric.registry; import com.craisinlord.antarchy.Antarchy; -import com.craisinlord.antarchy.compat.infinity.InfinityCompat; -import com.craisinlord.antarchy.compat.infinity.InfinityCompatVersion; -import com.craisinlord.antarchy.config.AntarchySettings; -import com.craisinlord.antarchy.content.CreativeTabContents; -import com.craisinlord.antarchy.content.AntarchyObjects; -import com.craisinlord.antarchy.content.CreativeTabOrder; -import com.craisinlord.antarchy.content.block.*; -import com.craisinlord.antarchy.content.AntarchySoundEvents; -import com.craisinlord.antarchy.content.item.BloodCrystalArmorItem; -import com.craisinlord.antarchy.content.item.BloodCrystalAppleItem; -import com.craisinlord.antarchy.content.item.BloodCrystalKatanaItem; -import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; -import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; -import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; -import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; -import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity; -import com.craisinlord.antarchy.content.fluid.BileLiquidBlock; -import com.craisinlord.antarchy.content.fluid.LumenLiquidBlock; -import com.craisinlord.antarchy.content.worldgen.ants.BrownAntNestFeature; -import com.craisinlord.antarchy.content.worldgen.ants.RainbowAntNestFeature; -import com.craisinlord.antarchy.content.worldgen.ants.RedAntNestFeature; -import com.craisinlord.antarchy.content.worldgen.ants.TermiteNestFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileCystFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileVeinFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynCreepvineFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynWallAmberMossFeature; -import com.craisinlord.antarchy.content.worldgen.overworld.CornPatchFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.PotentNyxiteFeature; -import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterFluid; -import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterLiquidBlock; -import com.craisinlord.antarchy.fabric.item.DeferredSpawnEggItem; -import com.craisinlord.antarchy.fabric.network.AntarchyFabricNetworking; -import com.craisinlord.antarchy.fabric.registry.DeferredBlock; -import com.craisinlord.antarchy.fabric.registry.DeferredHolder; -import com.craisinlord.antarchy.fabric.registry.DeferredItem; -import com.craisinlord.antarchy.fabric.registry.DeferredRegister; -import com.craisinlord.antarchy.content.effect.DreadMobEffect; -import com.craisinlord.antarchy.content.effect.GrowthMobEffect; -import com.craisinlord.antarchy.content.effect.InvertedMobEffect; -import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect; -import com.craisinlord.antarchy.content.effect.ShrinkMobEffect; -import com.craisinlord.antarchy.content.effect.StinkyMobEffect; -import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.AppleCow; -import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.EnchantedGoldenAppleCow; -import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.GoldenAppleCow; -import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity; -import com.craisinlord.antarchy.content.entity.BedBugEntity; -import com.craisinlord.antarchy.content.entity.ButterflyEntity; -import com.craisinlord.antarchy.content.entity.CaterpillarEntity; -import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; -import com.craisinlord.antarchy.content.entity.DrTrayaurusEntity; -import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; -import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyOrbEntity; -import com.craisinlord.antarchy.content.entity.EasterBunnyEntity; -import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity; -import com.craisinlord.antarchy.content.entity.ReverieEntity; -import com.craisinlord.antarchy.content.entity.MissileSquidEntity; -import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; -import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity; -import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity; -import com.craisinlord.antarchy.content.entity.HushProjectileEntity; -import com.craisinlord.antarchy.content.entity.JumpyBugEntity; -import com.craisinlord.antarchy.content.entity.StinkBugEntity; -import com.craisinlord.antarchy.content.entity.OuranwoodBoatEntity; -import com.craisinlord.antarchy.content.entity.OuranwoodChestBoatEntity; -import com.craisinlord.antarchy.content.entity.AlphaMantisEntity; -import com.craisinlord.antarchy.content.entity.MantisEntity; -import com.craisinlord.antarchy.content.entity.RollyPollyEntity; -import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity; -import com.craisinlord.antarchy.content.entity.EmperorScorpionEntity; -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.OctopusBombEntity; -import com.craisinlord.antarchy.content.entity.MolevoreEntity; -import com.craisinlord.antarchy.content.entity.MolewormEntity; -import com.craisinlord.antarchy.content.entity.BomberEntity; -import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity; -import com.craisinlord.antarchy.content.entity.TriffidEntity; -import com.craisinlord.antarchy.content.entity.WaspEntity; -import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; -import com.craisinlord.antarchy.content.entity.ant.BrownAntEntity; -import com.craisinlord.antarchy.content.entity.ant.RainbowAntEntity; -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.AntimetalBlockItem; -import com.craisinlord.antarchy.fabric.item.AntimetalScaffoldingItem; -import com.craisinlord.antarchy.content.item.CloudSharkFinSoupItem; -import com.craisinlord.antarchy.content.item.CorneaEarItem; -import com.craisinlord.antarchy.content.item.GravityGunItem; -import com.craisinlord.antarchy.content.item.MinersDreamItem; -import com.craisinlord.antarchy.content.item.DuctTapeBlockItem; -import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; -import com.craisinlord.antarchy.content.item.MobComingSoonTooltipItem; -import com.craisinlord.antarchy.content.item.MogglesItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateAxeItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateHoeItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimatePickaxeItem; -import com.craisinlord.antarchy.content.item.ultimate.UtlimateShovelItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateSwordItem; -import com.craisinlord.antarchy.content.item.DiamondMinecartItem; -import com.craisinlord.antarchy.content.item.ReverieBottleItem; -import com.craisinlord.antarchy.content.item.ScorpionWhipItem; -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.SimpleToolTier; -import com.craisinlord.antarchy.content.item.ultimate.UltimateArmorItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateBowItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateCrossbowItem; -import com.craisinlord.antarchy.content.item.NightmareArmorItem; -import com.craisinlord.antarchy.content.item.NightmareSwordItem; -import com.craisinlord.antarchy.content.item.OuranwoodBoatOnlyItem; -import com.craisinlord.antarchy.content.item.OuranwoodChestBoatItem; -import com.craisinlord.antarchy.content.item.RainbowSugarItem; -import com.craisinlord.antarchy.content.worldgen.elythia.CoralSpikeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaBiomeSource; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaRiverCarveFunction; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaFloraFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaLargeTuffBoulderFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestMossyBoulderFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondConfiguration; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaPondFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaSurfaceCoverFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaTuffBoulderFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaUndergroundFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormCaveEntranceFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormSurfaceMoundsFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.BrutalflyCocoonFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.LumenPoolFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.LumenLilyPadFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.LumenStreamFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormTunnelsFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormWarrensFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodCocoonTreeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeConfiguration; -import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeConfiguration; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.TriffidPatchFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynEggPatchFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeConfiguration; -import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugNestFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugSurfaceClusterFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.CloudSeaCalciteFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.LucidAntiwaterPoolFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBiomeSource; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeFeature; -import com.craisinlord.antarchy.content.client.particle.InvertedGeyserBaseParticleOptions; -import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions; -import com.craisinlord.antarchy.content.portal.PermanentPortalType; -import java.util.List; -import java.util.ArrayList; -import java.util.Comparator; -import com.mojang.serialization.MapCodec; -import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; -import net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistryBuilder; -import net.minecraft.advancements.critereon.EntitySubPredicate; -import net.minecraft.core.Holder; +import com.craisinlord.antarchy.content.creative.CreativeTabContents; import net.minecraft.core.registries.Registries; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.sounds.SoundEvent; -import net.minecraft.sounds.SoundEvents; -import net.minecraft.world.item.alchemy.Potion; -import net.minecraft.world.item.alchemy.PotionContents; -import net.minecraft.world.effect.MobEffect; -import net.minecraft.world.effect.MobEffectInstance; -import net.minecraft.world.effect.MobEffects; -import net.minecraft.tags.TagKey; -import net.minecraft.world.damagesource.DamageType; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.MobCategory; -import net.minecraft.world.entity.ai.attributes.Attribute; -import net.minecraft.world.entity.ai.attributes.AttributeSupplier; -import net.minecraft.world.entity.ai.attributes.Attributes; -import net.minecraft.world.entity.animal.Cow; -import net.minecraft.world.entity.animal.Rabbit; -import net.minecraft.world.entity.SpawnPlacementTypes; -import net.minecraft.world.entity.SpawnPlacements; -import net.minecraft.world.entity.npc.Villager; -import net.minecraft.world.entity.monster.Monster; -import net.minecraft.world.item.ArmorItem; -import net.minecraft.world.item.ArmorMaterial; -import net.minecraft.world.item.BucketItem; 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.Rarity; -import net.minecraft.world.item.StandingAndWallBlockItem; -import net.minecraft.world.food.FoodProperties; -import net.minecraft.world.item.Tier; -import net.minecraft.world.item.Tiers; -import net.minecraft.world.item.alchemy.Potions; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.flag.FeatureFlags; -import net.minecraft.core.Direction; -import net.minecraft.core.particles.ParticleType; -import net.minecraft.core.particles.SimpleParticleType; -import net.minecraft.util.valueproviders.UniformInt; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.AmethystClusterBlock; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.DropExperienceBlock; -import net.minecraft.world.level.block.GlowLichenBlock; -import net.minecraft.world.level.block.HorizontalDirectionalBlock; -import net.minecraft.world.level.block.LiquidBlock; -import net.minecraft.world.level.block.RotatedPillarBlock; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.VineBlock; -import net.minecraft.world.level.block.entity.BlockEntityType; -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.biome.BiomeSource; -import net.minecraft.world.level.levelgen.DensityFunction; -import net.minecraft.world.level.levelgen.feature.Feature; -import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration; -import net.minecraft.world.level.levelgen.Heightmap; -import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.block.Mirror; -import net.minecraft.world.level.block.Rotation; -import com.craisinlord.antarchy.fabric.AntarchyFabricContent; public final class AntarchyFabricCreativeModeTabs { 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 3c81943a..d9100353 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 @@ -1,51 +1,6 @@ package com.craisinlord.antarchy.fabric.registry; import com.craisinlord.antarchy.Antarchy; -import com.craisinlord.antarchy.compat.infinity.InfinityCompat; -import com.craisinlord.antarchy.compat.infinity.InfinityCompatVersion; -import com.craisinlord.antarchy.config.AntarchySettings; -import com.craisinlord.antarchy.content.AntarchyObjects; -import com.craisinlord.antarchy.content.CreativeTabOrder; -import com.craisinlord.antarchy.content.block.*; -import com.craisinlord.antarchy.content.AntarchySoundEvents; -import com.craisinlord.antarchy.content.item.BloodCrystalArmorItem; -import com.craisinlord.antarchy.content.item.BloodCrystalAppleItem; -import com.craisinlord.antarchy.content.item.BloodCrystalKatanaItem; -import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; -import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; -import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; -import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; -import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity; -import com.craisinlord.antarchy.content.fluid.BileLiquidBlock; -import com.craisinlord.antarchy.content.fluid.LumenLiquidBlock; -import com.craisinlord.antarchy.content.worldgen.ants.BrownAntNestFeature; -import com.craisinlord.antarchy.content.worldgen.ants.RainbowAntNestFeature; -import com.craisinlord.antarchy.content.worldgen.ants.RedAntNestFeature; -import com.craisinlord.antarchy.content.worldgen.ants.TermiteNestFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileCystFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileVeinFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynCreepvineFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynWallAmberMossFeature; -import com.craisinlord.antarchy.content.worldgen.overworld.CornPatchFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.PotentNyxiteFeature; -import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterFluid; -import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterLiquidBlock; -import com.craisinlord.antarchy.fabric.item.DeferredSpawnEggItem; -import com.craisinlord.antarchy.fabric.network.AntarchyFabricNetworking; -import com.craisinlord.antarchy.fabric.registry.DeferredBlock; -import com.craisinlord.antarchy.fabric.registry.DeferredHolder; -import com.craisinlord.antarchy.fabric.registry.DeferredItem; -import com.craisinlord.antarchy.fabric.registry.DeferredRegister; -import com.craisinlord.antarchy.content.effect.DreadMobEffect; -import com.craisinlord.antarchy.content.effect.GrowthMobEffect; -import com.craisinlord.antarchy.content.effect.InvertedMobEffect; -import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect; -import com.craisinlord.antarchy.content.effect.ShrinkMobEffect; -import com.craisinlord.antarchy.content.effect.StinkyMobEffect; import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.AppleCow; import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.EnchantedGoldenAppleCow; import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.GoldenAppleCow; @@ -76,13 +31,9 @@ import com.craisinlord.antarchy.content.entity.RollyPollyEntity; import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity; import com.craisinlord.antarchy.content.entity.EmperorScorpionEntity; 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.kraken.KrakensGraspThrownTrident; import com.craisinlord.antarchy.content.entity.kraken.TentacleEntity; @@ -97,165 +48,10 @@ import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; import com.craisinlord.antarchy.content.entity.ant.BrownAntEntity; import com.craisinlord.antarchy.content.entity.ant.RainbowAntEntity; 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.AntimetalBlockItem; -import com.craisinlord.antarchy.fabric.item.AntimetalScaffoldingItem; -import com.craisinlord.antarchy.content.item.CloudSharkFinSoupItem; -import com.craisinlord.antarchy.content.item.CorneaEarItem; -import com.craisinlord.antarchy.content.item.GravityGunItem; -import com.craisinlord.antarchy.content.item.MinersDreamItem; -import com.craisinlord.antarchy.content.item.DuctTapeBlockItem; -import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; -import com.craisinlord.antarchy.content.item.MobComingSoonTooltipItem; -import com.craisinlord.antarchy.content.item.MogglesItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateAxeItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateHoeItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimatePickaxeItem; -import com.craisinlord.antarchy.content.item.ultimate.UtlimateShovelItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateSwordItem; -import com.craisinlord.antarchy.content.item.DiamondMinecartItem; -import com.craisinlord.antarchy.content.item.ReverieBottleItem; -import com.craisinlord.antarchy.content.item.ScorpionWhipItem; -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.SimpleToolTier; -import com.craisinlord.antarchy.content.item.ultimate.UltimateArmorItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateBowItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateCrossbowItem; -import com.craisinlord.antarchy.content.item.NightmareArmorItem; -import com.craisinlord.antarchy.content.item.NightmareSwordItem; -import com.craisinlord.antarchy.content.item.OuranwoodBoatOnlyItem; -import com.craisinlord.antarchy.content.item.OuranwoodChestBoatItem; -import com.craisinlord.antarchy.content.item.RainbowSugarItem; -import com.craisinlord.antarchy.content.worldgen.elythia.CoralSpikeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaBiomeSource; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaRiverCarveFunction; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaFloraFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaLargeTuffBoulderFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestMossyBoulderFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondConfiguration; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaPondFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaSurfaceCoverFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaTuffBoulderFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaUndergroundFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormCaveEntranceFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormSurfaceMoundsFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.BrutalflyCocoonFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.LumenPoolFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.LumenLilyPadFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.LumenStreamFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormTunnelsFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormWarrensFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodCocoonTreeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeConfiguration; -import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeConfiguration; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.TriffidPatchFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynEggPatchFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeConfiguration; -import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugNestFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugSurfaceClusterFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.CloudSeaCalciteFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.LucidAntiwaterPoolFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBiomeSource; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeFeature; -import com.craisinlord.antarchy.content.client.particle.InvertedGeyserBaseParticleOptions; -import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions; -import com.craisinlord.antarchy.content.portal.PermanentPortalType; -import java.util.List; -import java.util.ArrayList; -import java.util.Comparator; -import com.mojang.serialization.MapCodec; -import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; -import net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistryBuilder; -import net.minecraft.advancements.critereon.EntitySubPredicate; -import net.minecraft.core.Holder; import net.minecraft.core.registries.Registries; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.sounds.SoundEvent; -import net.minecraft.sounds.SoundEvents; -import net.minecraft.world.item.alchemy.Potion; -import net.minecraft.world.item.alchemy.PotionContents; -import net.minecraft.world.effect.MobEffect; -import net.minecraft.world.effect.MobEffectInstance; -import net.minecraft.world.effect.MobEffects; -import net.minecraft.tags.TagKey; -import net.minecraft.world.damagesource.DamageType; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; -import net.minecraft.world.entity.ai.attributes.Attribute; -import net.minecraft.world.entity.ai.attributes.AttributeSupplier; -import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.animal.Cow; -import net.minecraft.world.entity.animal.Rabbit; -import net.minecraft.world.entity.SpawnPlacementTypes; -import net.minecraft.world.entity.SpawnPlacements; -import net.minecraft.world.entity.npc.Villager; -import net.minecraft.world.entity.monster.Monster; -import net.minecraft.world.item.ArmorItem; -import net.minecraft.world.item.ArmorMaterial; -import net.minecraft.world.item.BucketItem; -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.Rarity; -import net.minecraft.world.item.StandingAndWallBlockItem; -import net.minecraft.world.food.FoodProperties; -import net.minecraft.world.item.Tier; -import net.minecraft.world.item.Tiers; -import net.minecraft.world.item.alchemy.Potions; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.flag.FeatureFlags; -import net.minecraft.core.Direction; -import net.minecraft.core.particles.ParticleType; -import net.minecraft.core.particles.SimpleParticleType; -import net.minecraft.util.valueproviders.UniformInt; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.AmethystClusterBlock; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.DropExperienceBlock; -import net.minecraft.world.level.block.GlowLichenBlock; -import net.minecraft.world.level.block.HorizontalDirectionalBlock; -import net.minecraft.world.level.block.LiquidBlock; -import net.minecraft.world.level.block.RotatedPillarBlock; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.VineBlock; -import net.minecraft.world.level.block.entity.BlockEntityType; -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.biome.BiomeSource; -import net.minecraft.world.level.levelgen.DensityFunction; -import net.minecraft.world.level.levelgen.feature.Feature; -import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration; -import net.minecraft.world.level.levelgen.Heightmap; -import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.block.Mirror; -import net.minecraft.world.level.block.Rotation; -import com.craisinlord.antarchy.fabric.AntarchyFabricContent; public final class AntarchyFabricEntities { 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 37b2aea2..174b8a46 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 @@ -1,259 +1,39 @@ package com.craisinlord.antarchy.fabric.registry; -import com.craisinlord.antarchy.Antarchy; -import com.craisinlord.antarchy.compat.infinity.InfinityCompat; -import com.craisinlord.antarchy.compat.infinity.InfinityCompatVersion; import com.craisinlord.antarchy.config.AntarchySettings; -import com.craisinlord.antarchy.content.AntarchyObjects; -import com.craisinlord.antarchy.content.CreativeTabOrder; -import com.craisinlord.antarchy.content.block.*; -import com.craisinlord.antarchy.content.AntarchySoundEvents; -import com.craisinlord.antarchy.content.item.BloodCrystalArmorItem; -import com.craisinlord.antarchy.content.item.BloodCrystalAppleItem; -import com.craisinlord.antarchy.content.item.BloodCrystalKatanaItem; -import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; -import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; -import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; -import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; -import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity; -import com.craisinlord.antarchy.content.fluid.BileLiquidBlock; -import com.craisinlord.antarchy.content.fluid.LumenLiquidBlock; -import com.craisinlord.antarchy.content.worldgen.ants.BrownAntNestFeature; -import com.craisinlord.antarchy.content.worldgen.ants.RainbowAntNestFeature; -import com.craisinlord.antarchy.content.worldgen.ants.RedAntNestFeature; -import com.craisinlord.antarchy.content.worldgen.ants.TermiteNestFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileCystFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileVeinFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynCreepvineFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynWallAmberMossFeature; -import com.craisinlord.antarchy.content.worldgen.overworld.CornPatchFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.PotentNyxiteFeature; -import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterFluid; -import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterLiquidBlock; -import com.craisinlord.antarchy.fabric.item.DeferredSpawnEggItem; -import com.craisinlord.antarchy.fabric.network.AntarchyFabricNetworking; -import com.craisinlord.antarchy.fabric.registry.DeferredBlock; -import com.craisinlord.antarchy.fabric.registry.DeferredHolder; -import com.craisinlord.antarchy.fabric.registry.DeferredItem; -import com.craisinlord.antarchy.fabric.registry.DeferredRegister; -import com.craisinlord.antarchy.content.effect.DreadMobEffect; -import com.craisinlord.antarchy.content.effect.GrowthMobEffect; -import com.craisinlord.antarchy.content.effect.InvertedMobEffect; -import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect; -import com.craisinlord.antarchy.content.effect.ShrinkMobEffect; -import com.craisinlord.antarchy.content.effect.StinkyMobEffect; -import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.AppleCow; -import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.EnchantedGoldenAppleCow; -import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.GoldenAppleCow; import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity; import com.craisinlord.antarchy.content.entity.BedBugEntity; import com.craisinlord.antarchy.content.entity.ButterflyEntity; import com.craisinlord.antarchy.content.entity.CaterpillarEntity; -import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; -import com.craisinlord.antarchy.content.entity.DrTrayaurusEntity; import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; -import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyOrbEntity; -import com.craisinlord.antarchy.content.entity.EasterBunnyEntity; import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity; import com.craisinlord.antarchy.content.entity.ReverieEntity; import com.craisinlord.antarchy.content.entity.MissileSquidEntity; import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; -import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity; -import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity; -import com.craisinlord.antarchy.content.entity.HushProjectileEntity; import com.craisinlord.antarchy.content.entity.JumpyBugEntity; import com.craisinlord.antarchy.content.entity.StinkBugEntity; -import com.craisinlord.antarchy.content.entity.OuranwoodBoatEntity; -import com.craisinlord.antarchy.content.entity.OuranwoodChestBoatEntity; import com.craisinlord.antarchy.content.entity.AlphaMantisEntity; import com.craisinlord.antarchy.content.entity.MantisEntity; import com.craisinlord.antarchy.content.entity.RollyPollyEntity; import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity; import com.craisinlord.antarchy.content.entity.EmperorScorpionEntity; 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.kraken.TentacleEntity; import com.craisinlord.antarchy.content.entity.OctopusBombEntity; import com.craisinlord.antarchy.content.entity.MolevoreEntity; import com.craisinlord.antarchy.content.entity.MolewormEntity; import com.craisinlord.antarchy.content.entity.BomberEntity; -import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity; import com.craisinlord.antarchy.content.entity.TriffidEntity; import com.craisinlord.antarchy.content.entity.WaspEntity; -import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; -import com.craisinlord.antarchy.content.entity.ant.BrownAntEntity; -import com.craisinlord.antarchy.content.entity.ant.RainbowAntEntity; -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.AntimetalBlockItem; -import com.craisinlord.antarchy.fabric.item.AntimetalScaffoldingItem; -import com.craisinlord.antarchy.content.item.CloudSharkFinSoupItem; -import com.craisinlord.antarchy.content.item.CorneaEarItem; -import com.craisinlord.antarchy.content.item.GravityGunItem; -import com.craisinlord.antarchy.content.item.MinersDreamItem; -import com.craisinlord.antarchy.content.item.DuctTapeBlockItem; -import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; -import com.craisinlord.antarchy.content.item.MobComingSoonTooltipItem; -import com.craisinlord.antarchy.content.item.MogglesItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateAxeItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateHoeItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimatePickaxeItem; -import com.craisinlord.antarchy.content.item.ultimate.UtlimateShovelItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateSwordItem; -import com.craisinlord.antarchy.content.item.DiamondMinecartItem; -import com.craisinlord.antarchy.content.item.ReverieBottleItem; -import com.craisinlord.antarchy.content.item.ScorpionWhipItem; -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.SimpleToolTier; -import com.craisinlord.antarchy.content.item.ultimate.UltimateArmorItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateBowItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateCrossbowItem; -import com.craisinlord.antarchy.content.item.NightmareArmorItem; -import com.craisinlord.antarchy.content.item.NightmareSwordItem; -import com.craisinlord.antarchy.content.item.OuranwoodBoatOnlyItem; -import com.craisinlord.antarchy.content.item.OuranwoodChestBoatItem; -import com.craisinlord.antarchy.content.item.RainbowSugarItem; -import com.craisinlord.antarchy.content.worldgen.elythia.CoralSpikeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaBiomeSource; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaRiverCarveFunction; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaFloraFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaLargeTuffBoulderFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestMossyBoulderFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondConfiguration; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaPondFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaSurfaceCoverFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaTuffBoulderFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaUndergroundFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormCaveEntranceFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormSurfaceMoundsFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.BrutalflyCocoonFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.LumenPoolFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.LumenLilyPadFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.LumenStreamFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormTunnelsFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormWarrensFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodCocoonTreeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeConfiguration; -import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeConfiguration; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.TriffidPatchFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynEggPatchFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeConfiguration; -import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugNestFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugSurfaceClusterFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.CloudSeaCalciteFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.LucidAntiwaterPoolFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBiomeSource; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeFeature; -import com.craisinlord.antarchy.content.client.particle.InvertedGeyserBaseParticleOptions; -import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions; -import com.craisinlord.antarchy.content.portal.PermanentPortalType; -import java.util.List; -import java.util.ArrayList; -import java.util.Comparator; -import com.mojang.serialization.MapCodec; import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; -import net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistryBuilder; -import net.minecraft.advancements.critereon.EntitySubPredicate; -import net.minecraft.core.Holder; -import net.minecraft.core.registries.Registries; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.sounds.SoundEvent; -import net.minecraft.sounds.SoundEvents; -import net.minecraft.world.item.alchemy.Potion; -import net.minecraft.world.item.alchemy.PotionContents; -import net.minecraft.world.effect.MobEffect; -import net.minecraft.world.effect.MobEffectInstance; -import net.minecraft.world.effect.MobEffects; -import net.minecraft.tags.TagKey; -import net.minecraft.world.damagesource.DamageType; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.MobCategory; -import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.animal.Cow; import net.minecraft.world.entity.animal.Rabbit; -import net.minecraft.world.entity.SpawnPlacementTypes; -import net.minecraft.world.entity.SpawnPlacements; import net.minecraft.world.entity.npc.Villager; -import net.minecraft.world.entity.monster.Monster; -import net.minecraft.world.item.ArmorItem; -import net.minecraft.world.item.ArmorMaterial; -import net.minecraft.world.item.BucketItem; -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.Rarity; -import net.minecraft.world.item.StandingAndWallBlockItem; -import net.minecraft.world.food.FoodProperties; -import net.minecraft.world.item.Tier; -import net.minecraft.world.item.Tiers; -import net.minecraft.world.item.alchemy.Potions; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.flag.FeatureFlags; -import net.minecraft.core.Direction; -import net.minecraft.core.particles.ParticleType; -import net.minecraft.core.particles.SimpleParticleType; -import net.minecraft.util.valueproviders.UniformInt; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.AmethystClusterBlock; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.DropExperienceBlock; -import net.minecraft.world.level.block.GlowLichenBlock; -import net.minecraft.world.level.block.HorizontalDirectionalBlock; -import net.minecraft.world.level.block.LiquidBlock; -import net.minecraft.world.level.block.RotatedPillarBlock; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.VineBlock; -import net.minecraft.world.level.block.entity.BlockEntityType; -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.biome.BiomeSource; -import net.minecraft.world.level.levelgen.DensityFunction; -import net.minecraft.world.level.levelgen.feature.Feature; -import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration; -import net.minecraft.world.level.levelgen.Heightmap; -import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.block.Mirror; -import net.minecraft.world.level.block.Rotation; -import com.craisinlord.antarchy.fabric.AntarchyFabricContent; public final class AntarchyFabricEntityAttributes { 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 a0b0d800..b7ad3ee4 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 @@ -1,100 +1,17 @@ package com.craisinlord.antarchy.fabric.registry; import com.craisinlord.antarchy.Antarchy; -import com.craisinlord.antarchy.compat.infinity.InfinityCompat; -import com.craisinlord.antarchy.compat.infinity.InfinityCompatVersion; import com.craisinlord.antarchy.config.AntarchySettings; -import com.craisinlord.antarchy.content.AntarchyObjects; -import com.craisinlord.antarchy.content.CreativeTabOrder; -import com.craisinlord.antarchy.content.block.*; -import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.item.BloodCrystalArmorItem; import com.craisinlord.antarchy.content.item.BloodCrystalAppleItem; import com.craisinlord.antarchy.content.item.BloodCrystalKatanaItem; import com.craisinlord.antarchy.content.item.CritterCageItem; -import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; -import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; -import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; -import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; -import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity; -import com.craisinlord.antarchy.content.fluid.BileLiquidBlock; -import com.craisinlord.antarchy.content.fluid.LumenLiquidBlock; -import com.craisinlord.antarchy.content.worldgen.ants.BrownAntNestFeature; -import com.craisinlord.antarchy.content.worldgen.ants.RainbowAntNestFeature; -import com.craisinlord.antarchy.content.worldgen.ants.RedAntNestFeature; -import com.craisinlord.antarchy.content.worldgen.ants.TermiteNestFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileCystFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileVeinFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynCreepvineFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynWallAmberMossFeature; -import com.craisinlord.antarchy.content.worldgen.overworld.CornPatchFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.PotentNyxiteFeature; -import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterFluid; -import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterLiquidBlock; import com.craisinlord.antarchy.fabric.item.DeferredSpawnEggItem; -import com.craisinlord.antarchy.fabric.network.AntarchyFabricNetworking; -import com.craisinlord.antarchy.fabric.registry.DeferredBlock; -import com.craisinlord.antarchy.fabric.registry.DeferredHolder; -import com.craisinlord.antarchy.fabric.registry.DeferredItem; -import com.craisinlord.antarchy.fabric.registry.DeferredRegister; -import com.craisinlord.antarchy.content.effect.DreadMobEffect; -import com.craisinlord.antarchy.content.effect.GrowthMobEffect; -import com.craisinlord.antarchy.content.effect.InvertedMobEffect; -import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect; -import com.craisinlord.antarchy.content.effect.ShrinkMobEffect; -import com.craisinlord.antarchy.content.effect.StinkyMobEffect; -import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.AppleCow; -import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.EnchantedGoldenAppleCow; -import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.GoldenAppleCow; -import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity; -import com.craisinlord.antarchy.content.entity.BedBugEntity; -import com.craisinlord.antarchy.content.entity.ButterflyEntity; -import com.craisinlord.antarchy.content.entity.CaterpillarEntity; -import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; -import com.craisinlord.antarchy.content.entity.DrTrayaurusEntity; -import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; -import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyOrbEntity; -import com.craisinlord.antarchy.content.entity.EasterBunnyEntity; -import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity; -import com.craisinlord.antarchy.content.entity.ReverieEntity; -import com.craisinlord.antarchy.content.entity.MissileSquidEntity; -import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; -import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity; -import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity; -import com.craisinlord.antarchy.content.entity.HushProjectileEntity; -import com.craisinlord.antarchy.content.entity.JumpyBugEntity; -import com.craisinlord.antarchy.content.entity.StinkBugEntity; -import com.craisinlord.antarchy.content.entity.OuranwoodBoatEntity; -import com.craisinlord.antarchy.content.entity.OuranwoodChestBoatEntity; -import com.craisinlord.antarchy.content.entity.AlphaMantisEntity; -import com.craisinlord.antarchy.content.entity.MantisEntity; -import com.craisinlord.antarchy.content.entity.RollyPollyEntity; -import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity; -import com.craisinlord.antarchy.content.entity.EmperorScorpionEntity; -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.OctopusBombEntity; -import com.craisinlord.antarchy.content.entity.MolevoreEntity; -import com.craisinlord.antarchy.content.entity.MolewormEntity; -import com.craisinlord.antarchy.content.entity.BomberEntity; import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity; -import com.craisinlord.antarchy.content.entity.TriffidEntity; -import com.craisinlord.antarchy.content.entity.WaspEntity; -import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; -import com.craisinlord.antarchy.content.entity.ant.BrownAntEntity; -import com.craisinlord.antarchy.content.entity.ant.RainbowAntEntity; -import com.craisinlord.antarchy.content.entity.ant.RedAntEntity; import com.craisinlord.antarchy.content.item.BattleAxeItem; import com.craisinlord.antarchy.content.item.AttitudeAdjusterItem; import com.craisinlord.antarchy.content.item.BasiliskDaggerItem; @@ -106,9 +23,11 @@ import com.craisinlord.antarchy.content.item.CloudSharkFinSoupItem; import com.craisinlord.antarchy.content.item.CorneaEarItem; import com.craisinlord.antarchy.content.item.GravityGunItem; import com.craisinlord.antarchy.content.item.MantisClawItem; -import com.craisinlord.antarchy.content.item.MinersDreamItem; import com.craisinlord.antarchy.content.item.DuctTapeBlockItem; import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; +import com.craisinlord.antarchy.content.item.BluestoneDustItem; +import com.craisinlord.antarchy.content.item.CeilingPlacementTooltipBlockItem; +import com.craisinlord.antarchy.content.item.CeilingPlacementTooltipItem; import com.craisinlord.antarchy.content.item.MobComingSoonTooltipItem; import com.craisinlord.antarchy.content.item.MogglesItem; import com.craisinlord.antarchy.content.item.ultimate.UltimateAxeItem; @@ -119,8 +38,6 @@ import com.craisinlord.antarchy.content.item.ultimate.UltimateSwordItem; import com.craisinlord.antarchy.content.item.DiamondMinecartItem; import com.craisinlord.antarchy.content.item.ReverieBottleItem; import com.craisinlord.antarchy.content.item.ScorpionWhipItem; -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; @@ -133,132 +50,21 @@ import com.craisinlord.antarchy.content.item.NightmareSwordItem; import com.craisinlord.antarchy.content.item.OuranwoodBoatOnlyItem; import com.craisinlord.antarchy.content.item.OuranwoodChestBoatItem; import com.craisinlord.antarchy.content.item.RainbowSugarItem; -import com.craisinlord.antarchy.content.worldgen.elythia.CoralSpikeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaBiomeSource; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaRiverCarveFunction; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaFloraFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaLargeTuffBoulderFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestMossyBoulderFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondConfiguration; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaPondFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaSurfaceCoverFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaTuffBoulderFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaUndergroundFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormCaveEntranceFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormSurfaceMoundsFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.BrutalflyCocoonFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.LumenPoolFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.LumenLilyPadFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.LumenStreamFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormTunnelsFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormWarrensFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodCocoonTreeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeConfiguration; -import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeConfiguration; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.TriffidPatchFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynEggPatchFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeConfiguration; -import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugNestFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugSurfaceClusterFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.CloudSeaCalciteFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.LucidAntiwaterPoolFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBiomeSource; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeFeature; -import com.craisinlord.antarchy.content.client.particle.InvertedGeyserBaseParticleOptions; -import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions; -import com.craisinlord.antarchy.content.portal.PermanentPortalType; -import java.util.List; -import java.util.ArrayList; -import java.util.Comparator; -import com.mojang.serialization.MapCodec; -import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; -import net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistryBuilder; -import net.minecraft.advancements.critereon.EntitySubPredicate; -import net.minecraft.core.Holder; -import net.minecraft.core.registries.Registries; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; -import net.minecraft.sounds.SoundEvent; -import net.minecraft.sounds.SoundEvents; -import net.minecraft.world.item.alchemy.Potion; -import net.minecraft.world.item.alchemy.PotionContents; -import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; -import net.minecraft.tags.TagKey; -import net.minecraft.world.damagesource.DamageType; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.MobCategory; -import net.minecraft.world.entity.ai.attributes.Attribute; -import net.minecraft.world.entity.ai.attributes.AttributeSupplier; -import net.minecraft.world.entity.ai.attributes.Attributes; -import net.minecraft.world.entity.animal.Cow; -import net.minecraft.world.entity.animal.Rabbit; -import net.minecraft.world.entity.SpawnPlacementTypes; -import net.minecraft.world.entity.SpawnPlacements; -import net.minecraft.world.entity.npc.Villager; -import net.minecraft.world.entity.monster.Monster; import net.minecraft.world.item.ArmorItem; -import net.minecraft.world.item.ArmorMaterial; import net.minecraft.world.item.BucketItem; -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; import net.minecraft.world.item.Tier; import net.minecraft.world.item.Tiers; -import net.minecraft.world.item.alchemy.Potions; import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.flag.FeatureFlags; import net.minecraft.core.Direction; -import net.minecraft.core.particles.ParticleType; -import net.minecraft.core.particles.SimpleParticleType; -import net.minecraft.util.valueproviders.UniformInt; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.AmethystClusterBlock; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.DropExperienceBlock; -import net.minecraft.world.level.block.GlowLichenBlock; -import net.minecraft.world.level.block.HorizontalDirectionalBlock; -import net.minecraft.world.level.block.LiquidBlock; -import net.minecraft.world.level.block.RotatedPillarBlock; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.VineBlock; -import net.minecraft.world.level.block.entity.BlockEntityType; -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.biome.BiomeSource; -import net.minecraft.world.level.levelgen.DensityFunction; -import net.minecraft.world.level.levelgen.feature.Feature; -import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration; -import net.minecraft.world.level.levelgen.Heightmap; -import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.block.Mirror; -import net.minecraft.world.level.block.Rotation; -import com.craisinlord.antarchy.fabric.AntarchyFabricContent; public final class AntarchyFabricItems { @@ -479,6 +285,18 @@ public final class AntarchyFabricItems { public static final DeferredItem DEEPSLATE_TITANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DEEPSLATE_TITANIUM_ORE, new Item.Properties().rarity(Rarity.UNCOMMON)); + public static final DeferredItem BLUESTONE_DUST = ITEMS.register("bluestone", + () -> new BluestoneDustItem(AntarchyFabricBlocks.BLUESTONE_WIRE.get(), new Item.Properties())); + public static final DeferredItem BLUESTONE_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BLUESTONE_ORE); + public static final DeferredItem BLUESTONE_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BLUESTONE_BLOCK); + public static final DeferredItem BLUESTONE_REPEATER_ITEM = ITEMS.register("bluestone_repeater", + () -> new CeilingPlacementTooltipBlockItem(AntarchyFabricBlocks.BLUESTONE_REPEATER.get(), new Item.Properties())); + public static final DeferredItem BLUESTONE_COMPARATOR_ITEM = ITEMS.register("bluestone_comparator", + () -> new CeilingPlacementTooltipBlockItem(AntarchyFabricBlocks.BLUESTONE_COMPARATOR.get(), new Item.Properties())); + public static final DeferredItem BLUESTONE_TORCH_ITEM = ITEMS.register("bluestone_torch", + () -> new CeilingPlacementTooltipBlockItem(AntarchyFabricBlocks.BLUESTONE_TORCH.get(), new Item.Properties())); + + public static final DeferredItem URANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.URANIUM_BLOCK, new Item.Properties().rarity(Rarity.UNCOMMON)); @@ -781,8 +599,8 @@ public final class AntarchyFabricItems { public static final DeferredItem BLUSH_MOSS_CARPET_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BLUSH_MOSS_CARPET); - public static final DeferredItem DREAM_TORCH_ITEM = ITEMS.register("dream_torch", - () -> new StandingAndWallBlockItem(AntarchyFabricBlocks.DREAM_TORCH.get(), AntarchyFabricBlocks.DREAM_WALL_TORCH.get(), new Item.Properties(), Direction.UP)); + public static final DeferredItem DREAM_TORCH_ITEM = ITEMS.register("dream_torch", + () -> new com.craisinlord.antarchy.content.item.DreamTorchItem(AntarchyFabricBlocks.DREAM_TORCH.get(), AntarchyFabricBlocks.DREAM_WALL_TORCH.get(), AntarchyFabricBlocks.DREAM_CEILING_TORCH.get(), new Item.Properties())); public static final DeferredItem DREAM_LANTERN_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DREAM_LANTERN); @@ -876,7 +694,7 @@ public final class AntarchyFabricItems { public static final DeferredItem MANTIS_CLAW = ITEMS.register("mantis_claw", - () -> new MantisClawItem(Tiers.IRON, new Item.Properties().stacksTo(1).rarity(Rarity.UNCOMMON))); + () -> new MantisClawItem(Tiers.IRON, new Item.Properties().stacksTo(1).durability(50).rarity(Rarity.UNCOMMON))); public static final DeferredItem HERCULES_HORN = ITEMS.registerSimpleItem("hercules_horn", new Item.Properties().rarity(Rarity.UNCOMMON)); diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSounds.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSounds.java index 1fce3bf4..6a95a440 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSounds.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSounds.java @@ -1,258 +1,9 @@ package com.craisinlord.antarchy.fabric.registry; import com.craisinlord.antarchy.Antarchy; -import com.craisinlord.antarchy.compat.infinity.InfinityCompat; -import com.craisinlord.antarchy.compat.infinity.InfinityCompatVersion; -import com.craisinlord.antarchy.config.AntarchySettings; -import com.craisinlord.antarchy.content.AntarchyObjects; -import com.craisinlord.antarchy.content.CreativeTabOrder; -import com.craisinlord.antarchy.content.block.*; -import com.craisinlord.antarchy.content.AntarchySoundEvents; -import com.craisinlord.antarchy.content.item.BloodCrystalArmorItem; -import com.craisinlord.antarchy.content.item.BloodCrystalAppleItem; -import com.craisinlord.antarchy.content.item.BloodCrystalKatanaItem; -import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; -import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; -import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; -import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; -import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity; -import com.craisinlord.antarchy.content.fluid.BileLiquidBlock; -import com.craisinlord.antarchy.content.fluid.LumenLiquidBlock; -import com.craisinlord.antarchy.content.worldgen.ants.BrownAntNestFeature; -import com.craisinlord.antarchy.content.worldgen.ants.RainbowAntNestFeature; -import com.craisinlord.antarchy.content.worldgen.ants.RedAntNestFeature; -import com.craisinlord.antarchy.content.worldgen.ants.TermiteNestFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileCystFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileVeinFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynCreepvineFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynWallAmberMossFeature; -import com.craisinlord.antarchy.content.worldgen.overworld.CornPatchFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.PotentNyxiteFeature; -import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterFluid; -import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterLiquidBlock; -import com.craisinlord.antarchy.fabric.item.DeferredSpawnEggItem; -import com.craisinlord.antarchy.fabric.network.AntarchyFabricNetworking; -import com.craisinlord.antarchy.fabric.registry.DeferredBlock; -import com.craisinlord.antarchy.fabric.registry.DeferredHolder; -import com.craisinlord.antarchy.fabric.registry.DeferredItem; -import com.craisinlord.antarchy.fabric.registry.DeferredRegister; -import com.craisinlord.antarchy.content.effect.DreadMobEffect; -import com.craisinlord.antarchy.content.effect.GrowthMobEffect; -import com.craisinlord.antarchy.content.effect.InvertedMobEffect; -import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect; -import com.craisinlord.antarchy.content.effect.ShrinkMobEffect; -import com.craisinlord.antarchy.content.effect.StinkyMobEffect; -import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.AppleCow; -import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.EnchantedGoldenAppleCow; -import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.GoldenAppleCow; -import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity; -import com.craisinlord.antarchy.content.entity.BedBugEntity; -import com.craisinlord.antarchy.content.entity.ButterflyEntity; -import com.craisinlord.antarchy.content.entity.CaterpillarEntity; -import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; -import com.craisinlord.antarchy.content.entity.DrTrayaurusEntity; -import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; -import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyOrbEntity; -import com.craisinlord.antarchy.content.entity.EasterBunnyEntity; -import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity; -import com.craisinlord.antarchy.content.entity.ReverieEntity; -import com.craisinlord.antarchy.content.entity.MissileSquidEntity; -import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; -import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity; -import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity; -import com.craisinlord.antarchy.content.entity.HushProjectileEntity; -import com.craisinlord.antarchy.content.entity.JumpyBugEntity; -import com.craisinlord.antarchy.content.entity.StinkBugEntity; -import com.craisinlord.antarchy.content.entity.OuranwoodBoatEntity; -import com.craisinlord.antarchy.content.entity.OuranwoodChestBoatEntity; -import com.craisinlord.antarchy.content.entity.AlphaMantisEntity; -import com.craisinlord.antarchy.content.entity.MantisEntity; -import com.craisinlord.antarchy.content.entity.RollyPollyEntity; -import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity; -import com.craisinlord.antarchy.content.entity.EmperorScorpionEntity; -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.OctopusBombEntity; -import com.craisinlord.antarchy.content.entity.MolevoreEntity; -import com.craisinlord.antarchy.content.entity.MolewormEntity; -import com.craisinlord.antarchy.content.entity.BomberEntity; -import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity; -import com.craisinlord.antarchy.content.entity.TriffidEntity; -import com.craisinlord.antarchy.content.entity.WaspEntity; -import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; -import com.craisinlord.antarchy.content.entity.ant.BrownAntEntity; -import com.craisinlord.antarchy.content.entity.ant.RainbowAntEntity; -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.AntimetalBlockItem; -import com.craisinlord.antarchy.fabric.item.AntimetalScaffoldingItem; -import com.craisinlord.antarchy.content.item.CloudSharkFinSoupItem; -import com.craisinlord.antarchy.content.item.CorneaEarItem; -import com.craisinlord.antarchy.content.item.GravityGunItem; -import com.craisinlord.antarchy.content.item.MinersDreamItem; -import com.craisinlord.antarchy.content.item.DuctTapeBlockItem; -import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; -import com.craisinlord.antarchy.content.item.MobComingSoonTooltipItem; -import com.craisinlord.antarchy.content.item.MogglesItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateAxeItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateHoeItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimatePickaxeItem; -import com.craisinlord.antarchy.content.item.ultimate.UtlimateShovelItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateSwordItem; -import com.craisinlord.antarchy.content.item.DiamondMinecartItem; -import com.craisinlord.antarchy.content.item.ReverieBottleItem; -import com.craisinlord.antarchy.content.item.ScorpionWhipItem; -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.SimpleToolTier; -import com.craisinlord.antarchy.content.item.ultimate.UltimateArmorItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateBowItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateCrossbowItem; -import com.craisinlord.antarchy.content.item.NightmareArmorItem; -import com.craisinlord.antarchy.content.item.NightmareSwordItem; -import com.craisinlord.antarchy.content.item.OuranwoodBoatOnlyItem; -import com.craisinlord.antarchy.content.item.OuranwoodChestBoatItem; -import com.craisinlord.antarchy.content.item.RainbowSugarItem; -import com.craisinlord.antarchy.content.worldgen.elythia.CoralSpikeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaBiomeSource; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaRiverCarveFunction; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaFloraFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaLargeTuffBoulderFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestMossyBoulderFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondConfiguration; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaPondFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaSurfaceCoverFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaTuffBoulderFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaUndergroundFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormCaveEntranceFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormSurfaceMoundsFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.BrutalflyCocoonFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.LumenPoolFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.LumenLilyPadFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.LumenStreamFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormTunnelsFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormWarrensFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodCocoonTreeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeConfiguration; -import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeConfiguration; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.TriffidPatchFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynEggPatchFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeConfiguration; -import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugNestFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugSurfaceClusterFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.CloudSeaCalciteFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.LucidAntiwaterPoolFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBiomeSource; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeFeature; -import com.craisinlord.antarchy.content.client.particle.InvertedGeyserBaseParticleOptions; -import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions; -import com.craisinlord.antarchy.content.portal.PermanentPortalType; -import java.util.List; -import java.util.ArrayList; -import java.util.Comparator; -import com.mojang.serialization.MapCodec; -import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; -import net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistryBuilder; -import net.minecraft.advancements.critereon.EntitySubPredicate; -import net.minecraft.core.Holder; import net.minecraft.core.registries.Registries; -import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; -import net.minecraft.sounds.SoundEvents; -import net.minecraft.world.item.alchemy.Potion; -import net.minecraft.world.item.alchemy.PotionContents; -import net.minecraft.world.effect.MobEffect; -import net.minecraft.world.effect.MobEffectInstance; -import net.minecraft.world.effect.MobEffects; -import net.minecraft.tags.TagKey; -import net.minecraft.world.damagesource.DamageType; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.MobCategory; -import net.minecraft.world.entity.ai.attributes.Attribute; -import net.minecraft.world.entity.ai.attributes.AttributeSupplier; -import net.minecraft.world.entity.ai.attributes.Attributes; -import net.minecraft.world.entity.animal.Cow; -import net.minecraft.world.entity.animal.Rabbit; -import net.minecraft.world.entity.SpawnPlacementTypes; -import net.minecraft.world.entity.SpawnPlacements; -import net.minecraft.world.entity.npc.Villager; -import net.minecraft.world.entity.monster.Monster; -import net.minecraft.world.item.ArmorItem; -import net.minecraft.world.item.ArmorMaterial; -import net.minecraft.world.item.BucketItem; -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.Rarity; -import net.minecraft.world.item.StandingAndWallBlockItem; -import net.minecraft.world.food.FoodProperties; -import net.minecraft.world.item.Tier; -import net.minecraft.world.item.Tiers; -import net.minecraft.world.item.alchemy.Potions; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.flag.FeatureFlags; -import net.minecraft.core.Direction; -import net.minecraft.core.particles.ParticleType; -import net.minecraft.core.particles.SimpleParticleType; -import net.minecraft.util.valueproviders.UniformInt; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.AmethystClusterBlock; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.DropExperienceBlock; -import net.minecraft.world.level.block.GlowLichenBlock; -import net.minecraft.world.level.block.HorizontalDirectionalBlock; -import net.minecraft.world.level.block.LiquidBlock; -import net.minecraft.world.level.block.RotatedPillarBlock; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.VineBlock; -import net.minecraft.world.level.block.entity.BlockEntityType; -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.biome.BiomeSource; -import net.minecraft.world.level.levelgen.DensityFunction; -import net.minecraft.world.level.levelgen.feature.Feature; -import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration; -import net.minecraft.world.level.levelgen.Heightmap; -import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.block.Mirror; -import net.minecraft.world.level.block.Rotation; -import com.craisinlord.antarchy.fabric.AntarchyFabricContent; public final class AntarchyFabricSounds { diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSpawnPlacements.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSpawnPlacements.java index aeb5ecd7..2fee8c4a 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSpawnPlacements.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSpawnPlacements.java @@ -1,258 +1,33 @@ package com.craisinlord.antarchy.fabric.registry; -import com.craisinlord.antarchy.Antarchy; -import com.craisinlord.antarchy.compat.infinity.InfinityCompat; -import com.craisinlord.antarchy.compat.infinity.InfinityCompatVersion; -import com.craisinlord.antarchy.config.AntarchySettings; -import com.craisinlord.antarchy.content.AntarchyObjects; -import com.craisinlord.antarchy.content.CreativeTabOrder; -import com.craisinlord.antarchy.content.block.*; -import com.craisinlord.antarchy.content.AntarchySoundEvents; -import com.craisinlord.antarchy.content.item.BloodCrystalArmorItem; -import com.craisinlord.antarchy.content.item.BloodCrystalAppleItem; -import com.craisinlord.antarchy.content.item.BloodCrystalKatanaItem; -import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; -import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; -import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; -import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; -import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity; -import com.craisinlord.antarchy.content.fluid.BileLiquidBlock; -import com.craisinlord.antarchy.content.fluid.LumenLiquidBlock; -import com.craisinlord.antarchy.content.worldgen.ants.BrownAntNestFeature; -import com.craisinlord.antarchy.content.worldgen.ants.RainbowAntNestFeature; -import com.craisinlord.antarchy.content.worldgen.ants.RedAntNestFeature; -import com.craisinlord.antarchy.content.worldgen.ants.TermiteNestFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileCystFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileVeinFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynCreepvineFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynWallAmberMossFeature; -import com.craisinlord.antarchy.content.worldgen.overworld.CornPatchFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.PotentNyxiteFeature; -import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterFluid; -import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterLiquidBlock; -import com.craisinlord.antarchy.fabric.item.DeferredSpawnEggItem; -import com.craisinlord.antarchy.fabric.network.AntarchyFabricNetworking; -import com.craisinlord.antarchy.fabric.registry.DeferredBlock; -import com.craisinlord.antarchy.fabric.registry.DeferredHolder; -import com.craisinlord.antarchy.fabric.registry.DeferredItem; -import com.craisinlord.antarchy.fabric.registry.DeferredRegister; -import com.craisinlord.antarchy.content.effect.DreadMobEffect; -import com.craisinlord.antarchy.content.effect.GrowthMobEffect; -import com.craisinlord.antarchy.content.effect.InvertedMobEffect; -import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect; -import com.craisinlord.antarchy.content.effect.ShrinkMobEffect; -import com.craisinlord.antarchy.content.effect.StinkyMobEffect; -import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.AppleCow; -import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.EnchantedGoldenAppleCow; -import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.GoldenAppleCow; import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity; import com.craisinlord.antarchy.content.entity.BedBugEntity; import com.craisinlord.antarchy.content.entity.ButterflyEntity; import com.craisinlord.antarchy.content.entity.CaterpillarEntity; -import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; -import com.craisinlord.antarchy.content.entity.DrTrayaurusEntity; -import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; -import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyOrbEntity; -import com.craisinlord.antarchy.content.entity.EasterBunnyEntity; import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity; import com.craisinlord.antarchy.content.entity.ReverieEntity; import com.craisinlord.antarchy.content.entity.MissileSquidEntity; import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; -import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity; -import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity; -import com.craisinlord.antarchy.content.entity.HushProjectileEntity; import com.craisinlord.antarchy.content.entity.JumpyBugEntity; import com.craisinlord.antarchy.content.entity.StinkBugEntity; -import com.craisinlord.antarchy.content.entity.OuranwoodBoatEntity; -import com.craisinlord.antarchy.content.entity.OuranwoodChestBoatEntity; import com.craisinlord.antarchy.content.entity.AlphaMantisEntity; import com.craisinlord.antarchy.content.entity.MantisEntity; -import com.craisinlord.antarchy.content.entity.RollyPollyEntity; import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity; import com.craisinlord.antarchy.content.entity.EmperorScorpionEntity; 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.OctopusBombEntity; import com.craisinlord.antarchy.content.entity.MolevoreEntity; import com.craisinlord.antarchy.content.entity.MolewormEntity; import com.craisinlord.antarchy.content.entity.BomberEntity; -import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity; -import com.craisinlord.antarchy.content.entity.TriffidEntity; import com.craisinlord.antarchy.content.entity.WaspEntity; -import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; -import com.craisinlord.antarchy.content.entity.ant.BrownAntEntity; -import com.craisinlord.antarchy.content.entity.ant.RainbowAntEntity; -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.AntimetalBlockItem; -import com.craisinlord.antarchy.fabric.item.AntimetalScaffoldingItem; -import com.craisinlord.antarchy.content.item.CloudSharkFinSoupItem; -import com.craisinlord.antarchy.content.item.CorneaEarItem; -import com.craisinlord.antarchy.content.item.GravityGunItem; -import com.craisinlord.antarchy.content.item.MinersDreamItem; -import com.craisinlord.antarchy.content.item.DuctTapeBlockItem; -import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; -import com.craisinlord.antarchy.content.item.MobComingSoonTooltipItem; -import com.craisinlord.antarchy.content.item.MogglesItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateAxeItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateHoeItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimatePickaxeItem; -import com.craisinlord.antarchy.content.item.ultimate.UtlimateShovelItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateSwordItem; -import com.craisinlord.antarchy.content.item.DiamondMinecartItem; -import com.craisinlord.antarchy.content.item.ReverieBottleItem; -import com.craisinlord.antarchy.content.item.ScorpionWhipItem; -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.SimpleToolTier; -import com.craisinlord.antarchy.content.item.ultimate.UltimateArmorItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateBowItem; -import com.craisinlord.antarchy.content.item.ultimate.UltimateCrossbowItem; -import com.craisinlord.antarchy.content.item.NightmareArmorItem; -import com.craisinlord.antarchy.content.item.NightmareSwordItem; -import com.craisinlord.antarchy.content.item.OuranwoodBoatOnlyItem; -import com.craisinlord.antarchy.content.item.OuranwoodChestBoatItem; -import com.craisinlord.antarchy.content.item.RainbowSugarItem; -import com.craisinlord.antarchy.content.worldgen.elythia.CoralSpikeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaBiomeSource; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaRiverCarveFunction; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaFloraFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaLargeTuffBoulderFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestMossyBoulderFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondConfiguration; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaPondFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaSurfaceCoverFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaTuffBoulderFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaUndergroundFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormCaveEntranceFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormSurfaceMoundsFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.BrutalflyCocoonFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.LumenPoolFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.LumenLilyPadFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.LumenStreamFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormTunnelsFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.MolewormWarrensFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodCocoonTreeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeConfiguration; -import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeConfiguration; -import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeFeature; -import com.craisinlord.antarchy.content.worldgen.elythia.TriffidPatchFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynEggPatchFeature; -import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeConfiguration; -import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugNestFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugSurfaceClusterFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.CloudSeaCalciteFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.LucidAntiwaterPoolFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBiomeSource; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsFeature; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeConfiguration; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeFeature; -import com.craisinlord.antarchy.content.client.particle.InvertedGeyserBaseParticleOptions; -import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions; -import com.craisinlord.antarchy.content.portal.PermanentPortalType; -import java.util.List; -import java.util.ArrayList; -import java.util.Comparator; -import com.mojang.serialization.MapCodec; -import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; -import net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistryBuilder; -import net.minecraft.advancements.critereon.EntitySubPredicate; -import net.minecraft.core.Holder; -import net.minecraft.core.registries.Registries; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.sounds.SoundEvent; -import net.minecraft.sounds.SoundEvents; -import net.minecraft.world.item.alchemy.Potion; -import net.minecraft.world.item.alchemy.PotionContents; -import net.minecraft.world.effect.MobEffect; -import net.minecraft.world.effect.MobEffectInstance; -import net.minecraft.world.effect.MobEffects; -import net.minecraft.tags.TagKey; -import net.minecraft.world.damagesource.DamageType; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.MobCategory; -import net.minecraft.world.entity.ai.attributes.Attribute; -import net.minecraft.world.entity.ai.attributes.AttributeSupplier; -import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.animal.Cow; -import net.minecraft.world.entity.animal.Rabbit; import net.minecraft.world.entity.SpawnPlacementTypes; import net.minecraft.world.entity.SpawnPlacements; -import net.minecraft.world.entity.npc.Villager; import net.minecraft.world.entity.monster.Monster; -import net.minecraft.world.item.ArmorItem; -import net.minecraft.world.item.ArmorMaterial; -import net.minecraft.world.item.BucketItem; -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.Rarity; -import net.minecraft.world.item.StandingAndWallBlockItem; -import net.minecraft.world.food.FoodProperties; -import net.minecraft.world.item.Tier; -import net.minecraft.world.item.Tiers; -import net.minecraft.world.item.alchemy.Potions; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.flag.FeatureFlags; -import net.minecraft.core.Direction; -import net.minecraft.core.particles.ParticleType; -import net.minecraft.core.particles.SimpleParticleType; -import net.minecraft.util.valueproviders.UniformInt; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.AmethystClusterBlock; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.DropExperienceBlock; -import net.minecraft.world.level.block.GlowLichenBlock; -import net.minecraft.world.level.block.HorizontalDirectionalBlock; -import net.minecraft.world.level.block.LiquidBlock; -import net.minecraft.world.level.block.RotatedPillarBlock; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.VineBlock; -import net.minecraft.world.level.block.entity.BlockEntityType; -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.biome.BiomeSource; -import net.minecraft.world.level.levelgen.DensityFunction; -import net.minecraft.world.level.levelgen.feature.Feature; -import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration; import net.minecraft.world.level.levelgen.Heightmap; -import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.block.Mirror; -import net.minecraft.world.level.block.Rotation; -import com.craisinlord.antarchy.fabric.AntarchyFabricContent; public final class AntarchyFabricSpawnPlacements { diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMiscConfig.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMiscConfig.java index aae5a0dc..30bc441d 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMiscConfig.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMiscConfig.java @@ -12,8 +12,8 @@ public final class AntarchyMiscConfig { private static final ModConfigSpec.BooleanValue DREAM_SAND_ENABLED; private static final ModConfigSpec.DoubleValue DREAM_SAND_JUMP_VELOCITY_MULTIPLIER; private static final ModConfigSpec.DoubleValue DREAM_SAND_GRAVITY_MULTIPLIER; - private static final ModConfigSpec.DoubleValue DREAM_SAND_FALL_DAMAGE_MULTIPLIER; private static final ModConfigSpec.DoubleValue DREAM_SAND_EFFECT_DURATION_SECONDS; + private static final ModConfigSpec.DoubleValue DREAM_SAND_FALL_DAMAGE_MULTIPLIER; // Ichor private static final ModConfigSpec.BooleanValue ICHOR_WITHER_ENABLED; @@ -45,8 +45,8 @@ public final class AntarchyMiscConfig { // World / misc toggles private static final ModConfigSpec.BooleanValue DUPLICATOR_TREE_ENABLED; - private static final ModConfigSpec.BooleanValue GLOWING_TORCHFLOWERS; private static final ModConfigSpec.BooleanValue GLOW_VINES_UNDER_LEAVES; + private static final ModConfigSpec.BooleanValue GLOWING_TORCHFLOWERS; private static final ModConfigSpec.BooleanValue SWING_THROUGH_GRASS_ENABLED; private static final ModConfigSpec.BooleanValue FABRIC_KEYBINDING_CONFLICT_FIX_ENABLED; private static final ModConfigSpec.BooleanValue EXPERIMENTAL_SETTINGS_POPUP_DISABLED; @@ -71,8 +71,8 @@ public final class AntarchyMiscConfig { DREAM_SAND_ENABLED = b.comment("If true, jumping from dream sand applies temporary low gravity until solid ground is touched.").define("enabled", true); DREAM_SAND_JUMP_VELOCITY_MULTIPLIER = b.comment("Multiplier applied to upward jump velocity when leaving dream sand.") .defineInRange("jumpVelocityMultiplier", 1.3D, 0.0D, 16.0D); DREAM_SAND_GRAVITY_MULTIPLIER = b.comment("Multiplier applied to downward velocity while low gravity is active.") .defineInRange("gravityMultiplier", 0.45D, 0.0D, 1.0D); - DREAM_SAND_FALL_DAMAGE_MULTIPLIER = b.comment("Multiplier applied to fall damage during the low-gravity phase.") .defineInRange("fallDamageMultiplier", 0.35D, 0.0D, 1.0D); DREAM_SAND_EFFECT_DURATION_SECONDS = b.comment("Seconds the low-gravity effect remains active after leaving dream sand.") .defineInRange("effectDurationSeconds", 7.0D, 0.0D, 60.0D); + DREAM_SAND_FALL_DAMAGE_MULTIPLIER = b.comment("Multiplier applied to fall damage after dream sand low gravity.").defineInRange("fallDamageMultiplier", 0.4D, 0.0D, 16.0D); b.pop(); @@ -139,8 +139,8 @@ public final class AntarchyMiscConfig { b.push("world"); DUPLICATOR_TREE_ENABLED = b.comment("If false, duplicator trees do not generate and duplicator saplings produce nothing.").define("duplicatorTreeEnabled", true); - GLOWING_TORCHFLOWERS = b.comment("Whether fully-grown torchflower blocks emit light.") .define("glowingTorchflowers", true); GLOW_VINES_UNDER_LEAVES = b.comment("Whether glow vines can be placed and survive when attached under leaf blocks.") .define("glowVinesUnderLeaves", true); + GLOWING_TORCHFLOWERS = b.comment("If true, torchflowers use the glowing behavior.").define("glowingTorchflowers", true); SWING_THROUGH_GRASS_ENABLED = b.comment("If true, empty collision plants like grass do not block melee target picking.") .define("swingThroughGrassEnabled", true); FABRIC_KEYBINDING_CONFLICT_FIX_ENABLED = b.define("fabricKeybindingConflictFixEnabled", true); EXPERIMENTAL_SETTINGS_POPUP_DISABLED = b.define("experimentalSettingsPopupDisabled", true); @@ -157,14 +157,14 @@ public final class AntarchyMiscConfig { static boolean dreamSandEnabled() { return DREAM_SAND_ENABLED.get(); } static double dreamSandJumpVelocityMultiplier() { return DREAM_SAND_JUMP_VELOCITY_MULTIPLIER.get(); } static double dreamSandGravityMultiplier() { return DREAM_SAND_GRAVITY_MULTIPLIER.get(); } - static double dreamSandFallDamageMultiplier() { return DREAM_SAND_FALL_DAMAGE_MULTIPLIER.get(); } static double dreamSandEffectDurationSeconds() { return DREAM_SAND_EFFECT_DURATION_SECONDS.get(); } + static double dreamSandFallDamageMultiplier() { return DREAM_SAND_FALL_DAMAGE_MULTIPLIER.get(); } static boolean ichorWitherEnabled() { return ICHOR_WITHER_ENABLED.get(); } static boolean duplicatorTreeEnabled() { return DUPLICATOR_TREE_ENABLED.get(); } - static boolean glowingTorchflowers() { return GLOWING_TORCHFLOWERS.get(); } static boolean glowVinesUnderLeaves() { return GLOW_VINES_UNDER_LEAVES.get(); } + static boolean glowingTorchflowers() { return GLOWING_TORCHFLOWERS.get(); } static boolean swingThroughGrassEnabled() { return SWING_THROUGH_GRASS_ENABLED.get(); } static boolean fabricKeybindingConflictFixEnabled() { return FABRIC_KEYBINDING_CONFLICT_FIX_ENABLED.get(); } static boolean experimentalSettingsPopupDisabled() { return EXPERIMENTAL_SETTINGS_POPUP_DISABLED.get(); } 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 631b93c5..434ff576 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMobsConfig.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMobsConfig.java @@ -106,9 +106,9 @@ public final class AntarchyMobsConfig { private static final ModConfigSpec.DoubleValue ROLLY_POLLY_HEALTH; private static final ModConfigSpec.DoubleValue ROLLY_POLLY_MOVEMENT_SPEED; private static final ModConfigSpec.DoubleValue ROLLY_POLLY_ROLL_SPEED_MULTIPLIER; - private static final ModConfigSpec.DoubleValue ROLLY_POLLY_TUMBLE_DAMAGE; private static final ModConfigSpec.IntValue ROLLY_POLLY_TAME_CHANCE; private static final ModConfigSpec.DoubleValue ROLLY_POLLY_BOWLING_DAMAGE; + private static final ModConfigSpec.DoubleValue ROLLY_POLLY_TUMBLE_DAMAGE; private static final ModConfigSpec.DoubleValue ROLLY_POLLY_BOWLING_KNOCKBACK; private static final ModConfigSpec.DoubleValue ROLLY_POLLY_ARMOR; private static final ModConfigSpec.DoubleValue ROLLY_POLLY_ROLLED_ARMOR_BONUS; @@ -185,13 +185,13 @@ public final class AntarchyMobsConfig { 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 TORETERROR_PROJECTILE_DAMAGE_MULTIPLIER; + private static final ModConfigSpec.DoubleValue TORETERROR_RANGED_WATER_BOMB_CHANCE; + private static final ModConfigSpec.DoubleValue WATER_CANNON_COOLDOWN_SECONDS; 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; // Creeping Horror @@ -377,7 +377,7 @@ public final class AntarchyMobsConfig { b.push("jumpyBug"); JUMPY_BUG_HEALTH = b.comment("Base max health.").defineInRange("health", 12.0D, 1.0D, 32768.0D); JUMPY_BUG_POUNCE_DAMAGE = b.comment("Damage dealt on a successful pounce latch.").defineInRange("pounceDamage", 2.0D, 0.0D, 1024.0D); - JUMPY_BUG_LATCH_DAMAGE = b.comment("Damage dealt per bite while latched.").defineInRange("latchDamage", 1.0D, 0.0D, 1024.0D); + JUMPY_BUG_LATCH_DAMAGE = b.comment("Damage dealt while latched onto a target.").defineInRange("latchDamage", 2.0D, 0.0D, 1024.0D); JUMPY_BUG_CAMOUFLAGE_ALPHA = b.comment("Renderer alpha while camouflaged.").defineInRange("camouflageAlpha", 0.18D, 0.01D, 1.0D); b.pop(); @@ -387,7 +387,7 @@ public final class AntarchyMobsConfig { b.push("kraken"); KRAKEN_HEALTH = b.comment("Base max health.") .defineInRange("health", 1500.0D, 1.0D, 32768.0D); KRAKEN_ATTACK_DAMAGE = b.comment("Base attack damage.") .defineInRange("attackDamage", 45.0D, 0.0D, 1024.0D); - KRAKEN_PROJECTILE_DAMAGE_TAKEN_MULTIPLIER = b.comment("Damage multiplier from projectiles. 0.5 means 50% damage.") .defineInRange("projectileDamageTakenMultiplier", 0.5D, 0.0D, 10.0D); + KRAKEN_PROJECTILE_DAMAGE_TAKEN_MULTIPLIER = b.comment("Multiplier applied to projectile damage taken by the Kraken.").defineInRange("projectileDamageTakenMultiplier", 0.5D, 0.0D, 16.0D); KRAKEN_SQUID_SPAWN_ENABLED = b.comment("If true, a player killing a Missile Squid has a 1/100 chance to spawn a single Kraken nearby.") .define("squidSpawnEnabled", true); KRAKEN_MASS_SPAWN_ENABLED = b.comment("If true, a player killing a Missile Squid has a 1/500 chance to spawn 10 Krakens. Independent from the single spawn.").define("massSpawnEnabled", true); KRAKEN_REQUIRE_BAD_OMEN_TO_SUMMON = b.comment("If true, the killer must have Bad Omen to summon a single Kraken; chance scales with Bad Omen level. Mass spawn is unaffected by level but still requires Bad Omen when this is on.").define("requireBadOmenToSummon", true); @@ -432,9 +432,9 @@ public final class AntarchyMobsConfig { ROLLY_POLLY_HEALTH = b.comment("Base max health.") .defineInRange("health", 25.0D, 1.0D, 32768.0D); ROLLY_POLLY_MOVEMENT_SPEED = b.comment("Base movement speed.") .defineInRange("movementSpeed", 0.3D, 0.0D, 10.0D); ROLLY_POLLY_ROLL_SPEED_MULTIPLIER = b.comment("Speed multiplier while rolled up.") .defineInRange("rollSpeedMultiplier", 2.2D, 0.1D, 20.0D); - ROLLY_POLLY_TUMBLE_DAMAGE = b.comment("Unused (riding removed). Retained for config compatibility.") .defineInRange("tumbleDamage", 1.0D, 0.0D, 1024.0D); ROLLY_POLLY_TAME_CHANCE = b.comment("Taming succeeds with a 1-in-N chance per food item.") .defineInRange("tameChance", 3, 1, 100); ROLLY_POLLY_BOWLING_DAMAGE = b.comment("Damage dealt by a tamed rolly polly's rolling bowling attack.") .defineInRange("bowlingDamage", 3.0D, 0.0D, 1024.0D); + ROLLY_POLLY_TUMBLE_DAMAGE = b.comment("Damage dealt by a tumbling rolly polly impact.").defineInRange("tumbleDamage", 3.0D, 0.0D, 1024.0D); ROLLY_POLLY_BOWLING_KNOCKBACK = b.comment("Knockback strength of a tamed rolly polly's rolling bowling attack.") .defineInRange("bowlingKnockback", 0.8D, 0.0D, 20.0D); ROLLY_POLLY_ARMOR = b.comment("Base armor value.") .defineInRange("armor", 2.0D, 0.0D, 100.0D); ROLLY_POLLY_ROLLED_ARMOR_BONUS = b.comment("Additional armor gained while rolled up.") .defineInRange("rolledArmorBonus", 16.0D, 0.0D, 100.0D); @@ -477,7 +477,7 @@ public final class AntarchyMobsConfig { REVERIE_NOTICE_DURATION_TICKS = b.comment("Ticks the Reverie watches a player before becoming bound.") .defineInRange("noticeDurationTicks", 20, 1, 200); REVERIE_INTEREST_DURATION_TICKS = b.comment("Ticks the Reverie stays interested after a color/state change.") .defineInRange("interestDurationTicks", 360, 20, 7200); REVERIE_REBIND_COOLDOWN_TICKS = b.comment("Ticks the Reverie waits after unbinding before it can bind again.") .defineInRange("rebindCooldownTicks", 100, 0, 24000); - REVERIE_DAMAGE_REACTION_DURATION_TICKS = b.comment("Ticks the Reverie stays in its hurt warning reaction after being damaged.") .defineInRange("damageReactionDurationTicks", 40, 1, 400); + REVERIE_DAMAGE_REACTION_DURATION_TICKS = b.comment("Ticks the Reverie remains in its damage reaction state.").defineInRange("damageReactionDurationTicks", 60, 0, 24000); REVERIE_DANGEROUS_FALL_DISTANCE = b.comment("Minimum fall distance before the Reverie considers its player in danger. Vanilla fall damage starts at 3.").defineInRange("dangerousFallDistance", 3.0D, 0.0D, 64.0D); REVERIE_DANGEROUS_FALL_SPEED = b.comment("Minimum vertical speed before a dangerous fall triggers purple protection.") .defineInRange("dangerousFallSpeed", 0.18D, 0.0D, 4.0D); REVERIE_WARNING_THREAT_RADIUS = b.comment("Horizontal scan radius for hostiles that trigger red warning mode.") .defineInRange("warningThreatRadius", 10.0D, 1.0D, 64.0D); @@ -604,13 +604,13 @@ public final class AntarchyMobsConfig { 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); TORETERROR_PROJECTILE_DAMAGE_MULTIPLIER = b.comment("Damage multiplier applied to projectile hits on the Toreterror (0.5 = half damage).").defineInRange("projectileDamageMultiplier", 0.5D, 0.0D, 1.0D); + TORETERROR_RANGED_WATER_BOMB_CHANCE = b.comment("Chance each ranged attack cycle launches a water bomb.").defineInRange("rangedWaterBombChance", 0.35D, 0.0D, 1.0D); + WATER_CANNON_COOLDOWN_SECONDS = b.comment("Cooldown between water cannon uses, in seconds.").defineInRange("waterCannonCooldownSeconds", 1.5D, 0.0D, 60.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(); @@ -691,9 +691,9 @@ public final class AntarchyMobsConfig { static double rollyPollyHealth() { return ROLLY_POLLY_HEALTH.get(); } static double rollyPollyMovementSpeed() { return ROLLY_POLLY_MOVEMENT_SPEED.get(); } static double rollyPollyRollSpeedMultiplier() { return ROLLY_POLLY_ROLL_SPEED_MULTIPLIER.get(); } - static double rollyPollyTumbleDamage() { return ROLLY_POLLY_TUMBLE_DAMAGE.get(); } static int rollyPollyTameChance() { return ROLLY_POLLY_TAME_CHANCE.get(); } static double rollyPollyBowlingDamage() { return ROLLY_POLLY_BOWLING_DAMAGE.get(); } + static double rollyPollyTumbleDamage() { return ROLLY_POLLY_TUMBLE_DAMAGE.get(); } static double rollyPollyBowlingKnockback() { return ROLLY_POLLY_BOWLING_KNOCKBACK.get(); } static double rollyPollyArmor() { return ROLLY_POLLY_ARMOR.get(); } static double rollyPollyRolledArmorBonus() { return ROLLY_POLLY_ROLLED_ARMOR_BONUS.get(); } @@ -751,13 +751,13 @@ public final class AntarchyMobsConfig { 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 toreterrorProjectileDamageMultiplier() { return TORETERROR_PROJECTILE_DAMAGE_MULTIPLIER.get(); } + static double toreterrorRangedWaterBombChance() { return TORETERROR_RANGED_WATER_BOMB_CHANCE.get(); } + static double waterCannonCooldownSeconds() { return WATER_CANNON_COOLDOWN_SECONDS.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(); } 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 c098d1d1..1933b975 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java @@ -3,6 +3,7 @@ package com.craisinlord.antarchy.neoforge; import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.compat.infinity.InfinityCompat; import com.craisinlord.antarchy.compat.infinity.InfinityCompatVersion; +import com.craisinlord.antarchy.content.AntarchyGameRules; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.item.BloodCrystalKatanaItem; @@ -16,7 +17,9 @@ import net.neoforged.fml.ModContainer; import net.neoforged.fml.ModList; import net.neoforged.fml.common.Mod; import net.neoforged.neoforge.network.PacketDistributor; -import net.minecraft.world.level.block.Blocks; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; @Mod(Antarchy.MODID) @@ -25,6 +28,7 @@ public class AntarchyNeoforge { public AntarchyNeoforge(IEventBus modEventBus, ModContainer modContainer) { modEventBusTempHolder = modEventBus; + bootstrapGameRules(); AntarchyConfigModuleNeoforge.init(modContainer); AntarchySoundEvents.bind( AntarchyNeoforgeSounds.SQUIDZOOKA_FIRE, @@ -214,7 +218,30 @@ public class AntarchyNeoforge { Antarchy.init(); } + @SuppressWarnings("unchecked") + private static void bootstrapGameRules() { + AntarchyGameRules.bootstrap((name, category, defaultValue) -> { + try { + Method create = net.minecraft.world.level.GameRules.BooleanValue.class.getDeclaredMethod("create", boolean.class); + create.setAccessible(true); + net.minecraft.world.level.GameRules.Type type = + (net.minecraft.world.level.GameRules.Type) create.invoke(null, defaultValue); + Method register = net.minecraft.world.level.GameRules.class.getDeclaredMethod( + "register", + String.class, + net.minecraft.world.level.GameRules.Category.class, + net.minecraft.world.level.GameRules.Type.class + ); + register.setAccessible(true); + return (net.minecraft.world.level.GameRules.Key) register.invoke(null, name, category, type); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { + throw new IllegalStateException("Failed to register boolean gamerule " + name, e); + } + }); + } + private static void bindCommonObjects() { + com.craisinlord.antarchy.content.entity.UpwardFallingBlockEntity.TYPE = AntarchyNeoforgeEntites.UPWARD_FALLING_BLOCK; PermanentPortalType.bindBlocks( () -> AntarchyNeoforgeBlocks.MOSSY_OURANWOOD_WOOD.get(), () -> AntarchyNeoforgeBlocks.ELYTHIA_PORTAL.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 7c29a83a..e6bf5650 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyToolsConfig.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyToolsConfig.java @@ -100,12 +100,12 @@ public final class AntarchyToolsConfig { private static final ModConfigSpec.DoubleValue SCORPION_WHIP_REACH_BONUS; private static final ModConfigSpec.IntValue SCORPION_WHIP_POISON_DURATION_TICKS; private static final ModConfigSpec.DoubleValue SCORPION_WHIP_TETHER_MAX_RANGE; - private static final ModConfigSpec.IntValue SCORPION_WHIP_REEL_COOLDOWN_TICKS; private static final ModConfigSpec.DoubleValue SCORPION_WHIP_SNAP_BONUS_DAMAGE; - private static final ModConfigSpec.IntValue SCORPION_WHIP_SNAP_COOLDOWN_TICKS; private static final ModConfigSpec.DoubleValue SCORPION_WHIP_PULL_STRENGTH; private static final ModConfigSpec.DoubleValue SCORPION_WHIP_HEAVY_PULL_MULTIPLIER; private static final ModConfigSpec.DoubleValue SCORPION_WHIP_SELF_PULL_MULTIPLIER; + private static final ModConfigSpec.IntValue SCORPION_WHIP_REEL_COOLDOWN_TICKS; + private static final ModConfigSpec.IntValue SCORPION_WHIP_SNAP_COOLDOWN_TICKS; private static final ModConfigSpec.IntValue BLOOD_CRYSTAL_KATANA_ATTACK_DAMAGE; private static final ModConfigSpec.DoubleValue BLOOD_CRYSTAL_KATANA_LAUNCH_STRENGTH; private static final ModConfigSpec.IntValue BLOOD_CRYSTAL_KATANA_TRAIL_DURATION_TICKS; @@ -122,8 +122,8 @@ public final class AntarchyToolsConfig { private static final ModConfigSpec.DoubleValue NIGHTMARE_LEGGINGS_ARMOR_TOUGHNESS; private static final ModConfigSpec.DoubleValue NIGHTMARE_BOOTS_ARMOR_TOUGHNESS; private static final ModConfigSpec.DoubleValue NIGHTMARE_ARMOR_KNOCKBACK_RESISTANCE; - private static final ModConfigSpec.DoubleValue NIGHTMARE_ARMOR_DREAD_AURA_RANGE_PER_PIECE; private static final ModConfigSpec.DoubleValue PRIMORDIAL_ARMOR_KNOCKBACK_PER_PIECE; + private static final ModConfigSpec.DoubleValue NIGHTMARE_ARMOR_DREAD_AURA_RANGE_PER_PIECE; private static final ModConfigSpec.DoubleValue NIGHTMARE_SWORD_BASE_DAMAGE; private static final ModConfigSpec.DoubleValue NIGHTMARE_SWORD_ATTACK_SPEED; private static final ModConfigSpec.DoubleValue NIGHTMARE_SWORD_SCALING_FACTOR; @@ -212,11 +212,11 @@ public final class AntarchyToolsConfig { private static final ModConfigSpec.IntValue AMERICAN_REGENERATION_AMPLIFIER; // Moggles - - private static final ModConfigSpec.IntValue MOGGLES_VISION_RADIUS; + private static final ModConfigSpec.DoubleValue MOGGLES_VISION_RADIUS; private static final ModConfigSpec.IntValue MOGGLES_VISION_MAX_LIGHT; private static final ModConfigSpec.DoubleValue MOGGLES_VISION_ALPHA; + static { ModConfigSpec.Builder b = new ModConfigSpec.Builder(); @@ -346,12 +346,12 @@ public final class AntarchyToolsConfig { 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); SCORPION_WHIP_POISON_DURATION_TICKS = b.comment("Poison duration applied on lash.").defineInRange("poisonDurationTicks", 100, 0, 20000); SCORPION_WHIP_TETHER_MAX_RANGE = b.comment("Maximum tether distance before it breaks.").defineInRange("tetherMaxRange", 10.0D, 0.0D, 128.0D); - SCORPION_WHIP_REEL_COOLDOWN_TICKS = b.comment("Cooldown in ticks between reel pulls.").defineInRange("reelCooldownTicks", 10, 0, 20000); SCORPION_WHIP_SNAP_BONUS_DAMAGE = b.comment("Bonus damage dealt when snapping the tether free.").defineInRange("snapBonusDamage", 6.0D, 0.0D, 4096.0D); - SCORPION_WHIP_SNAP_COOLDOWN_TICKS = b.comment("Cooldown in ticks after a snap release.").defineInRange("snapCooldownTicks", 30, 0, 20000); SCORPION_WHIP_PULL_STRENGTH = b.comment("Pull strength applied to normal tethered targets.").defineInRange("pullStrength", 0.75D, 0.0D, 8.0D); SCORPION_WHIP_HEAVY_PULL_MULTIPLIER = b.comment("Reduced pull strength applied to heavy targets.").defineInRange("heavyPullMultiplier", 0.25D, 0.0D, 8.0D); SCORPION_WHIP_SELF_PULL_MULTIPLIER = b.comment("Self-pull strength toward heavy tethered targets.").defineInRange("selfPullMultiplier", 0.45D, 0.0D, 8.0D); + SCORPION_WHIP_REEL_COOLDOWN_TICKS = b.comment("Cooldown after reeling with the whip, in ticks.").defineInRange("reelCooldownTicks", 10, 0, 72000); + SCORPION_WHIP_SNAP_COOLDOWN_TICKS = b.comment("Cooldown after snapping the whip, in ticks.").defineInRange("snapCooldownTicks", 30, 0, 72000); b.pop(); b.push("bloodCrystalKatana"); @@ -373,13 +373,8 @@ public final class AntarchyToolsConfig { NIGHTMARE_LEGGINGS_ARMOR_TOUGHNESS = b.comment("Armor toughness of the Nightmare Leggings.") .defineInRange("leggingsToughness", 3.0D, 0.0D, 100.0D); NIGHTMARE_BOOTS_ARMOR_TOUGHNESS = b.comment("Armor toughness of the Nightmare Boots.") .defineInRange("bootsToughness", 3.0D, 0.0D, 100.0D); NIGHTMARE_ARMOR_KNOCKBACK_RESISTANCE = b.comment("Knockback resistance granted by each Nightmare Armor piece.") .defineInRange("knockbackResistance", 0.1D, 0.0D, 1.0D); - NIGHTMARE_ARMOR_DREAD_AURA_RANGE_PER_PIECE = b - .comment( - "Dread Aura radius added per Nightmare Armor piece worn.", - "Full set (4 pieces) gives 5.0 blocks by default." - ) - .defineInRange("dreadAuraRangePerPiece", 1.25D, 0.0D, 64.0D); PRIMORDIAL_ARMOR_KNOCKBACK_PER_PIECE = b.comment("Attack knockback added by each Primordial Armor piece.") .defineInRange("primordialArmorKnockbackPerPiece", 0.5D, 0.0D, 16.0D); + NIGHTMARE_ARMOR_DREAD_AURA_RANGE_PER_PIECE = b.comment("Additional Dread aura range added by each Nightmare armor piece.").defineInRange("dreadAuraRangePerPiece", 2.0D, 0.0D, 64.0D); b.pop(); b.push("nightmareSword"); @@ -531,9 +526,9 @@ public final class AntarchyToolsConfig { b.pop(); b.push("moggles"); - MOGGLES_VISION_RADIUS = b.comment("Radius in blocks of the see-through effect (cube side = 2r+1).").defineInRange("visionRadius", 2, 1, 16); - MOGGLES_VISION_MAX_LIGHT = b.comment("Maximum block light level where Moggles vision activates.") .defineInRange("visionMaxLight", 7, 0, 15); - MOGGLES_VISION_ALPHA = b.comment("Alpha of blocks made visible by Moggles. 0 = invisible, 1 = opaque.").defineInRange("visionAlpha", 0.35D, 0.05D, 1.0D); + MOGGLES_VISION_RADIUS = b.comment("Radius used by Moggles cave detection.").defineInRange("visionRadius", 20.0D, 1.0D, 128.0D); + MOGGLES_VISION_MAX_LIGHT = b.comment("Maximum block light level counted as dark enough for Moggles.").defineInRange("visionMaxLight", 7, 0, 15); + MOGGLES_VISION_ALPHA = b.comment("Overlay alpha used by Moggles vision rendering.").defineInRange("visionAlpha", 0.65D, 0.0D, 1.0D); b.pop(); SPEC = b.build(); @@ -613,12 +608,12 @@ public final class AntarchyToolsConfig { static double scorpionWhipReachBonus() { return SCORPION_WHIP_REACH_BONUS.get(); } static int scorpionWhipPoisonDurationTicks() { return SCORPION_WHIP_POISON_DURATION_TICKS.get(); } static double scorpionWhipTetherMaxRange() { return SCORPION_WHIP_TETHER_MAX_RANGE.get(); } - static int scorpionWhipReelCooldownTicks() { return SCORPION_WHIP_REEL_COOLDOWN_TICKS.get(); } static double scorpionWhipSnapBonusDamage() { return SCORPION_WHIP_SNAP_BONUS_DAMAGE.get(); } - static int scorpionWhipSnapCooldownTicks() { return SCORPION_WHIP_SNAP_COOLDOWN_TICKS.get(); } static double scorpionWhipPullStrength() { return SCORPION_WHIP_PULL_STRENGTH.get(); } static double scorpionWhipHeavyPullMultiplier() { return SCORPION_WHIP_HEAVY_PULL_MULTIPLIER.get(); } static double scorpionWhipSelfPullMultiplier() { return SCORPION_WHIP_SELF_PULL_MULTIPLIER.get(); } + static int scorpionWhipReelCooldownTicks() { return SCORPION_WHIP_REEL_COOLDOWN_TICKS.get(); } + static int scorpionWhipSnapCooldownTicks() { return SCORPION_WHIP_SNAP_COOLDOWN_TICKS.get(); } static int bloodCrystalKatanaAttackDamage() { return BLOOD_CRYSTAL_KATANA_ATTACK_DAMAGE.get(); } static double bloodCrystalKatanaLaunchStrength() { return BLOOD_CRYSTAL_KATANA_LAUNCH_STRENGTH.get(); } static int bloodCrystalKatanaTrailDurationTicks() { return BLOOD_CRYSTAL_KATANA_TRAIL_DURATION_TICKS.get(); } @@ -632,8 +627,8 @@ public final class AntarchyToolsConfig { static double nightmareLeggingsArmorToughness() { return NIGHTMARE_LEGGINGS_ARMOR_TOUGHNESS.get(); } static double nightmareBootsArmorToughness() { return NIGHTMARE_BOOTS_ARMOR_TOUGHNESS.get(); } static double nightmareArmorKnockbackResistance() { return NIGHTMARE_ARMOR_KNOCKBACK_RESISTANCE.get(); } - static double nightmareArmorDreadAuraRangePerPiece() { return NIGHTMARE_ARMOR_DREAD_AURA_RANGE_PER_PIECE.get(); } static double primordialArmorKnockbackPerPiece() { return PRIMORDIAL_ARMOR_KNOCKBACK_PER_PIECE.get(); } + static double nightmareArmorDreadAuraRangePerPiece() { return NIGHTMARE_ARMOR_DREAD_AURA_RANGE_PER_PIECE.get(); } static double nightmareSwordBaseDamage() { return NIGHTMARE_SWORD_BASE_DAMAGE.get(); } static double nightmareSwordAttackSpeed() { return NIGHTMARE_SWORD_ATTACK_SPEED.get(); } static double nightmareSwordScalingFactor() { return NIGHTMARE_SWORD_SCALING_FACTOR.get(); } @@ -699,9 +694,9 @@ public final class AntarchyToolsConfig { static double americanBonusSaturation() { return AMERICAN_BONUS_SATURATION.get(); } static int americanRegenerationDurationTicks() { return AMERICAN_REGENERATION_DURATION_TICKS.get(); } static int americanRegenerationAmplifier() { return AMERICAN_REGENERATION_AMPLIFIER.get(); } - - static int mogglesVisionRadius() { return MOGGLES_VISION_RADIUS.get(); } + static double mogglesVisionRadius() { return MOGGLES_VISION_RADIUS.get(); } static int mogglesVisionMaxLight() { return MOGGLES_VISION_MAX_LIGHT.get(); } - static float mogglesVisionAlpha() { return MOGGLES_VISION_ALPHA.get().floatValue(); } + static double mogglesVisionAlpha() { return MOGGLES_VISION_ALPHA.get(); } + } diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyKeyBindings.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyKeyBindings.java index a73ff650..c7cbacec 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyKeyBindings.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyKeyBindings.java @@ -37,6 +37,14 @@ public final class AntarchyKeyBindings { CATEGORY ); + public static final KeyMapping HERCULES_BEETLE_FLIGHT_TOGGLE = new KeyMapping( + "key.antarchy.hercules_beetle_flight_toggle", + KeyConflictContext.IN_GAME, + InputConstants.Type.KEYSYM, + InputConstants.KEY_R, + CATEGORY + ); + private AntarchyKeyBindings() {} @SubscribeEvent @@ -44,5 +52,10 @@ public final class AntarchyKeyBindings { event.register(BRUTALFLY_FLAP); event.register(DORRIE_CHARGE_JUMP); event.register(HERCULES_BEETLE_CHARGE); + event.register(HERCULES_BEETLE_FLIGHT_TOGGLE); + } + + public static boolean isHerculesBeetleFlightTogglePressed() { + return HERCULES_BEETLE_FLIGHT_TOGGLE.isDown(); } } 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 15a3d345..3b5df446 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 @@ -210,6 +210,10 @@ public final class AntarchyNeoForgeClient { @SubscribeEvent public static void registerBlockColors(RegisterColorHandlersEvent.Block event) { + event.register( + (state, level, pos, tintIndex) -> tintIndex == 0 ? bluestoneWireColor(state.getValue(com.craisinlord.antarchy.content.block.BluestoneWireBlock.POWER)) : -1, + AntarchyNeoforgeBlocks.BLUESTONE_WIRE.get() + ); event.register( (state, level, pos, tintIndex) -> level != null && pos != null ? BiomeColors.getAverageFoliageColor(level, pos) @@ -236,6 +240,10 @@ public final class AntarchyNeoForgeClient { @SubscribeEvent public static void registerItemColors(RegisterColorHandlersEvent.Item event) { + event.register( + (stack, tintIndex) -> tintIndex == 0 ? bluestoneWireColor(15) : -1, + AntarchyNeoforgeItems.BLUESTONE_DUST.get() + ); event.register( (stack, tintIndex) -> FoliageColor.getDefaultColor(), AntarchyNeoforgeItems.OURANWOOD_LEAVES_ITEM.get() @@ -579,6 +587,10 @@ public final class AntarchyNeoForgeClient { ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.BLOOD_CRYSTAL_CRYSTAL.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.DREAM_TORCH.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.DREAM_WALL_TORCH.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.BLUESTONE_WIRE.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.BLUESTONE_REPEATER.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.BLUESTONE_COMPARATOR.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.BLUESTONE_TORCH.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.DREAM_LANTERN.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.DREAM_CAMPFIRE.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.DREAM_FIRE.get(), RenderType.cutout()); @@ -703,4 +715,12 @@ public final class AntarchyNeoForgeClient { } }, item); } + + private static int bluestoneWireColor(int power) { + float normalized = power / 15.0F; + int red = (int) (6.0F + normalized * 54.0F); + int green = (int) (22.0F + normalized * 132.0F); + int blue = (int) (64.0F + normalized * 191.0F); + return red << 16 | green << 8 | blue; + } } diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/HerculesBeetleChargeHudRenderer.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/HerculesBeetleChargeHudRenderer.java index e2601cbb..fabb95d3 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/HerculesBeetleChargeHudRenderer.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/HerculesBeetleChargeHudRenderer.java @@ -36,7 +36,7 @@ public final class HerculesBeetleChargeHudRenderer { int width = mc.getWindow().getGuiScaledWidth(); int height = mc.getWindow().getGuiScaledHeight(); int x0 = width / 2 - BAR_WIDTH / 2; - int y0 = height - 39; + int y0 = height - 29; float chargeRatio = Mth.clamp(charge / 100.0F, 0.0F, 1.0F); int filledWidth = Mth.clamp((int) (chargeRatio * BAR_WIDTH), 0, BAR_WIDTH); diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/HerculesBeetleClientHandler.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/HerculesBeetleClientHandler.java index c48d3b0a..f0976327 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/HerculesBeetleClientHandler.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/HerculesBeetleClientHandler.java @@ -5,6 +5,7 @@ import com.craisinlord.antarchy.content.client.CameraShakeClientState; import com.craisinlord.antarchy.content.client.HerculesBeetleImpactShakeClientState; import com.craisinlord.antarchy.content.client.HordeClientState; import com.craisinlord.antarchy.content.entity.HerculesBeetleEntity; +import com.craisinlord.antarchy.content.network.HerculesBeetleFlightTogglePayload; import com.craisinlord.antarchy.content.network.HerculesBeetleJumpInputPayload; import com.craisinlord.antarchy.content.network.HerculesBeetleMountedAttackPayload; import com.craisinlord.antarchy.content.network.HerculesBeetleMountedChargePayload; @@ -21,6 +22,7 @@ public final class HerculesBeetleClientHandler { private static boolean wasPressingJump; private static boolean wasPressingAttack; private static boolean wasCharging; + private static boolean wasPressingFlightToggle; private HerculesBeetleClientHandler() { } @@ -60,6 +62,12 @@ public final class HerculesBeetleClientHandler { PacketDistributor.sendToServer(new HerculesBeetleMountedChargePayload(charging)); } wasCharging = charging; + + boolean pressingFlightToggle = AntarchyKeyBindings.HERCULES_BEETLE_FLIGHT_TOGGLE.isDown(); + if (pressingFlightToggle && !wasPressingFlightToggle) { + PacketDistributor.sendToServer(new HerculesBeetleFlightTogglePayload()); + } + wasPressingFlightToggle = pressingFlightToggle; } private static void resetAll() { @@ -69,5 +77,6 @@ public final class HerculesBeetleClientHandler { } wasPressingAttack = false; wasCharging = false; + wasPressingFlightToggle = false; } } diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/network/HerculesBeetleNetworking.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/network/HerculesBeetleNetworking.java index ad4716da..f54dcffc 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/network/HerculesBeetleNetworking.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/network/HerculesBeetleNetworking.java @@ -2,6 +2,7 @@ package com.craisinlord.antarchy.neoforge.network; import com.craisinlord.antarchy.content.client.HerculesBeetleImpactShakeClientState; import com.craisinlord.antarchy.content.entity.HerculesBeetleEntity; +import com.craisinlord.antarchy.content.network.HerculesBeetleFlightTogglePayload; import com.craisinlord.antarchy.content.network.HerculesBeetleImpactShakePayload; import com.craisinlord.antarchy.content.network.HerculesBeetleJumpInputPayload; import com.craisinlord.antarchy.content.network.HerculesBeetleMountedAttackPayload; @@ -19,6 +20,10 @@ public final class HerculesBeetleNetworking { HerculesBeetleJumpInputPayload.TYPE, HerculesBeetleJumpInputPayload.STREAM_CODEC, HerculesBeetleNetworking::handleJumpInput + ).playToServer( + HerculesBeetleFlightTogglePayload.TYPE, + HerculesBeetleFlightTogglePayload.STREAM_CODEC, + HerculesBeetleNetworking::handleFlightToggle ).playToServer( HerculesBeetleMountedAttackPayload.TYPE, HerculesBeetleMountedAttackPayload.STREAM_CODEC, @@ -56,6 +61,17 @@ public final class HerculesBeetleNetworking { }); } + private static void handleFlightToggle(HerculesBeetleFlightTogglePayload payload, IPayloadContext context) { + context.enqueueWork(() -> { + if (!(context.player() instanceof ServerPlayer player)) { + return; + } + if (player.getVehicle() instanceof HerculesBeetleEntity beetle) { + beetle.toggleMountedFlight(player); + } + }); + } + private static void handleMountedCharge(HerculesBeetleMountedChargePayload payload, IPayloadContext context) { context.enqueueWork(() -> { if (!(context.player() instanceof ServerPlayer player)) { 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 402df618..4bb72465 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 @@ -313,6 +313,8 @@ public final class AntarchyNeoforgeBlocks { () -> new DreamTorchBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_TORCH))); public static final DeferredBlock DREAM_WALL_TORCH = BLOCKS.register("dream_wall_torch", () -> new DreamWallTorchBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_WALL_TORCH))); + public static final DeferredBlock DREAM_CEILING_TORCH = BLOCKS.register("dream_ceiling_torch", + () -> new com.craisinlord.antarchy.content.block.DreamCeilingTorchBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_TORCH))); public static final DeferredBlock DREAM_LANTERN = BLOCKS.register("dream_lantern", () -> new LanternBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_LANTERN))); public static final DeferredBlock DREAM_CAMPFIRE = BLOCKS.register("dream_campfire", @@ -390,6 +392,18 @@ public final class AntarchyNeoforgeBlocks { () -> createOre(Blocks.DIAMOND_ORE, 4, 8, MapColor.COLOR_LIGHT_BLUE)); public static final DeferredBlock DEEPSLATE_TITANIUM_ORE = BLOCKS.register("deepslate_titanium_ore", () -> createOre(Blocks.DEEPSLATE_DIAMOND_ORE, 4, 8, MapColor.COLOR_LIGHT_BLUE)); + public static final DeferredBlock BLUESTONE_ORE = BLOCKS.register("bluestone_ore", + () -> new BluestoneOreBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.REDSTONE_ORE).mapColor(MapColor.COLOR_BLUE))); + public static final DeferredBlock BLUESTONE_WIRE = BLOCKS.register("bluestone_wire", + () -> new BluestoneWireBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.REDSTONE_WIRE).mapColor(MapColor.COLOR_BLUE).noCollission().instabreak())); + public static final DeferredBlock BLUESTONE_BLOCK = BLOCKS.register("bluestone_block", + () -> new BluestoneBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.REDSTONE_BLOCK).mapColor(MapColor.COLOR_BLUE))); + public static final DeferredBlock BLUESTONE_REPEATER = BLOCKS.register("bluestone_repeater", + () -> new BluestoneRepeaterBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.REPEATER).mapColor(MapColor.COLOR_BLUE).noCollission())); + public static final DeferredBlock BLUESTONE_COMPARATOR = BLOCKS.register("bluestone_comparator", + () -> new BluestoneComparatorBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COMPARATOR).mapColor(MapColor.COLOR_BLUE).noCollission(), AntarchyNeoforgeBlocks::bluestoneComparatorBlockEntityType)); + public static final DeferredBlock BLUESTONE_TORCH = BLOCKS.register("bluestone_torch", + () -> new BluestoneTorchBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.REDSTONE_TORCH).mapColor(MapColor.COLOR_BLUE).lightLevel(state -> state.getValue(BluestoneTorchBlock.LIT) ? 7 : 0).noCollission().instabreak())); public static final DeferredBlock URANIUM_BLOCK = BLOCKS.register("uranium_block", () -> createStorageBlock(Blocks.EMERALD_BLOCK, MapColor.COLOR_YELLOW)); public static final DeferredBlock TITANIUM_BLOCK = BLOCKS.register("titanium_block", @@ -551,6 +565,11 @@ public final class AntarchyNeoforgeBlocks { CritterCageBlockEntity::new, CRITTER_CAGE_BLOCK.get() ).build(null)); + public static final DeferredHolder, BlockEntityType> BLUESTONE_COMPARATOR_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("bluestone_comparator", + () -> BlockEntityType.Builder.of( + (pos, state) -> new com.craisinlord.antarchy.content.block.entity.BluestoneComparatorBlockEntity(pos, state, AntarchyNeoforgeBlocks::bluestoneComparatorBlockEntityType), + BLUESTONE_COMPARATOR.get() + ).build(null)); private AntarchyNeoforgeBlocks() {} @@ -610,6 +629,10 @@ public final class AntarchyNeoforgeBlocks { return BLOOD_CRYSTAL_CRYSTAL.get(); } + private static BlockEntityType bluestoneComparatorBlockEntityType() { + return BLUESTONE_COMPARATOR_BLOCK_ENTITY.get(); + } + private static final class SimpleHorizontalFacingBlock extends HorizontalDirectionalBlock { private static final MapCodec CODEC = simpleCodec(SimpleHorizontalFacingBlock::new); 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 cbd85362..890a3f04 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 @@ -1,8 +1,7 @@ package com.craisinlord.antarchy.neoforge.registry; import com.craisinlord.antarchy.Antarchy; -import com.craisinlord.antarchy.content.CreativeTabContents; -import com.craisinlord.antarchy.content.CreativeTabOrder; +import com.craisinlord.antarchy.content.creative.CreativeTabContents; import net.minecraft.core.registries.Registries; import net.minecraft.world.item.*; import net.neoforged.bus.api.IEventBus; 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 65b1abd2..f1c12a5a 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 @@ -221,6 +221,18 @@ public final class AntarchyNeoforgeItems { () -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.TITANIUM_ORE.get(), new Item.Properties().rarity(Rarity.UNCOMMON))); public static final DeferredItem DEEPSLATE_TITANIUM_ORE_ITEM = ITEMS.register("deepslate_titanium_ore", () -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.DEEPSLATE_TITANIUM_ORE.get(), new Item.Properties().rarity(Rarity.UNCOMMON))); + public static final DeferredItem BLUESTONE_DUST = ITEMS.register("bluestone", + () -> new BluestoneDustItem(AntarchyNeoforgeBlocks.BLUESTONE_WIRE.get(), new Item.Properties())); + public static final DeferredItem BLUESTONE_ORE_ITEM = ITEMS.register("bluestone_ore", + () -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.BLUESTONE_ORE.get(), new Item.Properties())); + public static final DeferredItem BLUESTONE_BLOCK_ITEM = ITEMS.register("bluestone_block", + () -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.BLUESTONE_BLOCK.get(), new Item.Properties())); + public static final DeferredItem BLUESTONE_REPEATER_ITEM = ITEMS.register("bluestone_repeater", + () -> new CeilingPlacementTooltipBlockItem(AntarchyNeoforgeBlocks.BLUESTONE_REPEATER.get(), new Item.Properties())); + public static final DeferredItem BLUESTONE_COMPARATOR_ITEM = ITEMS.register("bluestone_comparator", + () -> new CeilingPlacementTooltipBlockItem(AntarchyNeoforgeBlocks.BLUESTONE_COMPARATOR.get(), new Item.Properties())); + public static final DeferredItem BLUESTONE_TORCH_ITEM = ITEMS.register("bluestone_torch", + () -> new CeilingPlacementTooltipBlockItem(AntarchyNeoforgeBlocks.BLUESTONE_TORCH.get(), new Item.Properties())); public static final DeferredItem URANIUM_BLOCK_ITEM = ITEMS.register("uranium_block", () -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.URANIUM_BLOCK.get(), new Item.Properties().rarity(Rarity.UNCOMMON))); public static final DeferredItem TITANIUM_BLOCK_ITEM = ITEMS.register("titanium_block", @@ -367,8 +379,8 @@ public final class AntarchyNeoforgeItems { public static final DeferredItem CREEPVINE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CREEPVINE); public static final DeferredItem BLUSH_MOSS_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BLUSH_MOSS_BLOCK); public static final DeferredItem BLUSH_MOSS_CARPET_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BLUSH_MOSS_CARPET); - public static final DeferredItem DREAM_TORCH_ITEM = ITEMS.register("dream_torch", - () -> new StandingAndWallBlockItem(AntarchyNeoforgeBlocks.DREAM_TORCH.get(), AntarchyNeoforgeBlocks.DREAM_WALL_TORCH.get(), new Item.Properties(), net.minecraft.core.Direction.UP)); + public static final DeferredItem DREAM_TORCH_ITEM = ITEMS.register("dream_torch", + () -> new com.craisinlord.antarchy.content.item.DreamTorchItem(AntarchyNeoforgeBlocks.DREAM_TORCH.get(), AntarchyNeoforgeBlocks.DREAM_WALL_TORCH.get(), AntarchyNeoforgeBlocks.DREAM_CEILING_TORCH.get(), new Item.Properties())); public static final DeferredItem DREAM_LANTERN_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DREAM_LANTERN); public static final DeferredItem DREAM_CAMPFIRE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DREAM_CAMPFIRE); public static final DeferredItem LUMEN_FROGLIGHT_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.LUMEN_FROGLIGHT); @@ -422,7 +434,7 @@ public final class AntarchyNeoforgeItems { -2.2F )); public static final DeferredItem MANTIS_CLAW = ITEMS.register("mantis_claw", - () -> new MantisClawItem(Tiers.IRON, new Item.Properties().stacksTo(1).rarity(Rarity.UNCOMMON))); + () -> new MantisClawItem(Tiers.IRON, new Item.Properties().stacksTo(1).durability(50).rarity(Rarity.UNCOMMON))); public static final DeferredItem HERCULES_HORN = ITEMS.registerSimpleItem("hercules_horn", new Item.Properties().rarity(Rarity.UNCOMMON)); public static final DeferredItem KING_SCALE = ITEMS.register("king_scale", () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.RARE)));