fix sign crash, no more holes in elythia, brutalfly cacoon perf improvements, shake hanlder perf fix, herc beetle improvements, new triffifd texture, new spit bug, new lurking terror

This commit is contained in:
craisinlord committed 2026-07-02 00:51:53 -05:00
1 parent 8cabdb33bf
commit c478e560f9
49 files changed
+906 -447

No files matched your search

@@ -258,6 +258,7 @@ public class AntarchyNeoforge {
() -> AntarchyNeoforgeBlocks.WASP_NEST.get(),
() -> AntarchyNeoforgeBlocks.HUSHWEED.get(),
() -> AntarchyNeoforgeBlocks.OURANWOOD_SQUIRREL_NEST.get(),
() -> AntarchyNeoforgeBlocks.BRUTALFLY_COCOON_SPAWNER.get(),
() -> AntarchyNeoforgeBlocks.ANT_NEST_BLOCK_ENTITY.get(),
() -> AntarchyNeoforgeBlocks.DREAM_CAMPFIRE_BLOCK_ENTITY.get(),
() -> AntarchyNeoforgeBlocks.WASP_NEST_BLOCK_ENTITY.get(),
@@ -336,14 +336,14 @@ public final class AntarchyToolsConfig {
"Base attack damage. Also the minimum damage at full health.",
"Formula: damage = baseDamage * (1 + missingHealthFraction * scalingFactor)"
)
.defineInRange("baseDamage", 30.0D, 0.0D, 1024.0D);
.defineInRange("baseDamage", 15.0D, 0.0D, 1024.0D);
NIGHTMARE_SWORD_ATTACK_SPEED = b.comment("Attack speed of the Nightmare Sword.").defineInRange("attackSpeed", -2.4D, -10.0D, 10.0D);
NIGHTMARE_SWORD_SCALING_FACTOR = b
.comment(
"How much damage scales with missing health.",
"At 1.0 and 0 HP remaining: damage doubles. At full health: always baseDamage."
)
.defineInRange("scalingFactor", 1.0D, 0.0D, 100.0D);
.defineInRange("scalingFactor", 1.5D, 0.0D, 100.0D);
b.pop();
b.push("fallenKingCrown");
@@ -1,12 +1,11 @@
package com.craisinlord.antarchy.neoforge.client;
import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.content.client.CameraShakeClientState;
import com.craisinlord.antarchy.content.client.HerculesBeetleImpactShakeClientState;
import com.craisinlord.antarchy.content.entity.ToreterrorEntity;
import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity;
import com.craisinlord.antarchy.content.item.BigBerthaItem;
import net.minecraft.client.Minecraft;
import net.minecraft.util.Mth;
import net.minecraft.world.phys.Vec3;
import net.neoforged.api.distmarker.Dist;
import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.common.EventBusSubscriber;
@@ -14,9 +13,7 @@ import net.neoforged.neoforge.client.event.ViewportEvent;
@EventBusSubscriber(modid = Antarchy.MODID, value = Dist.CLIENT)
public final class CameraShakeHandler {
private static final double MAX_SHAKE_RANGE = 48.0D;
private static final int TORETERROR_SHAKE_TICKS = 25;
private static final double NIGHTMARE_SHAKE_RANGE = 32.0D;
private CameraShakeHandler() {
}
@@ -24,36 +21,23 @@ public final class CameraShakeHandler {
@SubscribeEvent
public static void onComputeCameraAngles(ViewportEvent.ComputeCameraAngles event) {
Minecraft mc = Minecraft.getInstance();
if (mc.level == null || mc.player == null) return;
Vec3 cameraPos = event.getCamera().getPosition();
float shakeStrength = 0.0F;
for (ToreterrorEntity toreterror : mc.level.getEntitiesOfClass(
ToreterrorEntity.class,
mc.player.getBoundingBox().inflate(MAX_SHAKE_RANGE),
t -> t.isAlive() && t.isJumpShaking()
)) {
double distance = Math.sqrt(cameraPos.distanceToSqr(toreterror.position().add(0, toreterror.getBbHeight() * 0.5, 0)));
if (distance > MAX_SHAKE_RANGE) continue;
shakeStrength += (float) ((1.0D - distance / MAX_SHAKE_RANGE) * 1.0D);
if (mc.level == null || mc.player == null) {
CameraShakeClientState.clear();
return;
}
for (NightmareEntity nightmare : mc.level.getEntitiesOfClass(
NightmareEntity.class,
mc.player.getBoundingBox().inflate(NIGHTMARE_SHAKE_RANGE),
entity -> entity.isAlive() && entity.isRoaring()
)) {
double distance = Math.sqrt(cameraPos.distanceToSqr(nightmare.position().add(0.0D, nightmare.getBbHeight() * 0.5D, 0.0D)));
if (distance > NIGHTMARE_SHAKE_RANGE) continue;
shakeStrength += (float) ((1.0D - distance / NIGHTMARE_SHAKE_RANGE) * 1.35D);
}
float shakeStrength = CameraShakeClientState.getStrength(event.getCamera().getPosition());
int beetleShakeTicks = HerculesBeetleImpactShakeClientState.getTicks();
if (beetleShakeTicks > 0) {
shakeStrength += (float) beetleShakeTicks / TORETERROR_SHAKE_TICKS * 2.0F;
}
int bigBerthaShakeTicks = BigBerthaItem.clientShakeTicks;
if (bigBerthaShakeTicks > 0) {
shakeStrength += (float) bigBerthaShakeTicks / TORETERROR_SHAKE_TICKS * 2.0F;
}
if (shakeStrength <= 0.0F) return;
float time = (float) (mc.player.tickCount + event.getPartialTick());
@@ -1,52 +0,0 @@
package com.craisinlord.antarchy.neoforge.client;
import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity;
import net.minecraft.client.Minecraft;
import net.minecraft.util.Mth;
import net.minecraft.world.phys.Vec3;
import net.neoforged.api.distmarker.Dist;
import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.common.EventBusSubscriber;
import net.neoforged.neoforge.client.event.ViewportEvent;
@EventBusSubscriber(modid = Antarchy.MODID, value = Dist.CLIENT)
public final class NightmareCameraShakeHandler {
private static final double MAX_SHAKE_RANGE = 32.0D;
private NightmareCameraShakeHandler() {
}
@SubscribeEvent
public static void onComputeCameraAngles(ViewportEvent.ComputeCameraAngles event) {
Minecraft minecraft = Minecraft.getInstance();
if (minecraft.level == null || minecraft.player == null) {
return;
}
Vec3 cameraPos = event.getCamera().getPosition();
float shakeStrength = 0.0F;
for (NightmareEntity nightmare : minecraft.level.getEntitiesOfClass(
NightmareEntity.class,
minecraft.player.getBoundingBox().inflate(MAX_SHAKE_RANGE),
nightmare -> nightmare.isAlive() && nightmare.isRoaring()
)) {
double distance = Math.sqrt(cameraPos.distanceToSqr(nightmare.position().add(0.0D, nightmare.getBbHeight() * 0.5D, 0.0D)));
if (distance > MAX_SHAKE_RANGE) {
continue;
}
shakeStrength += (float) ((1.0D - distance / MAX_SHAKE_RANGE) * 1.35D);
}
if (shakeStrength <= 0.0F) {
return;
}
float time = (float) (minecraft.player.tickCount + event.getPartialTick());
event.setYaw(event.getYaw() + Mth.sin(time * 1.85F) * shakeStrength * 1.8F);
event.setPitch(event.getPitch() + Mth.cos(time * 2.15F) * shakeStrength * 1.45F);
event.setRoll(event.getRoll() + Mth.sin(time * 2.65F) * shakeStrength * 1.05F);
}
}
@@ -229,6 +229,8 @@ public final class AntarchyNeoforgeBlocks {
() -> new WaspNestBlock(AntarchyNeoforgeItems::waspNestBlockEntityType, BlockBehaviour.Properties.ofFullCopy(Blocks.BEE_NEST)));
public static final DeferredBlock<com.craisinlord.antarchy.content.block.OuranwoodSquirrelNestBlock> OURANWOOD_SQUIRREL_NEST = BLOCKS.register("ouranwood_squirrel_nest",
() -> new com.craisinlord.antarchy.content.block.OuranwoodSquirrelNestBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COARSE_DIRT).noLootTable()));
public static final DeferredBlock<com.craisinlord.antarchy.content.block.BrutalflyCocoonSpawnerBlock> BRUTALFLY_COCOON_SPAWNER = BLOCKS.register("brutalfly_cocoon_spawner",
() -> new com.craisinlord.antarchy.content.block.BrutalflyCocoonSpawnerBlock(BlockBehaviour.Properties.of().noCollission().instabreak().noLootTable()));
public static final DeferredBlock<HushweedBlock> HUSHWEED = BLOCKS.register("hushweed",
() -> new HushweedBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.AZALEA).noCollission().noOcclusion()));
public static final DeferredBlock<LiquidBlock> BILE_BLOCK = BLOCKS.register("bile",
@@ -516,11 +516,11 @@ public final class AntarchyNeoforgeItems {
public static final DeferredItem<DeferredSpawnEggItem> TERMITE_SPAWN_EGG = ITEMS.register("termite_spawn_egg",
() -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.TERMITE, 0xD4B96A, 0xFF6B1A, new Item.Properties()));
public static final DeferredItem<DeferredSpawnEggItem> MOLEWORM_SPAWN_EGG = ITEMS.register("moleworm_spawn_egg",
() -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.MOLEWORM, 0x7A6150, 0xD2B8A3, new Item.Properties()));
() -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.MOLEWORM, 0xB8B8B8, 0x8A623A, new Item.Properties()));
public static final DeferredItem<DeferredSpawnEggItem> MANTIS_SPAWN_EGG = ITEMS.register("mantis_spawn_egg",
() -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.MANTIS, 0xF8F8F2, 0x63B44A, new Item.Properties()));
public static final DeferredItem<DeferredSpawnEggItem> MOLEVORE_SPAWN_EGG = ITEMS.register("molevore_spawn_egg",
() -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.MOLEVORE, 0x3E2E24, 0xB67B4F, new Item.Properties().rarity(Rarity.UNCOMMON)));
() -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.MOLEVORE, 0x4A4A4A, 0x6B4A2B, new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<DeferredSpawnEggItem> TRIFFID_SPAWN_EGG = ITEMS.register("triffid_spawn_egg",
() -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.TRIFFID, 0x4C8F3A, 0xFF2FB3, new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<DeferredSpawnEggItem> APPLE_COW_SPAWN_EGG = ITEMS.register("apple_cow_spawn_egg",
@@ -1,6 +1,7 @@
package com.craisinlord.antarchy.neoforge.registry;
import com.craisinlord.antarchy.content.entity.*;
import net.minecraft.world.entity.animal.AbstractFish;
import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity;
import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity;
import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity;
@@ -51,5 +52,6 @@ public class AntarchyNeoforgeSpawnPlacements {
event.register(AntarchyNeoforgeEntites.CREEPING_HORROR.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, CreepingHorrorEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR);
event.register(AntarchyNeoforgeEntites.LURKING_TERROR.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, LurkingTerrorEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR);
event.register(AntarchyNeoforgeEntites.TERMITE.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.Animal::checkAnimalSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR);
event.register(AntarchyNeoforgeEntites.CHEEP.get(), SpawnPlacementTypes.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, AbstractFish::checkSurfaceWaterAnimalSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR);
}
}