From db93a3ced936af5bb1074dbbb9e02ac8f8ac28b9 Mon Sep 17 00:00:00 2001 From: craisinlord Date: Wed, 22 Jul 2026 02:39:32 -0500 Subject: [PATCH] re-organized files moved creative menu logic all to common fixed fabric fluids made termites a little more forgiving worked on fixing herc beetle --- .../compat/jei/AntarchyJeiPlugin.java | 4 +- .../antarchy/content/AntarchySoundEvents.java | 26 +- .../antarchy/content/AntarchyTags.java | 1 + .../antarchy/content/CreativeTabContents.java | 495 ++++++++++++++++++ .../antarchy/content/CreativeTabOrder.java | 360 +------------ .../AntarchyAdvancements.java | 2 +- .../content/block/BedBugEggBlock.java | 4 + .../content/block/BiowartTendrilsBlock.java | 3 +- .../content/block/CreepingHorrorEggBlock.java | 11 + .../antarchy/content/block/DuctTapeBlock.java | 2 +- .../antarchy/content/block/JerryEggBlock.java | 13 +- .../content/block/JumpyBugEggBlock.java | 11 + .../content/block/LurkingTerrorEggBlock.java | 11 + .../content/block/PotentNyxiteBlock.java | 28 +- .../content/block/SpitBugEggBlock.java | 11 + .../block/entity/PotentNyxiteBlockEntity.java | 3 +- .../boss/EntityLinkedServerBossEvent.java | 20 + .../content/client/GoopedHudRenderer.java | 2 +- .../content/client/HordeHudRenderer.java | 5 +- .../client/hud/CustomBossBarRenderer.java | 96 ++++ .../client/renderer/GoopedGeoLayer.java | 2 +- .../client/renderer/GoopedLivingLayer.java | 2 +- .../RpoLauncherDispenseBehavior.java | 3 +- .../SizeRayDispenseBehavior.java | 2 +- .../SquidzookaDispenseBehavior.java | 3 +- .../WaterCannonDispenseBehavior.java | 2 +- .../{ => effect}/GoopedEffectHooks.java | 2 +- .../content/{ => effect}/StinkyBehavior.java | 4 +- .../content/effect/StinkyMobEffect.java | 1 - .../content/entity/AlphaMantisEntity.java | 2 +- .../content/entity/EmperorScorpionEntity.java | 2 +- .../content/entity/HerculesBeetleEntity.java | 173 +++++- .../antarchy/content/entity/JerryEntity.java | 34 ++ .../content/entity/OctopusBombEntity.java | 13 +- .../content/entity/ReverieEntity.java | 8 +- .../entity/SizeRayProjectileEntity.java | 3 +- .../entity/SpitBugProjectileEntity.java | 2 +- .../content/entity/StinkBugEntity.java | 2 +- .../content/entity/ToreterrorEntity.java | 78 +-- .../entity/UpwardFallingBlockEntity.java | 43 +- .../content/entity/ant/TermiteEntity.java | 92 +++- .../entity/brutalfly/BrutalflyEntity.java | 2 +- .../entity/glimmer/GlimmerElkaBehavior.java | 166 +++++- .../content/entity/glimmer/GlimmerEntity.java | 81 ++- .../glimmer/GlimmerVariantBehavior.java | 9 + .../content/entity/kraken/KrakenEntity.java | 2 +- .../content/fluid/AntarchyFluidChecks.java | 44 ++ .../content/horde/CavarynHordeManager.java | 31 +- .../antarchy/content/item/BigBerthaItem.java | 32 +- .../content/item/GlimmerBottleItem.java | 3 +- .../content/item/JerryNucleusItem.java | 98 ++++ .../antarchy/content/item/MantisClawItem.java | 31 ++ .../HerculesBeetleMountedChargePayload.java | 7 +- .../{ => recipe}/AmericanizeRecipe.java | 4 +- .../{ => recipe}/CustomBrewingRecipes.java | 5 +- .../antarchy/mixins/GoopedStepSoundMixin.java | 2 +- .../mixins/MantisClawWallClimbMixin.java | 71 +++ .../antarchy/mixins/PotionBrewingMixin.java | 2 +- .../mixins/StinkyLivingEntityMixin.java | 2 +- .../mixins/client/CustomBossBarMixin.java | 43 ++ .../mixins/gravity/EntityGravityMixin.java | 2 +- .../mixins/gravity/EntityMoveMixin.java | 4 +- .../mixins/gravity/LivingEntityMixin.java | 4 +- .../gravity/ServerPlayerGravityMixin.java | 4 +- .../resources/antarchy-common.mixins.json | 2 + .../animations/hercules_beetle.animation.json | 42 +- .../resources/assets/antarchy/lang/de_de.json | 11 + .../resources/assets/antarchy/lang/en_us.json | 16 + .../resources/assets/antarchy/lang/es_es.json | 11 + .../resources/assets/antarchy/lang/fr_fr.json | 11 + .../resources/assets/antarchy/lang/it_it.json | 11 + .../resources/assets/antarchy/lang/ja_jp.json | 11 + .../resources/assets/antarchy/lang/ko_kr.json | 11 + .../resources/assets/antarchy/lang/pt_br.json | 11 + .../resources/assets/antarchy/lang/ru_ru.json | 11 + .../resources/assets/antarchy/lang/zh_cn.json | 11 + .../resources/assets/antarchy/lang/zh_tw.json | 11 + .../resources/assets/antarchy/sounds.json | 103 +++- .../sounds/mob/jerry/adult_attack1.ogg | Bin 0 -> 32111 bytes .../sounds/mob/jerry/adult_attack2.ogg | Bin 0 -> 23772 bytes .../sounds/mob/jerry/adult_attack3.ogg | Bin 0 -> 23464 bytes .../sounds/mob/jerry/adult_death1.ogg | Bin 0 -> 23282 bytes .../sounds/mob/jerry/adult_death2.ogg | Bin 0 -> 18103 bytes .../antarchy/sounds/mob/jerry/adult_hurt1.ogg | Bin 0 -> 12766 bytes .../antarchy/sounds/mob/jerry/adult_idle1.ogg | Bin 0 -> 26479 bytes .../antarchy/sounds/mob/jerry/adult_idle2.ogg | Bin 0 -> 17263 bytes .../antarchy/sounds/mob/jerry/adult_idle3.ogg | Bin 0 -> 17871 bytes .../antarchy/sounds/mob/jerry/adult_idle4.ogg | Bin 0 -> 18498 bytes .../sounds/mob/jerry/young_attack1.ogg | Bin 0 -> 8932 bytes .../sounds/mob/jerry/young_attack2.ogg | Bin 0 -> 7792 bytes .../sounds/mob/jerry/young_death1.ogg | Bin 0 -> 19386 bytes .../antarchy/sounds/mob/jerry/young_hurt1.ogg | Bin 0 -> 13278 bytes .../antarchy/sounds/mob/jerry/young_idle1.ogg | Bin 0 -> 12371 bytes .../antarchy/sounds/mob/jerry/young_idle2.ogg | Bin 0 -> 16825 bytes .../antarchy/sounds/mob/jerry/young_idle3.ogg | Bin 0 -> 10155 bytes .../unstable_ant_nest_side.png | Bin 0 -> 1128 bytes .../unstable_ant_nest_side.png.mcmeta | 5 + .../unstable_ant_nest_top.png | Bin 0 -> 1305 bytes .../unstable_ant_nest_top.png.mcmeta | 5 + .../textures/entity/frog/frog_elythia.png | Bin 1630 -> 1706 bytes .../textures/gui/boss_bars/alpha_mantis.png | Bin 0 -> 6422 bytes .../textures/gui/boss_bars/brutalfly.png | Bin 0 -> 3929 bytes .../healthbars/beetle_background.png | Bin 0 -> 456 bytes .../boss_bars/healthbars/beetle_progress.png | Bin 0 -> 716 bytes .../boss_bars/healthbars/blue_background.png | Bin 0 -> 1736 bytes .../boss_bars/healthbars/blue_progress.png | Bin 0 -> 689 bytes .../healthbars/brutalfly_background.png | Bin 0 -> 457 bytes .../healthbars/brutalfly_progress.png | Bin 0 -> 712 bytes .../boss_bars/healthbars/green_background.png | Bin 0 -> 1735 bytes .../boss_bars/healthbars/green_progress.png | Bin 0 -> 2382 bytes .../healthbars/purple_background.png | Bin 0 -> 2145 bytes .../boss_bars/healthbars/purple_progress.png | Bin 0 -> 668 bytes .../gui/boss_bars/hercules_beetle.png | Bin 0 -> 4069 bytes .../textures/gui/boss_bars/kraken.png | Bin 0 -> 4097 bytes .../textures/gui/boss_bars/scorpion.png | Bin 0 -> 3199 bytes .../textures/gui/boss_bars/toreterror.png | Bin 0 -> 4594 bytes .../loot_table/entities/alpha_mantis.json | 11 +- .../antarchy/loot_table/entities/mantis.json | 4 + .../block/biowart_tendrils_plantable.json | 6 + .../worldgen/biome/elythia_ocean.json | 1 - .../antarchy/worldgen/biome/lucid_pools.json | 2 +- .../broodstone_titanium_ore.json | 2 +- .../broodstone_uranium_ore.json | 2 +- .../minecraft/tags/block/coral_blocks.json | 6 + .../minecraft/tags/block/coral_plants.json | 6 + .../data/minecraft/tags/block/corals.json | 6 + .../minecraft/tags/block/wall_corals.json | 6 + .../antarchy/fabric/AntarchyFabric.java | 13 - .../fabric/AntarchyFabricContent.java | 10 +- .../antarchy/fabric/AntarchyFabricEvents.java | 12 +- .../client/AntarchyFabricClientBootstrap.java | 7 +- .../HerculesBeetleChargeHudRenderer.java | 50 ++ .../client/HerculesBeetleClientHandler.java | 11 +- .../mixin/AntiwaterItemEntityMixin.java | 13 +- .../mixin/AntiwaterLivingEntityMixin.java | 16 +- .../fabric/mixin/DreamSandMovementMixin.java | 34 +- .../mixin/LivingEntityJumpingAccessor.java | 11 + .../mixin/WaterlikeFluidItemEntityMixin.java | 29 + .../WaterlikeFluidLivingEntityMixin.java | 64 +++ .../mixin/client/AntiwaterFogMixin.java | 49 -- .../fabric/mixin/client/LiquidFogMixin.java | 89 ++++ .../mixin/infinity/PortalCreatorMixin.java | 17 +- .../network/AntarchyFabricNetworking.java | 6 +- .../AntarchyFabricCreativeModeTabs.java | 73 +-- .../fabric/registry/AntarchyFabricItems.java | 21 +- .../fabric/registry/AntarchyFabricMisc.java | 160 +----- .../fabric/registry/AntarchyFabricSounds.java | 8 + .../fabric/util/CustomFluidPhysicsChecks.java | 91 ++++ .../resources/antarchy-fabric.mixins.json | 5 +- .../data/minecraft/tags/fluid/water.json | 9 +- .../antarchy/neoforge/AntarchyNeoforge.java | 10 +- .../client/AntarchyNeoForgeClient.java | 4 + .../HerculesBeetleChargeHudRenderer.java | 50 ++ .../client/HerculesBeetleClientHandler.java | 11 +- .../network/HerculesBeetleNetworking.java | 6 +- .../registry/AntarchyNeoForgeEvents.java | 20 +- .../AntarchyNeoforgeCreativeModeTabs.java | 419 +-------------- .../registry/AntarchyNeoforgeItems.java | 20 +- .../registry/AntarchyNeoforgeMisc.java | 8 +- .../registry/AntarchyNeoforgeSounds.java | 8 + .../biome_modifier/star_coral_in_oceans.json | 6 - 161 files changed, 2588 insertions(+), 1337 deletions(-) create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/CreativeTabContents.java rename common/src/main/java/com/craisinlord/antarchy/content/{ => advancement}/AntarchyAdvancements.java (94%) create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/boss/EntityLinkedServerBossEvent.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/client/hud/CustomBossBarRenderer.java rename common/src/main/java/com/craisinlord/antarchy/content/{ => dispenser}/RpoLauncherDispenseBehavior.java (93%) rename common/src/main/java/com/craisinlord/antarchy/content/{ => dispenser}/SizeRayDispenseBehavior.java (97%) rename common/src/main/java/com/craisinlord/antarchy/content/{ => dispenser}/SquidzookaDispenseBehavior.java (93%) rename common/src/main/java/com/craisinlord/antarchy/content/{ => dispenser}/WaterCannonDispenseBehavior.java (96%) rename common/src/main/java/com/craisinlord/antarchy/content/{ => effect}/GoopedEffectHooks.java (94%) rename common/src/main/java/com/craisinlord/antarchy/content/{ => effect}/StinkyBehavior.java (98%) create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/fluid/AntarchyFluidChecks.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/item/JerryNucleusItem.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/content/item/MantisClawItem.java rename common/src/main/java/com/craisinlord/antarchy/content/{ => recipe}/AmericanizeRecipe.java (95%) rename common/src/main/java/com/craisinlord/antarchy/content/{ => recipe}/CustomBrewingRecipes.java (96%) create mode 100644 common/src/main/java/com/craisinlord/antarchy/mixins/MantisClawWallClimbMixin.java create mode 100644 common/src/main/java/com/craisinlord/antarchy/mixins/client/CustomBossBarMixin.java create mode 100644 common/src/main/resources/assets/antarchy/sounds/mob/jerry/adult_attack1.ogg create mode 100644 common/src/main/resources/assets/antarchy/sounds/mob/jerry/adult_attack2.ogg create mode 100644 common/src/main/resources/assets/antarchy/sounds/mob/jerry/adult_attack3.ogg create mode 100644 common/src/main/resources/assets/antarchy/sounds/mob/jerry/adult_death1.ogg create mode 100644 common/src/main/resources/assets/antarchy/sounds/mob/jerry/adult_death2.ogg create mode 100644 common/src/main/resources/assets/antarchy/sounds/mob/jerry/adult_hurt1.ogg create mode 100644 common/src/main/resources/assets/antarchy/sounds/mob/jerry/adult_idle1.ogg create mode 100644 common/src/main/resources/assets/antarchy/sounds/mob/jerry/adult_idle2.ogg create mode 100644 common/src/main/resources/assets/antarchy/sounds/mob/jerry/adult_idle3.ogg create mode 100644 common/src/main/resources/assets/antarchy/sounds/mob/jerry/adult_idle4.ogg create mode 100644 common/src/main/resources/assets/antarchy/sounds/mob/jerry/young_attack1.ogg create mode 100644 common/src/main/resources/assets/antarchy/sounds/mob/jerry/young_attack2.ogg create mode 100644 common/src/main/resources/assets/antarchy/sounds/mob/jerry/young_death1.ogg create mode 100644 common/src/main/resources/assets/antarchy/sounds/mob/jerry/young_hurt1.ogg create mode 100644 common/src/main/resources/assets/antarchy/sounds/mob/jerry/young_idle1.ogg create mode 100644 common/src/main/resources/assets/antarchy/sounds/mob/jerry/young_idle2.ogg create mode 100644 common/src/main/resources/assets/antarchy/sounds/mob/jerry/young_idle3.ogg create mode 100644 common/src/main/resources/assets/antarchy/textures/block/unstable_ant_nest/unstable_ant_nest_side.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/unstable_ant_nest/unstable_ant_nest_side.png.mcmeta create mode 100644 common/src/main/resources/assets/antarchy/textures/block/unstable_ant_nest/unstable_ant_nest_top.png create mode 100644 common/src/main/resources/assets/antarchy/textures/block/unstable_ant_nest/unstable_ant_nest_top.png.mcmeta create mode 100644 common/src/main/resources/assets/antarchy/textures/gui/boss_bars/alpha_mantis.png create mode 100644 common/src/main/resources/assets/antarchy/textures/gui/boss_bars/brutalfly.png create mode 100644 common/src/main/resources/assets/antarchy/textures/gui/boss_bars/healthbars/beetle_background.png create mode 100644 common/src/main/resources/assets/antarchy/textures/gui/boss_bars/healthbars/beetle_progress.png create mode 100644 common/src/main/resources/assets/antarchy/textures/gui/boss_bars/healthbars/blue_background.png create mode 100644 common/src/main/resources/assets/antarchy/textures/gui/boss_bars/healthbars/blue_progress.png create mode 100644 common/src/main/resources/assets/antarchy/textures/gui/boss_bars/healthbars/brutalfly_background.png create mode 100644 common/src/main/resources/assets/antarchy/textures/gui/boss_bars/healthbars/brutalfly_progress.png create mode 100644 common/src/main/resources/assets/antarchy/textures/gui/boss_bars/healthbars/green_background.png create mode 100644 common/src/main/resources/assets/antarchy/textures/gui/boss_bars/healthbars/green_progress.png create mode 100644 common/src/main/resources/assets/antarchy/textures/gui/boss_bars/healthbars/purple_background.png create mode 100644 common/src/main/resources/assets/antarchy/textures/gui/boss_bars/healthbars/purple_progress.png create mode 100644 common/src/main/resources/assets/antarchy/textures/gui/boss_bars/hercules_beetle.png create mode 100644 common/src/main/resources/assets/antarchy/textures/gui/boss_bars/kraken.png create mode 100644 common/src/main/resources/assets/antarchy/textures/gui/boss_bars/scorpion.png create mode 100644 common/src/main/resources/assets/antarchy/textures/gui/boss_bars/toreterror.png create mode 100644 common/src/main/resources/data/antarchy/tags/block/biowart_tendrils_plantable.json create mode 100644 common/src/main/resources/data/minecraft/tags/block/coral_blocks.json create mode 100644 common/src/main/resources/data/minecraft/tags/block/coral_plants.json create mode 100644 common/src/main/resources/data/minecraft/tags/block/corals.json create mode 100644 common/src/main/resources/data/minecraft/tags/block/wall_corals.json create mode 100644 fabric/src/main/java/com/craisinlord/antarchy/fabric/client/HerculesBeetleChargeHudRenderer.java create mode 100644 fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/LivingEntityJumpingAccessor.java create mode 100644 fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/WaterlikeFluidItemEntityMixin.java create mode 100644 fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/WaterlikeFluidLivingEntityMixin.java delete mode 100644 fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/AntiwaterFogMixin.java create mode 100644 fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/LiquidFogMixin.java create mode 100644 fabric/src/main/java/com/craisinlord/antarchy/fabric/util/CustomFluidPhysicsChecks.java create mode 100644 neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/HerculesBeetleChargeHudRenderer.java delete mode 100644 neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/star_coral_in_oceans.json diff --git a/common/src/main/java/com/craisinlord/antarchy/compat/jei/AntarchyJeiPlugin.java b/common/src/main/java/com/craisinlord/antarchy/compat/jei/AntarchyJeiPlugin.java index dbe6a041..d8104513 100644 --- a/common/src/main/java/com/craisinlord/antarchy/compat/jei/AntarchyJeiPlugin.java +++ b/common/src/main/java/com/craisinlord/antarchy/compat/jei/AntarchyJeiPlugin.java @@ -1,10 +1,10 @@ package com.craisinlord.antarchy.compat.jei; import com.craisinlord.antarchy.Antarchy; -import com.craisinlord.antarchy.content.AmericanizeRecipe; +import com.craisinlord.antarchy.content.recipe.AmericanizeRecipe; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchyTags; -import com.craisinlord.antarchy.content.CustomBrewingRecipes; +import com.craisinlord.antarchy.content.recipe.CustomBrewingRecipes; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant; import com.craisinlord.antarchy.content.item.GlimmerBottleItem; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/AntarchySoundEvents.java b/common/src/main/java/com/craisinlord/antarchy/content/AntarchySoundEvents.java index 86424c80..bd197f36 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/AntarchySoundEvents.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/AntarchySoundEvents.java @@ -160,6 +160,14 @@ public final class AntarchySoundEvents { public static Supplier ROLLY_POLLY_WHEEL_MODE = (Supplier) UNBOUND; public static Supplier ROLLY_POLLY_NORMAL_MODE = (Supplier) UNBOUND; public static Supplier ROLLY_POLLY_ROLL = (Supplier) UNBOUND; + public static Supplier JERRY_YOUNG_IDLE = (Supplier) UNBOUND; + public static Supplier JERRY_YOUNG_HURT = (Supplier) UNBOUND; + public static Supplier JERRY_YOUNG_DEATH = (Supplier) UNBOUND; + public static Supplier JERRY_YOUNG_ATTACK = (Supplier) UNBOUND; + public static Supplier JERRY_ADULT_IDLE = (Supplier) UNBOUND; + public static Supplier JERRY_ADULT_HURT = (Supplier) UNBOUND; + public static Supplier JERRY_ADULT_DEATH = (Supplier) UNBOUND; + public static Supplier JERRY_ADULT_ATTACK = (Supplier) UNBOUND; private AntarchySoundEvents() { } @@ -315,7 +323,15 @@ public final class AntarchySoundEvents { Supplier brutalflySpit, Supplier rollyPollyWheelMode, Supplier rollyPollyNormalMode, - Supplier rollyPollyRoll + Supplier rollyPollyRoll, + Supplier jerryYoungIdle, + Supplier jerryYoungHurt, + Supplier jerryYoungDeath, + Supplier jerryYoungAttack, + Supplier jerryAdultIdle, + Supplier jerryAdultHurt, + Supplier jerryAdultDeath, + Supplier jerryAdultAttack ) { SQUIDZOOKA_FIRE = squidzookaFire; SHRINK_RAY_SOUND = shrinkRaySound; @@ -468,5 +484,13 @@ public final class AntarchySoundEvents { ROLLY_POLLY_WHEEL_MODE = rollyPollyWheelMode; ROLLY_POLLY_NORMAL_MODE = rollyPollyNormalMode; ROLLY_POLLY_ROLL = rollyPollyRoll; + JERRY_YOUNG_IDLE = jerryYoungIdle; + JERRY_YOUNG_HURT = jerryYoungHurt; + JERRY_YOUNG_DEATH = jerryYoungDeath; + JERRY_YOUNG_ATTACK = jerryYoungAttack; + JERRY_ADULT_IDLE = jerryAdultIdle; + JERRY_ADULT_HURT = jerryAdultHurt; + JERRY_ADULT_DEATH = jerryAdultDeath; + JERRY_ADULT_ATTACK = jerryAdultAttack; } } 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 358600a8..b89e94b9 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/AntarchyTags.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/AntarchyTags.java @@ -33,6 +33,7 @@ public final class AntarchyTags { public static final TagKey UMBRAL_MOSS_REPLACEABLE = TagKey.create(Registries.BLOCK, id("umbral_moss_replaceable")); public static final TagKey BLUSH_MOSS_REPLACEABLE = TagKey.create(Registries.BLOCK, id("blush_moss_replaceable")); public static final TagKey BIOWART_REPLACEABLE = TagKey.create(Registries.BLOCK, id("biowart_replaceable")); + public static final TagKey BIOWART_TENDRILS_PLANTABLE = TagKey.create(Registries.BLOCK, id("biowart_tendrils_plantable")); public static final TagKey HERCULES_BEETLE_CHARGE_IMMUNE_BLOCKS = TagKey.create(Registries.BLOCK, id("hercules_beetle_charge_immune_blocks")); public static final TagKey ELYTHIA_PORTAL_FRAMES = TagKey.create(Registries.BLOCK, id("elythia_portal_frames")); public static final TagKey THORAXIS_PORTAL_FRAMES = TagKey.create(Registries.BLOCK, id("thoraxis_portal_frames")); diff --git a/common/src/main/java/com/craisinlord/antarchy/content/CreativeTabContents.java b/common/src/main/java/com/craisinlord/antarchy/content/CreativeTabContents.java new file mode 100644 index 00000000..187e7dec --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/CreativeTabContents.java @@ -0,0 +1,495 @@ +package com.craisinlord.antarchy.content; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant; +import com.craisinlord.antarchy.content.item.GlimmerBottleItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateGearHelper; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import net.minecraft.core.Holder; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +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.alchemy.Potion; +import net.minecraft.world.item.alchemy.PotionContents; +import net.minecraft.world.level.ItemLike; + +public final class CreativeTabContents { + private CreativeTabContents() {} + + private record CatalogEntry(String path, String neoTabPath, String insertAfterPath) {} + + public interface AntarchyTabOutput { + void accept(ItemLike item); + void accept(ItemStack stack); + } + + public interface NeoForgeVanillaTabOutput extends AntarchyTabOutput { + void insertAfter(ItemLike anchor, ItemLike item); + } + + private static final List CATALOG = List.of( + entry("ouranwood_log", "building_blocks"), + entry("ouranwood_wood", "building_blocks"), + entry("mossy_ouranwood_log", "building_blocks"), + entry("mossy_ouranwood_wood", "building_blocks"), + entry("stripped_ouranwood_log", "building_blocks"), + entry("stripped_ouranwood_wood", "building_blocks"), + entry("ouranwood_planks", "building_blocks"), + entry("ouranwood_stairs", "building_blocks"), + entry("ouranwood_slab", "building_blocks"), + entry("ouranwood_fence", "building_blocks"), + entry("ouranwood_fence_gate", "building_blocks"), + entry("ouranwood_boat", "building_blocks"), + entry("ouranwood_chest_boat", "building_blocks"), + entry("ouranwood_door", "building_blocks"), + entry("ouranwood_trapdoor", "building_blocks"), + entry("ouranwood_pressure_plate", "building_blocks"), + entry("ouranwood_button", "building_blocks"), + entry("ouranwood_sign", "building_blocks"), + entry("ouranwood_hanging_sign", "building_blocks"), + entry("peach_log", "building_blocks"), + entry("peach_wood", "building_blocks"), + entry("stripped_peach_log", "building_blocks"), + entry("stripped_peach_wood", "building_blocks"), + entry("peach_planks", "building_blocks"), + entry("peach_stairs", "building_blocks"), + entry("peach_slab", "building_blocks"), + entry("peach_fence", "building_blocks"), + entry("peach_fence_gate", "building_blocks"), + entry("peach_boat", "building_blocks"), + entry("peach_chest_boat", "building_blocks"), + entry("peach_door", "building_blocks"), + entry("peach_trapdoor", "building_blocks"), + entry("peach_pressure_plate", "building_blocks"), + entry("peach_button", "building_blocks"), + entry("peach_sign", "building_blocks"), + entry("peach_hanging_sign", "building_blocks"), + entry("shellstone", "building_blocks"), + entry("shellstone_stairs", "building_blocks"), + entry("shellstone_slab", "building_blocks"), + entry("shellstone_wall", "building_blocks"), + entry("polished_shellstone", "building_blocks"), + entry("polished_shellstone_stairs", "building_blocks"), + entry("polished_shellstone_slab", "building_blocks"), + entry("polished_shellstone_wall", "building_blocks"), + entry("shellstone_bricks", "building_blocks"), + entry("shellstone_brick_stairs", "building_blocks"), + entry("shellstone_brick_slab", "building_blocks"), + entry("shellstone_brick_wall", "building_blocks"), + entry("chiseled_shellstone", "building_blocks"), + entry("mossy_shellstone_bricks", "building_blocks"), + entry("mossy_shellstone_brick_stairs", "building_blocks"), + entry("mossy_shellstone_brick_slab", "building_blocks"), + entry("mossy_shellstone_brick_wall", "building_blocks"), + entry("cracked_shellstone_bricks", "building_blocks"), + entry("blush_moss_block", "building_blocks"), + entry("blush_moss_carpet", "building_blocks"), + entry("lumen_froglight", "natural_blocks"), + entry("roseate_froglight", "natural_blocks"), + entry("nyxite", "building_blocks"), + entry("nyxite_stairs", "building_blocks"), + entry("nyxite_slab", "building_blocks"), + entry("nyxite_wall", "building_blocks"), + entry("polished_nyxite", "building_blocks"), + entry("polished_nyxite_stairs", "building_blocks"), + entry("polished_nyxite_slab", "building_blocks"), + entry("polished_nyxite_wall", "building_blocks"), + entry("nyxite_bricks", "building_blocks"), + entry("nyxite_brick_stairs", "building_blocks"), + entry("nyxite_brick_slab", "building_blocks"), + entry("nyxite_brick_wall", "building_blocks"), + entry("chiseled_nyxite", "building_blocks"), + entry("pale_nyxite", "building_blocks"), + entry("nyxite_spike", "building_blocks"), + entry("potent_nyxite", "building_blocks"), + entry("antimetal", "building_blocks"), + entry("polished_antimetal", "building_blocks"), + entry("antimetal_scaffolding", "building_blocks"), + entry("umbral_moss_block", "building_blocks"), + entry("umbral_moss_carpet", "building_blocks"), + entry("dream_torch", "building_blocks"), + entry("dream_lantern", "building_blocks"), + entry("dream_campfire", "building_blocks"), + entry("dream_sand", "building_blocks"), + entry("dream_sandstone", "building_blocks"), + entry("chiseled_dream_sandstone", "building_blocks"), + entry("cut_dream_sandstone", "building_blocks"), + entry("smooth_dream_sandstone", "building_blocks"), + entry("dream_sandstone_stairs", "building_blocks"), + entry("dream_sandstone_slab", "building_blocks"), + entry("dream_sandstone_wall", "building_blocks"), + entry("smooth_dream_sandstone_stairs", "building_blocks"), + entry("smooth_dream_sandstone_slab", "building_blocks"), + entry("cut_dream_sandstone_slab", "building_blocks"), + entry("budding_blood_crystal", "building_blocks"), + entry("blood_crystal_block", "building_blocks"), + entry("blood_crystal_cluster", "building_blocks"), + entry("small_blood_crystal_bud", "building_blocks"), + entry("medium_blood_crystal_bud", "building_blocks"), + entry("large_blood_crystal_bud", "building_blocks"), + entry("myrmite", "building_blocks"), + entry("biomite", "building_blocks"), + entry("biomite_turf", "building_blocks"), + entry("biowart", "building_blocks"), + entry("biowart_tendrils", "building_blocks"), + entry("broodstone", "building_blocks"), + entry("polished_broodstone", "building_blocks"), + entry("chiseled_broodstone", "building_blocks"), + entry("broodstone_bricks", "building_blocks"), + entry("broodstone_stairs", "building_blocks"), + entry("broodstone_slab", "building_blocks"), + entry("broodstone_wall", "building_blocks"), + entry("polished_broodstone_stairs", "building_blocks"), + entry("polished_broodstone_slab", "building_blocks"), + entry("polished_broodstone_wall", "building_blocks"), + entry("broodstone_brick_stairs", "building_blocks"), + entry("broodstone_brick_slab", "building_blocks"), + entry("broodstone_brick_wall", "building_blocks"), + entry("myrmite_coal_ore", "building_blocks"), + entry("broodstone_uranium_ore", "building_blocks"), + entry("broodstone_titanium_ore", "building_blocks"), + entry("bile_vein", "building_blocks"), + entry("chiten_block", "building_blocks"), + entry("chiten_spike", "building_blocks"), + entry("amber_moss_block", "building_blocks"), + entry("amber_moss_carpet", "building_blocks"), + entry("uranium_block", "building_blocks"), + entry("raw_uranium_block", "building_blocks"), + entry("cut_uranium", "building_blocks"), + entry("cut_uranium_stairs", "building_blocks"), + entry("cut_uranium_slab", "building_blocks"), + entry("chiseled_uranium", "building_blocks"), + entry("uranium_door", "building_blocks"), + entry("uranium_trapdoor", "building_blocks"), + entry("uranium_bars", "building_blocks"), + entry("uranium_bulb", "building_blocks"), + entry("titanium_block", "building_blocks"), + entry("raw_titanium_block", "building_blocks"), + entry("cut_titanium", "building_blocks"), + entry("cut_titanium_stairs", "building_blocks"), + entry("cut_titanium_slab", "building_blocks"), + entry("chiseled_titanium", "building_blocks"), + entry("titanium_door", "building_blocks"), + entry("titanium_trapdoor", "building_blocks"), + entry("titanium_bars", "building_blocks"), + entry("titanium_bulb", "building_blocks"), + entry("ouranwood_leaves", "natural_blocks"), + entry("ouranwood_acorn", "natural_blocks"), + entry("peach_leaves", "natural_blocks"), + entry("peach_sapling", "natural_blocks"), + entry("duplicator_log", "natural_blocks"), + entry("duplicator_sapling", "natural_blocks"), + entry("orange_milkweed", "natural_blocks"), + entry("pink_milkweed", "natural_blocks"), + entry("camellia", "natural_blocks"), + entry("spider_lily", "natural_blocks"), + entry("lotus", "natural_blocks"), + entry("giant_lily_pad", "natural_blocks"), + entry("seashell", "natural_blocks"), + entry("hushweed", "natural_blocks"), + entry("amber_lichen", "natural_blocks"), + entry("creepvine", "natural_blocks"), + entry("hanging_creeproots", "natural_blocks"), + entry("molting_vines", "natural_blocks"), + entry("glowcap_mushroom", "natural_blocks"), + entry("glowcap_mushroom_block", "natural_blocks"), + entry("infested_rooted_dirt", "natural_blocks"), + entry("infested_coarse_dirt", "natural_blocks"), + entry("triffid_goo_block", "natural_blocks"), + entry("bed_bug_egg", "natural_blocks"), + entry("creeping_horror_egg", "natural_blocks"), + entry("lurking_terror_egg", "natural_blocks"), + entry("jumpy_bug_egg", "natural_blocks"), + entry("spit_bug_egg", "natural_blocks"), + entry("jerry_egg", "natural_blocks"), + entry("wasp_nest", "natural_blocks"), + entry("red_ant_nest", "natural_blocks"), + entry("brown_ant_nest", "natural_blocks"), + entry("rainbow_ant_nest", "natural_blocks"), + entry("termite_nest", "natural_blocks"), + entry("uranium_ore", "natural_blocks"), + entry("deepslate_uranium_ore", "natural_blocks"), + entry("titanium_ore", "natural_blocks"), + entry("deepslate_titanium_ore", "natural_blocks"), + entry("corn_seeds", "natural_blocks"), + entry("star_coral", "natural_blocks"), + entry("star_coral_fan", "natural_blocks"), + entry("star_coral_block", "natural_blocks"), + entry("dead_star_coral", "natural_blocks"), + entry("dead_star_coral_fan", "natural_blocks"), + entry("dead_star_coral_block", "natural_blocks"), + entry("duct_tape", "tools_and_utilities", "shears"), + entry("diamond_minecart", "tools_and_utilities", "minecart"), + entry("bile_bucket", "tools_and_utilities"), + entry("ichor_bucket", "tools_and_utilities"), + entry("antiwater_bucket", "tools_and_utilities"), + entry("lumen_bucket", "tools_and_utilities"), + entry("cloud_bucket", "tools_and_utilities"), + entry("reverie_bottle", "tools_and_utilities"), + entry("glimmer_bottle", "tools_and_utilities"), + entry("critter_cage", "tools_and_utilities"), + entry("ultimate_pickaxe", "tools_and_utilities"), + entry("ultimate_axe", "tools_and_utilities"), + entry("ultimate_shovel", "tools_and_utilities"), + entry("ultimate_hoe", "tools_and_utilities"), + entry("battle_axe", "combat"), + entry("big_bertha", "combat"), + entry("basilisk_dagger", "combat"), + entry("ultimate_helmet", "combat"), + entry("ultimate_chestplate", "combat"), + entry("ultimate_leggings", "combat"), + entry("ultimate_boots", "combat"), + entry("ultimate_sword", "combat"), + entry("ultimate_bow", "combat"), + entry("ultimate_crossbow", "combat"), + entry("squidzooka", "combat"), + entry("rpo_launcher", "combat"), + entry("krakens_grasp", "combat"), + entry("shrink_ray", "combat"), + entry("growth_ray", "combat"), + entry("gravity_gun", "combat"), + entry("water_cannon", "combat"), + entry("attitude_adjuster", "combat"), + entry("lucid_pearl", "combat"), + entry("primordial_helmet", "combat"), + entry("primordial_chestplate", "combat"), + entry("primordial_leggings", "combat"), + entry("primordial_boots", "combat"), + entry("nightmare_helmet", "combat"), + entry("nightmare_chestplate", "combat"), + entry("nightmare_leggings", "combat"), + entry("nightmare_boots", "combat"), + entry("nightmare_sword", "combat"), + entry("blood_crystal_katana", "combat"), + entry("blood_crystal_helmet", "combat"), + entry("blood_crystal_chestplate", "combat"), + entry("blood_crystal_leggings", "combat"), + entry("blood_crystal_boots", "combat"), + entry("moggles", "combat"), + entry("scorpion_whip", "combat"), + entry("fallen_king_crown", "combat"), + entry("brutalfly_elytra", "combat"), + entry("jumpy_boots", "combat"), + entry("raw_uranium_scrap", "ingredients"), + entry("raw_titanium_scrap", "ingredients"), + entry("raw_uranium", "ingredients"), + entry("raw_titanium", "ingredients"), + entry("uranium_nugget", "ingredients"), + entry("titanium_nugget", "ingredients"), + entry("uranium_ingot", "ingredients"), + entry("titanium_ingot", "ingredients"), + entry("cloud_shark_fin", "ingredients"), + entry("cloud_shark_fin_soup", "ingredients"), + entry("basilisk_fang", "ingredients"), + entry("nightmare_scale", "ingredients"), + entry("molevore_nose", "ingredients"), + entry("moleworm", "ingredients"), + entry("mud_pie", "ingredients"), + entry("lucid_eye", "ingredients"), + entry("blood_crystal_shard", "ingredients"), + entry("blood_crystal_apple", "ingredients"), + entry("spirit_apple", "ingredients"), + entry("mantis_claw", "combat"), + entry("hercules_horn", "ingredients"), + entry("king_scale", "ingredients"), + entry("queen_scale", "ingredients"), + entry("chiten", "ingredients"), + entry("jerry_nucleus", "ingredients"), + entry("carapace", "ingredients"), + entry("stink_bug", "ingredients"), + entry("brutalfly_wing", "ingredients"), + entry("primordial_scute", "ingredients"), + entry("triffid_goo", "ingredients"), + entry("vortex_eye", "ingredients"), + entry("emperor_scorpion_stinger", "ingredients"), + entry("kraken_tooth", "ingredients"), + entry("kraken_tentacle", "ingredients"), + entry("jumpy_bug_leg", "ingredients"), + entry("cornea_ear", "ingredients"), + entry("corn", "ingredients"), + entry("high_fructose_corn_syrup", "ingredients"), + entry("peach", "ingredients"), + entry("peach_pie", "ingredients"), + entry("cornbread", "ingredients"), + entry("popcorn", "ingredients"), + entry("raw_corndog", "ingredients"), + entry("cooked_corndog", "ingredients"), + entry("raw_venison", "ingredients"), + entry("cooked_venison", "ingredients"), + entry("raw_bug_meat", "ingredients"), + entry("cooked_bug_meat", "ingredients"), + entry("broodfruit", "ingredients"), + entry("cheep", "ingredients"), + entry("root_beer", "ingredients"), + entry("rainbow_sugar", "ingredients"), + entry("big_bertha_blade", "ingredients"), + entry("big_bertha_handle", "ingredients"), + entry("big_bertha_hilt", "ingredients"), + entry("easter_bunny_spawn_egg", "spawn_eggs"), + entry("flying_squirrel_spawn_egg", "spawn_eggs"), + entry("caterpillar_spawn_egg", "spawn_eggs"), + entry("butterfly_spawn_egg", "spawn_eggs"), + entry("reverie_spawn_egg", "spawn_eggs"), + entry("brutalfly_spawn_egg", "spawn_eggs"), + entry("red_ant_spawn_egg", "spawn_eggs"), + entry("brown_ant_spawn_egg", "spawn_eggs"), + entry("rainbow_ant_spawn_egg", "spawn_eggs"), + entry("termite_spawn_egg", "spawn_eggs"), + entry("moleworm_spawn_egg", "spawn_eggs"), + entry("mantis_spawn_egg", "spawn_eggs"), + entry("alpha_mantis_spawn_egg", "spawn_eggs"), + entry("rolly_polly_spawn_egg", "spawn_eggs"), + entry("molevore_spawn_egg", "spawn_eggs"), + entry("triffid_spawn_egg", "spawn_eggs"), + entry("apple_cow_spawn_egg", "spawn_eggs"), + entry("golden_apple_cow_spawn_egg", "spawn_eggs"), + entry("enchanted_golden_apple_cow_spawn_egg", "spawn_eggs"), + entry("dr_trayaurus_spawn_egg", "spawn_eggs"), + entry("wasp_spawn_egg", "spawn_eggs"), + entry("bomber_spawn_egg", "spawn_eggs"), + entry("jumpy_bug_spawn_egg", "spawn_eggs"), + entry("spit_bug_spawn_egg", "spawn_eggs"), + entry("stink_bug_spawn_egg", "spawn_eggs"), + entry("cloud_shark_spawn_egg", "spawn_eggs"), + entry("kraken_spawn_egg", "spawn_eggs"), + entry("missile_squid_spawn_egg", "spawn_eggs"), + entry("octopus_bomb_spawn_egg", "spawn_eggs"), + entry("nightmare_spawn_egg", "spawn_eggs"), + entry("bed_bug_spawn_egg", "spawn_eggs"), + entry("lucid_spawn_egg", "spawn_eggs"), + entry("scorpion_spawn_egg", "spawn_eggs"), + entry("basilisk_spawn_egg", "spawn_eggs"), + entry("emperor_scorpion_spawn_egg", "spawn_eggs"), + entry("toreterror_spawn_egg", "spawn_eggs"), + entry("creeping_horror_spawn_egg", "spawn_eggs"), + entry("lurking_terror_spawn_egg", "spawn_eggs"), + entry("hercules_beetle_spawn_egg", "spawn_eggs"), + entry("jerry_spawn_egg", "spawn_eggs"), + entry("dorrie_spawn_egg", "spawn_eggs"), + entry("ouranwood_deer_spawn_egg", "spawn_eggs"), + entry("glimmer_spawn_egg", "spawn_eggs"), + entry("elka_spawn_egg", "spawn_eggs") + ); + + private static final List ANTARCHY_POTION_FAMILIES = List.of( + "dread", "long_dread", "inversion", "long_inversion", "stinky", "long_stinky", + "paralysis", "long_paralysis", "haste", "strong_haste", "shrinking", + "strong_shrinking", "extreme_shrinking", "growing", "strong_growing", "extreme_growing" + ); + + private static final Map ORDER_INDEX = createOrderIndex(); + + private static CatalogEntry entry(String path, String neoTabPath) { + return new CatalogEntry(path, neoTabPath, null); + } + + private static CatalogEntry entry(String path, String neoTabPath, String insertAfterPath) { + return new CatalogEntry(path, neoTabPath, insertAfterPath); + } + + private static Map createOrderIndex() { + HashMap index = new HashMap<>(); + for (int i = 0; i < CATALOG.size(); i++) { + index.put(CATALOG.get(i).path(), i); + } + return index; + } + + public static int orderIndex(Item item) { + return ORDER_INDEX.getOrDefault(path(item), Integer.MAX_VALUE); + } + + public static void populateAntarchyTab(AntarchyTabOutput output) { + for (CatalogEntry entry : CATALOG) { + if ("glimmer_bottle".equals(entry.path())) { + for (GlimmerVariant variant : GlimmerVariant.values()) { + output.accept(GlimmerBottleItem.create(variant)); + } + continue; + } + output.accept(item(entry.path())); + } + for (String potionPath : ANTARCHY_POTION_FAMILIES) { + acceptPotionFamily(output, potionPath); + } + } + + public static boolean populateNeoForgeVanillaTab(ResourceKey tabKey, HolderLookup.Provider holders, + NeoForgeVanillaTabOutput output) { + String tabPath = tabKey.location().getPath(); + boolean matched = false; + for (CatalogEntry entry : CATALOG) { + if (!tabPath.equals(entry.neoTabPath())) { + continue; + } + matched = true; + if (entry.insertAfterPath() != null) { + output.insertAfter(vanillaItem(entry.insertAfterPath()), item(entry.path())); + continue; + } + if ("combat".equals(tabPath)) { + if (isUltimateArmor(entry.path())) { + output.accept(UltimateGearHelper.createUltimateArmorStack(item(entry.path()), holders)); + continue; + } + if ("ultimate_bow".equals(entry.path())) { + output.accept(UltimateGearHelper.createUltimateBowStack(item(entry.path()), holders)); + continue; + } + } + output.accept(item(entry.path())); + } + if ("combat".equals(tabPath)) { + for (String potionPath : ANTARCHY_POTION_FAMILIES) { + Holder potion = potion(potionPath); + if (potion != null) { + output.accept(PotionContents.createItemStack(Items.POTION, potion)); + } + } + matched = true; + } + return matched; + } + + private static boolean isUltimateArmor(String path) { + return "ultimate_helmet".equals(path) + || "ultimate_chestplate".equals(path) + || "ultimate_leggings".equals(path) + || "ultimate_boots".equals(path); + } + + private static void acceptPotionFamily(AntarchyTabOutput output, String path) { + Holder potion = potion(path); + if (potion == null) { + return; + } + output.accept(PotionContents.createItemStack(Items.POTION, potion)); + output.accept(PotionContents.createItemStack(Items.SPLASH_POTION, potion)); + output.accept(PotionContents.createItemStack(Items.LINGERING_POTION, potion)); + output.accept(PotionContents.createItemStack(Items.TIPPED_ARROW, potion)); + } + + private static String path(Item item) { + return BuiltInRegistries.ITEM.getKey(item).getPath(); + } + + private static Item item(String path) { + return BuiltInRegistries.ITEM.get(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path)); + } + + private static Item vanillaItem(String path) { + return BuiltInRegistries.ITEM.get(ResourceLocation.withDefaultNamespace(path)); + } + + private static Holder potion(String path) { + Potion potion = BuiltInRegistries.POTION.get(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path)); + return potion == null ? null : BuiltInRegistries.POTION.wrapAsHolder(potion); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/CreativeTabOrder.java b/common/src/main/java/com/craisinlord/antarchy/content/CreativeTabOrder.java index cc1fafd8..bdfe445c 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/CreativeTabOrder.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/CreativeTabOrder.java @@ -8,362 +8,18 @@ public final class CreativeTabOrder { private CreativeTabOrder() {} public static final Comparator COMPARATOR = - Comparator.comparingInt(CreativeTabOrder::group) - .thenComparingInt(CreativeTabOrder::subOrder); + Comparator.comparingInt(CreativeTabContents::orderIndex) + .thenComparing(CreativeTabOrder::path); public static int group(Item item) { - String path = BuiltInRegistries.ITEM.getKey(item).getPath(); - return switch (path) { - case "ouranwood_log", "ouranwood_wood", "mossy_ouranwood_log", "mossy_ouranwood_wood", - "stripped_ouranwood_log", "stripped_ouranwood_wood", "duplicator_log", - "ouranwood_planks", "ouranwood_stairs", "ouranwood_slab", - "ouranwood_fence", "ouranwood_fence_gate", - "ouranwood_door", "ouranwood_trapdoor", - "ouranwood_pressure_plate", "ouranwood_button", - "ouranwood_sign", "ouranwood_hanging_sign", - "ouranwood_boat", "ouranwood_chest_boat", - "peach_log", "peach_wood", "stripped_peach_log", "stripped_peach_wood", - "peach_planks", "peach_stairs", "peach_slab", "peach_fence", "peach_fence_gate", - "peach_door", "peach_trapdoor", "peach_pressure_plate", "peach_button", - "peach_sign", "peach_hanging_sign", "peach_boat", "peach_chest_boat" -> 0; - case "nyxite", "polished_nyxite", "chiseled_nyxite", "nyxite_bricks", - "nyxite_stairs", "nyxite_slab", "nyxite_wall", - "polished_nyxite_stairs", "polished_nyxite_slab", "polished_nyxite_wall", - "nyxite_brick_stairs", "nyxite_brick_slab", "nyxite_brick_wall", - "pale_nyxite", "nyxite_spike", "potent_nyxite" -> 1; - case "shellstone", "polished_shellstone", "shellstone_bricks", "chiseled_shellstone", - "mossy_shellstone_bricks", "cracked_shellstone_bricks", - "shellstone_stairs", "shellstone_slab", "shellstone_wall", - "polished_shellstone_stairs", "polished_shellstone_slab", "polished_shellstone_wall", - "shellstone_brick_stairs", "shellstone_brick_slab", "shellstone_brick_wall", - "mossy_shellstone_brick_stairs", "mossy_shellstone_brick_slab", "mossy_shellstone_brick_wall", - "blush_moss_block", "blush_moss_carpet", - "lumen_froglight", "roseate_froglight" -> 2; - case "antimetal", "polished_antimetal" -> 3; - case "dream_sand", "dream_sandstone", "chiseled_dream_sandstone", - "cut_dream_sandstone", "smooth_dream_sandstone", - "dream_sandstone_stairs", "dream_sandstone_slab", "dream_sandstone_wall", - "smooth_dream_sandstone_stairs", "smooth_dream_sandstone_slab", - "cut_dream_sandstone_slab" -> 4; - case "umbral_moss_block", "umbral_moss_carpet" -> 4; - case "uranium_ore", "deepslate_uranium_ore", "broodstone_uranium_ore", - "titanium_ore", "deepslate_titanium_ore", "broodstone_titanium_ore", - "uranium_block", "titanium_block", - "cut_uranium", "cut_titanium", "cut_uranium_slab", "cut_titanium_slab", - "cut_uranium_stairs", "cut_titanium_stairs", - "chiseled_uranium", "chiseled_titanium", - "uranium_door", "titanium_door", "uranium_trapdoor", "titanium_trapdoor", - "uranium_bars", "titanium_bars", "uranium_bulb", "titanium_bulb" -> 6; - case "raw_uranium", "raw_titanium", "raw_uranium_scrap", "raw_titanium_scrap", - "raw_uranium_block", "raw_titanium_block" -> 7; - case "blood_crystal_block", "small_blood_crystal_bud", "medium_blood_crystal_bud", - "large_blood_crystal_bud", "budding_blood_crystal", "blood_crystal_cluster", - "myrmite", "biomite", "biomite_turf", "biowart", "biowart_tendrils", - "broodstone", "polished_broodstone", "chiseled_broodstone", "broodstone_bricks", - "broodstone_stairs", "broodstone_slab", "broodstone_wall", - "polished_broodstone_stairs", "polished_broodstone_slab", "polished_broodstone_wall", - "broodstone_brick_stairs", "broodstone_brick_slab", "broodstone_brick_wall", - "myrmite_coal_ore", "chiten_block", "chiten_spike", "amber_moss_block", "amber_moss_carpet", - "glowcap_mushroom", "glowcap_mushroom_block" -> 8; - case "ouranwood_leaves", "peach_leaves" -> 9; - case "duplicator_sapling", "ouranwood_acorn", "peach_sapling", "corn_seeds" -> 10; - case "orange_milkweed", "pink_milkweed", "camellia", "spider_lily", "lotus", "hushweed", "hanging_creeproots", "molting_vines", "amber_lichen", "creepvine", - "triffid_goo_block", "cloud_block", "wasp_nest", - "red_ant_nest", "brown_ant_nest", "rainbow_ant_nest", "termite_nest", - "star_coral", "star_coral_fan", "star_coral_block", - "dead_star_coral", "dead_star_coral_fan", "dead_star_coral_block" -> 11; - case "dream_torch", "dream_lantern", "dream_campfire", "dream_fire", "dream_fire_ceiling" -> 12; - case "antimetal_scaffolding" -> 13; - case "infested_rooted_dirt", "infested_coarse_dirt", "bed_bug_egg", "creeping_horror_egg", "lurking_terror_egg", "jumpy_bug_egg", "spit_bug_egg", "jerry_egg" -> 14; - case "ultimate_pickaxe", "ultimate_axe", "ultimate_shovel", "ultimate_hoe", - "duct_tape", "diamond_minecart", "critter_cage", "gravity_sculk_sensor", "miners_dream" -> 15; - case "bile_bucket", "ichor_bucket", "antiwater_bucket", "cloud_bucket", "lumen_bucket" -> 16; - case "moggles", "brutalfly_elytra", "fallen_king_crown", "jumpy_boots" -> 17; - case "battle_axe", "basilisk_dagger", "squidzooka", "rpo_launcher", "shrink_ray", "growth_ray", - "gravity_gun", "water_cannon", "nightmare_sword", "lucid_pearl", "scorpion_whip", "blood_crystal_katana", - "attitude_adjuster", "big_bertha", "big_bertha_blade", "big_bertha_handle", "big_bertha_hilt", - "ultimate_sword", "ultimate_mace", "krakens_grasp" -> 18; - case "primordial_helmet", "primordial_chestplate", - "primordial_leggings", "primordial_boots", - "blood_crystal_helmet", "blood_crystal_chestplate", - "blood_crystal_leggings", "blood_crystal_boots", - "nightmare_helmet", "nightmare_chestplate", - "nightmare_leggings", "nightmare_boots", - "ultimate_helmet", "ultimate_chestplate", - "ultimate_leggings", "ultimate_boots" -> 19; - case "ultimate_bow", "ultimate_crossbow" -> 20; - case "cloud_shark_fin_soup", "mud_pie", "peach_pie", "cornbread", "popcorn", "rainbow_sugar", - "blood_crystal_apple", "spirit_apple", "peach", "raw_corndog", "cooked_corndog", - "raw_venison", "cooked_venison", "raw_bug_meat", "cooked_bug_meat", "broodfruit" -> 21; - case "blood_crystal_shard", "cloud_shark_fin", "basilisk_fang", "kraken_tooth", "kraken_tentacle", - "emperor_scorpion_stinger", "nightmare_scale", "molevore_nose", - "moleworm", "uranium_nugget", "titanium_nugget", - "uranium_ingot", "titanium_ingot", "lucid_eye", - "mantis_claw", "hercules_horn", "jumpy_bug_leg", "brutalfly_wing", "cornea_ear", - "primordial_scute", "triffid_goo", "vortex_eye", - "king_scale", "queen_scale", "chiten", "jerry_nucleus", "carapace", - "stink_bug", "corn", "high_fructose_corn_syrup" -> 22; - case "reverie_bottle", "glimmer_bottle", "root_beer" -> 24; - case "easter_bunny_spawn_egg", "flying_squirrel_spawn_egg", "caterpillar_spawn_egg", - "butterfly_spawn_egg", "reverie_spawn_egg", "brutalfly_spawn_egg", - "red_ant_spawn_egg", "brown_ant_spawn_egg", "rainbow_ant_spawn_egg", "termite_spawn_egg", - "moleworm_spawn_egg", "mantis_spawn_egg", "alpha_mantis_spawn_egg", "rolly_polly_spawn_egg", - "molevore_spawn_egg", "triffid_spawn_egg", "apple_cow_spawn_egg", "golden_apple_cow_spawn_egg", - "enchanted_golden_apple_cow_spawn_egg", "dr_trayaurus_spawn_egg", "wasp_spawn_egg", - "bomber_spawn_egg", "jumpy_bug_spawn_egg", "spit_bug_spawn_egg", "stink_bug_spawn_egg", "cloud_shark_spawn_egg", - "kraken_spawn_egg", "missile_squid_spawn_egg", "octopus_bomb_spawn_egg", - "nightmare_spawn_egg", "bed_bug_spawn_egg", "lucid_spawn_egg", "scorpion_spawn_egg", - "basilisk_spawn_egg", "emperor_scorpion_spawn_egg", "toreterror_spawn_egg", - "dorrie_spawn_egg", "glimmer_spawn_egg", "ouranwood_deer_spawn_egg", "elka_spawn_egg", - "hercules_beetle_spawn_egg", "creeping_horror_spawn_egg", "lurking_terror_spawn_egg", "jerry_spawn_egg" -> 25; - default -> 99; - }; + return CreativeTabContents.orderIndex(item); } public static int subOrder(Item item) { - String path = BuiltInRegistries.ITEM.getKey(item).getPath(); - return switch (path) { - case "ouranwood_log" -> 0; - case "ouranwood_wood" -> 1; - case "mossy_ouranwood_log" -> 2; - case "mossy_ouranwood_wood" -> 3; - case "stripped_ouranwood_log" -> 4; - case "stripped_ouranwood_wood" -> 5; - case "duplicator_log" -> 6; - case "ouranwood_planks" -> 7; - case "ouranwood_stairs" -> 8; - case "ouranwood_slab" -> 9; - case "ouranwood_fence" -> 10; - case "ouranwood_fence_gate" -> 11; - case "ouranwood_door" -> 12; - case "ouranwood_trapdoor" -> 13; - case "ouranwood_pressure_plate" -> 14; - case "ouranwood_button" -> 15; - case "ouranwood_sign" -> 16; - case "ouranwood_hanging_sign" -> 17; - case "ouranwood_boat" -> 18; - case "ouranwood_chest_boat" -> 19; - case "peach_log" -> 20; - case "peach_wood" -> 21; - case "stripped_peach_log" -> 22; - case "stripped_peach_wood" -> 23; - case "peach_planks" -> 24; - case "peach_stairs" -> 25; - case "peach_slab" -> 26; - case "peach_fence" -> 27; - case "peach_fence_gate" -> 28; - case "peach_door" -> 29; - case "peach_trapdoor" -> 30; - case "peach_pressure_plate" -> 31; - case "peach_button" -> 32; - case "peach_sign" -> 33; - case "peach_hanging_sign" -> 34; - case "peach_boat" -> 35; - case "peach_chest_boat" -> 36; - case "ouranwood_leaves" -> 0; - case "peach_leaves" -> 1; - case "duplicator_sapling" -> 0; - case "ouranwood_acorn" -> 1; - case "peach_sapling" -> 2; - case "corn_seeds" -> 3; - case "orange_milkweed" -> 0; - case "pink_milkweed" -> 1; - case "camellia" -> 2; - case "spider_lily" -> 3; - case "hushweed" -> 4; - case "hanging_creeproots" -> 21; - case "molting_vines" -> 22; - case "amber_lichen" -> 5; - case "creepvine" -> 6; - case "triffid_goo_block" -> 7; - case "cloud_block" -> 8; - case "wasp_nest" -> 9; - case "red_ant_nest" -> 10; - case "brown_ant_nest" -> 11; - case "rainbow_ant_nest" -> 12; - case "termite_nest" -> 13; - case "star_coral" -> 14; - case "star_coral_fan" -> 15; - case "star_coral_block" -> 16; - case "dead_star_coral" -> 17; - case "dead_star_coral_fan" -> 18; - case "dead_star_coral_block" -> 19; - case "lotus" -> 20; - case "blood_crystal_block" -> 0; - case "small_blood_crystal_bud" -> 1; - case "medium_blood_crystal_bud" -> 2; - case "large_blood_crystal_bud" -> 3; - case "budding_blood_crystal" -> 4; - case "blood_crystal_cluster" -> 5; - case "myrmite" -> 6; - case "broodstone" -> 7; - case "polished_broodstone" -> 8; - case "chiseled_broodstone" -> 9; - case "broodstone_bricks" -> 10; - case "broodstone_stairs" -> 11; - case "broodstone_slab" -> 12; - case "broodstone_wall" -> 13; - case "polished_broodstone_stairs" -> 14; - case "polished_broodstone_slab" -> 15; - case "polished_broodstone_wall" -> 16; - case "broodstone_brick_stairs" -> 17; - case "broodstone_brick_slab" -> 18; - case "broodstone_brick_wall" -> 19; - case "myrmite_coal_ore" -> 20; - case "chiten_block" -> 21; - case "chiten_spike" -> 22; - case "amber_moss_block" -> 23; - case "amber_moss_carpet" -> 24; - case "glowcap_mushroom" -> 25; - case "glowcap_mushroom_block" -> 26; - case "uranium_ore" -> 0; - case "deepslate_uranium_ore" -> 1; - case "broodstone_uranium_ore" -> 2; - case "titanium_ore" -> 3; - case "deepslate_titanium_ore" -> 4; - case "broodstone_titanium_ore" -> 5; - case "uranium_block" -> 4; - case "titanium_block" -> 5; - case "cut_uranium" -> 6; - case "cut_titanium" -> 7; - case "cut_uranium_slab" -> 8; - case "cut_titanium_slab" -> 9; - case "cut_uranium_stairs" -> 10; - case "cut_titanium_stairs" -> 11; - case "chiseled_uranium" -> 12; - case "chiseled_titanium" -> 13; - case "uranium_door" -> 14; - case "titanium_door" -> 15; - case "uranium_trapdoor" -> 16; - case "titanium_trapdoor" -> 17; - case "uranium_bars" -> 18; - case "titanium_bars" -> 19; - case "uranium_bulb" -> 20; - case "titanium_bulb" -> 21; - case "raw_uranium" -> 0; - case "raw_titanium" -> 1; - case "raw_uranium_scrap" -> 2; - case "raw_titanium_scrap" -> 3; - case "raw_uranium_block" -> 4; - case "raw_titanium_block" -> 5; - case "dream_torch" -> 0; - case "dream_lantern" -> 1; - case "dream_campfire" -> 2; - case "dream_fire" -> 3; - case "dream_fire_ceiling" -> 4; - case "blush_moss_block" -> 18; - case "blush_moss_carpet" -> 19; - case "lumen_froglight" -> 20; - case "roseate_froglight" -> 21; - case "infested_rooted_dirt" -> 0; - case "infested_coarse_dirt" -> 1; - case "bed_bug_egg" -> 2; - case "ultimate_pickaxe" -> 0; - case "ultimate_axe" -> 1; - case "ultimate_shovel" -> 2; - case "ultimate_hoe" -> 3; - case "duct_tape" -> 4; - case "diamond_minecart" -> 5; - case "critter_cage" -> 6; - case "gravity_sculk_sensor" -> 7; - case "miners_dream" -> 8; - case "bile_bucket" -> 0; - case "ichor_bucket" -> 1; - case "antiwater_bucket" -> 2; - case "cloud_bucket" -> 3; - case "lumen_bucket" -> 4; - case "moggles" -> 0; - case "brutalfly_elytra" -> 1; - case "fallen_king_crown" -> 2; - case "jumpy_boots" -> 3; - case "battle_axe" -> 0; - case "basilisk_dagger" -> 1; - case "squidzooka" -> 2; - case "rpo_launcher" -> 3; - case "shrink_ray" -> 4; - case "growth_ray" -> 5; - case "gravity_gun" -> 6; - case "water_cannon" -> 7; - case "nightmare_sword" -> 8; - case "attitude_adjuster" -> 9; - case "lucid_pearl" -> 10; - case "scorpion_whip" -> 11; - case "blood_crystal_katana" -> 12; - case "big_bertha" -> 13; - case "big_bertha_blade" -> 14; - case "big_bertha_handle" -> 15; - case "big_bertha_hilt" -> 16; - case "ultimate_sword" -> 17; - case "ultimate_mace" -> 18; - case "krakens_grasp" -> 19; - case "primordial_helmet" -> 0; - case "primordial_chestplate" -> 1; - case "primordial_leggings" -> 2; - case "primordial_boots" -> 3; - case "blood_crystal_helmet" -> 4; - case "blood_crystal_chestplate" -> 5; - case "blood_crystal_leggings" -> 6; - case "blood_crystal_boots" -> 7; - case "nightmare_helmet" -> 8; - case "nightmare_chestplate" -> 9; - case "nightmare_leggings" -> 10; - case "nightmare_boots" -> 11; - case "ultimate_helmet" -> 12; - case "ultimate_chestplate" -> 13; - case "ultimate_leggings" -> 14; - case "ultimate_boots" -> 15; - case "ultimate_bow" -> 0; - case "ultimate_crossbow" -> 1; - case "cloud_shark_fin_soup" -> 0; - case "mud_pie" -> 1; - case "peach_pie" -> 2; - case "cornbread" -> 3; - case "popcorn" -> 4; - case "rainbow_sugar" -> 5; - case "raw_corndog" -> 6; - case "cooked_corndog" -> 7; - case "raw_venison" -> 8; - case "cooked_venison" -> 9; - case "raw_bug_meat" -> 10; - case "cooked_bug_meat" -> 11; - case "broodfruit" -> 12; - case "blood_crystal_apple" -> 10; - case "spirit_apple" -> 11; - case "peach" -> 12; - case "reverie_bottle" -> 0; - case "glimmer_bottle" -> 1; - case "root_beer" -> 2; - case "blood_crystal_shard" -> 0; - case "cloud_shark_fin" -> 1; - case "basilisk_fang" -> 2; - case "kraken_tooth" -> 3; - case "kraken_tentacle" -> 4; - case "emperor_scorpion_stinger" -> 5; - case "nightmare_scale" -> 6; - case "molevore_nose" -> 7; - case "moleworm" -> 8; - case "uranium_nugget" -> 9; - case "titanium_nugget" -> 10; - case "uranium_ingot" -> 11; - case "titanium_ingot" -> 12; - case "lucid_eye" -> 13; - case "mantis_claw" -> 14; - case "hercules_horn" -> 15; - case "jumpy_bug_leg" -> 16; - case "brutalfly_wing" -> 17; - case "cornea_ear" -> 18; - case "primordial_scute" -> 19; - case "triffid_goo" -> 20; - case "vortex_eye" -> 21; - case "king_scale" -> 22; - case "queen_scale" -> 23; - case "chiten" -> 24; - case "jerry_nucleus" -> 25; - case "carapace" -> 26; - case "stink_bug" -> 27; - case "corn" -> 28; - case "high_fructose_corn_syrup" -> 29; - default -> 0; - }; + return 0; + } + + private static String path(Item item) { + return BuiltInRegistries.ITEM.getKey(item).getPath(); } } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/AntarchyAdvancements.java b/common/src/main/java/com/craisinlord/antarchy/content/advancement/AntarchyAdvancements.java similarity index 94% rename from common/src/main/java/com/craisinlord/antarchy/content/AntarchyAdvancements.java rename to common/src/main/java/com/craisinlord/antarchy/content/advancement/AntarchyAdvancements.java index ad7c3374..dfea92d4 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/AntarchyAdvancements.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/advancement/AntarchyAdvancements.java @@ -1,4 +1,4 @@ -package com.craisinlord.antarchy.content; +package com.craisinlord.antarchy.content.advancement; import net.minecraft.advancements.AdvancementHolder; import net.minecraft.resources.ResourceLocation; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/BedBugEggBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/BedBugEggBlock.java index 48818b6a..de81e7d8 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/block/BedBugEggBlock.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/BedBugEggBlock.java @@ -180,6 +180,10 @@ public class BedBugEggBlock extends Block { } } + public void hatchWithNucleus(ServerLevel level, BlockPos pos, BlockState state) { + this.hatchEggs(level, pos, state, level.random); + } + private void decreaseEggs(Level level, BlockPos pos, BlockState state) { int eggs = state.getValue(EGGS); if (eggs <= 1) { diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/BiowartTendrilsBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/BiowartTendrilsBlock.java index a36c6d1c..4134ffc2 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/block/BiowartTendrilsBlock.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/BiowartTendrilsBlock.java @@ -1,5 +1,6 @@ package com.craisinlord.antarchy.content.block; +import com.craisinlord.antarchy.content.AntarchyTags; import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.world.level.BlockGetter; @@ -26,7 +27,7 @@ public class BiowartTendrilsBlock extends BushBlock { @Override protected boolean mayPlaceOn(BlockState state, BlockGetter level, BlockPos pos) { - return super.mayPlaceOn(state, level, pos); + return state.is(AntarchyTags.Blocks.BIOWART_TENDRILS_PLANTABLE) || super.mayPlaceOn(state, level, pos); } @Override diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/CreepingHorrorEggBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/CreepingHorrorEggBlock.java index 91b5af76..0c09713e 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/block/CreepingHorrorEggBlock.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/CreepingHorrorEggBlock.java @@ -4,6 +4,7 @@ import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.entity.CreepingHorrorEntity; import com.craisinlord.antarchy.content.block.AmberMossBlock; import com.craisinlord.antarchy.content.block.LurkingTerrorEggBlock; +import com.craisinlord.antarchy.content.horde.CavarynHordeManager; import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -37,6 +38,7 @@ public class CreepingHorrorEggBlock extends Block { public static final IntegerProperty HATCH = BlockStateProperties.HATCH; public static final IntegerProperty EGGS = BlockStateProperties.EGGS; private static final float PANIC_HATCH_CHANCE = 0.25F; + private static final double HORDE_ACCELERATION_RADIUS = 5.0D; private static final int MAX_HATCH = 2; private static final int MAX_EGGS = 4; private static final VoxelShape SINGLE_SHAPE = Block.box(3.0D, 0.0D, 3.0D, 13.0D, 7.0D, 13.0D); @@ -204,6 +206,10 @@ public class CreepingHorrorEggBlock extends Block { } } + public void hatchWithNucleus(ServerLevel level, BlockPos pos, BlockState state) { + this.hatchEggs(level, pos, state, level.random, state.getValue(EGGS)); + } + private static int rollPanickedEggs(int eggs, RandomSource random) { int hatchedEggs = 0; for (int i = 0; i < eggs; i++) { @@ -224,6 +230,11 @@ public class CreepingHorrorEggBlock extends Block { } private boolean shouldUpdateHatchLevel(Level level, BlockPos pos) { + if (level instanceof ServerLevel serverLevel + && CavarynHordeManager.shouldAccelerateNearbyEggHatching(serverLevel, pos, HORDE_ACCELERATION_RADIUS, level.random)) { + return true; + } + boolean onAmberMoss = level.getBlockState(pos.below()).getBlock() instanceof AmberMossBlock; return level.random.nextInt(onAmberMoss ? 150 : 500) == 0; } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/DuctTapeBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/DuctTapeBlock.java index f881db51..5ddf8e5c 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/block/DuctTapeBlock.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/DuctTapeBlock.java @@ -1,7 +1,7 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.config.AntarchySettings; -import com.craisinlord.antarchy.content.AntarchyAdvancements; +import com.craisinlord.antarchy.content.advancement.AntarchyAdvancements; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchyTags; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/JerryEggBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/JerryEggBlock.java index 3a0c37cd..edea3005 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/block/JerryEggBlock.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/JerryEggBlock.java @@ -2,6 +2,7 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.content.entity.JerryEntity; +import com.craisinlord.antarchy.content.horde.CavarynHordeManager; import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -32,6 +33,7 @@ public class JerryEggBlock extends Block { public static final BooleanProperty ROTATED = BooleanProperty.create("rotated"); private static final ResourceLocation JERRY_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "jerry"); private static final int HATCH_CHECK_INTERVAL = 1200; + private static final double HORDE_ACCELERATION_RADIUS = 5.0D; private static final VoxelShape SHAPE = Block.box(1.5D, 0.0D, 1.5D, 14.5D, 16.0D, 14.5D); public JerryEggBlock(BlockBehaviour.Properties properties) { @@ -83,9 +85,18 @@ public class JerryEggBlock extends Block { @Override protected void randomTick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { - if (random.nextInt(HATCH_CHECK_INTERVAL) != 0) { + if (!CavarynHordeManager.shouldAccelerateNearbyEggHatching(level, pos, HORDE_ACCELERATION_RADIUS, random) + && random.nextInt(HATCH_CHECK_INTERVAL) != 0) { return; } + this.hatch(level, pos, random); + } + + public void hatchWithNucleus(ServerLevel level, BlockPos pos) { + this.hatch(level, pos, level.random); + } + + private void hatch(ServerLevel level, BlockPos pos, RandomSource random) { EntityType entityType = BuiltInRegistries.ENTITY_TYPE.get(JERRY_ID); if (entityType.create(level) instanceof JerryEntity jerry) { jerry.setStage(JerryEntity.Stage.INFANT); diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/JumpyBugEggBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/JumpyBugEggBlock.java index a37ae85a..f5dac862 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/block/JumpyBugEggBlock.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/JumpyBugEggBlock.java @@ -2,6 +2,7 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.content.entity.JumpyBugEntity; +import com.craisinlord.antarchy.content.horde.CavarynHordeManager; import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -38,6 +39,7 @@ public class JumpyBugEggBlock extends Block { public static final BooleanProperty ROTATED = BooleanProperty.create("rotated"); private static final int MAX_HATCH = 2; private static final double PLAYER_PROXIMITY_RADIUS = 12.0D; + private static final double HORDE_ACCELERATION_RADIUS = 5.0D; private static final float PLAYER_PROXIMITY_HATCH_CHANCE = 0.25F; private static final int PLAYER_PROXIMITY_CHECK_INTERVAL = 200; private static final VoxelShape FLOOR_SHAPE = Block.box(1.5D, 0.0D, 1.5D, 14.5D, 16.0D, 14.5D); @@ -119,6 +121,11 @@ public class JumpyBugEggBlock extends Block { } private boolean shouldUpdateHatchLevel(Level level, BlockPos pos, BlockState state) { + if (level instanceof ServerLevel serverLevel + && CavarynHordeManager.shouldAccelerateNearbyEggHatching(serverLevel, pos, HORDE_ACCELERATION_RADIUS, level.random)) { + return true; + } + if (level.random.nextInt(PLAYER_PROXIMITY_CHECK_INTERVAL) == 0) { Player nearbyPlayer = level.getNearestPlayer(pos.getX() + 0.5D, pos.getY() + 0.5D, pos.getZ() + 0.5D, PLAYER_PROXIMITY_RADIUS, false); if (nearbyPlayer != null && level.random.nextFloat() < PLAYER_PROXIMITY_HATCH_CHANCE) { @@ -149,6 +156,10 @@ public class JumpyBugEggBlock extends Block { level.addFreshEntity(entity); } + public void hatchWithNucleus(ServerLevel level, BlockPos pos) { + this.hatch(level, pos, level.random); + } + @Override protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(HATCH, HANGING, ROTATED); diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/LurkingTerrorEggBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/LurkingTerrorEggBlock.java index f352b6c0..8a05880c 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/block/LurkingTerrorEggBlock.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/LurkingTerrorEggBlock.java @@ -4,6 +4,7 @@ import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.entity.LurkingTerrorEntity; import com.craisinlord.antarchy.content.block.AmberMossBlock; import com.craisinlord.antarchy.content.block.CreepingHorrorEggBlock; +import com.craisinlord.antarchy.content.horde.CavarynHordeManager; import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -37,6 +38,7 @@ public class LurkingTerrorEggBlock extends Block { public static final IntegerProperty HATCH = BlockStateProperties.HATCH; public static final IntegerProperty EGGS = BlockStateProperties.EGGS; private static final float PANIC_HATCH_CHANCE = 0.25F; + private static final double HORDE_ACCELERATION_RADIUS = 5.0D; private static final int MAX_HATCH = 2; private static final int MAX_EGGS = 4; private static final VoxelShape SINGLE_SHAPE = Block.box(3.0D, 0.0D, 3.0D, 13.0D, 7.0D, 13.0D); @@ -204,6 +206,10 @@ public class LurkingTerrorEggBlock extends Block { } } + public void hatchWithNucleus(ServerLevel level, BlockPos pos, BlockState state) { + this.hatchEggs(level, pos, state, level.random, state.getValue(EGGS)); + } + private static int rollPanickedEggs(int eggs, RandomSource random) { int hatchedEggs = 0; for (int i = 0; i < eggs; i++) { @@ -224,6 +230,11 @@ public class LurkingTerrorEggBlock extends Block { } private boolean shouldUpdateHatchLevel(Level level, BlockPos pos) { + if (level instanceof ServerLevel serverLevel + && CavarynHordeManager.shouldAccelerateNearbyEggHatching(serverLevel, pos, HORDE_ACCELERATION_RADIUS, level.random)) { + return true; + } + boolean onAmberMoss = level.getBlockState(pos.below()).getBlock() instanceof AmberMossBlock; return level.random.nextInt(onAmberMoss ? 150 : 500) == 0; } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/PotentNyxiteBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/PotentNyxiteBlock.java index 414fa23d..4a0a7f5c 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/block/PotentNyxiteBlock.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/PotentNyxiteBlock.java @@ -1,9 +1,9 @@ package com.craisinlord.antarchy.content.block; -import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; import com.craisinlord.antarchy.content.block.state.PotentNyxiteState; import com.craisinlord.antarchy.content.AntarchyTags; +import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks; import com.mojang.serialization.MapCodec; import java.util.function.Supplier; import net.minecraft.core.BlockPos; @@ -31,13 +31,9 @@ import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.Fluids; public class PotentNyxiteBlock extends BaseEntityBlock { - private static final ResourceLocation ANTIWATER_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "antiwater"); - private static final ResourceLocation FLOWING_ANTIWATER_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "flowing_antiwater"); - private static final ResourceLocation ICHOR_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "ichor"); - private static final ResourceLocation FLOWING_ICHOR_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "flowing_ichor"); - private static final ResourceLocation HYPNOTIC_GAS_SOUND_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "potent_nyxite_hypnotic_gas"); - private static final ResourceLocation HYPNOTIC_GAS_CLOUD_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "hypnotic_gas_cloud"); - private static final ResourceLocation HYPNOTIC_GAS_CLOUD_DOWN_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "hypnotic_gas_cloud_down"); + private static final ResourceLocation HYPNOTIC_GAS_SOUND_ID = ResourceLocation.fromNamespaceAndPath("antarchy", "potent_nyxite_hypnotic_gas"); + private static final ResourceLocation HYPNOTIC_GAS_CLOUD_ID = ResourceLocation.fromNamespaceAndPath("antarchy", "hypnotic_gas_cloud"); + private static final ResourceLocation HYPNOTIC_GAS_CLOUD_DOWN_ID = ResourceLocation.fromNamespaceAndPath("antarchy", "hypnotic_gas_cloud_down"); public static final EnumProperty STATE = EnumProperty.create("state", PotentNyxiteState.class); @@ -177,16 +173,6 @@ public class PotentNyxiteBlock extends BaseEntityBlock { return fluidDirection != null && hasContinuousTrigger(level, pos, fluidDirection); } - public static boolean isAntiwater(FluidState fluidState) { - ResourceLocation fluidId = BuiltInRegistries.FLUID.getKey(fluidState.getType()); - return ANTIWATER_ID.equals(fluidId) || FLOWING_ANTIWATER_ID.equals(fluidId); - } - - public static boolean isIchor(FluidState fluidState) { - ResourceLocation fluidId = BuiltInRegistries.FLUID.getKey(fluidState.getType()); - return ICHOR_ID.equals(fluidId) || FLOWING_ICHOR_ID.equals(fluidId); - } - public static Direction getEruptionDirection(LevelAccessor level, BlockPos pos) { Direction fluidDirection = getFluidColumnDirection(level, pos); if (fluidDirection != null) { @@ -236,12 +222,12 @@ public class PotentNyxiteBlock extends BaseEntityBlock { public static boolean hasAntiwaterOnSide(LevelAccessor level, BlockPos pos, Direction direction) { FluidState fluidState = level.getFluidState(pos.relative(direction)); - return fluidState.isSource() && isAntiwater(fluidState); + return fluidState.isSource() && AntarchyFluidChecks.isAntiwater(fluidState); } public static boolean hasGasFluid(LevelAccessor level, BlockPos pos, Direction direction) { FluidState fluidState = level.getFluidState(pos.relative(direction)); - return fluidState.isSource() && isAntiwater(fluidState); + return fluidState.isSource() && AntarchyFluidChecks.isAntiwater(fluidState); } public static boolean hasPeriodicTrigger(LevelAccessor level, BlockPos pos, Direction direction) { @@ -269,7 +255,7 @@ public class PotentNyxiteBlock extends BaseEntityBlock { BlockPos.MutableBlockPos cursor = pos.relative(direction).mutable(); while (true) { FluidState fluidState = level.getFluidState(cursor); - if (!isAntiwater(fluidState)) { + if (!AntarchyFluidChecks.isAntiwater(fluidState)) { break; } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/SpitBugEggBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/SpitBugEggBlock.java index a674c328..e29802ad 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/block/SpitBugEggBlock.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/SpitBugEggBlock.java @@ -2,6 +2,7 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.content.entity.SpitBugEntity; +import com.craisinlord.antarchy.content.horde.CavarynHordeManager; import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -37,6 +38,7 @@ public class SpitBugEggBlock extends Block { public static final BooleanProperty ROTATED = BooleanProperty.create("rotated"); private static final int MAX_HATCH = 2; private static final double PLAYER_PROXIMITY_RADIUS = 12.0D; + private static final double HORDE_ACCELERATION_RADIUS = 5.0D; private static final float PLAYER_PROXIMITY_HATCH_CHANCE = 0.25F; private static final int PLAYER_PROXIMITY_CHECK_INTERVAL = 200; private static final VoxelShape SHAPE = Block.box(1.5D, 0.0D, 1.5D, 14.5D, 16.0D, 14.5D); @@ -106,6 +108,11 @@ public class SpitBugEggBlock extends Block { } private boolean shouldUpdateHatchLevel(Level level, BlockPos pos) { + if (level instanceof ServerLevel serverLevel + && CavarynHordeManager.shouldAccelerateNearbyEggHatching(serverLevel, pos, HORDE_ACCELERATION_RADIUS, level.random)) { + return true; + } + if (level.random.nextInt(PLAYER_PROXIMITY_CHECK_INTERVAL) == 0) { Player nearbyPlayer = level.getNearestPlayer(pos.getX() + 0.5D, pos.getY() + 0.5D, pos.getZ() + 0.5D, PLAYER_PROXIMITY_RADIUS, false); if (nearbyPlayer != null && level.random.nextFloat() < PLAYER_PROXIMITY_HATCH_CHANCE) { @@ -135,6 +142,10 @@ public class SpitBugEggBlock extends Block { level.addFreshEntity(entity); } + public void hatchWithNucleus(ServerLevel level, BlockPos pos) { + this.hatch(level, pos, level.random); + } + @Override protected void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(HATCH, ROTATED); diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/entity/PotentNyxiteBlockEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/block/entity/PotentNyxiteBlockEntity.java index fcfce0f4..8c09372d 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/block/entity/PotentNyxiteBlockEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/entity/PotentNyxiteBlockEntity.java @@ -5,6 +5,7 @@ import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.block.PotentNyxiteBlock; import com.craisinlord.antarchy.content.block.state.PotentNyxiteState; +import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks; import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; @@ -502,7 +503,7 @@ public class PotentNyxiteBlockEntity extends BlockEntity { } private static boolean isHypnoticGasFluid(FluidState fluidState) { - return PotentNyxiteBlock.isAntiwater(fluidState); + return AntarchyFluidChecks.isAntiwater(fluidState); } private static boolean haveLineOfSight(Level level, Vec3 from, Vec3 to) { diff --git a/common/src/main/java/com/craisinlord/antarchy/content/boss/EntityLinkedServerBossEvent.java b/common/src/main/java/com/craisinlord/antarchy/content/boss/EntityLinkedServerBossEvent.java new file mode 100644 index 00000000..b615c6ef --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/boss/EntityLinkedServerBossEvent.java @@ -0,0 +1,20 @@ +package com.craisinlord.antarchy.content.boss; + +import java.util.UUID; +import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerBossEvent; +import net.minecraft.world.BossEvent; + +public class EntityLinkedServerBossEvent extends ServerBossEvent { + private final UUID entityId; + + public EntityLinkedServerBossEvent(UUID entityId, Component name, BossEvent.BossBarColor color, BossEvent.BossBarOverlay overlay) { + super(name, color, overlay); + this.entityId = entityId; + } + + @Override + public UUID getId() { + return this.entityId; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/GoopedHudRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/GoopedHudRenderer.java index 4e8a6e36..228dd136 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/client/GoopedHudRenderer.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/GoopedHudRenderer.java @@ -1,6 +1,6 @@ package com.craisinlord.antarchy.content.client; -import com.craisinlord.antarchy.content.GoopedEffectHooks; +import com.craisinlord.antarchy.content.effect.GoopedEffectHooks; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.core.Holder; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/HordeHudRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/HordeHudRenderer.java index 2de22d11..ec900236 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/client/HordeHudRenderer.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/HordeHudRenderer.java @@ -30,9 +30,10 @@ public final class HordeHudRenderer { } float pulse = 0.9F + 0.1F * Mth.sin(minecraft.player.tickCount * ((float) Math.PI * 2.0F / 90.0F)); - int alpha = Mth.clamp((int) (intensity * pulse * 0x78), 0, 0x78); + int alpha = Mth.clamp((int) (intensity * pulse * 0x2C), 0, 0x2C); int width = minecraft.getWindow().getGuiScaledWidth(); int height = minecraft.getWindow().getGuiScaledHeight(); - guiGraphics.fill(0, 0, width, height, (alpha << 24) | 0xD84A16); + int color = (alpha << 24) | 0xD84A16; + guiGraphics.fill(0, 0, width, height, color); } } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/hud/CustomBossBarRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/hud/CustomBossBarRenderer.java new file mode 100644 index 00000000..aebcd057 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/hud/CustomBossBarRenderer.java @@ -0,0 +1,96 @@ +package com.craisinlord.antarchy.content.client.hud; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.AlphaMantisEntity; +import com.craisinlord.antarchy.content.entity.EmperorScorpionEntity; +import com.craisinlord.antarchy.content.entity.HerculesBeetleEntity; +import com.craisinlord.antarchy.content.entity.ToreterrorEntity; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; +import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; +import java.util.Map; +import java.util.UUID; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.BossEvent; +import net.minecraft.world.entity.Entity; + +public final class CustomBossBarRenderer { + private static final int BAR_WIDTH = 182; + private static final int BAR_HEIGHT = 5; + private static final int GLOBAL_Y_OFFSET = 15; + + private static final Map, Textures> BY_ENTITY_CLASS = Map.of( + KrakenEntity.class, textures("blue", "kraken", 204, 56, 4), + ToreterrorEntity.class, textures("green", "toreterror", 194, 58, 2), + AlphaMantisEntity.class, textures("green", "alpha_mantis", 205, 49, 6), + BrutalflyEntity.class, textures("brutalfly", "brutalfly", 198, 38, 3), + HerculesBeetleEntity.class, textures("beetle", "hercules_beetle", 194, 33, 1), + EmperorScorpionEntity.class, textures("purple", "scorpion", 218, 34, -2) + ); + + private CustomBossBarRenderer() { + } + + public static boolean render(GuiGraphics guiGraphics, int x, int y, BossEvent bossEvent) { + Textures textures = lookup(bossEvent); + if (textures == null) { + return false; + } + + int baseY = y + GLOBAL_Y_OFFSET; + int barY = baseY + textures.barYOffset; + + guiGraphics.blit(textures.background, x, barY, 0, 0, BAR_WIDTH, BAR_HEIGHT, BAR_WIDTH, BAR_HEIGHT); + + int filledWidth = Math.round(BAR_WIDTH * Math.max(0.0F, Math.min(1.0F, bossEvent.getProgress()))); + if (filledWidth > 0) { + guiGraphics.blit(textures.progress, x, barY, 0, 0, filledWidth, BAR_HEIGHT, BAR_WIDTH, BAR_HEIGHT); + } + + int overlayX = x + (BAR_WIDTH - textures.overlayWidth) / 2; + int overlayY = baseY + (BAR_HEIGHT - textures.overlayHeight) / 2; + guiGraphics.blit(textures.overlay, overlayX, overlayY, 0, 0, textures.overlayWidth, textures.overlayHeight, textures.overlayWidth, textures.overlayHeight); + + return true; + } + + public static boolean isCustomBoss(BossEvent bossEvent) { + return lookup(bossEvent) != null; + } + + private static Textures lookup(BossEvent bossEvent) { + Entity entity = findEntity(bossEvent.getId()); + if (entity == null) { + return null; + } + return BY_ENTITY_CLASS.get(entity.getClass()); + } + + private static Entity findEntity(UUID id) { + Minecraft minecraft = Minecraft.getInstance(); + if (minecraft.level == null) { + return null; + } + for (Entity entity : minecraft.level.entitiesForRendering()) { + if (entity.getUUID().equals(id)) { + return entity; + } + } + return null; + } + + private static Textures textures(String barKey, String overlayKey, int overlayWidth, int overlayHeight, int barYOffset) { + return new Textures( + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/gui/boss_bars/healthbars/" + barKey + "_background.png"), + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/gui/boss_bars/healthbars/" + barKey + "_progress.png"), + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/gui/boss_bars/" + overlayKey + ".png"), + overlayWidth, + overlayHeight, + barYOffset + ); + } + + private record Textures(ResourceLocation background, ResourceLocation progress, ResourceLocation overlay, int overlayWidth, int overlayHeight, int barYOffset) { + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/GoopedGeoLayer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/GoopedGeoLayer.java index d316413e..a784f295 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/GoopedGeoLayer.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/GoopedGeoLayer.java @@ -1,6 +1,6 @@ package com.craisinlord.antarchy.content.client.renderer; -import com.craisinlord.antarchy.content.GoopedEffectHooks; +import com.craisinlord.antarchy.content.effect.GoopedEffectHooks; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import net.minecraft.client.renderer.MultiBufferSource; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/GoopedLivingLayer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/GoopedLivingLayer.java index 4c05dc9f..22b6cf4a 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/GoopedLivingLayer.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/GoopedLivingLayer.java @@ -1,6 +1,6 @@ package com.craisinlord.antarchy.content.client.renderer; -import com.craisinlord.antarchy.content.GoopedEffectHooks; +import com.craisinlord.antarchy.content.effect.GoopedEffectHooks; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import net.minecraft.client.model.EntityModel; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/RpoLauncherDispenseBehavior.java b/common/src/main/java/com/craisinlord/antarchy/content/dispenser/RpoLauncherDispenseBehavior.java similarity index 93% rename from common/src/main/java/com/craisinlord/antarchy/content/RpoLauncherDispenseBehavior.java rename to common/src/main/java/com/craisinlord/antarchy/content/dispenser/RpoLauncherDispenseBehavior.java index 8b5f0b5e..8adbf352 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/RpoLauncherDispenseBehavior.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/dispenser/RpoLauncherDispenseBehavior.java @@ -1,6 +1,7 @@ -package com.craisinlord.antarchy.content; +package com.craisinlord.antarchy.content.dispenser; import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.entity.OctopusBombEntity; import net.minecraft.core.Direction; import net.minecraft.core.Position; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/SizeRayDispenseBehavior.java b/common/src/main/java/com/craisinlord/antarchy/content/dispenser/SizeRayDispenseBehavior.java similarity index 97% rename from common/src/main/java/com/craisinlord/antarchy/content/SizeRayDispenseBehavior.java rename to common/src/main/java/com/craisinlord/antarchy/content/dispenser/SizeRayDispenseBehavior.java index b5f6eb97..b9f043d6 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/SizeRayDispenseBehavior.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/dispenser/SizeRayDispenseBehavior.java @@ -1,4 +1,4 @@ -package com.craisinlord.antarchy.content; +package com.craisinlord.antarchy.content.dispenser; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/SquidzookaDispenseBehavior.java b/common/src/main/java/com/craisinlord/antarchy/content/dispenser/SquidzookaDispenseBehavior.java similarity index 93% rename from common/src/main/java/com/craisinlord/antarchy/content/SquidzookaDispenseBehavior.java rename to common/src/main/java/com/craisinlord/antarchy/content/dispenser/SquidzookaDispenseBehavior.java index 271f5d49..96e064c8 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/SquidzookaDispenseBehavior.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/dispenser/SquidzookaDispenseBehavior.java @@ -1,6 +1,7 @@ -package com.craisinlord.antarchy.content; +package com.craisinlord.antarchy.content.dispenser; import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.entity.MissileSquidEntity; import net.minecraft.core.Direction; import net.minecraft.core.Position; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/WaterCannonDispenseBehavior.java b/common/src/main/java/com/craisinlord/antarchy/content/dispenser/WaterCannonDispenseBehavior.java similarity index 96% rename from common/src/main/java/com/craisinlord/antarchy/content/WaterCannonDispenseBehavior.java rename to common/src/main/java/com/craisinlord/antarchy/content/dispenser/WaterCannonDispenseBehavior.java index 4f7acb30..ff8b5884 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/WaterCannonDispenseBehavior.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/dispenser/WaterCannonDispenseBehavior.java @@ -1,4 +1,4 @@ -package com.craisinlord.antarchy.content; +package com.craisinlord.antarchy.content.dispenser; import com.craisinlord.antarchy.content.entity.WaterBombEntity; import com.craisinlord.antarchy.content.AntarchyObjects; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/GoopedEffectHooks.java b/common/src/main/java/com/craisinlord/antarchy/content/effect/GoopedEffectHooks.java similarity index 94% rename from common/src/main/java/com/craisinlord/antarchy/content/GoopedEffectHooks.java rename to common/src/main/java/com/craisinlord/antarchy/content/effect/GoopedEffectHooks.java index ff72291d..7db57898 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/GoopedEffectHooks.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/effect/GoopedEffectHooks.java @@ -1,4 +1,4 @@ -package com.craisinlord.antarchy.content; +package com.craisinlord.antarchy.content.effect; import com.craisinlord.antarchy.Antarchy; import net.minecraft.core.Holder; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/StinkyBehavior.java b/common/src/main/java/com/craisinlord/antarchy/content/effect/StinkyBehavior.java similarity index 98% rename from common/src/main/java/com/craisinlord/antarchy/content/StinkyBehavior.java rename to common/src/main/java/com/craisinlord/antarchy/content/effect/StinkyBehavior.java index 6c0e5d35..879016bb 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/StinkyBehavior.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/effect/StinkyBehavior.java @@ -1,5 +1,7 @@ -package com.craisinlord.antarchy.content; +package com.craisinlord.antarchy.content.effect; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.AntarchyTags; import net.minecraft.server.level.ServerLevel; import net.minecraft.tags.EntityTypeTags; import net.minecraft.world.effect.MobEffectInstance; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/effect/StinkyMobEffect.java b/common/src/main/java/com/craisinlord/antarchy/content/effect/StinkyMobEffect.java index 13715363..495a325a 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/effect/StinkyMobEffect.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/effect/StinkyMobEffect.java @@ -1,6 +1,5 @@ package com.craisinlord.antarchy.content.effect; -import com.craisinlord.antarchy.content.StinkyBehavior; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectCategory; import net.minecraft.world.entity.LivingEntity; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/AlphaMantisEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/AlphaMantisEntity.java index a1ed6773..11d95b98 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/AlphaMantisEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/AlphaMantisEntity.java @@ -30,7 +30,7 @@ import org.jetbrains.annotations.Nullable; public class AlphaMantisEntity extends MantisEntity { private final ServerBossEvent bossEvent = - new ServerBossEvent(Component.translatable("entity.antarchy.alpha_mantis"), BossEvent.BossBarColor.GREEN, BossEvent.BossBarOverlay.PROGRESS); + new com.craisinlord.antarchy.content.boss.EntityLinkedServerBossEvent(this.getUUID(), Component.translatable("entity.antarchy.alpha_mantis"), BossEvent.BossBarColor.GREEN, BossEvent.BossBarOverlay.PROGRESS); private int summonCooldownTicks; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/EmperorScorpionEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/EmperorScorpionEntity.java index b30a6741..69a702fa 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/EmperorScorpionEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/EmperorScorpionEntity.java @@ -101,7 +101,7 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity { private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); private final ServerBossEvent bossEvent = - new ServerBossEvent(this.getDisplayName(), BossEvent.BossBarColor.PURPLE, BossEvent.BossBarOverlay.PROGRESS); + new com.craisinlord.antarchy.content.boss.EntityLinkedServerBossEvent(this.getUUID(), this.getDisplayName(), BossEvent.BossBarColor.PURPLE, BossEvent.BossBarOverlay.PROGRESS); private int attackAnimTicks; private int clawCooldownTicks; 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 c124caee..d3f9ddb1 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 @@ -88,6 +88,8 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl SynchedEntityData.defineId(HerculesBeetleEntity.class, EntityDataSerializers.BOOLEAN); private static final EntityDataAccessor KNOCKED_DOWN = SynchedEntityData.defineId(HerculesBeetleEntity.class, EntityDataSerializers.BOOLEAN); + private static final EntityDataAccessor MOUNTED_CHARGE = + SynchedEntityData.defineId(HerculesBeetleEntity.class, EntityDataSerializers.INT); private static final int ANIM_IDLE = 0; private static final int ANIM_WALK = 1; @@ -147,11 +149,13 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl private static final int MAX_BROKEN_BLOCKS = 32; private static final int MAX_SUFFOCATION_BLOCKS = 12; private static final EntityDimensions DEFAULT_DIMENSIONS = EntityDimensions.scalable(3.0F, 4.0F); - private static final double MOUNTED_FLYING_SPEED_MULTIPLIER = 0.06D; + private static final double MOUNTED_FLYING_SPEED_MULTIPLIER = 0.052D; + private static final double MOUNTED_GROUND_BRAKE = 0.6D; + private static final double MOUNTED_FLIGHT_LIFT = 0.36D; private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); private final ServerBossEvent bossEvent = - new ServerBossEvent(Component.translatable("entity.antarchy.hercules_beetle"), BossEvent.BossBarColor.RED, BossEvent.BossBarOverlay.PROGRESS); + new com.craisinlord.antarchy.content.boss.EntityLinkedServerBossEvent(this.getUUID(), Component.translatable("entity.antarchy.hercules_beetle"), BossEvent.BossBarColor.RED, BossEvent.BossBarOverlay.PROGRESS); private int actionTicks; private int actionHitTick; @@ -164,8 +168,12 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl private int flightCooldown; private int targetlessTicks; private int groundedTicks; + private int airborneTicks; + private int mountedChargeTicks; private boolean attackDamageApplied; private boolean riderJumpPressed; + private boolean riderJumpPressedLastTick; + private boolean mountedChargeActive; private boolean combatCryDone; private boolean pendingChargeStart; private boolean pendingMountedCharge; @@ -242,14 +250,19 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl builder.define(SADDLED, false); builder.define(FLYING, false); builder.define(KNOCKED_DOWN, false); + builder.define(MOUNTED_CHARGE, 0); } @Override public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { controllers.add(new AnimationController<>(this, "main_controller", 0, this::mainAnimController)); + controllers.add(new AnimationController<>(this, "flying_charge_controller", 0, this::flyingChargeAnimController)); } private PlayState mainAnimController(AnimationState state) { + if (this.isFlying() && (this.getAnimationState() == ANIM_CHARGE_START || this.getAnimationState() == ANIM_CHARGE)) { + return state.setAndContinue(FLY_ANIM); + } return switch (this.getAnimationState()) { case ANIM_WALK -> state.setAndContinue(WALK_ANIM); case ANIM_FLY -> state.setAndContinue(FLY_ANIM); @@ -268,6 +281,22 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl }; } + private PlayState flyingChargeAnimController(AnimationState state) { + if (!this.isFlying()) { + state.resetCurrentAnimation(); + return PlayState.STOP; + } + + return switch (this.getAnimationState()) { + case ANIM_CHARGE_START -> state.setAndContinue(CHARGE_START_ANIM); + case ANIM_CHARGE -> state.setAndContinue(CHARGE_ANIM); + default -> { + state.resetCurrentAnimation(); + yield PlayState.STOP; + } + }; + } + @Override public AnimatableInstanceCache getAnimatableInstanceCache() { return this.geoCache; @@ -305,10 +334,14 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl if (this.onGround()) { this.groundedTicks++; + this.airborneTicks = 0; } else { this.groundedTicks = 0; + this.airborneTicks++; } + this.tickMountedCharge(); + if (this.isDeadOrDying()) { this.noPhysics = false; this.setAnimationState(ANIM_DEATH); @@ -353,7 +386,8 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl private void tickKnockedDown() { this.getNavigation().stop(); - this.setDeltaMovement(Vec3.ZERO); + Vec3 motion = this.getDeltaMovement(); + this.setDeltaMovement(0.0D, Math.min(motion.y, 0.0D), 0.0D); if (this.getAnimationState() == ANIM_KNOCKED_DOWN && this.actionTicks > 0) { this.actionTicks--; if (this.actionTicks <= 0) { @@ -389,6 +423,11 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl switch (state) { case ANIM_OPEN_WINGS -> { this.setFlying(true); + if (this.getControllingPassenger() instanceof Player) { + Vec3 motion = this.getDeltaMovement(); + this.setDeltaMovement(motion.x, Math.max(motion.y, MOUNTED_FLIGHT_LIFT), motion.z); + this.hasImpulse = true; + } if (this.pendingChargeStart) { this.pendingChargeStart = false; this.beginChargeStart(this.chargeDirection, this.pendingChargeDuration, this.pendingMountedCharge); @@ -449,6 +488,7 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl 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) { @@ -459,15 +499,36 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl this.yHeadRot = this.getYRot(); this.yBodyRot = this.getYRot(); - if (this.onGround() && this.isFlying()) { - this.requestFlightStop(); + if (this.isFlying() && this.onGround()) { + this.forceMountedFlightStop(); return; } - boolean wantsFlight = this.riderJumpPressed || rider.getXRot() < -5.0F || this.fallDistance > 2.5F; - if (wantsFlight && !this.isFlying() && this.onGround() && this.flightCooldown <= 0) { - this.requestFlightStart(); + 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.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() { @@ -480,13 +541,15 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl return; } if (!this.onGround()) { - this.setAnimationState(ANIM_FLY); + this.setAnimationState(ANIM_IDLE); return; } - if (this.getControllingPassenger() instanceof Player rider - && (Math.abs(rider.zza) > 0.05F || Math.abs(rider.xxa) > 0.05F)) { - this.setAnimationState(ANIM_WALK); - return; + if (this.getControllingPassenger() instanceof Player rider) { + boolean riderMoving = Math.abs(rider.zza) > 0.05F || Math.abs(rider.xxa) > 0.05F; + if (riderMoving) { + this.setAnimationState(ANIM_WALK); + return; + } } Vec3 motion = this.getDeltaMovement(); boolean moving = motion.horizontalDistanceSqr() > 0.0025D; @@ -954,6 +1017,10 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl this.riderJumpPressed = riderJumpPressed; } + public int getMountedCharge() { + return this.entityData.get(MOUNTED_CHARGE); + } + public void handleMountedRegularAttack(ServerPlayer player) { if (!this.canPlayerControl(player) || this.attackCooldown > 0 || this.isKnockedDown() || this.isInBusyAnimation() || this.chargeTicksRemaining > 0) { return; @@ -962,14 +1029,29 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl this.startRegularAttack(this.isFlying(), target); } - public void handleMountedCharge(ServerPlayer player, int chargeTicks) { + public void startMountedCharge(ServerPlayer player) { if (!this.canPlayerControl(player) || this.chargeCooldown > 0 || this.isKnockedDown() || this.isInBusyAnimation() || this.chargeTicksRemaining > 0) { + this.resetMountedChargeState(); return; } - int clamped = Mth.clamp(chargeTicks, 0, MAX_PLAYER_CHARGE_TICKS); - if (clamped <= 0) { + this.mountedChargeActive = true; + } + + public void releaseMountedCharge(ServerPlayer player) { + if (!this.canPlayerControl(player)) { + this.resetMountedChargeState(); return; } + if (!this.mountedChargeActive) { + return; + } + + int clamped = Mth.clamp(this.mountedChargeTicks, 0, MAX_PLAYER_CHARGE_TICKS); + this.resetMountedChargeState(); + if (this.chargeCooldown > 0 || this.isKnockedDown() || this.isInBusyAnimation() || this.chargeTicksRemaining > 0 || clamped <= 0) { + return; + } + int duration = MIN_MOUNTED_CHARGE_TICKS + Mth.floor((MAX_CHARGE_TICKS - MIN_MOUNTED_CHARGE_TICKS) * (clamped / (float) MAX_PLAYER_CHARGE_TICKS)); this.startCharge(player.getLookAngle(), duration, true); } @@ -1013,7 +1095,7 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl @Override public void travel(Vec3 travelVector) { - if (!(this.getControllingPassenger() instanceof Player rider) || !this.isVehicle()) { + if (!(this.getControllingPassenger() instanceof Player rider) || !this.isVehicle() || this.isKnockedDown()) { super.travel(travelVector); return; } @@ -1024,11 +1106,25 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl Vec3 riddenInput = this.getRiddenInput(rider, travelVector); this.setSpeed(this.getRiddenSpeed(rider)); - Vec3 motion = new Vec3(0.0D, this.getDeltaMovement().y, 0.0D); - this.moveRelative(this.getSpeed(), new Vec3(riddenInput.x, 0.0D, riddenInput.z)); - motion = motion.add(this.getDeltaMovement().x, riddenInput.y, this.getDeltaMovement().z); - this.setDeltaMovement(motion); - this.move(MoverType.SELF, this.getDeltaMovement()); + + 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()); + + 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); + } + } else { + Vec3 motion = new Vec3(0.0D, this.getDeltaMovement().y, 0.0D); + this.moveRelative(this.getSpeed(), new Vec3(riddenInput.x, 0.0D, riddenInput.z)); + motion = motion.add(this.getDeltaMovement().x, riddenInput.y, this.getDeltaMovement().z); + 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); @@ -1211,7 +1307,38 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl @Override protected void playStepSound(BlockPos pos, BlockState state) { - this.playSound(SoundEvents.RAVAGER_STEP, 0.8F, 0.8F); + this.playSound(SoundEvents.RAVAGER_STEP, 0.28F, 0.92F); + } + + private void tickMountedCharge() { + if (this.level().isClientSide) { + return; + } + if (!(this.getControllingPassenger() instanceof ServerPlayer player) || !this.canPlayerControl(player)) { + this.resetMountedChargeState(); + return; + } + if (!this.mountedChargeActive) { + if (this.getMountedCharge() != 0) { + this.entityData.set(MOUNTED_CHARGE, 0); + } + return; + } + if (this.chargeCooldown > 0 || this.isKnockedDown() || this.isInBusyAnimation() || this.chargeTicksRemaining > 0) { + this.resetMountedChargeState(); + return; + } + + this.mountedChargeTicks = Math.min(this.mountedChargeTicks + 1, MAX_PLAYER_CHARGE_TICKS); + this.entityData.set(MOUNTED_CHARGE, Mth.floor((this.mountedChargeTicks / (float) MAX_PLAYER_CHARGE_TICKS) * 100.0F)); + } + + private void resetMountedChargeState() { + this.mountedChargeActive = false; + this.mountedChargeTicks = 0; + if (this.getMountedCharge() != 0) { + this.entityData.set(MOUNTED_CHARGE, 0); + } } @Override diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/JerryEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/JerryEntity.java index e48ab971..aaa8746e 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/JerryEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/JerryEntity.java @@ -1,6 +1,7 @@ package com.craisinlord.antarchy.content.entity; import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.horde.CavarynHordeManager; import net.minecraft.nbt.CompoundTag; import net.minecraft.core.registries.BuiltInRegistries; @@ -10,6 +11,7 @@ import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvent; import net.minecraft.util.ByIdMap; import net.minecraft.util.Mth; import net.minecraft.util.StringRepresentable; @@ -220,6 +222,7 @@ public class JerryEntity extends Monster implements GeoEntity { if (++this.attachDamageTicks >= ATTACH_DAMAGE_INTERVAL) { this.attachDamageTicks = 0; Vec3 targetMotion = target.getDeltaMovement(); + this.playSound(this.attackSoundForCurrentStage(), 0.85F, this.voicePitch()); target.hurt(this.damageSources().mobAttack(this), (float) stage.attackDamage()); target.setDeltaMovement(targetMotion); target.hurtMarked = true; @@ -262,6 +265,7 @@ public class JerryEntity extends Monster implements GeoEntity { this.faceTarget(target); this.attackCooldownTicks = 24; this.entityData.set(ATTACK_ANIM_TICKS, ATTACK_ANIM_DURATION); + this.playSound(this.attackSoundForCurrentStage(), 1.0F, this.voicePitch()); target.hurt(this.damageSources().mobAttack(this), (float) stage.attackDamage()); } } @@ -294,11 +298,33 @@ public class JerryEntity extends Monster implements GeoEntity { if (target instanceof LivingEntity living) { this.faceTarget(living); } + this.playSound(this.attackSoundForCurrentStage(), 1.0F, this.voicePitch()); return target instanceof LivingEntity living ? living.hurt(this.damageSources().mobAttack(this), (float) this.getAttributeValue(Attributes.ATTACK_DAMAGE)) : super.doHurtTarget(target); } + @Override + @Nullable + protected SoundEvent getAmbientSound() { + return this.isAdultStage() ? AntarchySoundEvents.JERRY_ADULT_IDLE.get() : AntarchySoundEvents.JERRY_YOUNG_IDLE.get(); + } + + @Override + protected SoundEvent getHurtSound(DamageSource damageSource) { + return this.isAdultStage() ? AntarchySoundEvents.JERRY_ADULT_HURT.get() : AntarchySoundEvents.JERRY_YOUNG_HURT.get(); + } + + @Override + protected SoundEvent getDeathSound() { + return this.isAdultStage() ? AntarchySoundEvents.JERRY_ADULT_DEATH.get() : AntarchySoundEvents.JERRY_YOUNG_DEATH.get(); + } + + @Override + protected float getSoundVolume() { + return this.isAdultStage() ? 1.0F : 0.8F; + } + @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { ItemStack stack = player.getItemInHand(hand); @@ -436,6 +462,14 @@ public class JerryEntity extends Monster implements GeoEntity { return stage == Stage.ALPHA || stage == Stage.GAMMA; } + private SoundEvent attackSoundForCurrentStage() { + return this.isAdultStage() ? AntarchySoundEvents.JERRY_ADULT_ATTACK.get() : AntarchySoundEvents.JERRY_YOUNG_ATTACK.get(); + } + + private float voicePitch() { + return this.isAdultStage() ? 0.9F + this.random.nextFloat() * 0.2F : 1.1F + this.random.nextFloat() * 0.25F; + } + private Stage nextGrowthStage() { return switch (this.getStage()) { case INFANT -> Stage.MATURE; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/OctopusBombEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/OctopusBombEntity.java index aa825413..231be56e 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/OctopusBombEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/OctopusBombEntity.java @@ -2,6 +2,7 @@ package com.craisinlord.antarchy.content.entity; import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.damage.AntarchyDamageSources; +import net.minecraft.core.particles.DustParticleOptions; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.syncher.EntityDataAccessor; @@ -32,6 +33,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.ServerLevelAccessor; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; +import org.joml.Vector3f; import org.jetbrains.annotations.Nullable; import software.bernie.geckolib.animatable.GeoEntity; import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; @@ -44,6 +46,9 @@ import java.util.List; import java.util.Objects; public class OctopusBombEntity extends Monster implements GeoEntity { + private static final DustParticleOptions OCTOPUS_BOMB_INK_PARTICLE = + new DustParticleOptions(new Vector3f(0.02F, 0.02F, 0.02F), 1.2F); + private static final EntityDataAccessor ATTACK_STATE = SynchedEntityData.defineId(OctopusBombEntity.class, EntityDataSerializers.INT); private static final EntityDataAccessor ANIMATION_STATE = SynchedEntityData.defineId(OctopusBombEntity.class, EntityDataSerializers.INT); private static final EntityDataAccessor CAN_FLY = SynchedEntityData.defineId(OctopusBombEntity.class, EntityDataSerializers.BOOLEAN); @@ -405,8 +410,8 @@ public class OctopusBombEntity extends Monster implements GeoEntity { serverLevel.playSound(null, this.getX(), this.getY(), this.getZ(), net.minecraft.sounds.SoundEvents.GENERIC_EXPLODE, net.minecraft.sounds.SoundSource.HOSTILE, 2.0F, 0.9F); - serverLevel.sendParticles(ParticleTypes.SQUID_INK, this.getX(), this.getY(), this.getZ(), 250, radius * 0.5D, radius * 0.5D, radius * 0.5D, 0.1D); - serverLevel.sendParticles(ParticleTypes.SQUID_INK, this.getX(), this.getY(), this.getZ(), 150, radius * 0.2D, radius * 0.2D, radius * 0.2D, 0.2D); + serverLevel.sendParticles(OCTOPUS_BOMB_INK_PARTICLE, this.getX(), this.getY(), this.getZ(), 125, radius * 0.5D, radius * 0.5D, radius * 0.5D, 0.1D); + serverLevel.sendParticles(OCTOPUS_BOMB_INK_PARTICLE, this.getX(), this.getY(), this.getZ(), 75, radius * 0.2D, radius * 0.2D, radius * 0.2D, 0.2D); serverLevel.sendParticles(ParticleTypes.EXPLOSION, this.getX(), this.getY(), this.getZ(), 4, 0.5D, 0.5D, 0.5D, 0.0D); this.discard(); } @@ -423,8 +428,8 @@ public class OctopusBombEntity extends Monster implements GeoEntity { double cx = this.getX(); double cy = this.getY() + this.getBbHeight() * 0.5D; double cz = this.getZ(); - serverLevel.sendParticles(ParticleTypes.SQUID_INK, cx, cy, cz, 120, 2.0D, 1.2D, 2.0D, 0.04D); - serverLevel.sendParticles(ParticleTypes.SQUID_INK, cx, cy, cz, 60, 3.5D, 1.8D, 3.5D, 0.02D); + serverLevel.sendParticles(OCTOPUS_BOMB_INK_PARTICLE, cx, cy, cz, 60, 2.0D, 1.2D, 2.0D, 0.04D); + serverLevel.sendParticles(OCTOPUS_BOMB_INK_PARTICLE, cx, cy, cz, 30, 3.5D, 1.8D, 3.5D, 0.02D); } // ------------------------------------------------------------------------- diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/ReverieEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/ReverieEntity.java index e921e142..23fefb81 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/ReverieEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/ReverieEntity.java @@ -2,11 +2,11 @@ package com.craisinlord.antarchy.content.entity; import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.config.AntarchySettings; -import com.craisinlord.antarchy.content.AntarchyAdvancements; +import com.craisinlord.antarchy.content.advancement.AntarchyAdvancements; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchyTags; -import com.craisinlord.antarchy.content.block.PotentNyxiteBlock; +import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks; import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; @@ -37,7 +37,6 @@ import net.minecraft.tags.DamageTypeTags; import net.minecraft.world.damagesource.DamageTypes; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; -import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; @@ -1022,7 +1021,7 @@ public class ReverieEntity extends PathfinderMob implements FlyingAnimal, GeoEnt for (int y = min.getY(); y <= max.getY(); y++) { for (int z = min.getZ(); z <= max.getZ(); z++) { cursor.set(x, y, z); - if (PotentNyxiteBlock.isAntiwater(this.level().getFluidState(cursor))) { + if (AntarchyFluidChecks.isAntiwater(this.level().getFluidState(cursor))) { return true; } } @@ -1239,4 +1238,3 @@ public class ReverieEntity extends PathfinderMob implements FlyingAnimal, GeoEnt } } } - diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/SizeRayProjectileEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/SizeRayProjectileEntity.java index a54f17a5..93fa25ca 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/SizeRayProjectileEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/SizeRayProjectileEntity.java @@ -2,10 +2,9 @@ package com.craisinlord.antarchy.content.entity; import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.config.AntarchySettings; -import com.craisinlord.antarchy.content.AntarchyAdvancements; +import com.craisinlord.antarchy.content.advancement.AntarchyAdvancements; import com.craisinlord.antarchy.content.AntarchyTags; import net.minecraft.nbt.CompoundTag; -import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/SpitBugProjectileEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/SpitBugProjectileEntity.java index 2970bf44..c9fb0798 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/SpitBugProjectileEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/SpitBugProjectileEntity.java @@ -1,6 +1,6 @@ package com.craisinlord.antarchy.content.entity; -import com.craisinlord.antarchy.content.GoopedEffectHooks; +import com.craisinlord.antarchy.content.effect.GoopedEffectHooks; import com.craisinlord.antarchy.content.damage.AntarchyDamageSources; import net.minecraft.core.Holder; import net.minecraft.core.particles.ParticleTypes; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/StinkBugEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/StinkBugEntity.java index 7663e78a..46cac86d 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/StinkBugEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/StinkBugEntity.java @@ -2,7 +2,7 @@ package com.craisinlord.antarchy.content.entity; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchySoundEvents; -import com.craisinlord.antarchy.content.StinkyBehavior; +import com.craisinlord.antarchy.content.effect.StinkyBehavior; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/ToreterrorEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/ToreterrorEntity.java index 6bb5a5d0..815b1d84 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/ToreterrorEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/ToreterrorEntity.java @@ -93,7 +93,7 @@ public class ToreterrorEntity extends Monster implements GeoEntity { private static final double JUMP_RANGE_SQR = 400.0D; private static final double RANGED_MAX_RANGE_SQR = 625.0D; private static final double SPIN_TRIGGER_RANGE_SQR = 225.0D; - private static final double SPIN_LEASH_RANGE_SQR = 225.0D; + private static final double SPIN_LEASH_RANGE_SQR = 400.0D; private static final double SPIN_RADIUS = 2.5D; private static final double SPIN_MOVE_SPEED = 0.65D; private static final double SPIN_ANIMATION_SPEED = 0.49D; @@ -110,7 +110,7 @@ public class ToreterrorEntity extends Monster implements GeoEntity { private static final RawAnimation DEATH_ANIM = RawAnimation.begin().thenPlayAndHold("death"); private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); - private final ServerBossEvent bossEvent = new ServerBossEvent(Component.translatable("entity.antarchy.toreterror"), BossEvent.BossBarColor.GREEN, BossEvent.BossBarOverlay.PROGRESS); + private final ServerBossEvent bossEvent = new com.craisinlord.antarchy.content.boss.EntityLinkedServerBossEvent(this.getUUID(), Component.translatable("entity.antarchy.toreterror"), BossEvent.BossBarColor.GREEN, BossEvent.BossBarOverlay.PROGRESS); private int shootAnimTicks; private int jumpAnimTicks; @@ -509,7 +509,7 @@ public class ToreterrorEntity extends Monster implements GeoEntity { } this.updateSpinDirection(target); - if (!this.moveDuringSpin()) { + if (!this.moveDuringSpin(target)) { this.spinStuckTicks++; if (this.spinStuckTicks >= SPIN_STUCK_FAIL_LIMIT) { this.beginSpinEnd(); @@ -566,7 +566,7 @@ public class ToreterrorEntity extends Monster implements GeoEntity { this.spinDirection = combined.lengthSqr() > 1.0E-4D ? combined.normalize() : towardTarget; } - private boolean moveDuringSpin() { + private boolean moveDuringSpin(LivingEntity target) { Vec3 direction = this.spinDirection.lengthSqr() > 1.0E-4D ? this.spinDirection.normalize() : Vec3.ZERO; if (direction == Vec3.ZERO) { return false; @@ -577,19 +577,7 @@ public class ToreterrorEntity extends Monster implements GeoEntity { } this.playSpinRicochetSound(); - this.spinStrafeSign *= -1; - Vec3 bounced = rotateHorizontal(direction, this.spinStrafeSign * 35.0D); - if (this.trySpinMoves(bounced, true)) { - return true; - } - - Vec3 reversed = direction.scale(-1.0D); - if (this.trySpinMoves(reversed, true)) { - return true; - } - - Vec3 reversedBounce = rotateHorizontal(reversed, this.spinStrafeSign * 25.0D); - return this.trySpinMoves(reversedBounce, true); + return this.trySpinRicochetTowardTarget(target, direction); } private void playSpinRicochetSound() { @@ -600,6 +588,33 @@ public class ToreterrorEntity extends Monster implements GeoEntity { this.playSound(AntarchySoundEvents.TORETERROR_RICOCHET.get(), 1.0F, 0.95F + this.random.nextFloat() * 0.1F); } + private boolean trySpinRicochetTowardTarget(LivingEntity target, Vec3 fallbackDirection) { + this.spinStrafeSign *= -1; + Vec3 towardTarget = horizontalDirectionTo(target.position()); + if (towardTarget.lengthSqr() <= 1.0E-4D) { + towardTarget = fallbackDirection; + } + + if (this.trySpinMoves(towardTarget, true)) { + this.spinDirection = towardTarget.normalize(); + return true; + } + + Vec3 slightRight = rotateHorizontal(towardTarget, 18.0D); + if (this.trySpinMoves(slightRight, true)) { + this.spinDirection = towardTarget.normalize(); + return true; + } + + Vec3 slightLeft = rotateHorizontal(towardTarget, -18.0D); + if (this.trySpinMoves(slightLeft, true)) { + this.spinDirection = towardTarget.normalize(); + return true; + } + + return false; + } + private boolean trySpinMoves(Vec3 baseDirection, boolean bounced) { Vec3[] attempts = new Vec3[]{ baseDirection, @@ -707,6 +722,20 @@ public class ToreterrorEntity extends Monster implements GeoEntity { this.spinProgressTicks = 0; } + private void startSpinSequence(LivingEntity target) { + this.spinStartTicks = SPIN_START_TOTAL_TICKS; + this.spinLoopTotalTicks = SPIN_LOOP_MIN_TICKS + this.random.nextInt(SPIN_LOOP_MAX_TICKS - SPIN_LOOP_MIN_TICKS + 1); + this.spinLoopTicks = this.spinLoopTotalTicks; + this.spinEndTicks = 0; + this.spinStuckTicks = 0; + this.spinProgressAnchor = this.position(); + this.spinProgressTicks = 0; + this.spinStrafeSign = this.random.nextBoolean() ? 1 : -1; + this.spinHitCooldowns.clear(); + this.spinDirection = target == null ? Vec3.ZERO : this.horizontalDirectionTo(target.position()); + this.playSound(AntarchySoundEvents.TORETERROR_SPIN.get(), 0.66F, 0.95F + this.random.nextFloat() * 0.1F); + } + private Vec3 calcLaunchVelocity(Vec3 from, Vec3 to, double minSpeed) { Vec3 diff = to.subtract(from); double dh = Math.sqrt(diff.x * diff.x + diff.z * diff.z); @@ -914,20 +943,7 @@ public class ToreterrorEntity extends Monster implements GeoEntity { @Override public void start() { - LivingEntity target = ToreterrorEntity.this.getTarget(); - ToreterrorEntity.this.spinStartTicks = SPIN_START_TOTAL_TICKS; - ToreterrorEntity.this.spinLoopTotalTicks = SPIN_LOOP_MIN_TICKS + ToreterrorEntity.this.random.nextInt(SPIN_LOOP_MAX_TICKS - SPIN_LOOP_MIN_TICKS + 1); - ToreterrorEntity.this.spinLoopTicks = ToreterrorEntity.this.spinLoopTotalTicks; - ToreterrorEntity.this.spinEndTicks = 0; - ToreterrorEntity.this.spinStuckTicks = 0; - ToreterrorEntity.this.spinProgressAnchor = ToreterrorEntity.this.position(); - ToreterrorEntity.this.spinProgressTicks = 0; - ToreterrorEntity.this.spinStrafeSign = ToreterrorEntity.this.random.nextBoolean() ? 1 : -1; - ToreterrorEntity.this.spinHitCooldowns.clear(); - ToreterrorEntity.this.spinDirection = target == null - ? Vec3.ZERO - : ToreterrorEntity.this.horizontalDirectionTo(target.position()); - ToreterrorEntity.this.playSound(AntarchySoundEvents.TORETERROR_SPIN.get(), 1.1F, 0.95F + ToreterrorEntity.this.random.nextFloat() * 0.1F); + ToreterrorEntity.this.startSpinSequence(ToreterrorEntity.this.getTarget()); } @Override 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 79e97e33..964b09f0 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 @@ -11,9 +11,11 @@ import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.tags.BlockTags; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.PointedDripstoneBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; @@ -77,6 +79,7 @@ public class UpwardFallingBlockEntity extends Entity { // 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()); BlockState above = level().getBlockState(headPos); @@ -91,18 +94,40 @@ public class UpwardFallingBlockEntity extends Entity { boolean hitScaffolding = above.getBlock() instanceof AntimetalScaffoldingBlock; if (hitCeiling || hitScaffolding) { - BlockPos placePos = headPos.below(); - BlockState atPlace = level().getBlockState(placePos); - if (atPlace.isAir() || atPlace.canBeReplaced()) { - level().setBlock(placePos, blockState, 3); - } else { - dropAndRemove(blockState); - return; - } - discard(); + dropAndRemove(blockState); + return; } } + private void damageEntitiesAlongPath(BlockState state) { + float damage = getImpactDamage(state); + if (damage <= 0.0F) { + return; + } + + AABB hitBox = getBoundingBox().inflate(0.15D); + for (LivingEntity living : level().getEntitiesOfClass(LivingEntity.class, hitBox, LivingEntity::isAlive)) { + living.hurt(level().damageSources().fallingBlock(this), damage); + } + } + + private float getImpactDamage(BlockState state) { + float travelDistance = (float) this.time * (float) RISE_SPEED; + float baseDamage = Math.max(0.0F, travelDistance - 1.5F); + if (baseDamage <= 0.0F) { + return 0.0F; + } + + float thicknessMultiplier = switch (state.getValue(PointedDripstoneBlock.THICKNESS)) { + case TIP, TIP_MERGE -> 2.0F; + case FRUSTUM -> 1.5F; + case MIDDLE -> 1.25F; + case BASE -> 1.0F; + }; + + return Math.min(baseDamage * thicknessMultiplier, 40.0F); + } + private void dropAndRemove(BlockState state) { if (!level().isClientSide && !state.isAir()) { ItemStack drop = new ItemStack(state.getBlock().asItem()); 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 db9126ed..21ecc39a 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 @@ -6,12 +6,17 @@ import com.craisinlord.antarchy.config.AntarchySettings; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Vec3i; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.BlockTags; import net.minecraft.tags.TagKey; import net.minecraft.world.entity.EntityType; import net.minecraft.world.item.Item; import net.minecraft.world.level.GameRules; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.RotatedPillarBlock; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.pathfinder.Path; @@ -21,6 +26,7 @@ import software.bernie.geckolib.animatable.GeoEntity; public class TermiteEntity extends BaseAntEntity implements GeoEntity { private static final int WOOD_BITE_ANIMATION_TICKS = 8; + private static final int WOOD_BITE_COOLDOWN_TICKS = 20 * 3; private static final int WOOD_SEARCH_INTERVAL_TICKS = 20; private static final int WOOD_REPATH_INTERVAL_TICKS = 6; private static final int WOOD_SEARCH_RADIUS_HORIZONTAL = 12; @@ -38,6 +44,7 @@ public class TermiteEntity extends BaseAntEntity implements GeoEntity { }; @Nullable private BlockPos targetWoodPos; + private int nextWoodBiteTick; private int nextWoodSearchTick; private int nextWoodRepathTick; @@ -129,20 +136,31 @@ public class TermiteEntity extends BaseAntEntity implements GeoEntity { } private boolean tryEatNearbyWood() { + if (this.tickCount < this.nextWoodBiteTick) { + return false; + } + BlockPos basePos = this.blockPosition(); for (Vec3i offset : IMMEDIATE_WOOD_OFFSETS) { BlockPos targetPos = basePos.offset(offset); BlockState targetState = this.level().getBlockState(targetPos); - if (!targetState.is(AntarchyTags.Blocks.TERMITE_FOODS)) { + if (!this.isTermiteEdible(targetState)) { continue; } - SoundType soundType = targetState.getSoundType(); - this.triggerBiteAnimation(WOOD_BITE_ANIMATION_TICKS); - this.level().destroyBlock(targetPos, false, this); - this.level().playSound(null, targetPos, soundType.getBreakSound(), this.getSoundSource(), 0.7F, 1.1F); - this.playSound(AntarchySoundEvents.ANT_BITE.get(), 0.35F, 0.95F + this.random.nextFloat() * 0.1F); - return true; + if (this.tryStripWood(targetPos, targetState)) { + return true; + } + + if (targetState.is(AntarchyTags.Blocks.TERMITE_FOODS) || this.isStrippedWoodState(targetState)) { + SoundType soundType = targetState.getSoundType(); + this.triggerBiteAnimation(WOOD_BITE_ANIMATION_TICKS); + this.nextWoodBiteTick = this.tickCount + WOOD_BITE_COOLDOWN_TICKS; + this.level().destroyBlock(targetPos, false, this); + this.level().playSound(null, targetPos, soundType.getBreakSound(), this.getSoundSource(), 0.7F, 1.1F); + this.playSound(AntarchySoundEvents.ANT_BITE.get(), 0.35F, 0.95F + this.random.nextFloat() * 0.1F); + return true; + } } return false; @@ -219,7 +237,65 @@ public class TermiteEntity extends BaseAntEntity implements GeoEntity { } private boolean isValidWoodTarget(BlockPos targetPos) { - return this.level().getBlockState(targetPos).is(AntarchyTags.Blocks.TERMITE_FOODS); + return this.isTermiteEdible(this.level().getBlockState(targetPos)); + } + + private boolean isTermiteEdible(BlockState state) { + return state.is(AntarchyTags.Blocks.TERMITE_FOODS) || this.isStrippedWoodState(state); + } + + private boolean tryStripWood(BlockPos targetPos, BlockState targetState) { + BlockState strippedState = this.getStrippedState(targetState); + if (strippedState == null) { + return false; + } + + SoundType soundType = targetState.getSoundType(); + this.triggerBiteAnimation(WOOD_BITE_ANIMATION_TICKS); + this.nextWoodBiteTick = this.tickCount + WOOD_BITE_COOLDOWN_TICKS; + this.level().setBlock(targetPos, strippedState, Block.UPDATE_ALL_IMMEDIATE); + this.level().playSound(null, targetPos, soundType.getBreakSound(), this.getSoundSource(), 0.6F, 1.2F); + this.playSound(AntarchySoundEvents.ANT_BITE.get(), 0.35F, 0.95F + this.random.nextFloat() * 0.1F); + return true; + } + + @Nullable + private BlockState getStrippedState(BlockState state) { + ResourceLocation blockId = BuiltInRegistries.BLOCK.getKey(state.getBlock()); + if (blockId == null || this.isStrippedWoodState(state) || !this.isStripTargetState(state, blockId.getPath())) { + return null; + } + + String path = blockId.getPath(); + if (path.startsWith("mossy_")) { + path = path.substring("mossy_".length()); + } + + ResourceLocation strippedId = ResourceLocation.fromNamespaceAndPath(blockId.getNamespace(), "stripped_" + path); + Block strippedBlock = BuiltInRegistries.BLOCK.getOptional(strippedId).orElse(null); + if (strippedBlock == null) { + return null; + } + + BlockState strippedState = strippedBlock.defaultBlockState(); + if (state.hasProperty(RotatedPillarBlock.AXIS) && strippedState.hasProperty(RotatedPillarBlock.AXIS)) { + strippedState = strippedState.setValue(RotatedPillarBlock.AXIS, state.getValue(RotatedPillarBlock.AXIS)); + } + return strippedState; + } + + private boolean isStripTargetState(BlockState state, String path) { + return state.is(BlockTags.LOGS) || path.endsWith("_wood"); + } + + private boolean isStrippedWoodState(BlockState state) { + ResourceLocation blockId = BuiltInRegistries.BLOCK.getKey(state.getBlock()); + if (blockId == null) { + return false; + } + + String path = blockId.getPath(); + return path.startsWith("stripped_") && (path.endsWith("_log") || path.endsWith("_wood") || path.endsWith("_stem") || path.endsWith("_hyphae")); } private boolean canReachWoodTarget(BlockPos targetPos) { 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 d233c67b..b33fa169 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 @@ -91,7 +91,7 @@ public class BrutalflyEntity extends Monster implements GeoEntity { private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); private final ServerBossEvent bossEvent = - new ServerBossEvent(this.getDisplayName(), BossEvent.BossBarColor.YELLOW, BossEvent.BossBarOverlay.PROGRESS); + new com.craisinlord.antarchy.content.boss.EntityLinkedServerBossEvent(this.getUUID(), this.getDisplayName(), BossEvent.BossBarColor.YELLOW, BossEvent.BossBarOverlay.PROGRESS); @Nullable private Vec3 patrolTarget; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerElkaBehavior.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerElkaBehavior.java index a840fd40..7396c580 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerElkaBehavior.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerElkaBehavior.java @@ -7,20 +7,21 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.Mth; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.EntityDimensions; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.goal.FloatGoal; -import net.minecraft.world.entity.ai.goal.LookAtPlayerGoal; -import net.minecraft.world.entity.ai.goal.RandomLookAroundGoal; -import net.minecraft.world.entity.ai.goal.WaterAvoidingRandomStrollGoal; import net.minecraft.world.entity.monster.Enemy; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.projectile.Projectile; +import net.minecraft.core.BlockPos; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animation.RawAnimation; public class GlimmerElkaBehavior implements GlimmerVariantBehavior { private static final int PASSIVE_REFRESH_DURATION = 20 * 4; @@ -30,6 +31,21 @@ public class GlimmerElkaBehavior implements GlimmerVariantBehavior { private static final double SHOCKWAVE_RADIUS = 6.0D; private static final double SHOCKWAVE_KNOCKBACK = 1.3D; private static final float SHOCKWAVE_DAMAGE = 8.0F; + private static final int IDLE_ANIMATION_CYCLE_TICKS = 60; + private static final int QUIRK_ANIMATION_TICKS = 40; + private static final int QUIRK_CHANCE = 60; + private static final int SIT_MIN_TICKS = 20 * 60; + private static final int SIT_MAX_TICKS = 20 * 60 * 3; + private static final int SIT_COOLDOWN_TICKS = 20 * 60 * 6; + private static final int SIT_CHECK_CHANCE_SHADE = 300; + private static final int SIT_CHECK_CHANCE_OPEN = 1200; + private static final double FOLLOW_BREAK_SIT_DISTANCE_SQR = 81.0D; + private static final RawAnimation ELKA_WALK_ANIM = RawAnimation.begin().thenLoop("walk"); + private static final RawAnimation ELKA_IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); + private static final RawAnimation ELKA_SIT_IDLE_ANIM = RawAnimation.begin().thenLoop("sit_idle"); + private static final RawAnimation ELKA_QUIRK_ANIM = RawAnimation.begin().thenPlay("quirk"); + private static final RawAnimation ELKA_QUIRK_2_ANIM = RawAnimation.begin().thenPlay("quirk_2"); + private static final RawAnimation ELKA_QUIRK_3_ANIM = RawAnimation.begin().thenPlay("quirk_3"); private static ResourceLocation rl(String path) { return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path); @@ -38,9 +54,6 @@ public class GlimmerElkaBehavior implements GlimmerVariantBehavior { @Override public void registerGoals(GlimmerEntity entity) { entity.addGoal(0, new FloatGoal(entity)); - entity.addGoal(5, new WaterAvoidingRandomStrollGoal(entity, 1.0D)); - entity.addGoal(6, new LookAtPlayerGoal(entity, Player.class, 8.0F)); - entity.addGoal(7, new RandomLookAroundGoal(entity)); } @Override @@ -95,6 +108,8 @@ public class GlimmerElkaBehavior implements GlimmerVariantBehavior { @Override public void tickPassiveEveryTick(GlimmerEntity entity, Player owner) { + this.tickIdleState(entity); + if (!(owner instanceof BloodglassAccess access)) { return; } @@ -110,6 +125,7 @@ public class GlimmerElkaBehavior implements GlimmerVariantBehavior { @Override public void clearPassive(GlimmerEntity entity, Player owner) { entity.setLastOwnerShieldLostCount(-1L); + this.stopSitting(entity); } @Override @@ -117,6 +133,28 @@ public class GlimmerElkaBehavior implements GlimmerVariantBehavior { return ABILITY_COOLDOWN_TICKS; } + @Override + @Nullable + public RawAnimation movingAnimation(GlimmerEntity entity) { + return ELKA_WALK_ANIM; + } + + @Override + @Nullable + public RawAnimation idleAnimation(GlimmerEntity entity) { + if (entity.getElkaIdleQuirkTicks() > 0) { + return switch (entity.getElkaIdleQuirkVariant()) { + case 1 -> ELKA_QUIRK_2_ANIM; + case 2 -> ELKA_QUIRK_3_ANIM; + default -> ELKA_QUIRK_ANIM; + }; + } + if (entity.isElkaIdleSitting()) { + return ELKA_SIT_IDLE_ANIM; + } + return ELKA_IDLE_ANIM; + } + @Override @Nullable public software.bernie.geckolib.animation.RawAnimation abilityAnimation() { @@ -149,4 +187,120 @@ public class GlimmerElkaBehavior implements GlimmerVariantBehavior { this.sendAbilityMessage(owner, Component.translatable("entity.antarchy.glimmer.ability.elka")); entity.startAbilityCooldown(); } + + private void tickIdleState(GlimmerEntity entity) { + int quirkTicks = entity.getElkaIdleQuirkTicks(); + if (quirkTicks > 0) { + entity.setElkaIdleQuirkTicks(quirkTicks - 1); + } + + if (entity.isElkaIdleSitting()) { + if (!this.canRemainSitting(entity)) { + this.stopSitting(entity); + return; + } + + int sitTicks = entity.getElkaIdleSitTicksRemaining(); + if (sitTicks > 0) { + entity.setElkaIdleSitTicksRemaining(sitTicks - 1); + if (sitTicks - 1 <= 0) { + this.stopSitting(entity); + } + } + return; + } + + if (entity.getElkaIdleSitCooldownTicks() > 0) { + entity.setElkaIdleSitCooldownTicks(entity.getElkaIdleSitCooldownTicks() - 1); + } + + if (this.canStartSitting(entity)) { + int chance = this.isNearShade(entity) ? SIT_CHECK_CHANCE_SHADE : SIT_CHECK_CHANCE_OPEN; + if (entity.getElkaIdleSitCooldownTicks() <= 0 && entity.getRandom().nextInt(chance) == 0) { + this.startSitting(entity); + return; + } + } + + this.tickIdleQuirk(entity); + } + + private void tickIdleQuirk(GlimmerEntity entity) { + if (entity.getElkaIdleQuirkTicks() > 0 + || entity.getDeltaMovement().horizontalDistanceSqr() > 1.0E-4D + || entity.getNavigation().isInProgress() + || entity.getTarget() != null + || entity.isFollowingOwner() && entity.getOwner() != null && entity.distanceToSqr(entity.getOwner()) > 9.0D) { + entity.setElkaIdleAnimationCycleTicks(0); + return; + } + + entity.setElkaIdleAnimationCycleTicks(entity.getElkaIdleAnimationCycleTicks() + 1); + if (entity.getElkaIdleAnimationCycleTicks() < IDLE_ANIMATION_CYCLE_TICKS) { + return; + } + entity.setElkaIdleAnimationCycleTicks(0); + + if (entity.getRandom().nextInt(QUIRK_CHANCE) != 0) { + return; + } + + entity.setElkaIdleQuirkTicks(QUIRK_ANIMATION_TICKS); + if (entity.isElkaIdleSitting()) { + entity.setElkaIdleQuirkVariant(2); + } else { + entity.setElkaIdleQuirkVariant(entity.getRandom().nextBoolean() ? 0 : 1); + } + } + + private void startSitting(GlimmerEntity entity) { + entity.setElkaIdleSitting(true); + entity.setElkaIdleSitTicksRemaining(Mth.nextInt(entity.getRandom(), SIT_MIN_TICKS, SIT_MAX_TICKS)); + entity.getNavigation().stop(); + entity.setDeltaMovement(0.0D, entity.getDeltaMovement().y, 0.0D); + entity.setElkaIdleAnimationCycleTicks(0); + } + + private void stopSitting(GlimmerEntity entity) { + if (!entity.isElkaIdleSitting()) { + return; + } + entity.setElkaIdleSitting(false); + entity.setElkaIdleSitTicksRemaining(0); + entity.setElkaIdleSitCooldownTicks(SIT_COOLDOWN_TICKS); + entity.setElkaIdleAnimationCycleTicks(0); + } + + private boolean canStartSitting(GlimmerEntity entity) { + if (entity.isOrderedToSit() || !entity.onGround() || entity.isInWaterOrBubble() || entity.isOnFire()) { + return false; + } + if (entity.getTarget() != null || entity.getNavigation().isInProgress() || entity.getDeltaMovement().horizontalDistanceSqr() > 1.0E-4D) { + return false; + } + if (entity.isFollowingOwner() && entity.getOwner() != null && entity.distanceToSqr(entity.getOwner()) > 9.0D) { + return false; + } + return true; + } + + private boolean canRemainSitting(GlimmerEntity entity) { + if (entity.isOrderedToSit() || !entity.onGround() || entity.isInWaterOrBubble() || entity.isOnFire() || entity.getTarget() != null) { + return false; + } + if (entity.isFollowingOwner() && entity.getOwner() != null && entity.distanceToSqr(entity.getOwner()) > FOLLOW_BREAK_SIT_DISTANCE_SQR) { + return false; + } + return entity.hurtTime <= 0; + } + + private boolean isNearShade(GlimmerEntity entity) { + BlockPos base = entity.blockPosition(); + for (BlockPos pos : BlockPos.betweenClosed(base.offset(-3, -1, -3), base.offset(3, 3, 3))) { + if (entity.level().getBlockState(pos).is(BlockTags.LEAVES)) { + return true; + } + } + return false; + } } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerEntity.java index 1d4a423a..c772ec0b 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerEntity.java @@ -2,6 +2,7 @@ package com.craisinlord.antarchy.content.entity.glimmer; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.advancement.AntarchyAdvancements; import com.craisinlord.antarchy.content.client.particle.GlimmerParticles; import com.craisinlord.antarchy.Antarchy; import net.minecraft.network.chat.Component; @@ -93,6 +94,12 @@ public class GlimmerEntity extends TamableAnimal implements GeoEntity { SynchedEntityData.defineId(GlimmerEntity.class, EntityDataSerializers.FLOAT); private static final EntityDataAccessor ABILITY_ANIM_TICKS = SynchedEntityData.defineId(GlimmerEntity.class, EntityDataSerializers.INT); + private static final EntityDataAccessor ELKA_IDLE_SITTING = + SynchedEntityData.defineId(GlimmerEntity.class, EntityDataSerializers.BOOLEAN); + private static final EntityDataAccessor ELKA_IDLE_QUIRK_TICKS = + SynchedEntityData.defineId(GlimmerEntity.class, EntityDataSerializers.INT); + private static final EntityDataAccessor ELKA_IDLE_QUIRK_VARIANT = + SynchedEntityData.defineId(GlimmerEntity.class, EntityDataSerializers.INT); public static final int FADE_DURATION_TICKS = 40; private static final int PASSIVE_RANGE = 16; @@ -103,11 +110,19 @@ public class GlimmerEntity extends TamableAnimal implements GeoEntity { private static final String VARIANT_LOCKED_KEY = "VariantLocked"; private static final String FOLLOWING_KEY = "GlimmerFollowing"; private static final String ABILITY_COOLDOWN_KEY = "AbilityCooldown"; + private static final String ELKA_IDLE_SITTING_KEY = "ElkaIdleSitting"; + private static final String ELKA_IDLE_SIT_TICKS_KEY = "ElkaIdleSitTicks"; + private static final String ELKA_IDLE_SIT_COOLDOWN_KEY = "ElkaIdleSitCooldown"; + private static final String ELKA_IDLE_QUIRK_TICKS_KEY = "ElkaIdleQuirkTicks"; + private static final String ELKA_IDLE_QUIRK_VARIANT_KEY = "ElkaIdleQuirkVariant"; private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); private boolean variantLocked; private float lastOwnerExhaustion = -1.0F; private long lastOwnerShieldLostCount = -1L; + private int elkaIdleSitTicksRemaining; + private int elkaIdleSitCooldownTicks = 20 * 60 * 6; + private int elkaIdleAnimationCycleTicks; public GlimmerEntity(EntityType entityType, Level level) { super(entityType, level); @@ -152,6 +167,9 @@ public class GlimmerEntity extends TamableAnimal implements GeoEntity { builder.define(ABILITY_COOLDOWN, 0); builder.define(GROWTH_SCALE, 1.0F); builder.define(ABILITY_ANIM_TICKS, 0); + builder.define(ELKA_IDLE_SITTING, false); + builder.define(ELKA_IDLE_QUIRK_TICKS, 0); + builder.define(ELKA_IDLE_QUIRK_VARIANT, 0); } public void playAbilityAnimation(int ticks) { @@ -224,6 +242,54 @@ public class GlimmerEntity extends TamableAnimal implements GeoEntity { this.refreshDimensions(); } + public boolean isElkaIdleSitting() { + return this.entityData.get(ELKA_IDLE_SITTING); + } + + public void setElkaIdleSitting(boolean sitting) { + this.entityData.set(ELKA_IDLE_SITTING, sitting); + } + + public int getElkaIdleQuirkTicks() { + return this.entityData.get(ELKA_IDLE_QUIRK_TICKS); + } + + public void setElkaIdleQuirkTicks(int ticks) { + this.entityData.set(ELKA_IDLE_QUIRK_TICKS, Math.max(0, ticks)); + } + + public int getElkaIdleQuirkVariant() { + return this.entityData.get(ELKA_IDLE_QUIRK_VARIANT); + } + + public void setElkaIdleQuirkVariant(int variant) { + this.entityData.set(ELKA_IDLE_QUIRK_VARIANT, Math.max(0, variant)); + } + + public int getElkaIdleSitTicksRemaining() { + return this.elkaIdleSitTicksRemaining; + } + + public void setElkaIdleSitTicksRemaining(int ticks) { + this.elkaIdleSitTicksRemaining = Math.max(0, ticks); + } + + public int getElkaIdleSitCooldownTicks() { + return this.elkaIdleSitCooldownTicks; + } + + public void setElkaIdleSitCooldownTicks(int ticks) { + this.elkaIdleSitCooldownTicks = Math.max(0, ticks); + } + + public int getElkaIdleAnimationCycleTicks() { + return this.elkaIdleAnimationCycleTicks; + } + + public void setElkaIdleAnimationCycleTicks(int ticks) { + this.elkaIdleAnimationCycleTicks = Math.max(0, ticks); + } + private void cycleMovementState(Player player) { if (this.isOrderedToSit()) { this.setOrderedToSit(false); @@ -366,7 +432,7 @@ public class GlimmerEntity extends TamableAnimal implements GeoEntity { } if (player instanceof net.minecraft.server.level.ServerPlayer serverPlayer) { - com.craisinlord.antarchy.content.AntarchyAdvancements.award(serverPlayer, this.getVariant().tameAdvancementId()); + AntarchyAdvancements.award(serverPlayer, this.getVariant().tameAdvancementId()); } return InteractionResult.SUCCESS; @@ -566,6 +632,11 @@ public class GlimmerEntity extends TamableAnimal implements GeoEntity { tag.putBoolean(VARIANT_LOCKED_KEY, this.variantLocked); tag.putBoolean(FOLLOWING_KEY, this.isFollowingOwner()); tag.putInt(ABILITY_COOLDOWN_KEY, this.entityData.get(ABILITY_COOLDOWN)); + tag.putBoolean(ELKA_IDLE_SITTING_KEY, this.isElkaIdleSitting()); + tag.putInt(ELKA_IDLE_SIT_TICKS_KEY, this.elkaIdleSitTicksRemaining); + tag.putInt(ELKA_IDLE_SIT_COOLDOWN_KEY, this.elkaIdleSitCooldownTicks); + tag.putInt(ELKA_IDLE_QUIRK_TICKS_KEY, this.getElkaIdleQuirkTicks()); + tag.putInt(ELKA_IDLE_QUIRK_VARIANT_KEY, this.getElkaIdleQuirkVariant()); } @Override @@ -578,6 +649,11 @@ public class GlimmerEntity extends TamableAnimal implements GeoEntity { this.variantLocked = tag.getBoolean(VARIANT_LOCKED_KEY); this.entityData.set(FOLLOWING, !tag.contains(FOLLOWING_KEY) || tag.getBoolean(FOLLOWING_KEY)); this.entityData.set(ABILITY_COOLDOWN, tag.getInt(ABILITY_COOLDOWN_KEY)); + this.entityData.set(ELKA_IDLE_SITTING, tag.getBoolean(ELKA_IDLE_SITTING_KEY)); + this.elkaIdleSitTicksRemaining = tag.getInt(ELKA_IDLE_SIT_TICKS_KEY); + this.elkaIdleSitCooldownTicks = tag.contains(ELKA_IDLE_SIT_COOLDOWN_KEY) ? tag.getInt(ELKA_IDLE_SIT_COOLDOWN_KEY) : 20 * 60 * 6; + this.entityData.set(ELKA_IDLE_QUIRK_TICKS, tag.getInt(ELKA_IDLE_QUIRK_TICKS_KEY)); + this.entityData.set(ELKA_IDLE_QUIRK_VARIANT, tag.getInt(ELKA_IDLE_QUIRK_VARIANT_KEY)); } @Override @@ -611,7 +687,8 @@ public class GlimmerEntity extends TamableAnimal implements GeoEntity { RawAnimation movingAnim = this.getVariant().getBehavior().movingAnimation(this); return state.setAndContinue(movingAnim != null ? movingAnim : WALK_ANIM); } - return state.setAndContinue(IDLE_ANIM); + RawAnimation idleAnim = this.getVariant().getBehavior().idleAnimation(this); + return state.setAndContinue(idleAnim != null ? idleAnim : IDLE_ANIM); } @Override diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerVariantBehavior.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerVariantBehavior.java index 58d673f0..771ec901 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerVariantBehavior.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerVariantBehavior.java @@ -95,6 +95,15 @@ public interface GlimmerVariantBehavior { return null; } + /** + * Animation to play while idle in place of the default idle loop. Null uses the + * shared Glimmer idle animation. + */ + @Nullable + default software.bernie.geckolib.animation.RawAnimation idleAnimation(GlimmerEntity entity) { + return null; + } + /** * Navigation speed multiplier used while following the owner (see {@link GlimmerFollowOwnerGoal}). */ 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 327fa364..bbac9700 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 @@ -112,7 +112,7 @@ public class KrakenEntity extends Monster implements GeoEntity, MultipartEntityO private static final Vec3 GRAB_ANCHOR_LOCAL = new Vec3(22.0D / 16.0D, 223.5D / 16.0D, -12.5D / 16.0D); - private final ServerBossEvent bossEvent = new ServerBossEvent(Component.literal("The Kraken"), BossEvent.BossBarColor.BLUE, BossEvent.BossBarOverlay.PROGRESS); + private final ServerBossEvent bossEvent = new com.craisinlord.antarchy.content.boss.EntityLinkedServerBossEvent(this.getUUID(), Component.translatable("entity.antarchy.kraken"), BossEvent.BossBarColor.BLUE, BossEvent.BossBarOverlay.PROGRESS); private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); @Nullable diff --git a/common/src/main/java/com/craisinlord/antarchy/content/fluid/AntarchyFluidChecks.java b/common/src/main/java/com/craisinlord/antarchy/content/fluid/AntarchyFluidChecks.java new file mode 100644 index 00000000..33b2e5c9 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/fluid/AntarchyFluidChecks.java @@ -0,0 +1,44 @@ +package com.craisinlord.antarchy.content.fluid; + +import com.craisinlord.antarchy.Antarchy; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.material.FluidState; + +public final class AntarchyFluidChecks { + private static final ResourceLocation ANTIWATER_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "antiwater"); + private static final ResourceLocation FLOWING_ANTIWATER_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "flowing_antiwater"); + private static final ResourceLocation ICHOR_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "ichor"); + private static final ResourceLocation FLOWING_ICHOR_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "flowing_ichor"); + private static final ResourceLocation LUMEN_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "lumen"); + private static final ResourceLocation FLOWING_LUMEN_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "flowing_lumen"); + private static final ResourceLocation BILE_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "bile"); + private static final ResourceLocation FLOWING_BILE_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "flowing_bile"); + + private AntarchyFluidChecks() { + } + + public static boolean isAntiwater(FluidState fluidState) { + ResourceLocation fluidId = BuiltInRegistries.FLUID.getKey(fluidState.getType()); + return ANTIWATER_ID.equals(fluidId) || FLOWING_ANTIWATER_ID.equals(fluidId); + } + + public static boolean isIchor(FluidState fluidState) { + ResourceLocation fluidId = BuiltInRegistries.FLUID.getKey(fluidState.getType()); + return ICHOR_ID.equals(fluidId) || FLOWING_ICHOR_ID.equals(fluidId); + } + + public static boolean isLumen(FluidState fluidState) { + ResourceLocation fluidId = BuiltInRegistries.FLUID.getKey(fluidState.getType()); + return LUMEN_ID.equals(fluidId) || FLOWING_LUMEN_ID.equals(fluidId); + } + + public static boolean isBile(FluidState fluidState) { + ResourceLocation fluidId = BuiltInRegistries.FLUID.getKey(fluidState.getType()); + return BILE_ID.equals(fluidId) || FLOWING_BILE_ID.equals(fluidId); + } + + public static boolean usesWaterLikePhysics(FluidState fluidState) { + return isIchor(fluidState) || isLumen(fluidState) || isBile(fluidState); + } +} 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 60c54757..febaef1e 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 @@ -67,7 +67,7 @@ public final class CavarynHordeManager { private static final int HOSTILE_KILL_ATTENTION = 4; private static final int MOB_KILL_ATTENTION = 3; private static final int EGG_OR_NEST_BREAK_ATTENTION = 5; - private static final int BLOCK_BREAK_ATTENTION = 1; + private static final int BLOCK_BREAK_ATTENTION = 0; private static final int STALE_ATTENTION_PRUNE_TICKS = 20 * 60 * 20; private static final int PLAYER_CHECK_INTERVAL = 20; private static final int AREA_ATTENTION_INTERVAL = 20 * 45; @@ -85,6 +85,7 @@ public final class CavarynHordeManager { private static final int MAX_SPAWN_ATTEMPTS_PER_MOB = 18; private static final double MIN_SPAWN_DISTANCE = 18.0D; private static final double MAX_SPAWN_DISTANCE = 36.0D; + private static final int EGG_HATCH_ACCELERATION_MIN_ATTENTION = ATTENTION_THRESHOLD / 2; private CavarynHordeManager() { } @@ -145,6 +146,34 @@ public final class CavarynHordeManager { return attention != null ? attention.attention : 0; } + public static boolean shouldAccelerateNearbyEggHatching(ServerLevel level, BlockPos pos, double playerRadius, RandomSource random) { + if (!level.dimension().equals(CAVARYN) || !isHordeBiome(level, pos)) { + return false; + } + + double radiusSqr = playerRadius * playerRadius; + HordeData data = get(level); + int highestAttention = 0; + for (ServerPlayer player : level.players()) { + if (!isValidHordeTarget(player) || player.blockPosition().distSqr(pos) > radiusSqr) { + continue; + } + PlayerAttention attention = data.players.get(player.getUUID()); + if (attention == null) { + continue; + } + highestAttention = Math.max(highestAttention, attention.attention); + } + + if (highestAttention < EGG_HATCH_ACCELERATION_MIN_ATTENTION) { + return false; + } + + float pressure = highestAttention / (float) ATTENTION_THRESHOLD; + float chance = Mth.lerp(pressure, 0.02F, 0.3F); + return random.nextFloat() < chance; + } + public static int setHordeLevel(ServerPlayer player, int levelValue) { if (!(player.level() instanceof ServerLevel level) || !level.dimension().equals(CAVARYN)) { return -1; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/BigBerthaItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/BigBerthaItem.java index 7a4cd0c2..be8e1bb0 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/item/BigBerthaItem.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/BigBerthaItem.java @@ -160,6 +160,7 @@ public class BigBerthaItem extends SwordItem implements GeoItem { case LUCID -> applyLucidHit(target, player, serverLevel); case NIGHTMARE -> applyNightmareHit(target, serverLevel); case KRAKEN -> applyKrakenHit(player, target, serverLevel); + case HERCULES -> applyHerculesHit(player, target, serverLevel); case MOLEVORE, TORETERROR -> { } } @@ -324,6 +325,31 @@ public class BigBerthaItem extends SwordItem implements GeoItem { com.craisinlord.antarchy.content.entity.kraken.TentacleEntity.spawnAt(level, target.position(), attacker); } + private void applyHerculesHit(Player attacker, LivingEntity target, ServerLevel level) { + float bonusDamage = (float) (attacker.getAttributeValue(Attributes.ATTACK_DAMAGE) * 0.5D); + Vec3 push = target.position().subtract(attacker.position()).multiply(1.0D, 0.0D, 1.0D); + if (push.lengthSqr() < 1.0E-4D) { + push = attacker.getLookAngle().multiply(1.0D, 0.0D, 1.0D); + } + + if (bonusDamage > 0.0F) { + target.invulnerableTime = 0; + target.hurt(attacker.damageSources().playerAttack(attacker), bonusDamage); + } + + if (push.lengthSqr() >= 1.0E-4D) { + Vec3 normalized = push.normalize(); + Vec3 motion = target.getDeltaMovement(); + target.setDeltaMovement(motion.x + normalized.x * 0.55D, Math.max(motion.y, 1.35D), motion.z + normalized.z * 0.55D); + } else { + Vec3 motion = target.getDeltaMovement(); + target.setDeltaMovement(motion.x, Math.max(motion.y, 1.35D), motion.z); + } + target.hurtMarked = true; + level.sendParticles(ParticleTypes.CRIT, target.getX(), target.getY(0.7D), target.getZ(), 12, 0.3D, 0.35D, 0.3D, 0.04D); + level.playSound(null, target.blockPosition(), SoundEvents.IRON_GOLEM_ATTACK, SoundSource.PLAYERS, 1.0F, 0.8F); + } + private void cycleMode(Level level, Player player, ItemStack stack) { BossMode nextMode = getMode(stack).next(); setMode(stack, nextMode); @@ -595,7 +621,8 @@ public class BigBerthaItem extends SwordItem implements GeoItem { KRAKEN(2, "tooltip.antarchy.big_bertha.mode.kraken", "message.antarchy.big_bertha.mode.kraken"), MOLEVORE(3, "tooltip.antarchy.big_bertha.mode.molevore", "message.antarchy.big_bertha.mode.molevore"), LUCID(4, "tooltip.antarchy.big_bertha.mode.lucid", "message.antarchy.big_bertha.mode.lucid"), - TORETERROR(5, "tooltip.antarchy.big_bertha.mode.toreterror", "message.antarchy.big_bertha.mode.toreterror"); + TORETERROR(5, "tooltip.antarchy.big_bertha.mode.toreterror", "message.antarchy.big_bertha.mode.toreterror"), + HERCULES(6, "tooltip.antarchy.big_bertha.mode.hercules", "message.antarchy.big_bertha.mode.hercules"); private final int id; private final String tooltipKey; @@ -612,7 +639,8 @@ public class BigBerthaItem extends SwordItem implements GeoItem { case BASILISK -> LUCID; case LUCID -> NIGHTMARE; case NIGHTMARE -> KRAKEN; - case KRAKEN -> MOLEVORE; + case KRAKEN -> HERCULES; + case HERCULES -> MOLEVORE; case MOLEVORE -> TORETERROR; case TORETERROR -> BASILISK; }; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/GlimmerBottleItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/GlimmerBottleItem.java index 3d715b05..018f5845 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/item/GlimmerBottleItem.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/GlimmerBottleItem.java @@ -1,6 +1,7 @@ package com.craisinlord.antarchy.content.item; import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.advancement.AntarchyAdvancements; import com.craisinlord.antarchy.content.client.particle.GlimmerParticles; import com.craisinlord.antarchy.content.entity.glimmer.GlimmerCompanionSavedData; import com.craisinlord.antarchy.content.entity.glimmer.GlimmerEntity; @@ -80,7 +81,7 @@ public class GlimmerBottleItem extends Item { level.playSound(null, player.getX(), player.getY(), player.getZ(), SoundEvents.BOTTLE_EMPTY, SoundSource.PLAYERS, 1.0F, 1.0F); if (player instanceof net.minecraft.server.level.ServerPlayer serverPlayer) { - com.craisinlord.antarchy.content.AntarchyAdvancements.award(serverPlayer, variant.tameAdvancementId()); + AntarchyAdvancements.award(serverPlayer, variant.tameAdvancementId()); } ItemStack result = ItemUtils.createFilledResult(stack, player, new ItemStack(Items.GLASS_BOTTLE)); diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/JerryNucleusItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/JerryNucleusItem.java new file mode 100644 index 00000000..b4c17582 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/JerryNucleusItem.java @@ -0,0 +1,98 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.content.block.BedBugEggBlock; +import com.craisinlord.antarchy.content.block.CreepingHorrorEggBlock; +import com.craisinlord.antarchy.content.block.JerryEggBlock; +import com.craisinlord.antarchy.content.block.JumpyBugEggBlock; +import com.craisinlord.antarchy.content.block.LurkingTerrorEggBlock; +import com.craisinlord.antarchy.content.block.SpitBugEggBlock; +import java.util.List; +import net.minecraft.ChatFormatting; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.animal.Turtle; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.TurtleEggBlock; +import net.minecraft.world.level.block.state.BlockState; + +public class JerryNucleusItem extends Item { + public JerryNucleusItem(Properties properties) { + super(properties); + } + + @Override + public InteractionResult useOn(UseOnContext context) { + BlockState state = context.getLevel().getBlockState(context.getClickedPos()); + Block block = state.getBlock(); + boolean handled = block instanceof BedBugEggBlock + || block instanceof CreepingHorrorEggBlock + || block instanceof LurkingTerrorEggBlock + || block instanceof JumpyBugEggBlock + || block instanceof SpitBugEggBlock + || block instanceof JerryEggBlock + || block instanceof TurtleEggBlock; + if (!handled) { + return super.useOn(context); + } + + if (!(context.getLevel() instanceof ServerLevel serverLevel)) { + return InteractionResult.SUCCESS; + } + + BlockPos pos = context.getClickedPos(); + if (block instanceof BedBugEggBlock eggBlock) { + eggBlock.hatchWithNucleus(serverLevel, pos, state); + } else if (block instanceof CreepingHorrorEggBlock eggBlock) { + eggBlock.hatchWithNucleus(serverLevel, pos, state); + } else if (block instanceof LurkingTerrorEggBlock eggBlock) { + eggBlock.hatchWithNucleus(serverLevel, pos, state); + } else if (block instanceof JumpyBugEggBlock eggBlock) { + eggBlock.hatchWithNucleus(serverLevel, pos); + } else if (block instanceof SpitBugEggBlock eggBlock) { + eggBlock.hatchWithNucleus(serverLevel, pos); + } else if (block instanceof JerryEggBlock eggBlock) { + eggBlock.hatchWithNucleus(serverLevel, pos); + } else if (block instanceof TurtleEggBlock) { + hatchTurtleEggs(serverLevel, pos, state); + } + + if (context.getPlayer() == null || !context.getPlayer().getAbilities().instabuild) { + context.getItemInHand().shrink(1); + } + return InteractionResult.CONSUME; + } + + private static void hatchTurtleEggs(ServerLevel level, BlockPos pos, BlockState state) { + int eggs = state.getValue(TurtleEggBlock.EGGS); + level.removeBlock(pos, false); + level.playSound(null, pos, SoundEvents.TURTLE_EGG_HATCH, SoundSource.BLOCKS, 0.75F, 0.95F + level.random.nextFloat() * 0.1F); + + for (int i = 0; i < eggs; i++) { + Turtle turtle = EntityType.TURTLE.create(level); + if (turtle == null) { + continue; + } + turtle.setAge(-24000); + turtle.setHomePos(pos); + double spawnX = pos.getX() + 0.3D + level.random.nextDouble() * 0.4D; + double spawnZ = pos.getZ() + 0.3D + level.random.nextDouble() * 0.4D; + turtle.moveTo(spawnX, pos.getY() + 0.1D, spawnZ, level.random.nextFloat() * 360.0F, 0.0F); + level.addFreshEntity(turtle); + } + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.jerry_nucleus.hatch").withStyle(ChatFormatting.GRAY)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } +} 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 new file mode 100644 index 00000000..818d39cd --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/MantisClawItem.java @@ -0,0 +1,31 @@ +package com.craisinlord.antarchy.content.item; + +import java.util.List; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.SwordItem; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.TooltipFlag; + +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; + + public MantisClawItem(Tier tier, Item.Properties properties) { + super(tier, properties); + } + + public static boolean isDualWielding(LivingEntity entity) { + return entity.getMainHandItem().getItem() instanceof MantisClawItem + && entity.getOffhandItem().getItem() instanceof MantisClawItem; + } + + @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)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/network/HerculesBeetleMountedChargePayload.java b/common/src/main/java/com/craisinlord/antarchy/content/network/HerculesBeetleMountedChargePayload.java index 292532ef..36731826 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/network/HerculesBeetleMountedChargePayload.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/network/HerculesBeetleMountedChargePayload.java @@ -7,11 +7,14 @@ import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.ResourceLocation; -public record HerculesBeetleMountedChargePayload(int chargeTicks) implements CustomPacketPayload { +public record HerculesBeetleMountedChargePayload(boolean pressing) implements CustomPacketPayload { public static final Type TYPE = new Type<>(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "hercules_beetle_mounted_charge")); public static final StreamCodec STREAM_CODEC = - ByteBufCodecs.VAR_INT.map(HerculesBeetleMountedChargePayload::new, HerculesBeetleMountedChargePayload::chargeTicks); + StreamCodec.composite( + ByteBufCodecs.BOOL, HerculesBeetleMountedChargePayload::pressing, + HerculesBeetleMountedChargePayload::new + ); @Override public Type type() { diff --git a/common/src/main/java/com/craisinlord/antarchy/content/AmericanizeRecipe.java b/common/src/main/java/com/craisinlord/antarchy/content/recipe/AmericanizeRecipe.java similarity index 95% rename from common/src/main/java/com/craisinlord/antarchy/content/AmericanizeRecipe.java rename to common/src/main/java/com/craisinlord/antarchy/content/recipe/AmericanizeRecipe.java index f8cf9dfb..7f55ca45 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/AmericanizeRecipe.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/recipe/AmericanizeRecipe.java @@ -1,6 +1,8 @@ -package com.craisinlord.antarchy.content; +package com.craisinlord.antarchy.content.recipe; import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.AntarchyTags; import net.minecraft.core.HolderLookup; import net.minecraft.core.NonNullList; import net.minecraft.core.component.DataComponents; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/CustomBrewingRecipes.java b/common/src/main/java/com/craisinlord/antarchy/content/recipe/CustomBrewingRecipes.java similarity index 96% rename from common/src/main/java/com/craisinlord/antarchy/content/CustomBrewingRecipes.java rename to common/src/main/java/com/craisinlord/antarchy/content/recipe/CustomBrewingRecipes.java index 8f4ea530..99a3f87d 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/CustomBrewingRecipes.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/recipe/CustomBrewingRecipes.java @@ -1,8 +1,9 @@ -package com.craisinlord.antarchy.content; +package com.craisinlord.antarchy.content.recipe; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant; import com.craisinlord.antarchy.content.item.GlimmerBottleItem; -import net.minecraft.core.Holder; import net.minecraft.core.component.DataComponents; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/GoopedStepSoundMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/GoopedStepSoundMixin.java index d384ce8f..edc84ae7 100644 --- a/common/src/main/java/com/craisinlord/antarchy/mixins/GoopedStepSoundMixin.java +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/GoopedStepSoundMixin.java @@ -1,6 +1,6 @@ package com.craisinlord.antarchy.mixins; -import com.craisinlord.antarchy.content.GoopedEffectHooks; +import com.craisinlord.antarchy.content.effect.GoopedEffectHooks; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; import net.minecraft.sounds.SoundEvents; diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/MantisClawWallClimbMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/MantisClawWallClimbMixin.java new file mode 100644 index 00000000..63c1acc3 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/MantisClawWallClimbMixin.java @@ -0,0 +1,71 @@ +package com.craisinlord.antarchy.mixins; + +import com.craisinlord.antarchy.content.item.MantisClawItem; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Player.class) +public abstract class MantisClawWallClimbMixin extends LivingEntity { + @Unique + private boolean antarchy$mantisClinging; + @Unique + private int antarchy$mantisWallJumpCooldown; + + protected MantisClawWallClimbMixin(EntityType entityType, Level level) { + super(entityType, level); + } + + @Inject(method = "tick", at = @At("TAIL")) + private void antarchy$tickMantisWallCling(CallbackInfo ci) { + if (this.antarchy$mantisWallJumpCooldown > 0) { + this.antarchy$mantisWallJumpCooldown--; + } + + if (!this.antarchy$canMantisCling()) { + this.antarchy$mantisClinging = false; + return; + } + + if (!this.antarchy$mantisClinging && !this.level().isClientSide()) { + this.playSound( + SoundEvents.STONE_BREAK, + 0.45F, + 0.9F + this.getRandom().nextFloat() * 0.1F + ); + } + + Vec3 motion = this.getDeltaMovement(); + double clampedY = motion.y < MantisClawItem.WALL_CLING_FALL_SPEED ? MantisClawItem.WALL_CLING_FALL_SPEED : motion.y; + if (this.jumping && this.antarchy$mantisWallJumpCooldown <= 0) { + clampedY = Math.max(clampedY, MantisClawItem.WALL_CLIMB_JUMP_VELOCITY); + this.antarchy$mantisWallJumpCooldown = 6; + } + + this.setDeltaMovement(motion.x, clampedY, motion.z); + this.hasImpulse = true; + this.fallDistance = 0.0F; + this.antarchy$mantisClinging = true; + } + + @Unique + private boolean antarchy$canMantisCling() { + Player player = (Player) (Object) this; + return MantisClawItem.isDualWielding(player) + && this.horizontalCollision + && !this.onGround() + && !this.isInWaterOrBubble() + && !this.isPassenger() + && !this.isFallFlying() + && !player.getAbilities().flying + && !player.isSpectator(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/PotionBrewingMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/PotionBrewingMixin.java index a5510c83..f8e77b0a 100644 --- a/common/src/main/java/com/craisinlord/antarchy/mixins/PotionBrewingMixin.java +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/PotionBrewingMixin.java @@ -1,6 +1,6 @@ package com.craisinlord.antarchy.mixins; -import com.craisinlord.antarchy.content.CustomBrewingRecipes; +import com.craisinlord.antarchy.content.recipe.CustomBrewingRecipes; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.alchemy.PotionBrewing; import org.spongepowered.asm.mixin.Mixin; diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/StinkyLivingEntityMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/StinkyLivingEntityMixin.java index 33d18b90..8cd675a7 100644 --- a/common/src/main/java/com/craisinlord/antarchy/mixins/StinkyLivingEntityMixin.java +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/StinkyLivingEntityMixin.java @@ -1,7 +1,7 @@ package com.craisinlord.antarchy.mixins; import com.craisinlord.antarchy.content.AntarchyObjects; -import com.craisinlord.antarchy.content.StinkyBehavior; +import com.craisinlord.antarchy.content.effect.StinkyBehavior; import net.minecraft.world.entity.LivingEntity; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/client/CustomBossBarMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/client/CustomBossBarMixin.java new file mode 100644 index 00000000..02939a73 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/client/CustomBossBarMixin.java @@ -0,0 +1,43 @@ +package com.craisinlord.antarchy.mixins.client; + +import com.craisinlord.antarchy.content.client.hud.CustomBossBarRenderer; +import com.llamalad7.mixinextras.sugar.Local; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.components.BossHealthOverlay; +import net.minecraft.client.gui.components.LerpingBossEvent; +import net.minecraft.network.chat.Component; +import net.minecraft.world.BossEvent; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Constant; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyConstant; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(BossHealthOverlay.class) +public abstract class CustomBossBarMixin { + @Inject( + method = "drawBar(Lnet/minecraft/client/gui/GuiGraphics;IILnet/minecraft/world/BossEvent;)V", + at = @At("HEAD"), + cancellable = true + ) + private void antarchy$drawCustomBossBar(GuiGraphics guiGraphics, int x, int y, BossEvent bossEvent, CallbackInfo ci) { + if (CustomBossBarRenderer.render(guiGraphics, x, y, bossEvent)) { + ci.cancel(); + } + } + + @Redirect( + method = "render", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/components/LerpingBossEvent;getName()Lnet/minecraft/network/chat/Component;") + ) + private Component antarchy$hideNameForCustomBossBar(LerpingBossEvent bossEvent) { + return CustomBossBarRenderer.isCustomBoss(bossEvent) ? Component.empty() : bossEvent.getName(); + } + + @ModifyConstant(method = "render", constant = @Constant(intValue = 9, ordinal = 1)) + private int antarchy$doubleGapForCustomBossBar(int original, @Local LerpingBossEvent bossEvent) { + return CustomBossBarRenderer.isCustomBoss(bossEvent) ? original + 19 : original; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityGravityMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityGravityMixin.java index 68116a82..d13fde07 100644 --- a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityGravityMixin.java +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityGravityMixin.java @@ -239,7 +239,7 @@ public abstract class EntityGravityMixin implements AntarchyGravityAccess { for (int z = min.getZ(); z <= max.getZ(); z++) { cursor.set(x, y, z); FluidState fluidState = entity.level().getFluidState(cursor); - if (com.craisinlord.antarchy.content.block.PotentNyxiteBlock.isAntiwater(fluidState)) { + if (com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks.isAntiwater(fluidState)) { return true; } } diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityMoveMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityMoveMixin.java index d756591e..a8c7401b 100644 --- a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityMoveMixin.java +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityMoveMixin.java @@ -1,6 +1,6 @@ package com.craisinlord.antarchy.mixins.gravity; -import com.craisinlord.antarchy.content.block.PotentNyxiteBlock; +import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks; import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; @@ -160,7 +160,7 @@ public abstract class EntityMoveMixin { for (int z = min.getZ(); z <= max.getZ(); z++) { cursor.set(x, y, z); FluidState fluidState = entity.level().getFluidState(cursor); - if (PotentNyxiteBlock.isAntiwater(fluidState)) { + if (AntarchyFluidChecks.isAntiwater(fluidState)) { return true; } } diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/LivingEntityMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/LivingEntityMixin.java index 5e92df94..5e78fa97 100644 --- a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/LivingEntityMixin.java +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/LivingEntityMixin.java @@ -3,7 +3,7 @@ package com.craisinlord.antarchy.mixins.gravity; import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; -import com.craisinlord.antarchy.content.block.PotentNyxiteBlock; +import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.llamalad7.mixinextras.sugar.Local; @@ -115,7 +115,7 @@ public abstract class LivingEntityMixin { for (int z = min.getZ(); z <= max.getZ(); z++) { cursor.set(x, y, z); FluidState fluidState = entity.level().getFluidState(cursor); - if (PotentNyxiteBlock.isAntiwater(fluidState)) { + if (AntarchyFluidChecks.isAntiwater(fluidState)) { return true; } } diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ServerPlayerGravityMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ServerPlayerGravityMixin.java index 28f44868..70629df2 100644 --- a/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ServerPlayerGravityMixin.java +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/gravity/ServerPlayerGravityMixin.java @@ -1,6 +1,6 @@ package com.craisinlord.antarchy.mixins.gravity; -import com.craisinlord.antarchy.content.block.PotentNyxiteBlock; +import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks; import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; @@ -105,7 +105,7 @@ public abstract class ServerPlayerGravityMixin { for (int z = min.getZ(); z <= max.getZ(); z++) { cursor.set(x, y, z); FluidState fluidState = player.level().getFluidState(cursor); - if (PotentNyxiteBlock.isAntiwater(fluidState)) { + if (AntarchyFluidChecks.isAntiwater(fluidState)) { return true; } } diff --git a/common/src/main/resources/antarchy-common.mixins.json b/common/src/main/resources/antarchy-common.mixins.json index 899ada7f..ecf4cd68 100644 --- a/common/src/main/resources/antarchy-common.mixins.json +++ b/common/src/main/resources/antarchy-common.mixins.json @@ -20,6 +20,7 @@ "FrogVariantBootstrapMixin", "GlowSquidLumenSpawnMixin", "GlowVinesUnderLeavesMixin", + "MantisClawWallClimbMixin", "MilkBucketSizeResetMixin", "GoopedStepSoundMixin", "ExperimentalSettingsLevelSummaryMixin", @@ -63,6 +64,7 @@ "multipart.EntityMultipartLifecycleMixin" ], "client": [ + "client.CustomBossBarMixin", "client.CavarynSkyMixin", "client.CavarynHordeFogMixin", "client.CavarynHordeLightTextureMixin", diff --git a/common/src/main/resources/assets/antarchy/animations/hercules_beetle.animation.json b/common/src/main/resources/assets/antarchy/animations/hercules_beetle.animation.json index 57b4d3f2..7a4fde8d 100644 --- a/common/src/main/resources/assets/antarchy/animations/hercules_beetle.animation.json +++ b/common/src/main/resources/assets/antarchy/animations/hercules_beetle.animation.json @@ -2373,26 +2373,6 @@ } } }, - "right_wing": { - "scale": { - "0.0": { - "post": { - "vector": [0, 0, 0] - }, - "lerp_mode": "catmullrom" - } - } - }, - "left_wing": { - "scale": { - "0.0": { - "post": { - "vector": [0, 0, 0] - }, - "lerp_mode": "catmullrom" - } - } - }, "Hercules_beetle": { "position": { "0.0": { @@ -2661,26 +2641,6 @@ } } }, - "right_wing": { - "scale": { - "0.0": { - "post": { - "vector": [0, 0, 0] - }, - "lerp_mode": "catmullrom" - } - } - }, - "left_wing": { - "scale": { - "0.0": { - "post": { - "vector": [0, 0, 0] - }, - "lerp_mode": "catmullrom" - } - } - }, "Hercules_beetle": { "position": { "0.0": { @@ -5183,4 +5143,4 @@ } } } -} \ No newline at end of file +} diff --git a/common/src/main/resources/assets/antarchy/lang/de_de.json b/common/src/main/resources/assets/antarchy/lang/de_de.json index 170f9ebd..fdee7c26 100644 --- a/common/src/main/resources/assets/antarchy/lang/de_de.json +++ b/common/src/main/resources/assets/antarchy/lang/de_de.json @@ -349,6 +349,7 @@ "tooltip.antarchy.blood_crystal_katana.launch": "Schleudert dich bei einem Treffer nach vorn.", "tooltip.antarchy.blood_crystal_katana.trail": "Hinterlässt eine karmesinrote Spur.", "item.antarchy.mantis_claw": "Gottesanbeterin-Klaue", + "tooltip.antarchy.mantis_claw.wall_cling": "Dual wield to cling to walls and jump upward.", "item.antarchy.king_scale": "König-Schuppe", "item.antarchy.queen_scale": "Königin-Schuppe", "item.antarchy.jumpy_bug_leg": "Sprungkäfer-Bein", @@ -527,12 +528,18 @@ "advancements.antarchy.very_hungry_caterpillar.title": "Die kleine Raupe Nimmersatt", "advancements.antarchy.very_hungry_caterpillar.description": "Hilf einer Raupe beim Wachsen.", "effect.antarchy.dread": "Grauen", + "effect.antarchy.dread.description": "Verursacht visuelle und akustische Halluzinationen.", "effect.antarchy.paralyzed": "Gelähmt", + "effect.antarchy.paralyzed.description": "Verhindert, dass sich Ziele bewegen.", "effect.antarchy.inverted": "Umgekehrt", + "effect.antarchy.inverted.description": "Kehrt die Schwerkraft des Ziels um.", "effect.antarchy.stinky": "Stinkend", + "effect.antarchy.stinky.description": "Vertreibt passive und neutrale Kreaturen und zieht Gliederfüßer an.", + "effect.antarchy.gooped.description": "Verlangsamt Bewegung und Angriffsgeschwindigkeit.", "effect.antarchy.shrinking": "Schrumpfung", "effect.antarchy.growth": "Wachstum", "effect.antarchy.bloodglass_ward": "Blutglasbarriere", + "effect.antarchy.bloodglass_ward.description": "Verleiht Herzen, die zersplittern und einen gesamten Treffer absorbieren. Sie regenerieren sich mit der Zeit.", "death.attack.triffid_mauling": "%1$s wurde von einer Pflanze zu Tode zerfleischt", "death.attack.triffid_mauling.player": "%1$s wurde von einer Pflanze zu Tode zerfleischt", "death.attack.triffid_swallow": "%1$s wurde von einem Triffid verschlungen", @@ -934,6 +941,10 @@ "subtitles.antarchy.hercules_beetle_cry": "Herkuleskäfer brüllt", "subtitles.antarchy.hercules_beetle_charge_start": "Herkuleskäfer lädt einen Angriff auf", "subtitles.antarchy.hercules_beetle_knocked_down": "Herkuleskäfer wird zu Boden geworfen", + "subtitles.antarchy.jerry_idle": "Jerry schwatzt", + "subtitles.antarchy.jerry_hurt": "Jerry wird verletzt", + "subtitles.antarchy.jerry_death": "Jerry stirbt", + "subtitles.antarchy.jerry_attack": "Jerry greift an", "subtitles.antarchy.jumpy_bug_idle": "Sprungkäfer ist zu hören", "subtitles.antarchy.spit_bug_idle": "Spuckkäfer ist zu hören", "subtitles.antarchy.jumpy_bug_hurt": "Sprungkäfer wird verletzt", 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 07f89612..eb0f7ab8 100644 --- a/common/src/main/resources/assets/antarchy/lang/en_us.json +++ b/common/src/main/resources/assets/antarchy/lang/en_us.json @@ -349,9 +349,13 @@ "tooltip.antarchy.blood_crystal_katana.launch": "Launches you forward on hit.", "tooltip.antarchy.blood_crystal_katana.trail": "Leaves a crimson trail behind you.", "item.antarchy.mantis_claw": "Mantis Claw", + "tooltip.antarchy.mantis_claw.wall_cling": "Dual wield to cling to walls and jump upward.", "item.antarchy.king_scale": "King Scale", "item.antarchy.queen_scale": "Queen Scale", "item.antarchy.jerry_nucleus": "Jerry Nucleus", + "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", "item.antarchy.carapace": "Carapace", "item.antarchy.jumpy_bug_leg": "Jumpy Bug Leg", "item.antarchy.jumpy_boots": "Jumpy Boots", @@ -521,6 +525,7 @@ "message.antarchy.big_bertha.mode.lucid": "Lucid", "message.antarchy.big_bertha.mode.nightmare": "Nightmare", "message.antarchy.big_bertha.mode.kraken": "Kraken", + "message.antarchy.big_bertha.mode.hercules": "Hercules", "message.antarchy.big_bertha.mode.molevore": "Molevore", "message.antarchy.big_bertha.mode.toreterror": "Toreterror", "message.antarchy.ultimate_tool.mode_3x3": "Switched to 3x3 Mining", @@ -530,13 +535,19 @@ "advancements.antarchy.very_hungry_caterpillar.title": "Very Hungry Caterpillar", "advancements.antarchy.very_hungry_caterpillar.description": "Help a caterpillar grow.", "effect.antarchy.dread": "Dread", + "effect.antarchy.dread.description": "Gives visual and audio hallucinations.", "effect.antarchy.paralyzed": "Paralyzed", + "effect.antarchy.paralyzed.description": "Prevents targets from moving.", "effect.antarchy.inverted": "Inverted", + "effect.antarchy.inverted.description": "Inverts the target's gravity.", "effect.antarchy.stinky": "Stinky", + "effect.antarchy.stinky.description": "Repels passive and neutral mobs, attracts arthropods.", "effect.antarchy.gooped": "Gooped", + "effect.antarchy.gooped.description": "Slows movement and attack speed.", "effect.antarchy.shrinking": "Shrinking", "effect.antarchy.growth": "Growth", "effect.antarchy.bloodglass_ward": "Bloodglass Ward", + "effect.antarchy.bloodglass_ward.description": "Gives hearts that shatter, absorbing an entire hit of damage. They regenerate over time.", "death.attack.triffid_mauling": "%1$s was mauled to death by a plant", "death.attack.triffid_mauling.player": "%1$s was mauled to death by a plant", "death.attack.triffid_swallow": "%1$s was swallowed by a triffid", @@ -549,6 +560,7 @@ "tooltip.antarchy.big_bertha.mode.lucid": "Hits invert targets for a few seconds. Hits deal more damage while you are inverted.", "tooltip.antarchy.big_bertha.mode.nightmare": "Players suffer Dread; hits inflict weakness.", "tooltip.antarchy.big_bertha.mode.kraken": "Hits slam targets back and call lightning.", + "tooltip.antarchy.big_bertha.mode.hercules": "Hits deal bonus damage and launch targets high into the air.", "tooltip.antarchy.big_bertha.mode.molevore": "Right-click to spin forward and drill through Molevore blocks.", "tooltip.antarchy.big_bertha.mode.toreterror": "Right-click to launch into the air and crash down with an AOE shockwave.", "tooltip.antarchy.ultimate_tools_3x3": "Shift-right-click to toggle 3x3 Mining.", @@ -957,6 +969,10 @@ "subtitles.antarchy.spit_bug_hurt": "Spit Bug hurts", "subtitles.antarchy.spit_bug_spit": "Spit Bug spits", "subtitles.antarchy.brutalfly_spit": "Brutalfly spits", + "subtitles.antarchy.jerry_idle": "Jerry chatters", + "subtitles.antarchy.jerry_hurt": "Jerry hurts", + "subtitles.antarchy.jerry_death": "Jerry dies", + "subtitles.antarchy.jerry_attack": "Jerry attacks", "advancements.antarchy.bug_apetit.title": "Bug Apétit", "advancements.antarchy.bug_apetit.description": "Eat Cooked Bug Meat.", "advancements.antarchy.behavioral_correction.title": "Behavioral Correction", diff --git a/common/src/main/resources/assets/antarchy/lang/es_es.json b/common/src/main/resources/assets/antarchy/lang/es_es.json index 8d98cae7..8d6efdf1 100644 --- a/common/src/main/resources/assets/antarchy/lang/es_es.json +++ b/common/src/main/resources/assets/antarchy/lang/es_es.json @@ -349,6 +349,7 @@ "tooltip.antarchy.blood_crystal_katana.launch": "Te impulsa hacia delante al golpear.", "tooltip.antarchy.blood_crystal_katana.trail": "Deja un rastro carmesí tras de ti.", "item.antarchy.mantis_claw": "Garra de Mantis", + "tooltip.antarchy.mantis_claw.wall_cling": "Dual wield to cling to walls and jump upward.", "item.antarchy.king_scale": "Escama de Rey", "item.antarchy.queen_scale": "Escama de Reina", "item.antarchy.jumpy_bug_leg": "Pata de Bicho saltarín", @@ -527,12 +528,18 @@ "advancements.antarchy.very_hungry_caterpillar.title": "La oruga muy hambrienta", "advancements.antarchy.very_hungry_caterpillar.description": "Ayuda a crecer a una oruga.", "effect.antarchy.dread": "Pavor", + "effect.antarchy.dread.description": "Provoca alucinaciones visuales y auditivas.", "effect.antarchy.paralyzed": "Paralizado", + "effect.antarchy.paralyzed.description": "Impide que los objetivos se muevan.", "effect.antarchy.inverted": "Invertido", + "effect.antarchy.inverted.description": "Invierte la gravedad del objetivo.", "effect.antarchy.stinky": "Apestoso", + "effect.antarchy.stinky.description": "Ahuyenta a las criaturas pasivas y neutrales, y atrae a los artrópodos.", + "effect.antarchy.gooped.description": "Reduce la velocidad de movimiento y de ataque.", "effect.antarchy.shrinking": "Reducción", "effect.antarchy.growth": "Crecimiento", "effect.antarchy.bloodglass_ward": "Guardia de Cristalsangre", + "effect.antarchy.bloodglass_ward.description": "Otorga corazones que se hacen añicos y absorben un golpe completo de daño. Se regeneran con el tiempo.", "death.attack.triffid_mauling": "Una planta despedazó a %1$s", "death.attack.triffid_mauling.player": "Una planta despedazó a %1$s", "death.attack.triffid_swallow": "Un Triffid se tragó a %1$s", @@ -934,6 +941,10 @@ "subtitles.antarchy.hercules_beetle_cry": "Escarabajo hércules ruge", "subtitles.antarchy.hercules_beetle_charge_start": "Escarabajo hércules carga un ataque", "subtitles.antarchy.hercules_beetle_knocked_down": "Escarabajo hércules cae derribado", + "subtitles.antarchy.jerry_idle": "Jerry parlotea", + "subtitles.antarchy.jerry_hurt": "Jerry sufre daño", + "subtitles.antarchy.jerry_death": "Jerry muere", + "subtitles.antarchy.jerry_attack": "Jerry ataca", "subtitles.antarchy.jumpy_bug_idle": "Bicho saltarín hace ruido", "subtitles.antarchy.spit_bug_idle": "Bicho escupidor hace ruido", "subtitles.antarchy.jumpy_bug_hurt": "Bicho saltarín recibe daño", diff --git a/common/src/main/resources/assets/antarchy/lang/fr_fr.json b/common/src/main/resources/assets/antarchy/lang/fr_fr.json index 3bec1a97..92426d80 100644 --- a/common/src/main/resources/assets/antarchy/lang/fr_fr.json +++ b/common/src/main/resources/assets/antarchy/lang/fr_fr.json @@ -349,6 +349,7 @@ "tooltip.antarchy.blood_crystal_katana.launch": "Vous propulse vers l’avant lorsque vous touchez une cible.", "tooltip.antarchy.blood_crystal_katana.trail": "Laisse une traînée cramoisie derrière vous.", "item.antarchy.mantis_claw": "Griffe de Mante religieuse", + "tooltip.antarchy.mantis_claw.wall_cling": "Dual wield to cling to walls and jump upward.", "item.antarchy.king_scale": "Écaille de Roi", "item.antarchy.queen_scale": "Écaille de Reine", "item.antarchy.jumpy_bug_leg": "Patte de Insecte sauteur", @@ -527,12 +528,18 @@ "advancements.antarchy.very_hungry_caterpillar.title": "La chenille qui fait des trous", "advancements.antarchy.very_hungry_caterpillar.description": "Aidez une chenille à grandir.", "effect.antarchy.dread": "Effroi", + "effect.antarchy.dread.description": "Provoque des hallucinations visuelles et sonores.", "effect.antarchy.paralyzed": "Paralysé", + "effect.antarchy.paralyzed.description": "Empêche les cibles de se déplacer.", "effect.antarchy.inverted": "Inversé", + "effect.antarchy.inverted.description": "Inverse la gravité de la cible.", "effect.antarchy.stinky": "Puant", + "effect.antarchy.stinky.description": "Repousse les créatures passives et neutres, et attire les arthropodes.", + "effect.antarchy.gooped.description": "Ralentit la vitesse de déplacement et d'attaque.", "effect.antarchy.shrinking": "Rétrécissement", "effect.antarchy.growth": "Croissance", "effect.antarchy.bloodglass_ward": "Égide de verre-sang", + "effect.antarchy.bloodglass_ward.description": "Accorde des cœurs qui se brisent et absorbent un coup entier de dégâts. Ils se régénèrent avec le temps.", "death.attack.triffid_mauling": "%1$s a été déchiqueté par une plante", "death.attack.triffid_mauling.player": "%1$s a été déchiqueté par une plante", "death.attack.triffid_swallow": "%1$s a été avalé par un Triffid", @@ -934,6 +941,10 @@ "subtitles.antarchy.hercules_beetle_cry": "Scarabée Hercule rugir", "subtitles.antarchy.hercules_beetle_charge_start": "Scarabée Hercule charge une attaque", "subtitles.antarchy.hercules_beetle_knocked_down": "Scarabée Hercule est renversé", + "subtitles.antarchy.jerry_idle": "Jerry bavarde", + "subtitles.antarchy.jerry_hurt": "Jerry souffre", + "subtitles.antarchy.jerry_death": "Jerry meurt", + "subtitles.antarchy.jerry_attack": "Jerry attaque", "subtitles.antarchy.jumpy_bug_idle": "Insecte sauteur se fait entendre", "subtitles.antarchy.spit_bug_idle": "Insecte cracheur se fait entendre", "subtitles.antarchy.jumpy_bug_hurt": "Insecte sauteur est blessé", diff --git a/common/src/main/resources/assets/antarchy/lang/it_it.json b/common/src/main/resources/assets/antarchy/lang/it_it.json index e8d39feb..00b59863 100644 --- a/common/src/main/resources/assets/antarchy/lang/it_it.json +++ b/common/src/main/resources/assets/antarchy/lang/it_it.json @@ -349,6 +349,7 @@ "tooltip.antarchy.blood_crystal_katana.launch": "Ti scaglia in avanti quando colpisci.", "tooltip.antarchy.blood_crystal_katana.trail": "Lascia una scia cremisi dietro di te.", "item.antarchy.mantis_claw": "Artiglio di Mantide", + "tooltip.antarchy.mantis_claw.wall_cling": "Dual wield to cling to walls and jump upward.", "item.antarchy.king_scale": "Scaglia di Re", "item.antarchy.queen_scale": "Scaglia di Regina", "item.antarchy.jumpy_bug_leg": "Zampa di Insetto saltatore", @@ -527,12 +528,18 @@ "advancements.antarchy.very_hungry_caterpillar.title": "Il bruco molto affamato", "advancements.antarchy.very_hungry_caterpillar.description": "Aiuta un bruco a crescere.", "effect.antarchy.dread": "Terrore", + "effect.antarchy.dread.description": "Provoca allucinazioni visive e sonore.", "effect.antarchy.paralyzed": "Paralizzato", + "effect.antarchy.paralyzed.description": "Impedisce ai bersagli di muoversi.", "effect.antarchy.inverted": "Invertito", + "effect.antarchy.inverted.description": "Inverte la gravità del bersaglio.", "effect.antarchy.stinky": "Puzzolente", + "effect.antarchy.stinky.description": "Respinge le creature passive e neutrali e attira gli artropodi.", + "effect.antarchy.gooped.description": "Riduce la velocità di movimento e di attacco.", "effect.antarchy.shrinking": "Restringimento", "effect.antarchy.growth": "Crescita", "effect.antarchy.bloodglass_ward": "Protezione di vetrosangue", + "effect.antarchy.bloodglass_ward.description": "Conferisce cuori che si frantumano assorbendo un colpo intero di danno. Si rigenerano col tempo.", "death.attack.triffid_mauling": "%1$s è stato sbranato a morte da una pianta", "death.attack.triffid_mauling.player": "%1$s è stato sbranato a morte da una pianta", "death.attack.triffid_swallow": "%1$s è stato inghiottito da un Triffid", @@ -934,6 +941,10 @@ "subtitles.antarchy.hercules_beetle_cry": "Lo scarabeo Ercole ruggisce", "subtitles.antarchy.hercules_beetle_charge_start": "Lo scarabeo Ercole si carica", "subtitles.antarchy.hercules_beetle_knocked_down": "Lo scarabeo Ercole viene abbattuto", + "subtitles.antarchy.jerry_idle": "Jerry chiacchiera", + "subtitles.antarchy.jerry_hurt": "Jerry soffre", + "subtitles.antarchy.jerry_death": "Jerry muore", + "subtitles.antarchy.jerry_attack": "Jerry attacca", "subtitles.antarchy.jumpy_bug_idle": "L’insetto saltatore emette un verso", "subtitles.antarchy.spit_bug_idle": "L’insetto sputatore emette un verso", "subtitles.antarchy.jumpy_bug_hurt": "L’insetto saltatore si ferisce", diff --git a/common/src/main/resources/assets/antarchy/lang/ja_jp.json b/common/src/main/resources/assets/antarchy/lang/ja_jp.json index 64e2d44a..7ac05450 100644 --- a/common/src/main/resources/assets/antarchy/lang/ja_jp.json +++ b/common/src/main/resources/assets/antarchy/lang/ja_jp.json @@ -349,6 +349,7 @@ "tooltip.antarchy.blood_crystal_katana.launch": "攻撃命中時に前方へ突進します。", "tooltip.antarchy.blood_crystal_katana.trail": "背後に深紅の軌跡を残します。", "item.antarchy.mantis_claw": "カマキリの爪", + "tooltip.antarchy.mantis_claw.wall_cling": "Dual wield to cling to walls and jump upward.", "item.antarchy.king_scale": "王の鱗", "item.antarchy.queen_scale": "女王の鱗", "item.antarchy.jumpy_bug_leg": "ジャンピーバグの脚", @@ -527,12 +528,18 @@ "advancements.antarchy.very_hungry_caterpillar.title": "はらぺこあおむし", "advancements.antarchy.very_hungry_caterpillar.description": "イモムシの成長を手伝う。", "effect.antarchy.dread": "恐怖", + "effect.antarchy.dread.description": "視覚と聴覚の幻覚を引き起こします。", "effect.antarchy.paralyzed": "麻痺", + "effect.antarchy.paralyzed.description": "対象が動けなくなります。", "effect.antarchy.inverted": "重力反転", + "effect.antarchy.inverted.description": "対象の重力を反転させます。", "effect.antarchy.stinky": "悪臭", + "effect.antarchy.stinky.description": "友好的および中立のMobを遠ざけ、節足動物を引き寄せます。", + "effect.antarchy.gooped.description": "移動速度と攻撃速度を低下させます。", "effect.antarchy.shrinking": "縮小", "effect.antarchy.growth": "成長", "effect.antarchy.bloodglass_ward": "血晶の守護", + "effect.antarchy.bloodglass_ward.description": "砕けるハートを与え、1回分のダメージを丸ごと吸収します。時間経過で再生します。", "death.attack.triffid_mauling": "%1$sは植物に噛み殺された", "death.attack.triffid_mauling.player": "%1$sは植物に噛み殺された", "death.attack.triffid_swallow": "%1$sはトリフィドに飲み込まれた", @@ -934,6 +941,10 @@ "subtitles.antarchy.hercules_beetle_cry": "ヘラクレスオオカブトが咆哮する", "subtitles.antarchy.hercules_beetle_charge_start": "ヘラクレスオオカブトが攻撃を溜める", "subtitles.antarchy.hercules_beetle_knocked_down": "ヘラクレスオオカブトが転倒する", + "subtitles.antarchy.jerry_idle": "ジェリーが鳴く", + "subtitles.antarchy.jerry_hurt": "ジェリーが傷つく", + "subtitles.antarchy.jerry_death": "ジェリーが死ぬ", + "subtitles.antarchy.jerry_attack": "ジェリーが攻撃する", "subtitles.antarchy.jumpy_bug_idle": "ジャンピーバグが鳴く", "subtitles.antarchy.spit_bug_idle": "スピットバグが鳴く", "subtitles.antarchy.jumpy_bug_hurt": "ジャンピーバグが傷つく", diff --git a/common/src/main/resources/assets/antarchy/lang/ko_kr.json b/common/src/main/resources/assets/antarchy/lang/ko_kr.json index 3b14981c..bb5facc5 100644 --- a/common/src/main/resources/assets/antarchy/lang/ko_kr.json +++ b/common/src/main/resources/assets/antarchy/lang/ko_kr.json @@ -349,6 +349,7 @@ "tooltip.antarchy.blood_crystal_katana.launch": "명중 시 앞으로 돌진합니다.", "tooltip.antarchy.blood_crystal_katana.trail": "뒤에 진홍빛 흔적을 남깁니다.", "item.antarchy.mantis_claw": "사마귀 발톱", + "tooltip.antarchy.mantis_claw.wall_cling": "Dual wield to cling to walls and jump upward.", "item.antarchy.king_scale": "왕 비늘", "item.antarchy.queen_scale": "여왕 비늘", "item.antarchy.jumpy_bug_leg": "점피 벌레 다리", @@ -527,12 +528,18 @@ "advancements.antarchy.very_hungry_caterpillar.title": "배고픈 애벌레", "advancements.antarchy.very_hungry_caterpillar.description": "애벌레가 자라도록 도와주세요.", "effect.antarchy.dread": "공포", + "effect.antarchy.dread.description": "시각 및 청각 환각을 일으킵니다.", "effect.antarchy.paralyzed": "마비", + "effect.antarchy.paralyzed.description": "대상이 움직이지 못하게 합니다.", "effect.antarchy.inverted": "반전", + "effect.antarchy.inverted.description": "대상의 중력을 반전시킵니다.", "effect.antarchy.stinky": "악취", + "effect.antarchy.stinky.description": "수동적 및 중립적 몹을 쫓아내고 절지동물을 끌어들입니다.", + "effect.antarchy.gooped.description": "이동 속도와 공격 속도를 늦춥니다.", "effect.antarchy.shrinking": "축소", "effect.antarchy.growth": "성장", "effect.antarchy.bloodglass_ward": "혈유리 수호", + "effect.antarchy.bloodglass_ward.description": "산산이 부서지는 하트를 부여해 피해 한 번을 통째로 흡수합니다. 시간이 지나면 다시 재생됩니다.", "death.attack.triffid_mauling": "%1$s이(가) 식물에게 물어뜯겨 죽었습니다", "death.attack.triffid_mauling.player": "%1$s이(가) 식물에게 물어뜯겨 죽었습니다", "death.attack.triffid_swallow": "%1$s이(가) 트리피드에게 삼켜졌습니다", @@ -934,6 +941,10 @@ "subtitles.antarchy.hercules_beetle_cry": "헤라클레스장수풍뎅이 포효합니다", "subtitles.antarchy.hercules_beetle_charge_start": "헤라클레스장수풍뎅이 힘을 모읍니다", "subtitles.antarchy.hercules_beetle_knocked_down": "헤라클레스장수풍뎅이 쓰러집니다", + "subtitles.antarchy.jerry_idle": "제리가 재잘거립니다", + "subtitles.antarchy.jerry_hurt": "제리가 다칩니다", + "subtitles.antarchy.jerry_death": "제리가 죽습니다", + "subtitles.antarchy.jerry_attack": "제리가 공격합니다", "subtitles.antarchy.jumpy_bug_idle": "점피 벌레 소리를 냅니다", "subtitles.antarchy.spit_bug_idle": "스핏 벌레 소리를 냅니다", "subtitles.antarchy.jumpy_bug_hurt": "점피 벌레 다칩니다", diff --git a/common/src/main/resources/assets/antarchy/lang/pt_br.json b/common/src/main/resources/assets/antarchy/lang/pt_br.json index 1ab826af..ef307900 100644 --- a/common/src/main/resources/assets/antarchy/lang/pt_br.json +++ b/common/src/main/resources/assets/antarchy/lang/pt_br.json @@ -349,6 +349,7 @@ "tooltip.antarchy.blood_crystal_katana.launch": "Impulsiona você para a frente ao acertar.", "tooltip.antarchy.blood_crystal_katana.trail": "Deixa um rastro carmesim atrás de você.", "item.antarchy.mantis_claw": "Garra de Louva-a-deus", + "tooltip.antarchy.mantis_claw.wall_cling": "Dual wield to cling to walls and jump upward.", "item.antarchy.king_scale": "Escama de Rei", "item.antarchy.queen_scale": "Escama de Rainha", "item.antarchy.jumpy_bug_leg": "Perna de Inseto Saltador", @@ -527,12 +528,18 @@ "advancements.antarchy.very_hungry_caterpillar.title": "A Lagarta Muito Faminta", "advancements.antarchy.very_hungry_caterpillar.description": "Ajude uma lagarta a crescer.", "effect.antarchy.dread": "Pavor", + "effect.antarchy.dread.description": "Provoca alucinações visuais e auditivas.", "effect.antarchy.paralyzed": "Paralisado", + "effect.antarchy.paralyzed.description": "Impede que os alvos se movam.", "effect.antarchy.inverted": "Invertido", + "effect.antarchy.inverted.description": "Inverte a gravidade do alvo.", "effect.antarchy.stinky": "Fedido", + "effect.antarchy.stinky.description": "Afasta mobs passivos e neutros e atrai artrópodes.", + "effect.antarchy.gooped.description": "Reduz a velocidade de movimento e de ataque.", "effect.antarchy.shrinking": "Encolhimento", "effect.antarchy.growth": "Crescimento", "effect.antarchy.bloodglass_ward": "Guarda de Vidro de Sangue", + "effect.antarchy.bloodglass_ward.description": "Concede corações que se estilhaçam, absorvendo um golpe inteiro de dano. Eles se regeneram com o tempo.", "death.attack.triffid_mauling": "%1$s foi dilacerado até a morte por uma planta", "death.attack.triffid_mauling.player": "%1$s foi dilacerado até a morte por uma planta", "death.attack.triffid_swallow": "%1$s foi engolido por um Triffid", @@ -934,6 +941,10 @@ "subtitles.antarchy.hercules_beetle_cry": "Besouro-hércules ruge", "subtitles.antarchy.hercules_beetle_charge_start": "Besouro-hércules carrega um ataque", "subtitles.antarchy.hercules_beetle_knocked_down": "Besouro-hércules é derrubado", + "subtitles.antarchy.jerry_idle": "Jerry tagarela", + "subtitles.antarchy.jerry_hurt": "Jerry se machuca", + "subtitles.antarchy.jerry_death": "Jerry morre", + "subtitles.antarchy.jerry_attack": "Jerry ataca", "subtitles.antarchy.jumpy_bug_idle": "Inseto Saltador faz barulho", "subtitles.antarchy.spit_bug_idle": "Inseto Cuspidor faz barulho", "subtitles.antarchy.jumpy_bug_hurt": "Inseto Saltador se machuca", diff --git a/common/src/main/resources/assets/antarchy/lang/ru_ru.json b/common/src/main/resources/assets/antarchy/lang/ru_ru.json index 6ceee79f..9b32c051 100644 --- a/common/src/main/resources/assets/antarchy/lang/ru_ru.json +++ b/common/src/main/resources/assets/antarchy/lang/ru_ru.json @@ -326,6 +326,7 @@ "tooltip.antarchy.blood_crystal_katana.launch": "Толкает вас вперёд при ударе.", "tooltip.antarchy.blood_crystal_katana.trail": "Оставляет за вами багровый след.", "item.antarchy.mantis_claw": "Клешня богомола", + "tooltip.antarchy.mantis_claw.wall_cling": "Dual wield to cling to walls and jump upward.", "item.antarchy.king_scale": "Чешуйка короля", "item.antarchy.queen_scale": "Чешуйка королевы", "item.antarchy.jumpy_bug_leg": "Ножка прыгучего жука", @@ -498,12 +499,18 @@ "advancements.antarchy.very_hungry_caterpillar.title": "Очень голодная гусеница", "advancements.antarchy.very_hungry_caterpillar.description": "Помогите гусенице вырасти.", "effect.antarchy.dread": "Ужас", + "effect.antarchy.dread.description": "Вызывает зрительные и звуковые галлюцинации.", "effect.antarchy.paralyzed": "Паралич", + "effect.antarchy.paralyzed.description": "Не дает целям двигаться.", "effect.antarchy.inverted": "Инверсия", + "effect.antarchy.inverted.description": "Инвертирует гравитацию цели.", "effect.antarchy.stinky": "Вонючесть", + "effect.antarchy.stinky.description": "Отпугивает мирных и нейтральных мобов, но притягивает членистоногих.", + "effect.antarchy.gooped.description": "Замедляет движение и скорость атаки.", "effect.antarchy.shrinking": "Уменьшение", "effect.antarchy.growth": "Увеличение", "effect.antarchy.bloodglass_ward": "Защита кровавого стекла", + "effect.antarchy.bloodglass_ward.description": "Дает сердца, которые разбиваются и полностью поглощают один удар. Со временем они восстанавливаются.", "death.attack.triffid_mauling": "%1$s был растерзан растением", "death.attack.triffid_mauling.player": "%1$s был растерзан растением", "death.attack.triffid_swallow": "%1$s был проглочен триффидом", @@ -734,6 +741,10 @@ "subtitles.antarchy.toreterror_jump_up": "Тортеррор прыгает", "subtitles.antarchy.toreterror_jump_land": "Тортеррор приземляется", "subtitles.antarchy.stinky_fly": "Вонючие мухи жужжат", + "subtitles.antarchy.jerry_idle": "Джерри стрекочет", + "subtitles.antarchy.jerry_hurt": "Джерри ранен", + "subtitles.antarchy.jerry_death": "Джерри умирает", + "subtitles.antarchy.jerry_attack": "Джерри атакует", "item.minecraft.potion.effect.inversion": "Зелье инверсии", "item.minecraft.potion.effect.long_inversion": "Зелье инверсии", "item.minecraft.splash_potion.effect.inversion": "Взрывное зелье инверсии", diff --git a/common/src/main/resources/assets/antarchy/lang/zh_cn.json b/common/src/main/resources/assets/antarchy/lang/zh_cn.json index ff9ccc93..03490d88 100644 --- a/common/src/main/resources/assets/antarchy/lang/zh_cn.json +++ b/common/src/main/resources/assets/antarchy/lang/zh_cn.json @@ -349,6 +349,7 @@ "tooltip.antarchy.blood_crystal_katana.launch": "命中时将你向前推进。", "tooltip.antarchy.blood_crystal_katana.trail": "在身后留下猩红轨迹。", "item.antarchy.mantis_claw": "螳螂利爪", + "tooltip.antarchy.mantis_claw.wall_cling": "Dual wield to cling to walls and jump upward.", "item.antarchy.king_scale": "国王鳞片", "item.antarchy.queen_scale": "女王鳞片", "item.antarchy.jumpy_bug_leg": "跳跳虫腿", @@ -527,12 +528,18 @@ "advancements.antarchy.very_hungry_caterpillar.title": "好饿的毛毛虫", "advancements.antarchy.very_hungry_caterpillar.description": "帮助一只毛毛虫成长。", "effect.antarchy.dread": "恐惧", + "effect.antarchy.dread.description": "会产生视觉和听觉幻觉。", "effect.antarchy.paralyzed": "麻痹", + "effect.antarchy.paralyzed.description": "阻止目标移动。", "effect.antarchy.inverted": "反转", + "effect.antarchy.inverted.description": "反转目标的重力。", "effect.antarchy.stinky": "臭气", + "effect.antarchy.stinky.description": "驱赶被动和中立生物,吸引节肢生物。", + "effect.antarchy.gooped.description": "减缓移动速度和攻击速度。", "effect.antarchy.shrinking": "缩小", "effect.antarchy.growth": "生长", "effect.antarchy.bloodglass_ward": "血晶守护", + "effect.antarchy.bloodglass_ward.description": "给予会破碎的心,能吸收整整一次伤害。它们会随时间恢复。", "death.attack.triffid_mauling": "%1$s被一株植物撕咬致死", "death.attack.triffid_mauling.player": "%1$s被一株植物撕咬致死", "death.attack.triffid_swallow": "%1$s被特里菲德吞下了", @@ -934,6 +941,10 @@ "subtitles.antarchy.hercules_beetle_cry": "赫拉克勒斯甲虫咆哮", "subtitles.antarchy.hercules_beetle_charge_start": "赫拉克勒斯甲虫开始蓄力", "subtitles.antarchy.hercules_beetle_knocked_down": "赫拉克勒斯甲虫被击倒", + "subtitles.antarchy.jerry_idle": "杰瑞喋喋不休", + "subtitles.antarchy.jerry_hurt": "杰瑞受伤", + "subtitles.antarchy.jerry_death": "杰瑞死亡", + "subtitles.antarchy.jerry_attack": "杰瑞攻击", "subtitles.antarchy.jumpy_bug_idle": "跳跳虫发出动静", "subtitles.antarchy.spit_bug_idle": "喷吐虫发出动静", "subtitles.antarchy.jumpy_bug_hurt": "跳跳虫受伤", diff --git a/common/src/main/resources/assets/antarchy/lang/zh_tw.json b/common/src/main/resources/assets/antarchy/lang/zh_tw.json index b30ef25d..a9ca7ebe 100644 --- a/common/src/main/resources/assets/antarchy/lang/zh_tw.json +++ b/common/src/main/resources/assets/antarchy/lang/zh_tw.json @@ -349,6 +349,7 @@ "tooltip.antarchy.blood_crystal_katana.launch": "命中時將你向前推進。", "tooltip.antarchy.blood_crystal_katana.trail": "在身後留下猩紅軌跡。", "item.antarchy.mantis_claw": "螳螂利爪", + "tooltip.antarchy.mantis_claw.wall_cling": "Dual wield to cling to walls and jump upward.", "item.antarchy.king_scale": "國王鱗片", "item.antarchy.queen_scale": "女王鱗片", "item.antarchy.jumpy_bug_leg": "跳跳蟲腿", @@ -527,12 +528,18 @@ "advancements.antarchy.very_hungry_caterpillar.title": "好餓的毛毛蟲", "advancements.antarchy.very_hungry_caterpillar.description": "幫助一隻毛毛蟲成長。", "effect.antarchy.dread": "恐懼", + "effect.antarchy.dread.description": "會產生視覺與聽覺幻覺。", "effect.antarchy.paralyzed": "麻痺", + "effect.antarchy.paralyzed.description": "阻止目標移動。", "effect.antarchy.inverted": "反轉", + "effect.antarchy.inverted.description": "反轉目標的重力。", "effect.antarchy.stinky": "臭氣", + "effect.antarchy.stinky.description": "驅趕被動與中立生物,吸引節肢生物。", + "effect.antarchy.gooped.description": "降低移動速度與攻擊速度。", "effect.antarchy.shrinking": "縮小", "effect.antarchy.growth": "生長", "effect.antarchy.bloodglass_ward": "血晶守護", + "effect.antarchy.bloodglass_ward.description": "給予會破碎的心,能吸收完整一次傷害。它們會隨時間恢復。", "death.attack.triffid_mauling": "%1$s被一株植物撕咬致死", "death.attack.triffid_mauling.player": "%1$s被一株植物撕咬致死", "death.attack.triffid_swallow": "%1$s被特里菲德吞下了", @@ -934,6 +941,10 @@ "subtitles.antarchy.hercules_beetle_cry": "赫拉克勒斯甲蟲咆哮", "subtitles.antarchy.hercules_beetle_charge_start": "赫拉克勒斯甲蟲開始蓄力", "subtitles.antarchy.hercules_beetle_knocked_down": "赫拉克勒斯甲蟲被擊倒", + "subtitles.antarchy.jerry_idle": "傑瑞喋喋不休", + "subtitles.antarchy.jerry_hurt": "傑瑞受傷", + "subtitles.antarchy.jerry_death": "傑瑞死亡", + "subtitles.antarchy.jerry_attack": "傑瑞攻擊", "subtitles.antarchy.jumpy_bug_idle": "跳跳蟲發出動靜", "subtitles.antarchy.spit_bug_idle": "噴吐蟲發出動靜", "subtitles.antarchy.jumpy_bug_hurt": "跳跳蟲受傷", diff --git a/common/src/main/resources/assets/antarchy/sounds.json b/common/src/main/resources/assets/antarchy/sounds.json index 3636e670..9c31a672 100644 --- a/common/src/main/resources/assets/antarchy/sounds.json +++ b/common/src/main/resources/assets/antarchy/sounds.json @@ -539,16 +539,20 @@ "subtitle": "subtitles.antarchy.water_cannon_fire", "sounds": [ { - "name": "antarchy:mob/toreterror/water_cannon1" + "name": "antarchy:mob/toreterror/water_cannon1", + "attenuation_distance": 28 }, { - "name": "antarchy:mob/toreterror/water_cannon2" + "name": "antarchy:mob/toreterror/water_cannon2", + "attenuation_distance": 28 }, { - "name": "antarchy:mob/toreterror/water_cannon3" + "name": "antarchy:mob/toreterror/water_cannon3", + "attenuation_distance": 28 }, { - "name": "antarchy:mob/toreterror/water_cannon4" + "name": "antarchy:mob/toreterror/water_cannon4", + "attenuation_distance": 28 } ] }, @@ -2131,5 +2135,96 @@ "name": "antarchy:mob/brutalfly/spit4" } ] + }, + "jerry_young_idle": { + "subtitle": "subtitles.antarchy.jerry_idle", + "sounds": [ + { + "name": "antarchy:mob/jerry/young_idle1" + }, + { + "name": "antarchy:mob/jerry/young_idle2" + }, + { + "name": "antarchy:mob/jerry/young_idle3" + } + ] + }, + "jerry_young_hurt": { + "subtitle": "subtitles.antarchy.jerry_hurt", + "sounds": [ + { + "name": "antarchy:mob/jerry/young_hurt1" + } + ] + }, + "jerry_young_death": { + "subtitle": "subtitles.antarchy.jerry_death", + "sounds": [ + { + "name": "antarchy:mob/jerry/young_death1" + } + ] + }, + "jerry_young_attack": { + "subtitle": "subtitles.antarchy.jerry_attack", + "sounds": [ + { + "name": "antarchy:mob/jerry/young_attack1" + }, + { + "name": "antarchy:mob/jerry/young_attack2" + } + ] + }, + "jerry_adult_idle": { + "subtitle": "subtitles.antarchy.jerry_idle", + "sounds": [ + { + "name": "antarchy:mob/jerry/adult_idle1" + }, + { + "name": "antarchy:mob/jerry/adult_idle2" + }, + { + "name": "antarchy:mob/jerry/adult_idle3" + }, + { + "name": "antarchy:mob/jerry/adult_idle4" + } + ] + }, + "jerry_adult_hurt": { + "subtitle": "subtitles.antarchy.jerry_hurt", + "sounds": [ + { + "name": "antarchy:mob/jerry/adult_hurt1" + } + ] + }, + "jerry_adult_death": { + "subtitle": "subtitles.antarchy.jerry_death", + "sounds": [ + { + "name": "antarchy:mob/jerry/adult_death1" + }, + { + "name": "antarchy:mob/jerry/adult_death2" + } + ] + }, + "jerry_adult_attack": { + "subtitle": "subtitles.antarchy.jerry_attack", + "sounds": [ + { + "name": "antarchy:mob/jerry/adult_attack1" + }, + { + "name": "antarchy:mob/jerry/adult_attack2" + }, + { + "name": "antarchy:mob/jerry/adult_attack3" + } + ] } } diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/jerry/adult_attack1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/jerry/adult_attack1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..4d0890196351d4e6fca6fb68a73f0cc625d332b6 GIT binary patch literal 32111 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 Z!l|gC$lhrj%!r1qj|{*CEBS&p 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/jerry/adult_death1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/jerry/adult_death1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5a6a336ba8a7da1ffbdbe4974d5577ac7b22427f GIT binary patch literal 23282 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⪻U`H>nJ^ug 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/jerry/adult_hurt1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/jerry/adult_hurt1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a14a5bccb62cb4588885bd9d463a020ff036c1fd GIT binary patch literal 12766 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/jerry/adult_idle1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/jerry/adult_idle1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..50b72063aa902fab08b21dcf45c861b8f74aaf31 GIT binary patch literal 26479 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 UF+3t~;s+;Aa7hh)GO+&z0Pd7Z#Q*>R literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/jerry/adult_idle2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/jerry/adult_idle2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..0edab0b52297fd124d9c5c57e9f0ffe9bf73c3ba GIT binary patch literal 17263 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/jerry/adult_idle4.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/jerry/adult_idle4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5a8a53c7a06d12a6b9579e69d1c7bf50b939dc0d GIT binary patch literal 18498 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 HNq_|aX1e8( literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/jerry/young_attack1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/jerry/young_attack1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3aef7b21edbf8768d5d5c37a4416e7d4f86914a6 GIT binary patch literal 8932 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/jerry/young_attack2.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/jerry/young_attack2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..edff5df5f84f9263fdeeb5a1a4543ff0e9c53c68 GIT binary patch literal 7792 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%0DPCfS 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/jerry/young_hurt1.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/jerry/young_hurt1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..63e72099c68afec870a68c05cd3d11d96bd50542 GIT binary patch literal 13278 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/sounds/mob/jerry/young_idle3.ogg b/common/src/main/resources/assets/antarchy/sounds/mob/jerry/young_idle3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8d230a684d997b8daf4078013346ba523e77063e GIT binary patch literal 10155 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/block/unstable_ant_nest/unstable_ant_nest_side.png b/common/src/main/resources/assets/antarchy/textures/block/unstable_ant_nest/unstable_ant_nest_side.png new file mode 100644 index 0000000000000000000000000000000000000000..2307b61338e8b80730dce696fcc8e36413d8d603 GIT binary patch literal 1128 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 P00000NkvXXu0mjfqfvvH literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/block/unstable_ant_nest/unstable_ant_nest_top.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/block/unstable_ant_nest/unstable_ant_nest_top.png.mcmeta new file mode 100644 index 00000000..1fd02729 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/block/unstable_ant_nest/unstable_ant_nest_top.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 9 + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/entity/frog/frog_elythia.png b/common/src/main/resources/assets/antarchy/textures/entity/frog/frog_elythia.png index e5c4f3940740ce0e41b5d88ce29416584f61e63d..25f9f839655922f754f51a1dfed2a4a91a2b92d4 100644 GIT binary patch delta 1690 zcmV;L24(r)45|%~B!6E?L_t(|0nC|AXk1kk$IpB5JMAZQ&x;^!}d8hGc8s; zI&6L=k@FH$YK_zgcy)g{sWV z{VCJ4Cj}m~8-Hw}`n&uwx6lA`yO>Vw>Cjv6B*X82kWBtCnY_K{R(bKpopR-Y(}Hg2 zp-+;#zxq-E584gJinIC#WMU4z`(*9lYme5T!1%G3_Nvb0EH%4Pvy&4vodFaaU;tkh z{s~wPbW940&YlbtM2F4mk!hiH9f1c5^K>?f-D83X3u$vwp zo5}F_0Gm8~YKN3Vn?1znIJh1JwZidlXB>9|{EMk(mh87l3T=b_!<_X7kki(4`zw z4ri@8FQ@LhKsdys6UPLg(?cE(Gd>(+wa84&?b^ z2Pub?!+*)4z2fx~^1{G?jNN>Lg5q&HcHiYfU%%wp5#a!ig@cFQfQ+71qX1U!+VL~m z3}^^L6PF6P2glDT9hkUS%zo8JXT|KhA9y+0``8=F=u-z1EUhc)EG}$d4Mjt z=r3UfG5ej27le+FSDUtR|Dp?O=FKm(*!j6(sofk zY^%k&GZOpg@h6TVHIK{5mes<8F3ZOjkAKqy*h(I3tKkD5Cd1!ft=nP8d%p=_JFqp- z^Ed&IdUWa0Lp3hEU;a5O;$d5sap1XTJo4jFdFIq{8Q#`YGtf9FupQEN4raG^11pNo zWPkW}=-s|uKs&!O_Cgb2&yt)&&5A*hO%H#*P-p_aI4j=k@_1IhZ*Wime4cL^TcHW) zVGLJnD1$&*eJJwzM4<_=>g@TnzfW5p6d8TH;#v8{@C5LKhpr|HO~3|Bdo~#xMboLN zDE}Des0qX*Hs56b{=~!dt3@LwAd+-%6o0mltn$yByKa{(iVl(TDG9iFLIJ!-UNY|o zPdxCv$-JBlW+(T)!=FkP=!-y~03C%xNdP?E1@OvmV0u=#Zkx|ykQ+9=(}ep>xOxze z5BZG8x31d&34isdQ`4)mja%pvZuD@_zv1 zO^=-AOV-^8(^RF2KcLO5x3CLe2;DKd@SA;_A@zrqY17V^e2R7n}w-}>z zv{o>mJepb$r$^&xSB120mk|QRrm2cAo=s@iKR?h2DuU&|P1+oS5xak(qtZlu>^)3{y z5xyWj%%Ssm>h17Mj7hIJIUH61zQho_g1MARyO0(dCc*YmJ`_(jI)9U=@PGp7A}7B1 zTG-R*iU40?h$Tmnn07weg*Z?o2k_Q?JoSlagLDzvAS>!^c|5+v5KE3c-=emrLtHe7 zw#q8fcIhZZL1< z$%4p9WR03+gKW~UMh#MeMrAayNd*!Z5jv1CjcB4+SYaxPm7u03N%rcubIHEP_wGIC zzLy{HcYUwD_C9;9bFNmY_;dc1^&>}KcrK$*U)OBc22?s@+JDpp__o;m*ou+uPp!$Q z^KElA_3zri#o6<6+=-K?Gj03VoGC-;mxnH9-2U`%reylIxtjV{PRzA&eQr2>Fh%in zY~@LkdnH!vt+x%OJBRN|Q>NaUDVe@k+<0u&{GqAoz^T*efvwv!p5L`Q{jh3M)*U)? zD*bfokF?{+v44bzev6&^{Zu-0`rKuZ`^AjMUJbwderM%JpLF&f*xUJf^~&_#(k1Dh z&(0^hb)WC(ys>9@1|Iq?=ER+TfGlRm$1jd--Tdqb3c+vLxH{`XuG6pw4ZEDs)dLh7 z81RFld;*b!&ZbbhcrrFf$5!ge^mI`AmHMs?jJJs`Vt?T}LVx_o(cBvf&?hKg1p<5M z@oXXE`9N$QUqzE@+IkbyY1|Tm#=?*Lk6pg|d=v=uWE(-t0?2{Vu5g!@uF|BM zQzL)1z{xGzRpnt|AUwQpdXoE& zFK@{7(eI|Eus^u_#uWAyPrlPxz3zj~+VxvI!ISY2dVH*11yfQd4|KoXbS^mwr=u`B zvVvnGkm=d^k;T!;19YTCLf#we!T$dHFg_-gYK|>)>k8dz|1=uf6o>QE}oIp8qSAh%0Ly zyw8k{`@c<}9{WBm93C187#s@hhpL}L*yG*c z&fWBYhPX6zIp8!8RI+19!fmrbD^y$I2qSd~At^C_Kx7t9P#Npf7u%S~T^b#; z0KD!4WD9~q$zemuAYL8_KJ?@|KWO0*m!Cig=xC4Ij~+IQ2goH{jkp&4$x!lF(U$iX-jcdD3>3_urqESnyHvD+w+pNX6ihFzZ?M)-@KV=}M zg)dNk?lc-8136;QXBI9@i1Rm zVuqX19OF~rk>NRst%RR|Q0huPijWJ)VHXG1m`HRru_|xuqa#{W#nEJ#DdlM>FPPv-+_wvb8NRw%}($UkP1Aq3g{d)F7 zW;Lrqve4o$F=B;8F8rX#Q%JBP6{~Q-(?K~sRt(Qd`%a$7|LNg_O>7&8F_Gkut4-`^ zzIh78q;Pdgr_h(v!(>@7ZAN-+*^=aXmHth5F=FMAt4T~RpROi0f!zIG0c;j_l13%D z4aA6*qfOjczFiwIfn1-loPV!JeV#%Z3+e@W+@=Luw_PuCoy!=@V2ZrHb9Zv5>6(DA7_o9RiRtH)r;vt{9PlxH zN?Il|22BxT(216|UOZnhV&&-N+tk+8#7%>YRi|j|nkY@<_=*uLM@G}QUVZ~@K*E={ z@9ZcD-v(mDwu$NGJMad2CB2%qe*gdg|NpNHHU#(w0sxShy`rMF zytS*P4Xdt-0_&qE;^NPE0N_zV%BL>%K5eS-E(WFkFZ%df8*bb>+D>ylF>1z9tOgZ| ziB)QfDV7v2)xkGpaV|_ID}h+tDn0Ti1OeFnWg&{8#1Ep^&$8FW8OK2dmh;(RI$>yo zigz;!)u_=$nm1`!aLu%$cNJa$8Mixx z=Cd}QwgFexkX0m^lWHx@2P~WuenOo5HF)KEJnNPo_YSZOO8oC<&b;^dbr4Dt)wbS} zN^6zYHwJz2!wgrh-0;uo+h`#?koydzoAIaMvY<)^U6gR9w;-@^*ZcI{8+6bzcxCVu1VS0~G`}Yw?5aCU_MNac4IB<@Yet zyg4j9uB&Vh?G(~u!Z2P&UhG+In^^>_m|w2*>tKo?KKqQj)u<8sLxBIEaCFgu@SDx7 zajxfmz1X8uK1&bqD=4dEcrTsPJxcz`nn7e7|LqF4yzq?#;Mw9676H)3k4;kHAfTFo zjqz@z>qT@-la+~{r}So)a+zy+{)*66N!5zvd-fg z#^||s!30pJv&<)Jy@;yH_Cq;dt+vqsu)968bv0~+Fy_!nWnH{%|}Buh;tM#j6!eHLWT5vb_-n@Z1V zBqVR#Lh8+D(X&Q|d9yvXiiJe;5$Q00BGM%zT(>Qi7JlM0AT(a4CZ~5K+-zOlpVD0x zNi^oB!D~(*@$E4BU+9k-dm$nSF%&=7KpBP!yA zJPi7r3%GXj-1=C=XRjj!6s1f#CdnaW5Y8W6a`O}9q*JE`$m0ifYc%H<1q|f9T3i^a z#@#~)6n|%XpNh|6?`h7n2+$D)gbVUQV*T!Kf9DX2x@?FwoysNIPwRH*1B&#!16 z{oNyrnzuuUKj+h?cP%-3qWfZiG!`<3qv7 zYN0iduLku#3Bsj5F+BEslhTl0m->dC*ApWjcr>jPU2uU#*OI10%k%;CqeF%#M-?&4 zDSl7$zQE4g-)-NgBJ5da&%BB1FOY%i`1(=ufh%Oeq+Ma!HTN(w=_j;(DH>*BQD~ z$=~aC@U$C_57T9{^&+SE3fZmbD$M+>>eaCMa(HMO`c-JVuS5!mBN|;$!p#-OJWD7a zwN1DNUlk#(-XQsQ%PQ>%J!kZq%{!?lQY0}|HRcK*DXd0V&GE9Fw0BO@CW2)nQH0+1 zeBXGP!rjn&VisyKm7Xsq0!h}mXuc6mi&0x(c#m12CS99Zp#%MNjRi4~bW*C+M@p)t zLEDpPx7M#?Che%08WyX5=+IZ9i@||!mjz^Luz(ihw*|0kn9fQn)KPcs)qyK{2GU98Zj8x?OuIViBna*c{VwryjUol8rt#|FDwn*kIi1Eg%F8RX^@2)nk5+O7I+7ZK2-5Yves8`!aj} z?1C|KVcI%H00xb~nMmvXpiK`vfDKLK{NZ@CU<3m0ypP5kESz0(RMagJ?d&b`>p(g7;^=*zS&Q0}x$Q3jG^Q#ie!u9DgP9;e%{S7=;@+LAuxQJ% zV&wNIsn&02`h?s@o8ZgX7gwca4@~>a0xs^}tQ>;bW>JbJevCQgK@rCIUYQQ*_(_2! z4@vUFA^N?wI)*H2S_1=EX+ukA?dt;?Ji{g@f6kfk{jj3efsJ3xTZ96M4*=z=6O-5e z49f{^o>hh8l>6ut5gqEm9IK=zkwv}#Fp-D!h$gZaQ3U}8yo7?~>@mX*%1elkv<(9s zJ;DQ{w+E8(x_S}XnGE)$)RxWX^b8KW3O55-iWLQoLKvvsqf-_#vDST2p|)8p%xfgT z)zl1LLc&w?FRV#kMf<;Y)Ie%aK1nzLa&@QCI|_jaA+DW8^2-si_rcO1KV=v-H|Sh0 zC(?exECIRkV@8$IiEyM75ymV+aU|r65w1><4)c`fqh33wvw=?o&!~H?_4xn2BzIif z{9^0R_phQDEuI*K8ZtI-y}ZUat1?>C*C|_N-2DUSG>v=PsC#Jz{|wCG*21FNNm`BZ zdV)4U=0<#Q!H|Z$h-qkfV&tUw!It*pVGQb5*@&S--xroTvVpOT+p3`C?T`T&NSOJD1_J?e%Nm1D*C(_?c5qz7cf#;v&P4%$s z8C8cGx*0WJQofnp`_YOG9p8W_Moi@`=9IOY0|EQM&1@HpF&LEv?NRECWdl3Xo$QH=KL`j;i@o@bY@)Xi`z9P8G!%6y+K3Gh zHtNIs-&2wRSf6iOz$ocPTs|Rs*lmFUjbnGDBy+J zWlseF?>C;e-=9w6HCng)HTY^@@UgH?(31{^T>6~o093X?-BHa3lbgeSjEziLjCVJ| z`XoS|ocsl27Od0!yCf!hyv-u`lkw;$-Wz$~P`TMV1U(9aixJI|^1I zK~#GBy<#H3;2@25=k%ipD-YV!3+QU9+GpkSsK7n4{pLv1AO>)e-R0bwRGk~4JKtBb zN=~+YQHZox52Q(6!bxocdOMtS<#`%7WM~>1x)L#;+-SQ!wvS;YCJ+UH^Jiq?tuS0? z2(O|}Ubacl-A2DG|ByF{8d3LiK5G5UgA&)fZ@7O#5ChzGL)@`aj^^&;KhD`ypOnoeBcced7Tv5}+Kwu1+4z|#^WnA)Bz9gLG z-~F)ffe9~Ku9Nc&y9nN|>e3KMWhsK@br-={4p#XR=O!R*A z&!h56sHQvldg7`*t%+4mUk3qCC7yQxn^!;psPhYGn~LU3DI$@9NKOWYNwUw+@?Ww= z(gsuJCVaSxp{mc7id<`acV$|={4R_e-;0gaAr@{gblJ2efS`4ZT&c)Yt^C&j*N^G2O$foUP%ePuLs zai^(g@bJnW{p?o0UyvmvSG1(grHiQzi=yX|IKe=4Z)&A0>W~pOK{$+@i!`sfqzX(#>RhNL%xw2TiJwfs}@(mia zgni`ZO@Ne%imm}YVK-yLfFfdqO)#G@^LXNeK>K{bKrvW&`rAhU_ZbX}Wa*aelDJYX ze=tUo$K}vro{JKu@EuU7HV$qP5+DB-K9Zp-!?%3O)fUK5p1}&Pi$A=C)YLj22(sT z)8In4f}oS5Gv_2+0lcmc!7`HY)tWb3J1R0i+znP_W#pMG*EYX9MqP;|`Z`V4&~hq7 zndWltKjcjf*p~|WJX)JYUfMaF9L?2dy)xQfrj0WXL7CsE)3ObOj(IxJ#lO6;C z%cM>}C-#F@3Wt&`n>_z}QvTeOi@sE*oYzR&l75(;NN3J@_xxjCYKXO9dC15NZ4yNk z>?S{F@-Bj?Py(1qPGpRfQQppiAu>)d;#r+il%%oPC4~0RPMlMl{8ho*#Ik4+@6Czf z%M(xH{_KSDa%}lIZ--{miH+8hWK4z_c&Yg1!TzL+9JnLlE&m!htQ3t#eX?2?I1aI@ zrR*}B8I{b4XNc7OhABX4-AUxgonQRgB@YYoZwudWI@k)#i#%^LsTKI7f=8mWOCsi6_Q2%vZZc9*kSdUG>svmr8}U0!jCwP7 z>(Wp%*8GxuFnM}}$=zdlP5Lo$`#ayi1rK#GBQZk|Ls&&cI+Q9AR2%WV-VUeC#(f=x zP{!8Pvhd_`g_y>cx~*S8XHz54wFKF0!yEMVjgk`#UxsUIbrrnKS9K~|z*Q?DNzf3n zgUSGIjb3Uk{SR7$0(AjNM6)hMM$OyPw>o9e2ws^v`4LTf<(>Yw(pf<@4_bmV!#23h z(wJj>=JJQFXMbWm{V*Eqi{1R6_H~TI^|v!iNgb}UolPlB-L=LV0ay{|r~(lq#OH22 z1vH@h161O{`x#T=)Q1ZO|9uwJVBCAD4P+%%+*-Jk-s}qu*Jwyt38D%y5&ipC^otA& zH)Xa>#51e1lRIWj5okxKGUv!mRjSn6U*hc_E#wMvw@7Gg-e$X#(FdmoQ~ zw-W9wFh1xt=h%@K4E>i+k8hG1b_*CXU_zMUW>RmyGU2}lF{anS%VTGq!T>VJ^JPBz zg?e2qrLqR;jY?WqXNd5!_0yMRrL)Tm;~vrTk00N)uNRam)N{>hzBc`;u!pGxOpeXA zZK_2B9@}6#r3>ex3`gQ*Ofv<=icqKEo&C;Zl#!7)H9~Rp4-0{XgBc-*}=vt+emryWCs01iKFBWGcT7 zPvy_MsG98NVW);JXDc{imz_{(?F_zYbh)IEx$e~^iwx-LT)O%Vmqyh%`>Ce=LziLU3!x-}D(a`S-GFwrVK5F^l63 zMR%$;mqtX2C~($uzRT*g=PJe~r)dC&eYY8T`?31V$%>?348{&AP)BtZQ9lp11o2q? zrWA;Jw_3v%#;j8sgI_1*+<*-5J3p8co|A~(pLTp*lci(2MeW5Nu|4Gp!Ctz~J~ZJU zM{HFtlVJKc9rTW?37FMV2l*&i2*)ym`DowPKDXY*dfk|}4Rl}>0I(*c`1Z}XsVsAG z%hl7Q*U1GIrz_%Y%Tsowcw=c9iD3b~-@}|CNliQVLDfXAKJ-Ud{8mQ%)nu?EegFLV zF|l3UyG-KQiett+$y8;t5lI}LN-b}auSdZoX@qC`G8qfQWT>QdeBWSC2Atc(4Nc?J z^f3GXNSwbFV_z;ogXyLy8H*uHrv0Y(HKG?b(j$PX!1?_}b)#gsfY?#7*&o@s`<$o5 T7k3$$zx05bk|wlT!Q#XJyca*A literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/gui/boss_bars/brutalfly.png b/common/src/main/resources/assets/antarchy/textures/gui/boss_bars/brutalfly.png new file mode 100644 index 0000000000000000000000000000000000000000..df38548a2cfaadf8b2bf630c2f4317b4796c449f GIT binary patch literal 3929 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 Xe`Wi|w4@v;00000NkvXXu0mjfC|x>z literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/gui/boss_bars/healthbars/brutalfly_background.png b/common/src/main/resources/assets/antarchy/textures/gui/boss_bars/healthbars/brutalfly_background.png new file mode 100644 index 0000000000000000000000000000000000000000..0c623a8768d7690469fe59d82069b3b87071439d GIT binary patch literal 457 zcmV;)0XF`LP)VLLewHIXO5f001bFm5;wl!%!55zZ*rxp;idu;BY5VP;Aw~j7eLHAXuwIlC4QY zm0}WZu7COvj&2=X+19L@owV%MF9QHJwat9H|o zuIJ0y7iO3OfKHgDcB^#&5GQfO7~k&*fY(jC?li{xe=;AYN&_QcyBlR8hziiZ(y0b9 z1k9kHY7h^AsZQE85KlmX7>qv00000NkvXXu0mjf`8Bm# literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/gui/boss_bars/healthbars/brutalfly_progress.png b/common/src/main/resources/assets/antarchy/textures/gui/boss_bars/healthbars/brutalfly_progress.png new file mode 100644 index 0000000000000000000000000000000000000000..2139e76fce7e7179fa9a1879b8104dbc739f0418 GIT binary patch literal 712 zcmV;(0yq7MP)VLLewHIXO5f001bFm5;wl!%!55zZ*rxp;idu;BY5VP;Aw~j7eLHAXuwIlC4QY zm0}WZu7COvj&2=X+19L@owV%MF9QHJwat9H|o zuIJ0y7iO3OfKHgDcB^#&5GQfO7~k&*fY(jC?li{xe=;AYN&_QcyBlR8hziiZ(y0b9 z1k9kHY7h^AsZQE85KlmDVJ~8l+=y?p@EzjMVp^9RQ%(ccWTh z-J5#{*4m$}o zW*NOXjc0D@o%=L0x}Xm>_duSd#KhIUd%3wwUn1EH8``=L%k&%w)>-PAsSsf^=XB59 zK;COPQwxXd1)+^~HnF`0xaV!El$^ zj5q~#ag1$F*#ePdWGXCfiwRLD%Qj=!PqIG~2b;t!k%XUZaZIPM?YmMMS=`KQu6N(v z_k7R$zR&y9?yf9LOMN^QL69`3!(I)aXW)Nn$})H#A6Ro0L6Qj0W^)&_f)Ak8WhH1X zX*L&ZM3CH$*E+1_9~Wiq?>>0^T2F>OJ6qS@>g!$UuQ=I;dQaL$`v0)K`t|yq1G}wz zd!I_qj96dj>>ca5wS0Ejftut&`=v4W?Yx_#hmYKx{&7j~`If3NNqwbnB3{W%HxWdq%!JpLKXU-jSO1&`8V6&FFB^^&J~hKS8`o z;Zf`EBiCo1Yzx$BKcCxmw(Cw`^bNGYM zh-t00amkHS-6wjwj+J#}ezyMgaK^2omJ5eoJm; zml0$IT(3w^LXN$eg&+@4a~`kabyZM|5Z2PFu-a%?glGiWWQ~e6Qx6o>2Lc>#!G1n_ z0Yf>~g4G&bgiEx6Am?b7KuvR{hiR^7%q(WzjBbijkRS{c8jXfSyi7$cSd5o~YxOgZ zp)rV3Z^7m>>2P-BV#StfxK8>CRoILqK51j2w< zWQZjbSTQIlf*ch7g*vgl$N<#VI_Gjjuu+8mj_| zX4LAoV2qkpz+&;w+yg5xPa6pWNctb?o`=bTUy0BXC=Nii?psbcbRJjxa6S(FpCQKf z?&{eEI2;7(GBJYSOJaxt9!@R^jwt$ESsNU0HmAMV<7l6{d^!z5Q|w#olBblv2J_aI zJW?2RTzWoz=dTBABAH!3EX}=ks{cgqW5(grlSxCX_P+E=-k*-&Q;OCdcpLX;r+ry^ S{FhmETsliD?E@ust$zc~tX6RV literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/gui/boss_bars/healthbars/green_progress.png b/common/src/main/resources/assets/antarchy/textures/gui/boss_bars/healthbars/green_progress.png new file mode 100644 index 0000000000000000000000000000000000000000..2f6aff8944ca5ca78fbfe3db8ab1b03aaeb612a4 GIT binary patch literal 2382 zcmb_d2~ZPP7!J~cz=&1`p_bNd5U+8wyE)l~7$iYRF%XVX#G`I@H(@2ohU`KDR@yRF zLGfTztXHMdj^o*BD>~GAQ~{65j90A|s?=7o1L9brD(cu5j*N7$I!-gm=Iwjme|`V= z-YYYvBn}H49VilshUt@Z>EM4q_`N>V4?J(}9d%74@t;@GvuL{*gL`cg@Ox3~W>AOmytXfZNA0tXwbhuZ%Nqceby%B+nNI3 zd%L&ptlG3Ou_Elpv6Z&a2XVzm%0Kzum}+hO=Jug3?3#Myli{_CwwUjQCL;+mTDt!D zX=@;5={$T3%UZI=|I>(3S32Nk?&#yW6??Lczm#nM0Xf=``b0`ALI8yUj-*+Kn)HplfxzzIhl;2luW89m%?eWW(pMRCV&GQBao2WX0`K#TP^PKOMtOw8WBT1 z5FuAB?(Jlj!3b$NCj;RU45m<22B~lfuEbF?S~VGxqEZEd$`DiuV>p3H39#Px5rc3} z+DxSDru78_Z)$OlAUFsFak*R)mrTMrEeMbaj-XORDun?8<_qlt>4xomWWNU;!&6Sy zA+Ves@^~aoT)v_Y~B#OkWc{1=p$rMG@n`MV32f%=klEt zlTZNCjPz9FAhb?~6gX!l$65P3W$aHGlBy&qG+`!dr#Tlt@fia~M+%Hu47#R-Q91Z# zVoCy&6Q~MCWdw@$LJb_vnhOU)F#yF0nS#IuLV;#zQXpRlrYXYAIc+2;n6;4>265Oe zV#rG)q2;Wc69fj?$$GLd7zn+c7f3tB=yhr_s9D0YG=VcF6^5ZwSV=2s*hI;dFmA%7 zuryj}BBi)eiK0xuy^f>uJ)P~hr-402lT0**nc-*^c+he=1LM)C0#=$Bvw|j7Xf#Rp z+ow8Nu(e3*EBoav0$BKib_3<2ke7BAv`s3t;PoazdV$JWm$x47n9a@WifpIVdjRW>M&oEd!z4}1Gn9pzhWDGo;FX8k;KfM zV@S zd3E*ZwvIHFZAIw*u?xNvh4D3GmVe$@U;37_@-lcTi1Bw3q$>}@y=}RZ#+~MRQs!D z^P7>Kd8BbX@|xwuP+Vad9X{tn{Qk;^k;&I@rUYTz3Tpl=-%>TrZ(&2R&-IG-%79Z# QqCB^@J|RW7H-3J}Kl*4&00000 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/gui/boss_bars/healthbars/purple_background.png b/common/src/main/resources/assets/antarchy/textures/gui/boss_bars/healthbars/purple_background.png new file mode 100644 index 0000000000000000000000000000000000000000..9f2be61b72b52da2a7d560d8da93fb6b1e1aeeb4 GIT binary patch literal 2145 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 VkK90^xs*>Qa7V`gRjY*y|39w&X&nFn literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/gui/boss_bars/kraken.png b/common/src/main/resources/assets/antarchy/textures/gui/boss_bars/kraken.png new file mode 100644 index 0000000000000000000000000000000000000000..cbce91592963567fb172389c992c5ad2f2edba99 GIT binary patch literal 4097 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/antarchy/textures/gui/boss_bars/toreterror.png b/common/src/main/resources/assets/antarchy/textures/gui/boss_bars/toreterror.png new file mode 100644 index 0000000000000000000000000000000000000000..905e4f10fd5abcfc0d2a237c4cbd6976ec3e27b5 GIT binary patch literal 4594 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/data/antarchy/loot_table/entities/alpha_mantis.json b/common/src/main/resources/data/antarchy/loot_table/entities/alpha_mantis.json index b8b41c39..851328fc 100644 --- a/common/src/main/resources/data/antarchy/loot_table/entities/alpha_mantis.json +++ b/common/src/main/resources/data/antarchy/loot_table/entities/alpha_mantis.json @@ -9,13 +9,18 @@ "name": "antarchy:mantis_claw" } ], + "conditions": [ + { + "condition": "minecraft:killed_by_player" + } + ], "functions": [ { "function": "minecraft:set_count", "count": { "type": "minecraft:uniform", - "min": 3.0, - "max": 4.0 + "min": 1.0, + "max": 2.0 } }, { @@ -24,7 +29,7 @@ "count": { "type": "minecraft:uniform", "min": 0.0, - "max": 2.0 + "max": 1.0 } } ] diff --git a/common/src/main/resources/data/antarchy/loot_table/entities/mantis.json b/common/src/main/resources/data/antarchy/loot_table/entities/mantis.json index 3e426059..b24b2ee3 100644 --- a/common/src/main/resources/data/antarchy/loot_table/entities/mantis.json +++ b/common/src/main/resources/data/antarchy/loot_table/entities/mantis.json @@ -12,6 +12,10 @@ "conditions": [ { "condition": "minecraft:killed_by_player" + }, + { + "condition": "minecraft:random_chance", + "chance": 0.35 } ], "functions": [ diff --git a/common/src/main/resources/data/antarchy/tags/block/biowart_tendrils_plantable.json b/common/src/main/resources/data/antarchy/tags/block/biowart_tendrils_plantable.json new file mode 100644 index 00000000..3629673d --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/block/biowart_tendrils_plantable.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:biomite_turf" + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/biome/elythia_ocean.json b/common/src/main/resources/data/antarchy/worldgen/biome/elythia_ocean.json index 04189bf4..da6adc89 100644 --- a/common/src/main/resources/data/antarchy/worldgen/biome/elythia_ocean.json +++ b/common/src/main/resources/data/antarchy/worldgen/biome/elythia_ocean.json @@ -54,7 +54,6 @@ [ "minecraft:sea_pickle", "minecraft:warm_ocean_vegetation", - "antarchy:star_coral_patch", "minecraft:kelp_warm", "antarchy:giant_lily_pad_patch_common" ], diff --git a/common/src/main/resources/data/antarchy/worldgen/biome/lucid_pools.json b/common/src/main/resources/data/antarchy/worldgen/biome/lucid_pools.json index ff5ead29..2d2e9e65 100644 --- a/common/src/main/resources/data/antarchy/worldgen/biome/lucid_pools.json +++ b/common/src/main/resources/data/antarchy/worldgen/biome/lucid_pools.json @@ -32,7 +32,7 @@ "spawn_costs": { "antarchy:lucid": { "energy_budget": 0.10, - "charge": 10.0 + "charge": 15.0 } }, "features": [ diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/broodstone_titanium_ore.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/broodstone_titanium_ore.json index cef0c67f..358a6bdf 100644 --- a/common/src/main/resources/data/antarchy/worldgen/placed_feature/broodstone_titanium_ore.json +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/broodstone_titanium_ore.json @@ -3,7 +3,7 @@ "placement": [ { "type": "minecraft:rarity_filter", - "chance": 6 + "chance": 2 }, { "type": "minecraft:in_square" diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/broodstone_uranium_ore.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/broodstone_uranium_ore.json index ac0d13bd..b222410c 100644 --- a/common/src/main/resources/data/antarchy/worldgen/placed_feature/broodstone_uranium_ore.json +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/broodstone_uranium_ore.json @@ -3,7 +3,7 @@ "placement": [ { "type": "minecraft:rarity_filter", - "chance": 5 + "chance": 2 }, { "type": "minecraft:in_square" diff --git a/common/src/main/resources/data/minecraft/tags/block/coral_blocks.json b/common/src/main/resources/data/minecraft/tags/block/coral_blocks.json new file mode 100644 index 00000000..731c04f2 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/coral_blocks.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:star_coral_block" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/coral_plants.json b/common/src/main/resources/data/minecraft/tags/block/coral_plants.json new file mode 100644 index 00000000..964b717d --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/coral_plants.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:star_coral" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/corals.json b/common/src/main/resources/data/minecraft/tags/block/corals.json new file mode 100644 index 00000000..c806e535 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/corals.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:star_coral_fan" + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/wall_corals.json b/common/src/main/resources/data/minecraft/tags/block/wall_corals.json new file mode 100644 index 00000000..a42a8397 --- /dev/null +++ b/common/src/main/resources/data/minecraft/tags/block/wall_corals.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:star_coral_wall_fan" + ] +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabric.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabric.java index 7faeb08a..be974c55 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabric.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabric.java @@ -137,14 +137,6 @@ public final class AntarchyFabric implements ModInitializer { Registries.PLACED_FEATURE, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "seashell_patch_rare") ); - private static final TagKey HAS_STAR_CORAL = TagKey.create( - Registries.BIOME, - ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "has_star_coral") - ); - private static final ResourceKey STAR_CORAL_PATCH = ResourceKey.create( - Registries.PLACED_FEATURE, - ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "star_coral_patch") - ); @Override public void onInitialize() { AntarchyFabricNetworking.register(); @@ -284,11 +276,6 @@ public final class AntarchyFabric implements ModInitializer { GenerationStep.Decoration.VEGETAL_DECORATION, SEASHELL_PATCH_RARE ); - BiomeModifications.addFeature( - BiomeSelectors.tag(HAS_STAR_CORAL), - GenerationStep.Decoration.VEGETAL_DECORATION, - STAR_CORAL_PATCH - ); BiomeModifications.addSpawn( BiomeSelectors.tag(APPLE_COW_SPAWN_BIOMES), net.minecraft.world.entity.MobCategory.CREATURE, diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java index e527a004..1b3f2159 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java @@ -274,7 +274,15 @@ public final class AntarchyFabricContent { AntarchyFabricSounds.BRUTALFLY_SPIT, AntarchyFabricSounds.ROLLY_POLLY_WHEEL_MODE, AntarchyFabricSounds.ROLLY_POLLY_NORMAL_MODE, - AntarchyFabricSounds.ROLLY_POLLY_ROLL + AntarchyFabricSounds.ROLLY_POLLY_ROLL, + AntarchyFabricSounds.JERRY_YOUNG_IDLE, + AntarchyFabricSounds.JERRY_YOUNG_HURT, + AntarchyFabricSounds.JERRY_YOUNG_DEATH, + AntarchyFabricSounds.JERRY_YOUNG_ATTACK, + AntarchyFabricSounds.JERRY_ADULT_IDLE, + AntarchyFabricSounds.JERRY_ADULT_HURT, + AntarchyFabricSounds.JERRY_ADULT_DEATH, + AntarchyFabricSounds.JERRY_ADULT_ATTACK ); AntarchyObjects.setOctopusBomb(AntarchyFabricEntities.OCTOPUS_BOMB); diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java index cb196200..f0def78a 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java @@ -8,7 +8,7 @@ import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.block.DuctTapeBlock; import com.craisinlord.antarchy.content.item.AttitudeAdjusterItem; import com.craisinlord.antarchy.content.item.AttitudeAdjusterSlamManager; -import com.craisinlord.antarchy.content.block.PotentNyxiteBlock; +import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks; import com.craisinlord.antarchy.content.entity.MissileSquidEntity; import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; @@ -26,10 +26,10 @@ import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; import net.fabricmc.fabric.api.event.player.AttackEntityCallback; import net.fabricmc.fabric.api.event.player.PlayerBlockBreakEvents; import net.minecraft.server.level.ServerPlayer; -import com.craisinlord.antarchy.content.SquidzookaDispenseBehavior; -import com.craisinlord.antarchy.content.RpoLauncherDispenseBehavior; -import com.craisinlord.antarchy.content.SizeRayDispenseBehavior; -import com.craisinlord.antarchy.content.WaterCannonDispenseBehavior; +import com.craisinlord.antarchy.content.dispenser.SquidzookaDispenseBehavior; +import com.craisinlord.antarchy.content.dispenser.RpoLauncherDispenseBehavior; +import com.craisinlord.antarchy.content.dispenser.SizeRayDispenseBehavior; +import com.craisinlord.antarchy.content.dispenser.WaterCannonDispenseBehavior; import net.minecraft.world.level.block.ComposterBlock; import net.minecraft.world.level.block.DispenserBlock; import net.minecraft.core.BlockPos; @@ -245,7 +245,7 @@ public final class AntarchyFabricEvents { for (int y = min.getY(); y <= max.getY(); y++) { for (int z = min.getZ(); z <= max.getZ(); z++) { cursor.set(x, y, z); - if (PotentNyxiteBlock.isIchor(entity.level().getFluidState(cursor))) { + if (AntarchyFluidChecks.isIchor(entity.level().getFluidState(cursor))) { return true; } } 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 03b06feb..320d2335 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 @@ -214,10 +214,10 @@ public final class AntarchyFabricClientBootstrap { AntarchyFabricMisc.ICHOR.get(), AntarchyFabricMisc.FLOWING_ICHOR.get(), new SimpleFluidRenderHandler( - ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "block/antiwater_still"), - ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "block/antiwater_flow"), + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "block/bile/bile_still"), + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "block/bile/bile_flowing"), ResourceLocation.withDefaultNamespace("block/water_overlay"), - 0xFF2A0306 + 0xFF3D0408 ) ); @@ -476,6 +476,7 @@ public final class AntarchyFabricClientBootstrap { JumpyBootsHudRenderer.render(guiGraphics); TriffidGooHudRenderer.render(guiGraphics); DorrieJumpHudRenderer.render(guiGraphics); + HerculesBeetleChargeHudRenderer.render(guiGraphics); }); WorldRenderEvents.AFTER_TRANSLUCENT.register(context -> { 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 new file mode 100644 index 00000000..42eb0f77 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/HerculesBeetleChargeHudRenderer.java @@ -0,0 +1,50 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.content.entity.HerculesBeetleEntity; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Player; + +public final class HerculesBeetleChargeHudRenderer { + private static final ResourceLocation CHARGE_BAR_BACKGROUND = + ResourceLocation.withDefaultNamespace("textures/gui/sprites/hud/jump_bar_background.png"); + private static final ResourceLocation CHARGE_BAR_PROGRESS = + ResourceLocation.withDefaultNamespace("textures/gui/sprites/hud/jump_bar_progress.png"); + private static final int BAR_WIDTH = 182; + private static final int BAR_HEIGHT = 5; + + private HerculesBeetleChargeHudRenderer() { + } + + public static void render(GuiGraphics guiGraphics) { + Minecraft mc = Minecraft.getInstance(); + Player player = mc.player; + if (player == null || mc.screen != null || player.isDeadOrDying()) { + return; + } + if (!(player.getVehicle() instanceof HerculesBeetleEntity beetle)) { + return; + } + + int charge = beetle.getMountedCharge(); + if (charge <= 0) { + return; + } + + int width = mc.getWindow().getGuiScaledWidth(); + int height = mc.getWindow().getGuiScaledHeight(); + int x0 = width / 2 - BAR_WIDTH / 2; + int y0 = height - 39; + float chargeRatio = Mth.clamp(charge / 100.0F, 0.0F, 1.0F); + int filledWidth = Mth.clamp((int) (chargeRatio * BAR_WIDTH), 0, BAR_WIDTH); + + guiGraphics.blit(CHARGE_BAR_BACKGROUND, x0, y0, 0, 0, BAR_WIDTH, BAR_HEIGHT, BAR_WIDTH, BAR_HEIGHT); + if (filledWidth > 0) { + guiGraphics.setColor(1.0F, 0.78F, 0.2F, 0.45F + chargeRatio * 0.55F); + guiGraphics.blit(CHARGE_BAR_PROGRESS, x0, y0, 0, 0, filledWidth, BAR_HEIGHT, BAR_WIDTH, BAR_HEIGHT); + guiGraphics.setColor(1.0F, 1.0F, 1.0F, 1.0F); + } + } +} 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 53a34842..cfe07b58 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 @@ -9,12 +9,9 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; public final class HerculesBeetleClientHandler { - private static final int MAX_CHARGE_TICKS = 40; - private static boolean wasPressingJump; private static boolean wasPressingAttack; private static boolean wasCharging; - private static int chargeTicks; private HerculesBeetleClientHandler() { } @@ -45,11 +42,8 @@ public final class HerculesBeetleClientHandler { wasPressingAttack = pressingAttack; boolean charging = AntarchyKeyBindings.isHerculesBeetleChargePressed(); - if (charging) { - chargeTicks = Math.min(chargeTicks + 1, MAX_CHARGE_TICKS); - } else if (wasCharging && chargeTicks > 0) { - ClientPlayNetworking.send(new HerculesBeetleMountedChargePayload(chargeTicks)); - chargeTicks = 0; + if (charging != wasCharging) { + ClientPlayNetworking.send(new HerculesBeetleMountedChargePayload(charging)); } wasCharging = charging; } @@ -61,6 +55,5 @@ public final class HerculesBeetleClientHandler { } wasPressingAttack = false; wasCharging = false; - chargeTicks = 0; } } diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntiwaterItemEntityMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntiwaterItemEntityMixin.java index 7355d77a..44148469 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntiwaterItemEntityMixin.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntiwaterItemEntityMixin.java @@ -1,6 +1,7 @@ package com.craisinlord.antarchy.fabric.mixin; -import com.craisinlord.antarchy.content.block.PotentNyxiteBlock; +import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks; +import com.craisinlord.antarchy.fabric.util.CustomFluidPhysicsChecks; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.level.material.FluidState; @@ -20,10 +21,12 @@ public abstract class AntiwaterItemEntityMixin { } Vec3 motion = entity.getDeltaMovement(); + Vec3 antiwaterFlow = CustomFluidPhysicsChecks.getAntiwaterFlow(entity); + Vec3 push = antiwaterFlow.lengthSqr() > 1.0E-6D ? antiwaterFlow.normalize().scale(0.02D) : Vec3.ZERO; entity.setDeltaMovement( - motion.x * 0.99D, - motion.y + (motion.y < 0.06D ? 5.0E-4D : 0.0D), - motion.z * 0.99D + motion.x * 0.99D + push.x, + motion.y * 0.8D + 0.025D + push.y, + motion.z * 0.99D + push.z ); } @@ -36,7 +39,7 @@ public abstract class AntiwaterItemEntityMixin { for (int z = min.getZ(); z <= max.getZ(); z++) { cursor.set(x, y, z); FluidState fluidState = entity.level().getFluidState(cursor); - if (PotentNyxiteBlock.isAntiwater(fluidState)) { + if (AntarchyFluidChecks.isAntiwater(fluidState)) { return true; } } diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntiwaterLivingEntityMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntiwaterLivingEntityMixin.java index b750f6df..b5229227 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntiwaterLivingEntityMixin.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntiwaterLivingEntityMixin.java @@ -1,10 +1,11 @@ package com.craisinlord.antarchy.fabric.mixin; import com.craisinlord.antarchy.content.AntarchyObjects; -import com.craisinlord.antarchy.content.block.PotentNyxiteBlock; +import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks; import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.antarchy.fabric.util.CustomFluidPhysicsChecks; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.MoverType; @@ -32,6 +33,11 @@ public abstract class AntiwaterLivingEntityMixin { entity.move(MoverType.SELF, entity.getDeltaMovement()); Vec3 motion = entity.getDeltaMovement(); + double verticalInput = travelVector.y; + if (verticalInput == 0.0D && entity instanceof Player player) { + verticalInput = player.isShiftKeyDown() ? -1.0D : ((LivingEntityJumpingAccessor) entity).antarchy$isJumping() ? 1.0D : 0.0D; + } + if (entity.horizontalCollision && entity.onClimbable()) { motion = new Vec3(motion.x, 0.2D, motion.z); } @@ -43,9 +49,13 @@ public abstract class AntiwaterLivingEntityMixin { double drag = entity.isSwimming() ? 0.9D : 0.8D; worldMotion = worldMotion.scale(drag); + Vec3 antiwaterFlow = CustomFluidPhysicsChecks.getAntiwaterFlow(entity); + if (antiwaterFlow.lengthSqr() > 1.0E-6D) { + worldMotion = worldMotion.add(antiwaterFlow.normalize().scale(0.02D)); + } boolean flying = entity instanceof Player player && player.getAbilities().flying; if (!flying) { - worldMotion = worldMotion.add(0.0D, 0.005D, 0.0D); + worldMotion = worldMotion.add(0.0D, 0.005D + verticalInput * 0.04D, 0.0D); } entity.setDeltaMovement( @@ -89,7 +99,7 @@ public abstract class AntiwaterLivingEntityMixin { for (int z = min.getZ(); z <= max.getZ(); z++) { cursor.set(x, y, z); FluidState fluidState = entity.level().getFluidState(cursor); - if (PotentNyxiteBlock.isAntiwater(fluidState)) { + if (AntarchyFluidChecks.isAntiwater(fluidState)) { return true; } } diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/DreamSandMovementMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/DreamSandMovementMixin.java index 66f9f874..17c6896a 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/DreamSandMovementMixin.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/DreamSandMovementMixin.java @@ -23,14 +23,7 @@ public abstract class DreamSandMovementMixin { if (!AntarchySettings.dreamSandEnabled() || antarchy$isDreamSandLowGravityBlacklisted(self)) { access.antarchy$clearDreamSandLowGravity(); } else if (antarchy$isStandingOnDreamSand(self)) { - self.setDeltaMovement( - self.getDeltaMovement().x, - self.getDeltaMovement().y * AntarchySettings.dreamSandJumpVelocityMultiplier(), - self.getDeltaMovement().z - ); - access.antarchy$setDreamSandLowGravityActive(true); - access.antarchy$setDreamSandLowGravityTicksRemaining((int) Math.max(1L, Math.round(AntarchySettings.dreamSandEffectDurationSeconds() * 20.0D))); - access.antarchy$setDreamSandLandingGraceTicks(0); + antarchy$startDreamSandLowGravity(self, access); } } @@ -45,7 +38,17 @@ public abstract class DreamSandMovementMixin { access.antarchy$setDreamSandLandingGraceTicks(landingGraceTicks - 1); } - if (!AntarchySettings.dreamSandEnabled() || antarchy$isDreamSandLowGravityBlacklisted(self) || !access.antarchy$isDreamSandLowGravityActive()) { + if (!AntarchySettings.dreamSandEnabled() || antarchy$isDreamSandLowGravityBlacklisted(self)) { + return; + } + + if (!access.antarchy$isDreamSandLowGravityActive() + && !self.onGround() + && antarchy$isStandingOnDreamSand(self)) { + antarchy$startDreamSandLowGravity(self, access); + } + + if (!access.antarchy$isDreamSandLowGravityActive()) { return; } @@ -90,7 +93,18 @@ public abstract class DreamSandMovementMixin { } private static boolean antarchy$isStandingOnDreamSand(LivingEntity livingEntity) { - return livingEntity.level().getBlockState(livingEntity.getOnPosLegacy()).is(AntarchyFabricBlocks.DREAM_SAND.get()); + return livingEntity.getBlockStateOn().is(AntarchyFabricBlocks.DREAM_SAND.get()); + } + + private static void antarchy$startDreamSandLowGravity(LivingEntity self, DreamSandLowGravityAccess access) { + self.setDeltaMovement( + self.getDeltaMovement().x, + self.getDeltaMovement().y * AntarchySettings.dreamSandJumpVelocityMultiplier(), + self.getDeltaMovement().z + ); + access.antarchy$setDreamSandLowGravityActive(true); + access.antarchy$setDreamSandLowGravityTicksRemaining((int) Math.max(1L, Math.round(AntarchySettings.dreamSandEffectDurationSeconds() * 20.0D))); + access.antarchy$setDreamSandLandingGraceTicks(0); } private static boolean antarchy$isDreamSandLowGravityBlacklisted(LivingEntity livingEntity) { diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/LivingEntityJumpingAccessor.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/LivingEntityJumpingAccessor.java new file mode 100644 index 00000000..0414928c --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/LivingEntityJumpingAccessor.java @@ -0,0 +1,11 @@ +package com.craisinlord.antarchy.fabric.mixin; + +import net.minecraft.world.entity.LivingEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(LivingEntity.class) +public interface LivingEntityJumpingAccessor { + @Accessor("jumping") + boolean antarchy$isJumping(); +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/WaterlikeFluidItemEntityMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/WaterlikeFluidItemEntityMixin.java new file mode 100644 index 00000000..ef635f22 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/WaterlikeFluidItemEntityMixin.java @@ -0,0 +1,29 @@ +package com.craisinlord.antarchy.fabric.mixin; + +import com.craisinlord.antarchy.fabric.util.CustomFluidPhysicsChecks; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(value = ItemEntity.class, priority = 900) +public abstract class WaterlikeFluidItemEntityMixin { + @Inject(method = "tick", at = @At("TAIL")) + private void antarchy$applyWaterlikeFluidItemMovement(CallbackInfo ci) { + ItemEntity entity = (ItemEntity) (Object) this; + if (CustomFluidPhysicsChecks.isTouchingAntiwater(entity) || !CustomFluidPhysicsChecks.isTouchingWaterlikeFluid(entity)) { + return; + } + + Vec3 motion = entity.getDeltaMovement(); + Vec3 fluidFlow = CustomFluidPhysicsChecks.getWaterlikeFlow(entity); + Vec3 push = fluidFlow.lengthSqr() > 1.0E-6D ? fluidFlow.normalize().scale(0.03D) : Vec3.ZERO; + entity.setDeltaMovement( + motion.x * 0.99D + push.x, + motion.y + (motion.y < 0.06D ? 5.0E-4D : 0.0D) + push.y, + motion.z * 0.99D + push.z + ); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/WaterlikeFluidLivingEntityMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/WaterlikeFluidLivingEntityMixin.java new file mode 100644 index 00000000..c87a514a --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/WaterlikeFluidLivingEntityMixin.java @@ -0,0 +1,64 @@ +package com.craisinlord.antarchy.fabric.mixin; + +import com.craisinlord.antarchy.fabric.util.CustomFluidPhysicsChecks; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.MoverType; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.phys.Vec3; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(value = LivingEntity.class, priority = 900) +public abstract class WaterlikeFluidLivingEntityMixin { + @Inject(method = "travel", at = @At("HEAD"), cancellable = true) + private void antarchy$moveInCustomWaterlikeFluid(Vec3 travelVector, CallbackInfo ci) { + LivingEntity entity = (LivingEntity) (Object) this; + if (CustomFluidPhysicsChecks.isTouchingAntiwater(entity) || !CustomFluidPhysicsChecks.isTouchingWaterlikeFluid(entity)) { + return; + } + + double prevY = entity.getY(); + float swimSpeed = entity.isSprinting() ? 0.024F : 0.02F; + entity.moveRelative(swimSpeed, travelVector); + entity.move(MoverType.SELF, entity.getDeltaMovement()); + + Vec3 motion = entity.getDeltaMovement(); + double verticalInput = travelVector.y; + if (verticalInput == 0.0D && entity instanceof Player player) { + verticalInput = player.isShiftKeyDown() ? -1.0D : ((LivingEntityJumpingAccessor) entity).antarchy$isJumping() ? 1.0D : 0.0D; + } + + if (entity.horizontalCollision && entity.onClimbable()) { + motion = new Vec3(motion.x, 0.2D, motion.z); + } + + boolean flying = entity instanceof Player player && player.getAbilities().flying; + double verticalDrift = verticalInput * 0.04D; + if (!flying) { + verticalDrift -= 0.004D; + } + + Vec3 nextMotion = new Vec3( + motion.x * 0.8D, + motion.y * 0.8D + verticalDrift, + motion.z * 0.8D + ); + Vec3 fluidFlow = CustomFluidPhysicsChecks.getWaterlikeFlow(entity); + if (fluidFlow.lengthSqr() > 1.0E-6D) { + nextMotion = nextMotion.add(fluidFlow.normalize().scale(0.014D)); + } + entity.setDeltaMovement(nextMotion); + + if (entity.horizontalCollision && entity.isFree( + nextMotion.x, + nextMotion.y + 0.6D - entity.getY() + prevY, + nextMotion.z + )) { + entity.setDeltaMovement(nextMotion.x, 0.3D, nextMotion.z); + } + + ci.cancel(); + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/AntiwaterFogMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/AntiwaterFogMixin.java deleted file mode 100644 index 06585ef6..00000000 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/AntiwaterFogMixin.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.craisinlord.antarchy.fabric.mixin.client; - -import com.craisinlord.antarchy.content.fluid.BileLiquidBlock; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.shaders.FogShape; -import net.minecraft.client.Camera; -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.renderer.FogRenderer; -import net.minecraft.core.BlockPos; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.level.material.FluidState; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(FogRenderer.class) -public abstract class AntiwaterFogMixin { - @Inject(method = "setupColor", at = @At("TAIL")) - private static void antarchy$overrideBileColor(Camera camera, float partialTick, ClientLevel level, int renderDistance, float darkenWorldAmount, CallbackInfo ci) { - if (!antarchy$isInBile(camera)) { - return; - } - - RenderSystem.clearColor(0.38F, 0.42F, 0.10F, 0.0F); - } - - @Inject(method = "setupFog", at = @At("TAIL")) - private static void antarchy$overrideBileFog(Camera camera, FogRenderer.FogMode mode, float renderDistance, boolean thickFog, float partialTick, CallbackInfo ci) { - if (!antarchy$isInBile(camera)) { - return; - } - - RenderSystem.setShaderFogStart(0.25F); - RenderSystem.setShaderFogEnd(Math.min(renderDistance, 4.0F)); - RenderSystem.setShaderFogShape(FogShape.CYLINDER); - } - - private static boolean antarchy$isInBile(Camera camera) { - Entity entity = camera.getEntity(); - if (entity == null || entity.level() == null) { - return false; - } - - BlockPos pos = BlockPos.containing(camera.getPosition()); - FluidState fluidState = entity.level().getFluidState(pos); - return BileLiquidBlock.isBile(fluidState); - } -} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/LiquidFogMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/LiquidFogMixin.java new file mode 100644 index 00000000..7080bafd --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/LiquidFogMixin.java @@ -0,0 +1,89 @@ +package com.craisinlord.antarchy.fabric.mixin.client; + +import com.craisinlord.antarchy.content.fluid.BileLiquidBlock; +import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.shaders.FogShape; +import net.minecraft.client.Camera; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.FogRenderer; +import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.material.FluidState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(FogRenderer.class) +public abstract class LiquidFogMixin { + private static final int FLUID_NONE = 0; + private static final int FLUID_BILE = 1; + private static final int FLUID_ANTIWATER = 2; + private static final int FLUID_ICHOR = 3; + private static final int FLUID_LUMEN = 4; + + @Inject(method = "setupColor", at = @At("TAIL")) + private static void antarchy$overrideBileColor(Camera camera, float partialTick, ClientLevel level, int renderDistance, float darkenWorldAmount, CallbackInfo ci) { + int fluidKind = antarchy$getFluidKind(camera); + if (fluidKind == FLUID_NONE) { + return; + } + + if (fluidKind == FLUID_BILE) { + RenderSystem.clearColor(0.52F, 0.58F, 0.08F, 0.0F); + } else if (fluidKind == FLUID_ANTIWATER) { + RenderSystem.clearColor(0.48F, 0.06F, 0.06F, 0.0F); + } else if (fluidKind == FLUID_ICHOR) { + RenderSystem.clearColor(0.18F, 0.01F, 0.02F, 0.0F); + } else if (fluidKind == FLUID_LUMEN) { + RenderSystem.clearColor(0.42F, 0.82F, 1.0F, 0.0F); + } + } + + @Inject(method = "setupFog", at = @At("TAIL")) + private static void antarchy$overrideBileFog(Camera camera, FogRenderer.FogMode mode, float renderDistance, boolean thickFog, float partialTick, CallbackInfo ci) { + int fluidKind = antarchy$getFluidKind(camera); + if (fluidKind == FLUID_NONE) { + return; + } + + if (fluidKind == FLUID_BILE) { + RenderSystem.setShaderFogStart(0.2F); + RenderSystem.setShaderFogEnd(Math.min(renderDistance, 4.5F)); + } else if (fluidKind == FLUID_ANTIWATER) { + RenderSystem.setShaderFogStart(0.18F); + RenderSystem.setShaderFogEnd(Math.min(renderDistance, 3.5F)); + } else if (fluidKind == FLUID_ICHOR) { + RenderSystem.setShaderFogStart(0.08F); + RenderSystem.setShaderFogEnd(Math.min(renderDistance, 2.25F)); + } else if (fluidKind == FLUID_LUMEN) { + RenderSystem.setShaderFogStart(0.3F); + RenderSystem.setShaderFogEnd(Math.min(renderDistance, 6.0F)); + } + RenderSystem.setShaderFogShape(FogShape.CYLINDER); + } + + private static int antarchy$getFluidKind(Camera camera) { + Entity entity = camera.getEntity(); + if (entity == null || entity.level() == null) { + return FLUID_NONE; + } + + BlockPos pos = BlockPos.containing(camera.getPosition()); + FluidState fluidState = entity.level().getFluidState(pos); + if (BileLiquidBlock.isBile(fluidState)) { + return FLUID_BILE; + } + if (AntarchyFluidChecks.isAntiwater(fluidState)) { + return FLUID_ANTIWATER; + } + if (AntarchyFluidChecks.isIchor(fluidState)) { + return FLUID_ICHOR; + } + if (AntarchyFluidChecks.isLumen(fluidState)) { + return FLUID_LUMEN; + } + return FLUID_NONE; + } +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/infinity/PortalCreatorMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/infinity/PortalCreatorMixin.java index 1d55001f..cbebd3a4 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/infinity/PortalCreatorMixin.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/infinity/PortalCreatorMixin.java @@ -3,30 +3,29 @@ package com.craisinlord.antarchy.fabric.mixin.infinity; import com.craisinlord.antarchy.config.AntarchySettings; import net.minecraft.core.BlockPos; import net.minecraft.core.component.DataComponents; -import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.NetherPortalBlock; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(value = NetherPortalBlock.class, priority = 2000) -public abstract class PortalCreatorMixin { +import net.lerariemann.infinity.util.teleport.PortalCreator; +import net.minecraft.server.level.ServerLevel; + +@Mixin(PortalCreator.class) +public interface PortalCreatorMixin { @Inject( - method = "entityInside", + method = "tryCreatePortalFromItem(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/entity/item/ItemEntity;)V", at = @At("HEAD"), cancellable = true ) - private void antarchy$blockInfinityBookActivation(BlockState state, Level level, BlockPos pos, Entity entity, CallbackInfo ci) { + private static void antarchy$blockInfinityBookActivation(ServerLevel level, BlockPos pos, ItemEntity itemEntity, CallbackInfo ci) { if (!AntarchySettings.disableInfinityBookPortalCreation()) { return; } - if (!(entity instanceof ItemEntity itemEntity) || itemEntity.isRemoved()) { + if (itemEntity.isRemoved()) { return; } 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 97b9de03..f478e3b4 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 @@ -391,7 +391,11 @@ public final class AntarchyFabricNetworking { private static void handleHerculesBeetleMountedCharge(ServerPlayer player, HerculesBeetleMountedChargePayload payload) { if (player.getVehicle() instanceof HerculesBeetleEntity beetle) { - beetle.handleMountedCharge(player, payload.chargeTicks()); + if (payload.pressing()) { + beetle.startMountedCharge(player); + } else { + beetle.releaseMountedCharge(player); + } } } 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 2602b2e7..dc6f5b10 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 @@ -4,6 +4,7 @@ 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.*; @@ -270,73 +271,17 @@ public final class AntarchyFabricCreativeModeTabs { private static void populateCreativeTab(CreativeModeTab.Output output) { - ArrayList sortedItems = new ArrayList<>(); - for (var holder : AntarchyFabricItems.ITEMS.getEntries()) { - Item item = holder.get(); - if (item != Items.AIR) { - sortedItems.add(item); - } - } - sortedItems.sort(CreativeTabOrder.COMPARATOR); - sortedItems.forEach(item -> { - if (item == AntarchyFabricItems.GLIMMER_BOTTLE.get()) { - addGlimmerBottleVariants(output); - } else { + CreativeTabContents.populateAntarchyTab(new CreativeTabContents.AntarchyTabOutput() { + @Override + public void accept(net.minecraft.world.level.ItemLike item) { output.accept(item); } + + @Override + public void accept(ItemStack stack) { + output.accept(stack); + } }); - addPotionVariants(output); - } - - - - private static void addGlimmerBottleVariants(CreativeModeTab.Output output) { - for (com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant variant : com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant.values()) { - output.accept(com.craisinlord.antarchy.content.item.GlimmerBottleItem.create(variant)); - } - } - - - - private static void addPotionVariants(CreativeModeTab.Output output) { - acceptPotionFamily(output, AntarchyFabricMisc.DREAD_POTION); - acceptPotionFamily(output, AntarchyFabricMisc.LONG_DREAD); - acceptPotionFamily(output, AntarchyFabricMisc.INVERSION); - acceptPotionFamily(output, AntarchyFabricMisc.LONG_INVERSION); - acceptPotionFamily(output, AntarchyFabricMisc.STINKY_POTION); - acceptPotionFamily(output, AntarchyFabricMisc.LONG_STINKY); - acceptPotionFamily(output, AntarchyFabricMisc.PARALYSIS); - acceptPotionFamily(output, AntarchyFabricMisc.LONG_PARALYSIS); - acceptPotionFamily(output, AntarchyFabricMisc.HASTE); - acceptPotionFamily(output, AntarchyFabricMisc.STRONG_HASTE); - acceptPotionFamily(output, AntarchyFabricMisc.SHRINKING); - acceptPotionFamily(output, AntarchyFabricMisc.STRONG_SHRINKING); - acceptPotionFamily(output, AntarchyFabricMisc.EXTREME_SHRINKING); - acceptPotionFamily(output, AntarchyFabricMisc.GROWING); - acceptPotionFamily(output, AntarchyFabricMisc.STRONG_GROWING); - acceptPotionFamily(output, AntarchyFabricMisc.EXTREME_GROWING); - } - - - - private static void acceptPotionFamily(CreativeModeTab.Output output, DeferredHolder potion) { - Holder holder = AntarchyFabricContent.potionHolder(potion); - output.accept(PotionContents.createItemStack(Items.POTION, holder)); - output.accept(PotionContents.createItemStack(Items.SPLASH_POTION, holder)); - output.accept(PotionContents.createItemStack(Items.LINGERING_POTION, holder)); - output.accept(PotionContents.createItemStack(Items.TIPPED_ARROW, holder)); - } - - - - private static int creativeTabGroup(Item item) { - return CreativeTabOrder.group(item); - } - - - - private static int creativeTabSubOrder(Item item) { - return CreativeTabOrder.subOrder(item); } 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 1c97fcb1..a0b0d800 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 @@ -105,6 +105,7 @@ 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.MantisClawItem; import com.craisinlord.antarchy.content.item.MinersDreamItem; import com.craisinlord.antarchy.content.item.DuctTapeBlockItem; import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; @@ -610,7 +611,8 @@ public final class AntarchyFabricItems { public static final DeferredItem DEAD_STAR_CORAL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DEAD_STAR_CORAL); - public static final DeferredItem DEAD_STAR_CORAL_FAN_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DEAD_STAR_CORAL_FAN); + public static final DeferredItem DEAD_STAR_CORAL_FAN_ITEM = ITEMS.register("dead_star_coral_fan", + () -> new StandingAndWallBlockItem(AntarchyFabricBlocks.DEAD_STAR_CORAL_FAN.get(), AntarchyFabricBlocks.DEAD_STAR_CORAL_WALL_FAN.get(), new Item.Properties(), Direction.UP)); public static final DeferredItem STAR_CORAL_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.STAR_CORAL_BLOCK); @@ -619,7 +621,8 @@ public final class AntarchyFabricItems { public static final DeferredItem STAR_CORAL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.STAR_CORAL); - public static final DeferredItem STAR_CORAL_FAN_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.STAR_CORAL_FAN); + public static final DeferredItem STAR_CORAL_FAN_ITEM = ITEMS.register("star_coral_fan", + () -> new StandingAndWallBlockItem(AntarchyFabricBlocks.STAR_CORAL_FAN.get(), AntarchyFabricBlocks.STAR_CORAL_WALL_FAN.get(), new Item.Properties(), Direction.UP)); public static final DeferredItem DUCT_TAPE_ITEM = ITEMS.register("duct_tape", @@ -872,7 +875,8 @@ public final class AntarchyFabricItems { )); - public static final DeferredItem MANTIS_CLAW = ITEMS.registerSimpleItem("mantis_claw", new Item.Properties().rarity(Rarity.UNCOMMON)); + public static final DeferredItem MANTIS_CLAW = ITEMS.register("mantis_claw", + () -> new MantisClawItem(Tiers.IRON, new Item.Properties().stacksTo(1).rarity(Rarity.UNCOMMON))); public static final DeferredItem HERCULES_HORN = ITEMS.registerSimpleItem("hercules_horn", new Item.Properties().rarity(Rarity.UNCOMMON)); @@ -887,11 +891,12 @@ public final class AntarchyFabricItems { public static final DeferredItem CHITEN = ITEMS.registerSimpleItem("chiten", new Item.Properties().rarity(Rarity.UNCOMMON)); - public static final DeferredItem JERRY_NUCLEUS = ITEMS.registerSimpleItem("jerry_nucleus", new Item.Properties().rarity(Rarity.UNCOMMON) - .food(new FoodProperties.Builder() - .nutrition(2) - .saturationModifier(0.1F) - .build())); + public static final DeferredItem JERRY_NUCLEUS = ITEMS.register("jerry_nucleus", + () -> new com.craisinlord.antarchy.content.item.JerryNucleusItem(new Item.Properties().rarity(Rarity.UNCOMMON) + .food(new FoodProperties.Builder() + .nutrition(2) + .saturationModifier(0.1F) + .build()))); public static final DeferredItem CARAPACE = ITEMS.registerSimpleItem("carapace", new Item.Properties().rarity(Rarity.UNCOMMON)); diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java index ed57aaa0..a039eb50 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java @@ -1,23 +1,8 @@ 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.recipe.AmericanizeRecipe; import com.craisinlord.antarchy.content.worldgen.ants.BrownAntNestFeature; import com.craisinlord.antarchy.content.worldgen.ants.RainbowAntNestFeature; import com.craisinlord.antarchy.content.worldgen.ants.RedAntNestFeature; @@ -36,13 +21,6 @@ import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsFeatur 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.GoopedMobEffect; import com.craisinlord.antarchy.content.effect.GrowthMobEffect; @@ -50,88 +28,6 @@ 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; @@ -181,82 +77,36 @@ import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeConfigura 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 AntarchyFabricMisc { @@ -350,8 +200,8 @@ public final class AntarchyFabricMisc { .build()); - public static final DeferredHolder, net.minecraft.world.item.crafting.RecipeSerializer> AMERICANIZE_SERIALIZER = - RECIPE_SERIALIZERS.register("americanize", () -> com.craisinlord.antarchy.content.AmericanizeRecipe.SERIALIZER); + public static final DeferredHolder, net.minecraft.world.item.crafting.RecipeSerializer> AMERICANIZE_SERIALIZER = + RECIPE_SERIALIZERS.register("americanize", () -> AmericanizeRecipe.SERIALIZER); public static final DeferredHolder ULTIMATE_ARMOR_MATERIAL = ARMOR_MATERIALS.register("ultimate", 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 ae94c7d8..1fce3bf4 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 @@ -641,6 +641,14 @@ public final class AntarchyFabricSounds { public static final DeferredHolder ROLLY_POLLY_WHEEL_MODE = registerSoundEvent("rolly_polly_wheel_mode"); public static final DeferredHolder ROLLY_POLLY_NORMAL_MODE = registerSoundEvent("rolly_polly_normal_mode"); public static final DeferredHolder ROLLY_POLLY_ROLL = registerSoundEvent("rolly_polly_roll"); + public static final DeferredHolder JERRY_YOUNG_IDLE = registerSoundEvent("jerry_young_idle"); + public static final DeferredHolder JERRY_YOUNG_HURT = registerSoundEvent("jerry_young_hurt"); + public static final DeferredHolder JERRY_YOUNG_DEATH = registerSoundEvent("jerry_young_death"); + public static final DeferredHolder JERRY_YOUNG_ATTACK = registerSoundEvent("jerry_young_attack"); + public static final DeferredHolder JERRY_ADULT_IDLE = registerSoundEvent("jerry_adult_idle"); + public static final DeferredHolder JERRY_ADULT_HURT = registerSoundEvent("jerry_adult_hurt"); + public static final DeferredHolder JERRY_ADULT_DEATH = registerSoundEvent("jerry_adult_death"); + public static final DeferredHolder JERRY_ADULT_ATTACK = registerSoundEvent("jerry_adult_attack"); public static final DeferredHolder CREEPING_HORROR_GROWL = registerSoundEvent("creeping_horror_growl"); diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/util/CustomFluidPhysicsChecks.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/util/CustomFluidPhysicsChecks.java new file mode 100644 index 00000000..e25839d3 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/util/CustomFluidPhysicsChecks.java @@ -0,0 +1,91 @@ +package com.craisinlord.antarchy.fabric.util; + +import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks; +import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; + +public final class CustomFluidPhysicsChecks { + private CustomFluidPhysicsChecks() { + } + + public static boolean isTouchingAntiwater(Entity entity) { + AABB box = entity.getBoundingBox().inflate(0.05D); + BlockPos min = BlockPos.containing(box.minX, box.minY, box.minZ); + BlockPos max = BlockPos.containing(box.maxX, box.maxY, box.maxZ); + BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); + for (int x = min.getX(); x <= max.getX(); x++) { + for (int y = min.getY(); y <= max.getY(); y++) { + for (int z = min.getZ(); z <= max.getZ(); z++) { + cursor.set(x, y, z); + FluidState fluidState = entity.level().getFluidState(cursor); + if (AntarchyFluidChecks.isAntiwater(fluidState)) { + return true; + } + } + } + } + return false; + } + + public static boolean isTouchingWaterlikeFluid(Entity entity) { + AABB box = entity.getBoundingBox().inflate(0.05D); + BlockPos min = BlockPos.containing(box.minX, box.minY, box.minZ); + BlockPos max = BlockPos.containing(box.maxX, box.maxY, box.maxZ); + BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); + for (int x = min.getX(); x <= max.getX(); x++) { + for (int y = min.getY(); y <= max.getY(); y++) { + for (int z = min.getZ(); z <= max.getZ(); z++) { + cursor.set(x, y, z); + FluidState fluidState = entity.level().getFluidState(cursor); + if (AntarchyFluidChecks.usesWaterLikePhysics(fluidState)) { + return true; + } + } + } + } + return false; + } + + public static Vec3 getAntiwaterFlow(Entity entity) { + return getAverageFlow(entity, true); + } + + public static Vec3 getWaterlikeFlow(Entity entity) { + return getAverageFlow(entity, false); + } + + private static Vec3 getAverageFlow(Entity entity, boolean antiwater) { + AABB box = entity.getBoundingBox().inflate(0.05D); + BlockPos min = BlockPos.containing(box.minX, box.minY, box.minZ); + BlockPos max = BlockPos.containing(box.maxX, box.maxY, box.maxZ); + BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); + Vec3 totalFlow = Vec3.ZERO; + int matches = 0; + for (int x = min.getX(); x <= max.getX(); x++) { + for (int y = min.getY(); y <= max.getY(); y++) { + for (int z = min.getZ(); z <= max.getZ(); z++) { + cursor.set(x, y, z); + FluidState fluidState = entity.level().getFluidState(cursor); + boolean matchesFluid = antiwater + ? AntarchyFluidChecks.isAntiwater(fluidState) + : AntarchyFluidChecks.usesWaterLikePhysics(fluidState); + if (!matchesFluid) { + continue; + } + + totalFlow = totalFlow.add(fluidState.getFlow(entity.level(), cursor)); + matches++; + } + } + } + + if (matches == 0 || totalFlow.lengthSqr() < 1.0E-6D) { + return Vec3.ZERO; + } + + return totalFlow.scale(1.0D / matches); + } +} diff --git a/fabric/src/main/resources/antarchy-fabric.mixins.json b/fabric/src/main/resources/antarchy-fabric.mixins.json index a40c15d4..2085e64c 100644 --- a/fabric/src/main/resources/antarchy-fabric.mixins.json +++ b/fabric/src/main/resources/antarchy-fabric.mixins.json @@ -6,6 +6,9 @@ "mixins": [ "AntiwaterLivingEntityMixin", "AntiwaterItemEntityMixin", + "LivingEntityJumpingAccessor", + "WaterlikeFluidLivingEntityMixin", + "WaterlikeFluidItemEntityMixin", "AntimetalInversionMixin", "AntimetalScaffoldingMixin", "ElytraStartFlyingMixin", @@ -25,7 +28,7 @@ "client.BrutalflyElytraExperienceBarMixin", "client.BloodglassChatOrderMixin", "client.DuctTapeInputMixin", - "client.AntiwaterFogMixin", + "client.LiquidFogMixin", "client.GravityGunMouseScrollMixin", "client.KeybindingConflictFixMixin", "client.CrossbowArmPoseMixin", diff --git a/fabric/src/main/resources/data/minecraft/tags/fluid/water.json b/fabric/src/main/resources/data/minecraft/tags/fluid/water.json index eef10539..86dde3df 100644 --- a/fabric/src/main/resources/data/minecraft/tags/fluid/water.json +++ b/fabric/src/main/resources/data/minecraft/tags/fluid/water.json @@ -1,10 +1,3 @@ { - "values": [ - "antarchy:ichor", - "antarchy:flowing_ichor", - "antarchy:lumen", - "antarchy:flowing_lumen", - "antarchy:bile", - "antarchy:flowing_bile" - ] + "values": [] } 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 df8cc612..c098d1d1 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java @@ -177,7 +177,15 @@ public class AntarchyNeoforge { AntarchyNeoforgeSounds.BRUTALFLY_SPIT, AntarchyNeoforgeSounds.ROLLY_POLLY_WHEEL_MODE, AntarchyNeoforgeSounds.ROLLY_POLLY_NORMAL_MODE, - AntarchyNeoforgeSounds.ROLLY_POLLY_ROLL + AntarchyNeoforgeSounds.ROLLY_POLLY_ROLL, + AntarchyNeoforgeSounds.JERRY_YOUNG_IDLE, + AntarchyNeoforgeSounds.JERRY_YOUNG_HURT, + AntarchyNeoforgeSounds.JERRY_YOUNG_DEATH, + AntarchyNeoforgeSounds.JERRY_YOUNG_ATTACK, + AntarchyNeoforgeSounds.JERRY_ADULT_IDLE, + AntarchyNeoforgeSounds.JERRY_ADULT_HURT, + AntarchyNeoforgeSounds.JERRY_ADULT_DEATH, + AntarchyNeoforgeSounds.JERRY_ADULT_ATTACK ); bindCommonObjects(); ScorpionWhipTetherSync.setSink((player, targetId) -> PacketDistributor.sendToPlayersTrackingEntityAndSelf( 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 e6f4185e..15a3d345 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 @@ -330,6 +330,10 @@ public final class AntarchyNeoForgeClient { ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "dorrie_jump"), (guiGraphics, partialTick) -> DorrieJumpHudRenderer.render(guiGraphics) ); + event.registerAboveAll( + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "hercules_beetle_charge"), + (guiGraphics, partialTick) -> HerculesBeetleChargeHudRenderer.render(guiGraphics) + ); } @SubscribeEvent 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 new file mode 100644 index 00000000..e2601cbb --- /dev/null +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/HerculesBeetleChargeHudRenderer.java @@ -0,0 +1,50 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.content.entity.HerculesBeetleEntity; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Player; + +public final class HerculesBeetleChargeHudRenderer { + private static final ResourceLocation CHARGE_BAR_BACKGROUND = + ResourceLocation.withDefaultNamespace("textures/gui/sprites/hud/jump_bar_background.png"); + private static final ResourceLocation CHARGE_BAR_PROGRESS = + ResourceLocation.withDefaultNamespace("textures/gui/sprites/hud/jump_bar_progress.png"); + private static final int BAR_WIDTH = 182; + private static final int BAR_HEIGHT = 5; + + private HerculesBeetleChargeHudRenderer() { + } + + public static void render(GuiGraphics guiGraphics) { + Minecraft mc = Minecraft.getInstance(); + Player player = mc.player; + if (player == null || mc.screen != null || player.isDeadOrDying()) { + return; + } + if (!(player.getVehicle() instanceof HerculesBeetleEntity beetle)) { + return; + } + + int charge = beetle.getMountedCharge(); + if (charge <= 0) { + return; + } + + int width = mc.getWindow().getGuiScaledWidth(); + int height = mc.getWindow().getGuiScaledHeight(); + int x0 = width / 2 - BAR_WIDTH / 2; + int y0 = height - 39; + float chargeRatio = Mth.clamp(charge / 100.0F, 0.0F, 1.0F); + int filledWidth = Mth.clamp((int) (chargeRatio * BAR_WIDTH), 0, BAR_WIDTH); + + guiGraphics.blit(CHARGE_BAR_BACKGROUND, x0, y0, 0, 0, BAR_WIDTH, BAR_HEIGHT, BAR_WIDTH, BAR_HEIGHT); + if (filledWidth > 0) { + guiGraphics.setColor(1.0F, 0.78F, 0.2F, 0.45F + chargeRatio * 0.55F); + guiGraphics.blit(CHARGE_BAR_PROGRESS, x0, y0, 0, 0, filledWidth, BAR_HEIGHT, BAR_WIDTH, BAR_HEIGHT); + guiGraphics.setColor(1.0F, 1.0F, 1.0F, 1.0F); + } + } +} 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 3d3d00f5..c48d3b0a 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 @@ -18,12 +18,9 @@ import net.neoforged.neoforge.network.PacketDistributor; @EventBusSubscriber(modid = Antarchy.MODID, value = Dist.CLIENT) public final class HerculesBeetleClientHandler { - private static final int MAX_CHARGE_TICKS = 40; - private static boolean wasPressingJump; private static boolean wasPressingAttack; private static boolean wasCharging; - private static int chargeTicks; private HerculesBeetleClientHandler() { } @@ -59,11 +56,8 @@ public final class HerculesBeetleClientHandler { wasPressingAttack = pressingAttack; boolean charging = AntarchyKeyBindings.HERCULES_BEETLE_CHARGE.isDown(); - if (charging) { - chargeTicks = Math.min(chargeTicks + 1, MAX_CHARGE_TICKS); - } else if (wasCharging && chargeTicks > 0) { - PacketDistributor.sendToServer(new HerculesBeetleMountedChargePayload(chargeTicks)); - chargeTicks = 0; + if (charging != wasCharging) { + PacketDistributor.sendToServer(new HerculesBeetleMountedChargePayload(charging)); } wasCharging = charging; } @@ -75,6 +69,5 @@ public final class HerculesBeetleClientHandler { } wasPressingAttack = false; wasCharging = false; - chargeTicks = 0; } } 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 867cca1e..ad4716da 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 @@ -62,7 +62,11 @@ public final class HerculesBeetleNetworking { return; } if (player.getVehicle() instanceof HerculesBeetleEntity beetle) { - beetle.handleMountedCharge(player, payload.chargeTicks()); + if (payload.pressing()) { + beetle.startMountedCharge(player); + } else { + beetle.releaseMountedCharge(player); + } } }); } diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java index 9c76dc97..a95724df 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java @@ -4,9 +4,13 @@ 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.CustomBrewingRecipes; +import com.craisinlord.antarchy.content.recipe.CustomBrewingRecipes; import com.craisinlord.antarchy.content.block.DuctTapeBlock; -import com.craisinlord.antarchy.content.block.PotentNyxiteBlock; +import com.craisinlord.antarchy.content.dispenser.RpoLauncherDispenseBehavior; +import com.craisinlord.antarchy.content.dispenser.SizeRayDispenseBehavior; +import com.craisinlord.antarchy.content.dispenser.SquidzookaDispenseBehavior; +import com.craisinlord.antarchy.content.dispenser.WaterCannonDispenseBehavior; +import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks; import com.craisinlord.antarchy.content.bloodglass.BloodglassAccess; import com.craisinlord.antarchy.content.entity.*; import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; @@ -1027,7 +1031,7 @@ public final class AntarchyNeoForgeEvents { for (int z = min.getZ(); z <= max.getZ(); z++) { cursor.set(x, y, z); FluidState fluidState = entity.level().getFluidState(cursor); - if (PotentNyxiteBlock.isAntiwater(fluidState)) { + if (AntarchyFluidChecks.isAntiwater(fluidState)) { return true; } } @@ -1225,11 +1229,11 @@ public final class AntarchyNeoForgeEvents { static void onCommonSetup(FMLCommonSetupEvent event) { BloodCrystalShardItem.SYNC_BLOODGLASS = AntarchyNeoForgeEvents::syncBloodglass; event.enqueueWork(() -> { - DispenserBlock.registerBehavior(AntarchyNeoforgeItems.SHRINK_RAY.get(), new com.craisinlord.antarchy.content.SizeRayDispenseBehavior()); - DispenserBlock.registerBehavior(AntarchyNeoforgeItems.GROWTH_RAY.get(), new com.craisinlord.antarchy.content.SizeRayDispenseBehavior()); - DispenserBlock.registerBehavior(AntarchyNeoforgeItems.SQUIDZOOKA.get(), new com.craisinlord.antarchy.content.SquidzookaDispenseBehavior()); - DispenserBlock.registerBehavior(AntarchyNeoforgeItems.RPO_LAUNCHER.get(), new com.craisinlord.antarchy.content.RpoLauncherDispenseBehavior()); - DispenserBlock.registerBehavior(AntarchyNeoforgeItems.WATER_CANNON.get(), new com.craisinlord.antarchy.content.WaterCannonDispenseBehavior()); + DispenserBlock.registerBehavior(AntarchyNeoforgeItems.SHRINK_RAY.get(), new SizeRayDispenseBehavior()); + DispenserBlock.registerBehavior(AntarchyNeoforgeItems.GROWTH_RAY.get(), new SizeRayDispenseBehavior()); + DispenserBlock.registerBehavior(AntarchyNeoforgeItems.SQUIDZOOKA.get(), new SquidzookaDispenseBehavior()); + DispenserBlock.registerBehavior(AntarchyNeoforgeItems.RPO_LAUNCHER.get(), new RpoLauncherDispenseBehavior()); + DispenserBlock.registerBehavior(AntarchyNeoforgeItems.WATER_CANNON.get(), new WaterCannonDispenseBehavior()); LucidEyeProjectileEntity.defaultItemSupplier = () -> AntarchyNeoforgeItems.LUCID_PEARL.get(); LucidEntity.invertedEffectSupplier = () -> AntarchyNeoforgeMisc.INVERTED; FluidInteractionRegistry.addInteraction( 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 9542860f..cbd85362 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,12 +1,10 @@ package com.craisinlord.antarchy.neoforge.registry; import com.craisinlord.antarchy.Antarchy; -import com.craisinlord.antarchy.content.item.ultimate.UltimateGearHelper; +import com.craisinlord.antarchy.content.CreativeTabContents; import com.craisinlord.antarchy.content.CreativeTabOrder; -import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; import net.minecraft.world.item.*; -import net.minecraft.world.item.alchemy.PotionContents; import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent; import net.neoforged.neoforge.registries.DeferredHolder; @@ -32,402 +30,35 @@ public class AntarchyNeoforgeCreativeModeTabs { static void buildCreativeTabs(BuildCreativeModeTabContentsEvent event) { if (event.getTabKey() == ANTARCHY_TAB.getKey()) { - java.util.ArrayList sortedItems = new java.util.ArrayList<>(); - for (var holder : AntarchyNeoforgeItems.ITEMS.getEntries()) { - Item item = holder.get(); - if (item != Items.AIR) sortedItems.add(item); - } - sortedItems.sort(CreativeTabOrder.COMPARATOR); - sortedItems.forEach(item -> { - if (item == AntarchyNeoforgeItems.GLIMMER_BOTTLE.get()) { - for (com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant variant : com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant.values()) { - event.accept(com.craisinlord.antarchy.content.item.GlimmerBottleItem.create(variant)); - } - } else { + CreativeTabContents.populateAntarchyTab(new CreativeTabContents.AntarchyTabOutput() { + @Override + public void accept(net.minecraft.world.level.ItemLike item) { event.accept(item); } + + @Override + public void accept(ItemStack stack) { + event.accept(stack); + } }); + return; } + CreativeTabContents.populateNeoForgeVanillaTab(event.getTabKey(), event.getParameters().holders(), + new CreativeTabContents.NeoForgeVanillaTabOutput() { + @Override + public void accept(net.minecraft.world.level.ItemLike item) { + event.accept(item); + } - if (event.getTabKey() == CreativeModeTabs.SPAWN_EGGS) { - event.accept(AntarchyNeoforgeItems.EASTER_BUNNY_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.FLYING_SQUIRREL_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.CATERPILLAR_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.BUTTERFLY_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.REVERIE_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.BRUTALFLY_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.RED_ANT_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.BROWN_ANT_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.RAINBOW_ANT_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.TERMITE_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.MOLEWORM_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.MANTIS_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.ALPHA_MANTIS_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.ROLLY_POLLY_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.MOLEVORE_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.TRIFFID_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.APPLE_COW_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.GOLDEN_APPLE_COW_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.ENCHANTED_GOLDEN_APPLE_COW_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.DR_TRAYAURUS_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.WASP_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.BOMBER_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.JUMPY_BUG_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.SPIT_BUG_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.STINK_BUG_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.CLOUD_SHARK_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.KRAKEN_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.MISSILE_SQUID_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.OCTOPUS_BOMB_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.NIGHTMARE_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.BED_BUG_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.LUCID_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.SCORPION_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.BASILISK_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.EMPEROR_SCORPION_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.TORETERROR_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.CREEPING_HORROR_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.LURKING_TERROR_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.HERCULES_BEETLE_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.JERRY_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.DORRIE_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.OURANWOOD_DEER_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.GLIMMER_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.ELKA_SPAWN_EGG.get()); - } + @Override + public void accept(ItemStack stack) { + event.accept(stack); + } - if (event.getTabKey() == CreativeModeTabs.NATURAL_BLOCKS) { - event.accept(AntarchyNeoforgeItems.OURANWOOD_LEAVES_ITEM.get()); - event.accept(AntarchyNeoforgeItems.OURANWOOD_ACORN.get()); - event.accept(AntarchyNeoforgeItems.PEACH_LEAVES_ITEM.get()); - event.accept(AntarchyNeoforgeItems.PEACH_SAPLING_ITEM.get()); - event.accept(AntarchyNeoforgeItems.DUPLICATOR_LOG_ITEM.get()); - event.accept(AntarchyNeoforgeItems.DUPLICATOR_SAPLING_ITEM.get()); - event.accept(AntarchyNeoforgeItems.ORANGE_MILKWEED_ITEM.get()); - event.accept(AntarchyNeoforgeItems.PINK_MILKWEED_ITEM.get()); - event.accept(AntarchyNeoforgeItems.CAMELLIA_ITEM.get()); - event.accept(AntarchyNeoforgeItems.SPIDER_LILY_ITEM.get()); - event.accept(AntarchyNeoforgeItems.LOTUS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.GIANT_LILY_PAD_ITEM.get()); - event.accept(AntarchyNeoforgeItems.SEASHELL_ITEM.get()); - event.accept(AntarchyNeoforgeItems.HUSHWEED_ITEM.get()); - event.accept(AntarchyNeoforgeItems.AMBER_LICHEN_ITEM.get()); - event.accept(AntarchyNeoforgeItems.CREEPVINE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.HANGING_CREEPROOTS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.MOLTING_VINES_ITEM.get()); - event.accept(AntarchyNeoforgeItems.GLOWCAP_MUSHROOM_ITEM.get()); - event.accept(AntarchyNeoforgeItems.GLOWCAP_MUSHROOM_BLOCK_ITEM.get()); - event.accept(AntarchyNeoforgeItems.INFESTED_ROOTED_DIRT_ITEM.get()); - event.accept(AntarchyNeoforgeItems.INFESTED_COARSE_DIRT_ITEM.get()); - event.accept(AntarchyNeoforgeItems.TRIFFID_GOO_BLOCK_ITEM.get()); - event.accept(AntarchyNeoforgeItems.BED_BUG_EGG_ITEM.get()); - event.accept(AntarchyNeoforgeItems.CREEPING_HORROR_EGG_ITEM.get()); - event.accept(AntarchyNeoforgeItems.LURKING_TERROR_EGG_ITEM.get()); - event.accept(AntarchyNeoforgeItems.JUMPY_BUG_EGG_ITEM.get()); - event.accept(AntarchyNeoforgeItems.SPIT_BUG_EGG_ITEM.get()); - event.accept(AntarchyNeoforgeItems.JERRY_EGG_ITEM.get()); - event.accept(AntarchyNeoforgeItems.WASP_NEST_ITEM.get()); - event.accept(AntarchyNeoforgeItems.RED_ANT_NEST_ITEM.get()); - event.accept(AntarchyNeoforgeItems.BROWN_ANT_NEST_ITEM.get()); - event.accept(AntarchyNeoforgeItems.RAINBOW_ANT_NEST_ITEM.get()); - event.accept(AntarchyNeoforgeItems.TERMITE_NEST_ITEM.get()); - event.accept(AntarchyNeoforgeItems.URANIUM_ORE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.DEEPSLATE_URANIUM_ORE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.TITANIUM_ORE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.DEEPSLATE_TITANIUM_ORE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.LUMEN_FROGLIGHT_ITEM.get()); - event.accept(AntarchyNeoforgeItems.ROSEATE_FROGLIGHT_ITEM.get()); - event.accept(AntarchyNeoforgeItems.CORN_SEEDS.get()); - event.accept(AntarchyNeoforgeItems.STAR_CORAL_ITEM.get()); - event.accept(AntarchyNeoforgeItems.STAR_CORAL_FAN_ITEM.get()); - event.accept(AntarchyNeoforgeItems.STAR_CORAL_BLOCK_ITEM.get()); - event.accept(AntarchyNeoforgeItems.DEAD_STAR_CORAL_ITEM.get()); - event.accept(AntarchyNeoforgeItems.DEAD_STAR_CORAL_FAN_ITEM.get()); - event.accept(AntarchyNeoforgeItems.DEAD_STAR_CORAL_BLOCK_ITEM.get()); - } - - if (event.getTabKey() == CreativeModeTabs.TOOLS_AND_UTILITIES) { - event.insertAfter(new ItemStack(Items.SHEARS), new ItemStack(AntarchyNeoforgeItems.DUCT_TAPE_ITEM.get()), CreativeModeTab.TabVisibility.PARENT_AND_SEARCH_TABS); - event.insertAfter(new ItemStack(Items.MINECART), new ItemStack(AntarchyNeoforgeItems.DIAMOND_MINECART_ITEM.get()), CreativeModeTab.TabVisibility.PARENT_AND_SEARCH_TABS); - event.accept(AntarchyNeoforgeItems.BILE_BUCKET.get()); - event.accept(AntarchyNeoforgeItems.ICHOR_BUCKET.get()); - event.accept(AntarchyNeoforgeItems.ANTIWATER_BUCKET.get()); - event.accept(AntarchyNeoforgeItems.LUMEN_BUCKET.get()); - event.accept(AntarchyNeoforgeItems.CLOUD_BUCKET.get()); - event.accept(AntarchyNeoforgeItems.REVERIE_BOTTLE.get()); - event.accept(AntarchyNeoforgeItems.GLIMMER_BOTTLE.get()); - event.accept(AntarchyNeoforgeItems.CRITTER_CAGE.get()); - event.accept(AntarchyNeoforgeItems.ULTIMATE_PICKAXE.get()); - event.accept(AntarchyNeoforgeItems.ULTIMATE_AXE.get()); - event.accept(AntarchyNeoforgeItems.ULTIMATE_SHOVEL.get()); - event.accept(AntarchyNeoforgeItems.ULTIMATE_HOE.get()); - } - - if (event.getTabKey() == CreativeModeTabs.INGREDIENTS) { - event.accept(AntarchyNeoforgeItems.RAW_URANIUM_SCRAP.get()); - event.accept(AntarchyNeoforgeItems.RAW_TITANIUM_SCRAP.get()); - event.accept(AntarchyNeoforgeItems.RAW_URANIUM.get()); - event.accept(AntarchyNeoforgeItems.RAW_TITANIUM.get()); - event.accept(AntarchyNeoforgeItems.URANIUM_NUGGET.get()); - event.accept(AntarchyNeoforgeItems.TITANIUM_NUGGET.get()); - event.accept(AntarchyNeoforgeItems.URANIUM_INGOT.get()); - event.accept(AntarchyNeoforgeItems.TITANIUM_INGOT.get()); - event.accept(AntarchyNeoforgeItems.CLOUD_SHARK_FIN.get()); - event.accept(AntarchyNeoforgeItems.CLOUD_SHARK_FIN_SOUP.get()); - event.accept(AntarchyNeoforgeItems.BASILISK_FANG.get()); - event.accept(AntarchyNeoforgeItems.NIGHTMARE_SCALE.get()); - event.accept(AntarchyNeoforgeItems.MOLEVORE_NOSE.get()); - event.accept(AntarchyNeoforgeItems.MOLEWORM_ITEM.get()); - event.accept(AntarchyNeoforgeItems.MUD_PIE.get()); - event.accept(AntarchyNeoforgeItems.LUCID_EYE.get()); - event.accept(AntarchyNeoforgeItems.BLOOD_CRYSTAL_SHARD.get()); - event.accept(AntarchyNeoforgeItems.BLOOD_CRYSTAL_APPLE.get()); - event.accept(AntarchyNeoforgeItems.SPIRIT_APPLE.get()); - event.accept(AntarchyNeoforgeItems.MANTIS_CLAW.get()); - event.accept(AntarchyNeoforgeItems.HERCULES_HORN.get()); - event.accept(AntarchyNeoforgeItems.KING_SCALE.get()); - event.accept(AntarchyNeoforgeItems.QUEEN_SCALE.get()); - event.accept(AntarchyNeoforgeItems.CHITEN.get()); - event.accept(AntarchyNeoforgeItems.JERRY_NUCLEUS.get()); - event.accept(AntarchyNeoforgeItems.CARAPACE.get()); - event.accept(AntarchyNeoforgeItems.STINK_BUG.get()); - event.accept(AntarchyNeoforgeItems.BRUTALFLY_WING.get()); - event.accept(AntarchyNeoforgeItems.PRIMORDIAL_SCUTE.get()); - event.accept(AntarchyNeoforgeItems.TRIFFID_GOO.get()); - event.accept(AntarchyNeoforgeItems.VORTEX_EYE.get()); - event.accept(AntarchyNeoforgeItems.EMPEROR_SCORPION_STINGER.get()); - event.accept(AntarchyNeoforgeItems.KRAKEN_TOOTH.get()); - event.accept(AntarchyNeoforgeItems.KRAKEN_TENTACLE.get()); - event.accept(AntarchyNeoforgeItems.JUMPY_BUG_LEG.get()); - event.accept(AntarchyNeoforgeItems.CORNEA_EAR.get()); - event.accept(AntarchyNeoforgeItems.CORN.get()); - event.accept(AntarchyNeoforgeItems.HIGH_FRUCTOSE_CORN_SYRUP.get()); - event.accept(AntarchyNeoforgeItems.PEACH.get()); - event.accept(AntarchyNeoforgeItems.PEACH_PIE.get()); - event.accept(AntarchyNeoforgeItems.CORNBREAD.get()); - event.accept(AntarchyNeoforgeItems.POPCORN.get()); - event.accept(AntarchyNeoforgeItems.RAW_CORNDOG.get()); - event.accept(AntarchyNeoforgeItems.COOKED_CORNDOG.get()); - event.accept(AntarchyNeoforgeItems.RAW_VENISON.get()); - event.accept(AntarchyNeoforgeItems.COOKED_VENISON.get()); - event.accept(AntarchyNeoforgeItems.RAW_BUG_MEAT.get()); - event.accept(AntarchyNeoforgeItems.COOKED_BUG_MEAT.get()); - event.accept(AntarchyNeoforgeItems.BROODFRUIT.get()); - event.accept(AntarchyNeoforgeItems.CHEEP_ITEM.get()); - event.accept(AntarchyNeoforgeItems.ROOT_BEER.get()); - event.accept(AntarchyNeoforgeItems.RAINBOW_SUGAR.get()); - event.accept(AntarchyNeoforgeItems.BIG_BERTHA_BLADE.get()); - event.accept(AntarchyNeoforgeItems.BIG_BERTHA_HANDLE.get()); - event.accept(AntarchyNeoforgeItems.BIG_BERTHA_HILT.get()); - } - - if (event.getTabKey() == CreativeModeTabs.BUILDING_BLOCKS) { - event.accept(AntarchyNeoforgeItems.OURANWOOD_LOG_ITEM.get()); - event.accept(AntarchyNeoforgeItems.OURANWOOD_WOOD_ITEM.get()); - event.accept(AntarchyNeoforgeItems.MOSSY_OURANWOOD_LOG_ITEM.get()); - event.accept(AntarchyNeoforgeItems.MOSSY_OURANWOOD_WOOD_ITEM.get()); - event.accept(AntarchyNeoforgeItems.STRIPPED_OURANWOOD_LOG_ITEM.get()); - event.accept(AntarchyNeoforgeItems.STRIPPED_OURANWOOD_WOOD_ITEM.get()); - event.accept(AntarchyNeoforgeItems.OURANWOOD_PLANKS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.OURANWOOD_STAIRS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.OURANWOOD_SLAB_ITEM.get()); - event.accept(AntarchyNeoforgeItems.OURANWOOD_FENCE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.OURANWOOD_FENCE_GATE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.OURANWOOD_BOAT.get()); - event.accept(AntarchyNeoforgeItems.OURANWOOD_CHEST_BOAT.get()); - event.accept(AntarchyNeoforgeItems.OURANWOOD_DOOR_ITEM.get()); - event.accept(AntarchyNeoforgeItems.OURANWOOD_TRAPDOOR_ITEM.get()); - event.accept(AntarchyNeoforgeItems.OURANWOOD_PRESSURE_PLATE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.OURANWOOD_BUTTON_ITEM.get()); - event.accept(AntarchyNeoforgeItems.OURANWOOD_SIGN_ITEM.get()); - event.accept(AntarchyNeoforgeItems.OURANWOOD_HANGING_SIGN_ITEM.get()); - event.accept(AntarchyNeoforgeItems.PEACH_LOG_ITEM.get()); - event.accept(AntarchyNeoforgeItems.PEACH_WOOD_ITEM.get()); - event.accept(AntarchyNeoforgeItems.STRIPPED_PEACH_LOG_ITEM.get()); - event.accept(AntarchyNeoforgeItems.STRIPPED_PEACH_WOOD_ITEM.get()); - event.accept(AntarchyNeoforgeItems.PEACH_PLANKS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.PEACH_STAIRS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.PEACH_SLAB_ITEM.get()); - event.accept(AntarchyNeoforgeItems.PEACH_FENCE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.PEACH_FENCE_GATE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.PEACH_BOAT.get()); - event.accept(AntarchyNeoforgeItems.PEACH_CHEST_BOAT.get()); - event.accept(AntarchyNeoforgeItems.PEACH_DOOR_ITEM.get()); - event.accept(AntarchyNeoforgeItems.PEACH_TRAPDOOR_ITEM.get()); - event.accept(AntarchyNeoforgeItems.PEACH_PRESSURE_PLATE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.PEACH_BUTTON_ITEM.get()); - event.accept(AntarchyNeoforgeItems.PEACH_SIGN_ITEM.get()); - event.accept(AntarchyNeoforgeItems.PEACH_HANGING_SIGN_ITEM.get()); - event.accept(AntarchyNeoforgeItems.SHELLSTONE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.SHELLSTONE_STAIRS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.SHELLSTONE_SLAB_ITEM.get()); - event.accept(AntarchyNeoforgeItems.SHELLSTONE_WALL_ITEM.get()); - event.accept(AntarchyNeoforgeItems.POLISHED_SHELLSTONE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.POLISHED_SHELLSTONE_STAIRS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.POLISHED_SHELLSTONE_SLAB_ITEM.get()); - event.accept(AntarchyNeoforgeItems.POLISHED_SHELLSTONE_WALL_ITEM.get()); - event.accept(AntarchyNeoforgeItems.SHELLSTONE_BRICKS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.SHELLSTONE_BRICK_STAIRS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.SHELLSTONE_BRICK_SLAB_ITEM.get()); - event.accept(AntarchyNeoforgeItems.SHELLSTONE_BRICK_WALL_ITEM.get()); - event.accept(AntarchyNeoforgeItems.CHISELED_SHELLSTONE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.MOSSY_SHELLSTONE_BRICKS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.MOSSY_SHELLSTONE_BRICK_STAIRS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.MOSSY_SHELLSTONE_BRICK_SLAB_ITEM.get()); - event.accept(AntarchyNeoforgeItems.MOSSY_SHELLSTONE_BRICK_WALL_ITEM.get()); - event.accept(AntarchyNeoforgeItems.CRACKED_SHELLSTONE_BRICKS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.BLUSH_MOSS_BLOCK_ITEM.get()); - event.accept(AntarchyNeoforgeItems.BLUSH_MOSS_CARPET_ITEM.get()); - event.accept(AntarchyNeoforgeItems.LUMEN_FROGLIGHT_ITEM.get()); - event.accept(AntarchyNeoforgeItems.ROSEATE_FROGLIGHT_ITEM.get()); - event.accept(AntarchyNeoforgeItems.NYXITE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.NYXITE_STAIRS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.NYXITE_SLAB_ITEM.get()); - event.accept(AntarchyNeoforgeItems.NYXITE_WALL_ITEM.get()); - event.accept(AntarchyNeoforgeItems.POLISHED_NYXITE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.POLISHED_NYXITE_STAIRS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.POLISHED_NYXITE_SLAB_ITEM.get()); - event.accept(AntarchyNeoforgeItems.POLISHED_NYXITE_WALL_ITEM.get()); - event.accept(AntarchyNeoforgeItems.NYXITE_BRICKS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.NYXITE_BRICK_STAIRS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.NYXITE_BRICK_SLAB_ITEM.get()); - event.accept(AntarchyNeoforgeItems.NYXITE_BRICK_WALL_ITEM.get()); - event.accept(AntarchyNeoforgeItems.CHISELED_NYXITE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.PALE_NYXITE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.NYXITE_SPIKE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.POTENT_NYXITE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.ANTIMETAL_ITEM.get()); - event.accept(AntarchyNeoforgeItems.POLISHED_ANTIMETAL_ITEM.get()); - event.accept(AntarchyNeoforgeItems.ANTIMETAL_SCAFFOLDING_ITEM.get()); - event.accept(AntarchyNeoforgeItems.UMBRAL_MOSS_BLOCK_ITEM.get()); - event.accept(AntarchyNeoforgeItems.UMBRAL_MOSS_CARPET_ITEM.get()); - event.accept(AntarchyNeoforgeItems.DREAM_TORCH_ITEM.get()); - event.accept(AntarchyNeoforgeItems.DREAM_LANTERN_ITEM.get()); - event.accept(AntarchyNeoforgeItems.DREAM_CAMPFIRE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.DREAM_SAND_ITEM.get()); - event.accept(AntarchyNeoforgeItems.DREAM_SANDSTONE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.CHISELED_DREAM_SANDSTONE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.CUT_DREAM_SANDSTONE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.SMOOTH_DREAM_SANDSTONE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.DREAM_SANDSTONE_STAIRS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.DREAM_SANDSTONE_SLAB_ITEM.get()); - event.accept(AntarchyNeoforgeItems.DREAM_SANDSTONE_WALL_ITEM.get()); - event.accept(AntarchyNeoforgeItems.SMOOTH_DREAM_SANDSTONE_STAIRS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.SMOOTH_DREAM_SANDSTONE_SLAB_ITEM.get()); - event.accept(AntarchyNeoforgeItems.CUT_DREAM_SANDSTONE_SLAB_ITEM.get()); - event.accept(AntarchyNeoforgeItems.BUDDING_BLOOD_CRYSTAL_ITEM.get()); - event.accept(AntarchyNeoforgeItems.BLOOD_CRYSTAL_ITEM.get()); - event.accept(AntarchyNeoforgeItems.BLOOD_CRYSTAL_CRYSTAL_ITEM.get()); - event.accept(AntarchyNeoforgeItems.SMALL_BLOOD_CRYSTAL_BUD_ITEM.get()); - event.accept(AntarchyNeoforgeItems.MEDIUM_BLOOD_CRYSTAL_BUD_ITEM.get()); - event.accept(AntarchyNeoforgeItems.LARGE_BLOOD_CRYSTAL_BUD_ITEM.get()); - event.accept(AntarchyNeoforgeItems.MYRMITE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.BIOMITE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.BIOMITE_TURF_ITEM.get()); - event.accept(AntarchyNeoforgeItems.BIOWART_ITEM.get()); - event.accept(AntarchyNeoforgeItems.BIOWART_TENDRILS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.BROODSTONE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.POLISHED_BROODSTONE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.CHISELED_BROODSTONE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.BROODSTONE_BRICKS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.BROODSTONE_STAIRS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.BROODSTONE_SLAB_ITEM.get()); - event.accept(AntarchyNeoforgeItems.BROODSTONE_WALL_ITEM.get()); - event.accept(AntarchyNeoforgeItems.POLISHED_BROODSTONE_STAIRS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.POLISHED_BROODSTONE_SLAB_ITEM.get()); - event.accept(AntarchyNeoforgeItems.POLISHED_BROODSTONE_WALL_ITEM.get()); - event.accept(AntarchyNeoforgeItems.BROODSTONE_BRICK_STAIRS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.BROODSTONE_BRICK_SLAB_ITEM.get()); - event.accept(AntarchyNeoforgeItems.BROODSTONE_BRICK_WALL_ITEM.get()); - event.accept(AntarchyNeoforgeItems.MYRMITE_COAL_ORE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.BROODSTONE_URANIUM_ORE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.BROODSTONE_TITANIUM_ORE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.BILE_VEIN_ITEM.get()); - event.accept(AntarchyNeoforgeItems.CHITEN_BLOCK_ITEM.get()); - event.accept(AntarchyNeoforgeItems.CHITEN_SPIKE_ITEM.get()); - event.accept(AntarchyNeoforgeItems.AMBER_MOSS_BLOCK_ITEM.get()); - event.accept(AntarchyNeoforgeItems.AMBER_MOSS_CARPET_ITEM.get()); - event.accept(AntarchyNeoforgeItems.URANIUM_BLOCK_ITEM.get()); - event.accept(AntarchyNeoforgeItems.RAW_URANIUM_BLOCK_ITEM.get()); - event.accept(AntarchyNeoforgeItems.CUT_URANIUM_ITEM.get()); - event.accept(AntarchyNeoforgeItems.CUT_URANIUM_STAIRS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.CUT_URANIUM_SLAB_ITEM.get()); - event.accept(AntarchyNeoforgeItems.CHISELED_URANIUM_ITEM.get()); - event.accept(AntarchyNeoforgeItems.URANIUM_DOOR_ITEM.get()); - event.accept(AntarchyNeoforgeItems.URANIUM_TRAPDOOR_ITEM.get()); - event.accept(AntarchyNeoforgeItems.URANIUM_BARS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.URANIUM_BULB_ITEM.get()); - event.accept(AntarchyNeoforgeItems.TITANIUM_BLOCK_ITEM.get()); - event.accept(AntarchyNeoforgeItems.RAW_TITANIUM_BLOCK_ITEM.get()); - event.accept(AntarchyNeoforgeItems.CUT_TITANIUM_ITEM.get()); - event.accept(AntarchyNeoforgeItems.CUT_TITANIUM_STAIRS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.CUT_TITANIUM_SLAB_ITEM.get()); - event.accept(AntarchyNeoforgeItems.CHISELED_TITANIUM_ITEM.get()); - event.accept(AntarchyNeoforgeItems.TITANIUM_DOOR_ITEM.get()); - event.accept(AntarchyNeoforgeItems.TITANIUM_TRAPDOOR_ITEM.get()); - event.accept(AntarchyNeoforgeItems.TITANIUM_BARS_ITEM.get()); - event.accept(AntarchyNeoforgeItems.TITANIUM_BULB_ITEM.get()); - } - - if (event.getTabKey() == CreativeModeTabs.COMBAT) { - event.accept(AntarchyNeoforgeItems.BATTLE_AXE.get()); - event.accept(AntarchyNeoforgeItems.BIG_BERTHA.get()); - event.accept(AntarchyNeoforgeItems.BASILISK_DAGGER.get()); - event.accept(UltimateGearHelper.createUltimateArmorStack(AntarchyNeoforgeItems.ULTIMATE_HELMET.get(), event.getParameters().holders())); - event.accept(UltimateGearHelper.createUltimateArmorStack(AntarchyNeoforgeItems.ULTIMATE_CHESTPLATE.get(), event.getParameters().holders())); - event.accept(UltimateGearHelper.createUltimateArmorStack(AntarchyNeoforgeItems.ULTIMATE_LEGGINGS.get(), event.getParameters().holders())); - event.accept(UltimateGearHelper.createUltimateArmorStack(AntarchyNeoforgeItems.ULTIMATE_BOOTS.get(), event.getParameters().holders())); - event.accept(AntarchyNeoforgeItems.ULTIMATE_SWORD.get()); - event.accept(UltimateGearHelper.createUltimateBowStack(AntarchyNeoforgeItems.ULTIMATE_BOW.get(), event.getParameters().holders())); - event.accept(AntarchyNeoforgeItems.ULTIMATE_CROSSBOW.get()); - event.accept(AntarchyNeoforgeItems.SQUIDZOOKA.get()); - event.accept(AntarchyNeoforgeItems.RPO_LAUNCHER.get()); - event.accept(AntarchyNeoforgeItems.KRAKENS_GRASP.get()); - event.accept(AntarchyNeoforgeItems.SHRINK_RAY.get()); - event.accept(AntarchyNeoforgeItems.GROWTH_RAY.get()); - event.accept(AntarchyNeoforgeItems.GRAVITY_GUN.get()); - event.accept(AntarchyNeoforgeItems.WATER_CANNON.get()); - event.accept(AntarchyNeoforgeItems.ATTITUDE_ADJUSTER.get()); - event.accept(AntarchyNeoforgeItems.LUCID_PEARL.get()); - event.accept(AntarchyNeoforgeItems.PRIMORDIAL_HELMET.get()); - event.accept(AntarchyNeoforgeItems.PRIMORDIAL_CHESTPLATE.get()); - event.accept(AntarchyNeoforgeItems.PRIMORDIAL_LEGGINGS.get()); - event.accept(AntarchyNeoforgeItems.PRIMORDIAL_BOOTS.get()); - event.accept(AntarchyNeoforgeItems.NIGHTMARE_HELMET.get()); - event.accept(AntarchyNeoforgeItems.NIGHTMARE_CHESTPLATE.get()); - event.accept(AntarchyNeoforgeItems.NIGHTMARE_LEGGINGS.get()); - event.accept(AntarchyNeoforgeItems.NIGHTMARE_BOOTS.get()); - event.accept(AntarchyNeoforgeItems.NIGHTMARE_SWORD.get()); - event.accept(AntarchyNeoforgeItems.BLOOD_CRYSTAL_KATANA.get()); - event.accept(AntarchyNeoforgeItems.BLOOD_CRYSTAL_HELMET.get()); - event.accept(AntarchyNeoforgeItems.BLOOD_CRYSTAL_CHESTPLATE.get()); - event.accept(AntarchyNeoforgeItems.BLOOD_CRYSTAL_LEGGINGS.get()); - event.accept(AntarchyNeoforgeItems.BLOOD_CRYSTAL_BOOTS.get()); - event.accept(AntarchyNeoforgeItems.MOGGLES.get()); - event.accept(AntarchyNeoforgeItems.SCORPION_WHIP.get()); - event.accept(AntarchyNeoforgeItems.FALLEN_KING_CROWN.get()); - event.accept(AntarchyNeoforgeItems.BRUTALFLY_ELYTRA.get()); - event.accept(AntarchyNeoforgeItems.JUMPY_BOOTS.get()); - event.accept(PotionContents.createItemStack(Items.POTION, AntarchyNeoforgeMisc.SHRINKING)); - event.accept(PotionContents.createItemStack(Items.POTION, AntarchyNeoforgeMisc.STRONG_SHRINKING)); - event.accept(PotionContents.createItemStack(Items.POTION, AntarchyNeoforgeMisc.EXTREME_SHRINKING)); - event.accept(PotionContents.createItemStack(Items.POTION, AntarchyNeoforgeMisc.PARALYSIS)); - event.accept(PotionContents.createItemStack(Items.POTION, AntarchyNeoforgeMisc.LONG_PARALYSIS)); - event.accept(PotionContents.createItemStack(Items.POTION, AntarchyNeoforgeMisc.STINKY_POTION)); - event.accept(PotionContents.createItemStack(Items.POTION, AntarchyNeoforgeMisc.LONG_STINKY)); - event.accept(PotionContents.createItemStack(Items.POTION, AntarchyNeoforgeMisc.HASTE)); - event.accept(PotionContents.createItemStack(Items.POTION, AntarchyNeoforgeMisc.STRONG_HASTE)); - event.accept(PotionContents.createItemStack(Items.POTION, AntarchyNeoforgeMisc.GROWING)); - event.accept(PotionContents.createItemStack(Items.POTION, AntarchyNeoforgeMisc.STRONG_GROWING)); - event.accept(PotionContents.createItemStack(Items.POTION, AntarchyNeoforgeMisc.EXTREME_GROWING)); - } - } - - private static int creativeTabGroup(net.minecraft.world.item.Item item) { - return CreativeTabOrder.group(item); - } - - private static int creativeTabSubOrder(net.minecraft.world.item.Item item) { - return CreativeTabOrder.subOrder(item); + @Override + public void insertAfter(net.minecraft.world.level.ItemLike anchor, net.minecraft.world.level.ItemLike item) { + event.insertAfter(new ItemStack(anchor), new ItemStack(item), CreativeModeTab.TabVisibility.PARENT_AND_SEARCH_TABS); + } + }); } } 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 d49f8d61..65b1abd2 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 @@ -287,10 +287,12 @@ public final class AntarchyNeoforgeItems { public static final DeferredItem CUT_DREAM_SANDSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CUT_DREAM_SANDSTONE_SLAB); public static final DeferredItem DEAD_STAR_CORAL_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DEAD_STAR_CORAL_BLOCK); public static final DeferredItem DEAD_STAR_CORAL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DEAD_STAR_CORAL); - public static final DeferredItem DEAD_STAR_CORAL_FAN_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DEAD_STAR_CORAL_FAN); + public static final DeferredItem DEAD_STAR_CORAL_FAN_ITEM = ITEMS.register("dead_star_coral_fan", + () -> new StandingAndWallBlockItem(AntarchyNeoforgeBlocks.DEAD_STAR_CORAL_FAN.get(), AntarchyNeoforgeBlocks.DEAD_STAR_CORAL_WALL_FAN.get(), new Item.Properties(), net.minecraft.core.Direction.UP)); public static final DeferredItem STAR_CORAL_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.STAR_CORAL_BLOCK); public static final DeferredItem STAR_CORAL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.STAR_CORAL); - public static final DeferredItem STAR_CORAL_FAN_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.STAR_CORAL_FAN); + public static final DeferredItem STAR_CORAL_FAN_ITEM = ITEMS.register("star_coral_fan", + () -> new StandingAndWallBlockItem(AntarchyNeoforgeBlocks.STAR_CORAL_FAN.get(), AntarchyNeoforgeBlocks.STAR_CORAL_WALL_FAN.get(), new Item.Properties(), net.minecraft.core.Direction.UP)); public static final DeferredItem DUCT_TAPE_ITEM = ITEMS.register("duct_tape", () -> new DuctTapeBlockItem(AntarchyNeoforgeBlocks.DUCT_TAPE.get(), new Item.Properties().stacksTo(1))); public static final DeferredItem INFESTED_ROOTED_DIRT_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.INFESTED_ROOTED_DIRT); @@ -419,18 +421,20 @@ public final class AntarchyNeoforgeItems { AntarchySettings.bloodCrystalKatanaAttackDamage(), -2.2F )); - public static final DeferredItem MANTIS_CLAW = ITEMS.registerSimpleItem("mantis_claw", new Item.Properties().rarity(Rarity.UNCOMMON)); + public static final DeferredItem MANTIS_CLAW = ITEMS.register("mantis_claw", + () -> new MantisClawItem(Tiers.IRON, new Item.Properties().stacksTo(1).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))); public static final DeferredItem QUEEN_SCALE = ITEMS.register("queen_scale", () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.RARE))); public static final DeferredItem CHITEN = ITEMS.registerSimpleItem("chiten", new Item.Properties().rarity(Rarity.UNCOMMON)); - public static final DeferredItem JERRY_NUCLEUS = ITEMS.registerSimpleItem("jerry_nucleus", new Item.Properties().rarity(Rarity.UNCOMMON) - .food(new FoodProperties.Builder() - .nutrition(2) - .saturationModifier(0.1F) - .build())); + public static final DeferredItem JERRY_NUCLEUS = ITEMS.register("jerry_nucleus", + () -> new com.craisinlord.antarchy.content.item.JerryNucleusItem(new Item.Properties().rarity(Rarity.UNCOMMON) + .food(new FoodProperties.Builder() + .nutrition(2) + .saturationModifier(0.1F) + .build()))); public static final DeferredItem CARAPACE = ITEMS.registerSimpleItem("carapace", new Item.Properties().rarity(Rarity.UNCOMMON)); public static final DeferredItem STINK_BUG = ITEMS.registerSimpleItem("stink_bug", new Item.Properties().rarity(Rarity.UNCOMMON)); public static final DeferredItem JUMPY_BUG_LEG = ITEMS.registerSimpleItem("jumpy_bug_leg", new Item.Properties().rarity(Rarity.UNCOMMON)); diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java index ddd30c69..77cd39fa 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java @@ -10,6 +10,7 @@ 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.recipe.AmericanizeRecipe; import com.craisinlord.antarchy.content.worldgen.ants.BrownAntNestFeature; import com.craisinlord.antarchy.content.worldgen.ants.RainbowAntNestFeature; import com.craisinlord.antarchy.content.worldgen.ants.RedAntNestFeature; @@ -29,7 +30,6 @@ import com.craisinlord.antarchy.neoforge.worldgen.CornPatchFeature; import com.craisinlord.antarchy.neoforge.worldgen.LumenLilyPadFeature; import com.craisinlord.antarchy.content.worldgen.thoraxis.*; import com.craisinlord.antarchy.neoforge.content.fluid.AntiwaterFluid; -import com.craisinlord.antarchy.neoforge.content.fluid.AntiwaterFluidType; import com.mojang.serialization.MapCodec; import net.minecraft.advancements.critereon.EntitySubPredicate; import net.minecraft.core.particles.ParticleType; @@ -50,13 +50,11 @@ import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConf import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration; import net.minecraft.world.level.material.Fluid; import net.neoforged.bus.api.IEventBus; -import net.neoforged.neoforge.common.SoundActions; import net.neoforged.neoforge.fluids.BaseFlowingFluid; import net.neoforged.neoforge.fluids.FluidType; import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredRegister; import net.neoforged.neoforge.registries.NeoForgeRegistries; -import net.minecraft.sounds.SoundEvents; import java.util.function.Function; @@ -107,8 +105,8 @@ public final class AntarchyNeoforgeMisc { .persistent(com.mojang.serialization.Codec.INT) .networkSynchronized(net.minecraft.network.codec.ByteBufCodecs.INT) .build()); - public static final DeferredHolder, net.minecraft.world.item.crafting.RecipeSerializer> AMERICANIZE_SERIALIZER = - RECIPE_SERIALIZERS.register("americanize", () -> com.craisinlord.antarchy.content.AmericanizeRecipe.SERIALIZER); + public static final DeferredHolder, net.minecraft.world.item.crafting.RecipeSerializer> AMERICANIZE_SERIALIZER = + RECIPE_SERIALIZERS.register("americanize", () -> AmericanizeRecipe.SERIALIZER); public static final DeferredHolder DOUBLE_DAMAGE_CHANCE = ATTRIBUTES.register( "double_damage_chance", diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSounds.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSounds.java index 6614e6c6..2ac56120 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSounds.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSounds.java @@ -161,6 +161,14 @@ public final class AntarchyNeoforgeSounds { public static final DeferredHolder SPIT_BUG_HURT = registerSoundEvent("spit_bug_hurt"); public static final DeferredHolder SPIT_BUG_SPIT = registerSoundEvent("spit_bug_spit"); public static final DeferredHolder BRUTALFLY_SPIT = registerSoundEvent("brutalfly_spit"); + public static final DeferredHolder JERRY_YOUNG_IDLE = registerSoundEvent("jerry_young_idle"); + public static final DeferredHolder JERRY_YOUNG_HURT = registerSoundEvent("jerry_young_hurt"); + public static final DeferredHolder JERRY_YOUNG_DEATH = registerSoundEvent("jerry_young_death"); + public static final DeferredHolder JERRY_YOUNG_ATTACK = registerSoundEvent("jerry_young_attack"); + public static final DeferredHolder JERRY_ADULT_IDLE = registerSoundEvent("jerry_adult_idle"); + public static final DeferredHolder JERRY_ADULT_HURT = registerSoundEvent("jerry_adult_hurt"); + public static final DeferredHolder JERRY_ADULT_DEATH = registerSoundEvent("jerry_adult_death"); + public static final DeferredHolder JERRY_ADULT_ATTACK = registerSoundEvent("jerry_adult_attack"); public static final DeferredHolder DUCT_TAPE_USE = registerSoundEvent("duct_tape_use"); public static final DeferredHolder POTENT_NYXITE_HYPNOTIC_GAS = registerSoundEvent("potent_nyxite_hypnotic_gas"); public static final DeferredHolder POTENT_NYXITE_GEYSER_ERUPTION_START = registerSoundEvent("potent_nyxite_geyser_eruption_start"); diff --git a/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/star_coral_in_oceans.json b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/star_coral_in_oceans.json deleted file mode 100644 index 281f4a35..00000000 --- a/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/star_coral_in_oceans.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "type": "neoforge:add_features", - "biomes": "#antarchy:has_star_coral", - "features": ["antarchy:star_coral_patch"], - "step": "vegetal_decoration" -}