Added first VERY rough draft of jumpy bug, creeping horror, lurking terror

This commit is contained in:
craisinlord committed 2026-06-24 23:03:09 -05:00
1 parent 70e4479f19
commit fb8fd3c927
112 files changed
+16339 -8

No files matched your search

@@ -74,6 +74,11 @@ public final class AntarchyConfigModuleNeoforge {
AntarchySettings.setBomberExplosionDamage(AntarchyMobsConfig.bomberExplosionDamage());
AntarchySettings.setBomberExplosionRadius(AntarchyMobsConfig.bomberExplosionRadius());
AntarchySettings.setJumpyBugHealth(AntarchyMobsConfig.jumpyBugHealth());
AntarchySettings.setJumpyBugPounceDamage(AntarchyMobsConfig.jumpyBugPounceDamage());
AntarchySettings.setJumpyBugLatchDamage(AntarchyMobsConfig.jumpyBugLatchDamage());
AntarchySettings.setJumpyBugCamouflageAlpha(AntarchyMobsConfig.jumpyBugCamouflageAlpha());
AntarchySettings.setKrakenHealth(AntarchyMobsConfig.krakenHealth());
AntarchySettings.setKrakenAttackDamage(AntarchyMobsConfig.krakenAttackDamage());
AntarchySettings.setKrakenProjectileDamageTakenMultiplier(AntarchyMobsConfig.krakenProjectileDamageTakenMultiplier());
@@ -150,11 +155,17 @@ public final class AntarchyConfigModuleNeoforge {
AntarchySettings.setToreterrorSpinDamage(AntarchyMobsConfig.toreterrorSpinDamage());
AntarchySettings.setToreterrorSpinKnockback(AntarchyMobsConfig.toreterrorSpinKnockback());
AntarchySettings.setToreterrorRangedWaterBombChance(AntarchyMobsConfig.toreterrorRangedWaterBombChance());
AntarchySettings.setToreterrorProjectileDamageMultiplier(AntarchyMobsConfig.toreterrorProjectileDamageMultiplier());
AntarchySettings.setWaterBombDamage(AntarchyMobsConfig.waterBombDamage());
AntarchySettings.setWaterBombLifetimeTicks(AntarchyMobsConfig.waterBombLifetimeTicks());
AntarchySettings.setWaterBombGravity(AntarchyMobsConfig.waterBombGravity());
AntarchySettings.setWaterBombKnockback(AntarchyMobsConfig.waterBombKnockback());
AntarchySettings.setWaterCannonCooldownSeconds(AntarchyMobsConfig.waterCannonCooldownSeconds());
AntarchySettings.setCreepingHorrorHealth(AntarchyMobsConfig.creepingHorrorHealth());
AntarchySettings.setCreepingHorrorAttackDamage(AntarchyMobsConfig.creepingHorrorAttackDamage());
AntarchySettings.setLurkingTerrorHealth(AntarchyMobsConfig.lurkingTerrorHealth());
AntarchySettings.setLurkingTerrorAttackDamage(AntarchyMobsConfig.lurkingTerrorAttackDamage());
}
private static void bakeToolsConfig() {
@@ -57,6 +57,14 @@ public final class AntarchyMobsConfig {
private static final ModConfigSpec.DoubleValue BOMBER_EXPLOSION_RADIUS;
// Jumpy Bug
private static final ModConfigSpec.DoubleValue JUMPY_BUG_HEALTH;
private static final ModConfigSpec.DoubleValue JUMPY_BUG_POUNCE_DAMAGE;
private static final ModConfigSpec.DoubleValue JUMPY_BUG_LATCH_DAMAGE;
private static final ModConfigSpec.DoubleValue JUMPY_BUG_CAMOUFLAGE_ALPHA;
// Kraken
private static final ModConfigSpec.DoubleValue KRAKEN_HEALTH;
@@ -154,6 +162,7 @@ public final class AntarchyMobsConfig {
private static final ModConfigSpec.DoubleValue TORETERROR_SPIN_DAMAGE;
private static final ModConfigSpec.DoubleValue TORETERROR_SPIN_KNOCKBACK;
private static final ModConfigSpec.DoubleValue TORETERROR_RANGED_WATER_BOMB_CHANCE;
private static final ModConfigSpec.DoubleValue TORETERROR_PROJECTILE_DAMAGE_MULTIPLIER;
private static final ModConfigSpec.DoubleValue WATER_BOMB_DAMAGE;
private static final ModConfigSpec.IntValue WATER_BOMB_LIFETIME_TICKS;
private static final ModConfigSpec.DoubleValue WATER_BOMB_GRAVITY;
@@ -161,6 +170,18 @@ public final class AntarchyMobsConfig {
private static final ModConfigSpec.DoubleValue WATER_CANNON_COOLDOWN_SECONDS;
// Creeping Horror
private static final ModConfigSpec.DoubleValue CREEPING_HORROR_HEALTH;
private static final ModConfigSpec.DoubleValue CREEPING_HORROR_ATTACK_DAMAGE;
// Lurking Terror
private static final ModConfigSpec.DoubleValue LURKING_TERROR_HEALTH;
private static final ModConfigSpec.DoubleValue LURKING_TERROR_ATTACK_DAMAGE;
// Lucid
private static final ModConfigSpec.DoubleValue LUCID_ATTACK_RANGE;
@@ -288,6 +309,16 @@ public final class AntarchyMobsConfig {
b.pop();
// Jumpy Bug
b.push("jumpyBug");
JUMPY_BUG_HEALTH = b.comment("Base max health.").defineInRange("health", 12.0D, 1.0D, 32768.0D);
JUMPY_BUG_POUNCE_DAMAGE = b.comment("Damage dealt on a successful pounce latch.").defineInRange("pounceDamage", 2.0D, 0.0D, 1024.0D);
JUMPY_BUG_LATCH_DAMAGE = b.comment("Damage dealt per bite while latched.").defineInRange("latchDamage", 1.0D, 0.0D, 1024.0D);
JUMPY_BUG_CAMOUFLAGE_ALPHA = b.comment("Renderer alpha while camouflaged.").defineInRange("camouflageAlpha", 0.18D, 0.01D, 1.0D);
b.pop();
// Kraken
b.push("kraken");
@@ -432,6 +463,16 @@ public final class AntarchyMobsConfig {
b.pop(); // dread
b.push("creepingHorror");
CREEPING_HORROR_HEALTH = b.comment("Base max health.").defineInRange("health", 15.0D, 1.0D, 32768.0D);
CREEPING_HORROR_ATTACK_DAMAGE = b.comment("Base attack damage.").defineInRange("attackDamage", 6.0D, 0.0D, 1024.0D);
b.pop();
b.push("lurkingTerror");
LURKING_TERROR_HEALTH = b.comment("Base max health.").defineInRange("health", 15.0D, 1.0D, 32768.0D);
LURKING_TERROR_ATTACK_DAMAGE = b.comment("Base attack damage.").defineInRange("attackDamage", 6.0D, 0.0D, 1024.0D);
b.pop();
b.push("toreterror");
TORETERROR_HEALTH = b.comment("Base max health.").defineInRange("health", 300.0D, 1.0D, 32768.0D);
TORETERROR_JUMP_ATTACK_DAMAGE = b.comment("Damage dealt by the jump shockwave.").defineInRange("jumpAttackDamage", 14.0D, 0.0D, 1024.0D);
@@ -439,6 +480,7 @@ public final class AntarchyMobsConfig {
TORETERROR_SPIN_DAMAGE = b.comment("Damage per spin-attack tick.").defineInRange("spinDamage", 8.0D, 0.0D, 1024.0D);
TORETERROR_SPIN_KNOCKBACK = b.comment("Knockback strength of the spin attack.").defineInRange("spinKnockback", 1.5D, 0.0D, 10.0D);
TORETERROR_RANGED_WATER_BOMB_CHANCE = b.comment("Chance (0.0-1.0) the ranged attack fires a Water Bomb instead of Bombers.").defineInRange("rangedWaterBombChance", 0.5D, 0.0D, 1.0D);
TORETERROR_PROJECTILE_DAMAGE_MULTIPLIER = b.comment("Damage multiplier applied to projectile hits on the Toreterror (0.5 = half damage).").defineInRange("projectileDamageMultiplier", 0.5D, 0.0D, 1.0D);
WATER_BOMB_DAMAGE = b.comment("Damage dealt by a Water Bomb hit.").defineInRange("waterBombDamage", 6.0D, 0.0D, 1024.0D);
WATER_BOMB_LIFETIME_TICKS = b.comment("Ticks before a Water Bomb despawns.").defineInRange("waterBombLifetimeTicks", 120, 1, 6000);
WATER_BOMB_GRAVITY = b.comment("Gravity applied to Water Bombs (higher = steeper arc).").defineInRange("waterBombGravity", 0.12D, 0.0D, 2.0D);
@@ -494,6 +536,11 @@ public final class AntarchyMobsConfig {
static double bomberExplosionDamage() { return BOMBER_EXPLOSION_DAMAGE.get(); }
static double bomberExplosionRadius() { return BOMBER_EXPLOSION_RADIUS.get(); }
static double jumpyBugHealth() { return JUMPY_BUG_HEALTH.get(); }
static double jumpyBugPounceDamage() { return JUMPY_BUG_POUNCE_DAMAGE.get(); }
static double jumpyBugLatchDamage() { return JUMPY_BUG_LATCH_DAMAGE.get(); }
static double jumpyBugCamouflageAlpha() { return JUMPY_BUG_CAMOUFLAGE_ALPHA.get(); }
static double krakenHealth() { return KRAKEN_HEALTH.get(); }
static double krakenAttackDamage() { return KRAKEN_ATTACK_DAMAGE.get(); }
static double krakenProjectileDamageTakenMultiplier() { return KRAKEN_PROJECTILE_DAMAGE_TAKEN_MULTIPLIER.get(); }
@@ -564,6 +611,7 @@ public final class AntarchyMobsConfig {
static double toreterrorSpinDamage() { return TORETERROR_SPIN_DAMAGE.get(); }
static double toreterrorSpinKnockback() { return TORETERROR_SPIN_KNOCKBACK.get(); }
static double toreterrorRangedWaterBombChance() { return TORETERROR_RANGED_WATER_BOMB_CHANCE.get(); }
static double toreterrorProjectileDamageMultiplier() { return TORETERROR_PROJECTILE_DAMAGE_MULTIPLIER.get(); }
static double waterBombDamage() { return WATER_BOMB_DAMAGE.get(); }
static int waterBombLifetimeTicks() { return WATER_BOMB_LIFETIME_TICKS.get(); }
static double waterBombGravity() { return WATER_BOMB_GRAVITY.get(); }
@@ -576,4 +624,9 @@ public final class AntarchyMobsConfig {
static boolean dreadHallucinationMobsEnabled() { return DREAD_HALLUCINATION_MOBS_ENABLED.get(); }
static double dreadHallucinationMobMinInterval() { return DREAD_HALLUCINATION_MOB_MIN_INTERVAL.get(); }
static double dreadHallucinationMobMaxInterval() { return DREAD_HALLUCINATION_MOB_MAX_INTERVAL.get(); }
static double creepingHorrorHealth() { return CREEPING_HORROR_HEALTH.get(); }
static double creepingHorrorAttackDamage() { return CREEPING_HORROR_ATTACK_DAMAGE.get(); }
static double lurkingTerrorHealth() { return LURKING_TERROR_HEALTH.get(); }
static double lurkingTerrorAttackDamage() { return LURKING_TERROR_ATTACK_DAMAGE.get(); }
}
@@ -183,6 +183,8 @@ public class AntarchyNeoforge {
AntarchyNeoforgeEntites.HUSH_PROJECTILE,
AntarchyNeoforgeEntites.TORETERROR,
AntarchyNeoforgeEntites.WATER_BOMB,
AntarchyNeoforgeEntites.CREEPING_HORROR,
AntarchyNeoforgeEntites.LURKING_TERROR,
() -> AntarchyNeoforgeBlocks.DUPLICATOR_LOG.get(),
() -> AntarchyNeoforgeBlocks.DUPLICATOR_SAPLING.get(),
() -> AntarchyNeoforgeBlocks.DUCT_TAPE.get(),
@@ -233,6 +235,8 @@ public class AntarchyNeoforge {
() -> AntarchyNeoforgeBlocks.PINK_MILKWEED.get(),
() -> AntarchyNeoforgeBlocks.TORCHFLOWER_BUSH.get(),
() -> AntarchyNeoforgeBlocks.BED_BUG_EGG.get(),
() -> AntarchyNeoforgeBlocks.CREEPING_HORROR_EGGS.get(),
() -> AntarchyNeoforgeBlocks.LURKING_TERROR_EGGS.get(),
() -> AntarchyNeoforgeBlocks.WASP_NEST.get(),
() -> AntarchyNeoforgeBlocks.HUSHWEED.get(),
() -> AntarchyNeoforgeBlocks.OURANWOOD_SQUIRREL_NEST.get(),
@@ -0,0 +1,20 @@
package com.craisinlord.antarchy.neoforge;
import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.content.command.CaterpillarCommand;
import com.craisinlord.antarchy.content.command.GravityCommand;
import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.common.EventBusSubscriber;
import net.neoforged.neoforge.event.RegisterCommandsEvent;
@EventBusSubscriber(modid = Antarchy.MODID)
public final class AntarchyNeoforgeEvents {
private AntarchyNeoforgeEvents() {
}
@SubscribeEvent
public static void onRegisterCommands(RegisterCommandsEvent event) {
GravityCommand.register(event.getDispatcher());
CaterpillarCommand.register(event.getDispatcher());
}
}
@@ -4,6 +4,8 @@ import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.content.client.hud.BloodglassHudRenderer;
import com.craisinlord.antarchy.content.client.particle.*;
import com.craisinlord.antarchy.content.client.renderer.*;
import com.craisinlord.antarchy.content.client.renderer.CreepingHorrorRenderer;
import com.craisinlord.antarchy.content.client.renderer.LurkingTerrorRenderer;
import com.craisinlord.antarchy.neoforge.AntarchyNeoForgeFluidTypes;
import com.craisinlord.antarchy.neoforge.registry.AntarchyNeoforgeBlocks;
import com.craisinlord.antarchy.neoforge.registry.AntarchyNeoforgeEntites;
@@ -104,6 +106,7 @@ public final class AntarchyNeoForgeClient {
event.registerEntityRenderer(AntarchyNeoforgeEntites.BED_BUG.get(), context -> withParalyzedGeoLayer(new BedBugRenderer(context)));
event.registerEntityRenderer(AntarchyNeoforgeEntites.WASP.get(), context -> withParalyzedGeoLayer(new WaspRenderer(context)));
event.registerEntityRenderer(AntarchyNeoforgeEntites.BOMBER.get(), context -> withParalyzedGeoLayer(new BomberRenderer(context)));
event.registerEntityRenderer(AntarchyNeoforgeEntites.JUMPY_BUG.get(), context -> withParalyzedGeoLayer(new JumpyBugRenderer(context)));
event.registerEntityRenderer(AntarchyNeoforgeEntites.BASILISK.get(), context -> withParalyzedGeoLayer(new BasiliskRenderer(context)));
event.registerEntityRenderer(AntarchyNeoforgeEntites.SHRINK_RAY_PROJECTILE.get(), SizeRayProjectileRenderer::new);
event.registerEntityRenderer(AntarchyNeoforgeEntites.GROWTH_RAY_PROJECTILE.get(), SizeRayProjectileRenderer::new);
@@ -116,6 +119,8 @@ public final class AntarchyNeoForgeClient {
event.registerEntityRenderer(AntarchyNeoforgeEntites.EMPEROR_SCORPION.get(), context -> withParalyzedGeoLayer(new EmperorScorpionRenderer(context)));
event.registerEntityRenderer(AntarchyNeoforgeEntites.TORETERROR.get(), ToreterrorRenderer::new);
event.registerEntityRenderer(AntarchyNeoforgeEntites.WATER_BOMB.get(), WaterBombRenderer::new);
event.registerEntityRenderer(AntarchyNeoforgeEntites.CREEPING_HORROR.get(), CreepingHorrorRenderer::new);
event.registerEntityRenderer(AntarchyNeoforgeEntites.LURKING_TERROR.get(), LurkingTerrorRenderer::new);
}
@SubscribeEvent
@@ -222,6 +227,10 @@ public final class AntarchyNeoForgeClient {
ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "triffid_goo"),
(guiGraphics, partialTick) -> TriffidGooHudRenderer.render(guiGraphics)
);
event.registerAboveAll(
ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "jumpy_boots"),
(guiGraphics, partialTick) -> JumpyBootsHudRenderer.render(guiGraphics)
);
}
@SubscribeEvent
@@ -0,0 +1,91 @@
package com.craisinlord.antarchy.neoforge.client;
import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.content.item.JumpyBootsHelper;
import com.craisinlord.antarchy.content.item.JumpyBootsItem;
import com.craisinlord.antarchy.content.network.JumpyBootsLaunchPayload;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import net.neoforged.api.distmarker.Dist;
import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.common.EventBusSubscriber;
import net.neoforged.neoforge.client.event.ClientTickEvent;
import net.neoforged.neoforge.network.PacketDistributor;
@EventBusSubscriber(modid = Antarchy.MODID, value = Dist.CLIENT)
public final class JumpyBootsClientHandler {
private static int chargeTicks = 0;
private static boolean wasCharging = false;
private static int primeWindowTicks = 0;
private static int storedChargeTicks = 0;
private JumpyBootsClientHandler() {
}
@SubscribeEvent
public static void onClientTick(ClientTickEvent.Post event) {
Minecraft mc = Minecraft.getInstance();
LocalPlayer player = mc.player;
if (player == null || mc.level == null || mc.screen != null) {
reset();
return;
}
if (!JumpyBootsItem.isWearingJumpyBoots(player)) {
reset();
return;
}
boolean onGround = player.onGround();
boolean sneaking = player.input.shiftKeyDown;
boolean jumpPressed = mc.options.keyJump.consumeClick();
if (primeWindowTicks > 0) {
primeWindowTicks--;
if (jumpPressed) {
PacketDistributor.sendToServer(new JumpyBootsLaunchPayload(storedChargeTicks, player.isSprinting()));
reset();
return;
}
if (primeWindowTicks <= 0) {
reset();
}
return;
}
if (!onGround) {
chargeTicks = 0;
wasCharging = false;
return;
}
if (sneaking) {
chargeTicks = Math.min(chargeTicks + 1, JumpyBootsHelper.CHARGE_TICKS_MAX);
wasCharging = true;
} else if (wasCharging && chargeTicks > 0) {
storedChargeTicks = chargeTicks;
primeWindowTicks = JumpyBootsHelper.PRIME_WINDOW_TICKS;
chargeTicks = 0;
wasCharging = false;
} else {
chargeTicks = 0;
wasCharging = false;
}
}
private static void reset() {
chargeTicks = 0;
wasCharging = false;
primeWindowTicks = 0;
storedChargeTicks = 0;
}
public static boolean isCharging() {
return chargeTicks > 0;
}
public static int getChargeTicks() {
return chargeTicks;
}
}
@@ -0,0 +1,49 @@
package com.craisinlord.antarchy.neoforge.client;
import com.craisinlord.antarchy.content.item.JumpyBootsHelper;
import com.craisinlord.antarchy.content.item.JumpyBootsItem;
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 JumpyBootsHudRenderer {
private static final ResourceLocation JUMP_BAR_BACKGROUND = ResourceLocation.withDefaultNamespace("textures/gui/sprites/hud/jump_bar_background.png");
private static final ResourceLocation JUMP_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 JumpyBootsHudRenderer() {
}
public static void render(GuiGraphics guiGraphics) {
Minecraft mc = Minecraft.getInstance();
Player player = mc.player;
if (player == null || mc.screen != null || player.isDeadOrDying()) {
return;
}
if (!JumpyBootsItem.isWearingJumpyBoots(player)) {
return;
}
if (!JumpyBootsClientHandler.isCharging()) {
return;
}
int width = mc.getWindow().getGuiScaledWidth();
int height = mc.getWindow().getGuiScaledHeight();
int x0 = width / 2 - BAR_WIDTH / 2;
int y0 = height - 29;
guiGraphics.blit(JUMP_BAR_BACKGROUND, x0, y0, 0, 0, BAR_WIDTH, BAR_HEIGHT, BAR_WIDTH, BAR_HEIGHT);
int chargeTicks = JumpyBootsClientHandler.getChargeTicks();
float chargeRatio = Mth.clamp(chargeTicks / (float) JumpyBootsHelper.CHARGE_TICKS_MAX, 0.0F, 1.0F);
int filledWidth = Mth.clamp((int) (chargeRatio * BAR_WIDTH), 0, BAR_WIDTH);
if (filledWidth > 0) {
guiGraphics.setColor(1.0F, 1.0F, 1.0F, 0.35F + chargeRatio * 0.65F);
guiGraphics.blit(JUMP_BAR_PROGRESS, x0, y0, 0, 0, filledWidth, BAR_HEIGHT, BAR_WIDTH, BAR_HEIGHT);
guiGraphics.setColor(1.0F, 1.0F, 1.0F, 1.0F);
}
}
}
@@ -0,0 +1,81 @@
package com.craisinlord.antarchy.neoforge.network;
import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.content.item.JumpyBootsHelper;
import com.craisinlord.antarchy.content.item.JumpyBootsItem;
import com.craisinlord.antarchy.content.network.JumpyBootsLaunchPayload;
import net.minecraft.network.protocol.game.ClientboundSetEntityMotionPacket;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.phys.Vec3;
import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.common.EventBusSubscriber;
import net.neoforged.neoforge.event.entity.living.LivingFallEvent;
import net.neoforged.neoforge.network.handling.IPayloadContext;
import net.neoforged.neoforge.network.registration.PayloadRegistrar;
@EventBusSubscriber(modid = Antarchy.MODID)
public final class JumpyBootsNetworking {
private JumpyBootsNetworking() {
}
public static void register(PayloadRegistrar registrar) {
registrar.playToServer(
JumpyBootsLaunchPayload.TYPE,
JumpyBootsLaunchPayload.STREAM_CODEC,
JumpyBootsNetworking::handleLaunch
);
}
private static void handleLaunch(JumpyBootsLaunchPayload payload, IPayloadContext context) {
context.enqueueWork(() -> {
if (!(context.player() instanceof ServerPlayer player)) return;
if (!JumpyBootsItem.isWearingJumpyBoots(player)) return;
if (player.isSpectator() || player.isPassenger()) return;
ItemStack boots = player.getItemBySlot(EquipmentSlot.FEET);
if (player.getCooldowns().isOnCooldown(boots.getItem())) return;
int clampedCharge = Math.min(payload.chargeTicks(), JumpyBootsHelper.CHARGE_TICKS_MAX);
if (clampedCharge <= 0) return;
float verticalBoost = JumpyBootsHelper.verticalBoostFor(clampedCharge);
Vec3 current = player.getDeltaMovement();
double newY = verticalBoost;
double newX = current.x;
double newZ = current.z;
if (payload.sprinting()) {
Vec3 look = player.getLookAngle();
newX += look.x * JumpyBootsHelper.SPRINT_FORWARD_BOOST;
newZ += look.z * JumpyBootsHelper.SPRINT_FORWARD_BOOST;
}
player.setDeltaMovement(newX, newY, newZ);
player.hasImpulse = true;
player.hurtMarked = true;
player.resetFallDistance();
player.connection.send(new ClientboundSetEntityMotionPacket(player));
player.level().playSound(null, player.blockPosition(), SoundEvents.SLIME_JUMP, SoundSource.PLAYERS, 1.0F, 0.6F + (clampedCharge / (float) JumpyBootsHelper.CHARGE_TICKS_MAX) * 0.6F);
player.getPersistentData().putLong(JumpyBootsHelper.FALL_PROTECTION_NBT_KEY, player.level().getGameTime() + JumpyBootsHelper.FALL_PROTECTION_TICKS);
player.getCooldowns().addCooldown(boots.getItem(), JumpyBootsHelper.COOLDOWN_TICKS);
});
}
@SubscribeEvent
public static void onLivingFall(LivingFallEvent event) {
if (!(event.getEntity() instanceof ServerPlayer player)) return;
if (!JumpyBootsItem.isWearingJumpyBoots(player)) return;
long protectionUntil = player.getPersistentData().getLong(JumpyBootsHelper.FALL_PROTECTION_NBT_KEY);
if (player.level().getGameTime() < protectionUntil) {
event.setDamageMultiplier(event.getDamageMultiplier() * 0.25F);
}
}
}
@@ -982,6 +982,7 @@ public final class AntarchyNeoForgeEvents {
event.getBuilder().addMix(Potions.AWKWARD, AntarchyNeoforgeItems.MOLEWORM_ITEM.get(), AntarchyNeoforgeMisc.HASTE);
event.getBuilder().addMix(AntarchyNeoforgeMisc.HASTE, Items.GLOWSTONE_DUST, AntarchyNeoforgeMisc.STRONG_HASTE);
event.getBuilder().addMix(Potions.AWKWARD, AntarchyNeoforgeItems.CLOUD_SHARK_FIN.get(), Potions.SLOW_FALLING);
event.getBuilder().addMix(Potions.AWKWARD, AntarchyNeoforgeItems.JUMPY_BUG_LEG.get(), Potions.LEAPING);
event.getBuilder().addMix(Potions.AWKWARD, AntarchyNeoforgeItems.CORNEA_EAR.get(), Potions.NIGHT_VISION);
event.getBuilder().addMix(Potions.AWKWARD, AntarchyNeoforgeItems.URANIUM_NUGGET.get(), AntarchyNeoforgeMisc.SHRINKING);
event.getBuilder().addMix(AntarchyNeoforgeMisc.SHRINKING, Items.GLOWSTONE_DUST, AntarchyNeoforgeMisc.STRONG_SHRINKING);
@@ -4,6 +4,8 @@ import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.AntarchyObjects;
import com.craisinlord.antarchy.content.block.*;
import com.craisinlord.antarchy.content.block.CreepingHorrorEggBlock;
import com.craisinlord.antarchy.content.block.LurkingTerrorEggBlock;
import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity;
import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity;
import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity;
@@ -200,6 +202,10 @@ public final class AntarchyNeoforgeBlocks {
.noOcclusion()
.noCollission()
.replaceable()));
public static final DeferredBlock<CreepingHorrorEggBlock> CREEPING_HORROR_EGGS = BLOCKS.register("creeping_horror_eggs",
() -> new CreepingHorrorEggBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TURTLE_EGG)));
public static final DeferredBlock<LurkingTerrorEggBlock> LURKING_TERROR_EGGS = BLOCKS.register("lurking_terror_eggs",
() -> new LurkingTerrorEggBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TURTLE_EGG)));
public static final DeferredBlock<WaspNestBlock> WASP_NEST = BLOCKS.register("wasp_nest",
() -> 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",
@@ -67,6 +67,7 @@ public class AntarchyNeoforgeCreativeModeTabs {
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.CLOUD_SHARK_SPAWN_EGG.get());
event.accept(AntarchyNeoforgeItems.KRAKEN_SPAWN_EGG.get());
event.accept(AntarchyNeoforgeItems.MISSILE_SQUID_SPAWN_EGG.get());
@@ -77,6 +78,8 @@ public class AntarchyNeoforgeCreativeModeTabs {
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());
}
if (event.getTabKey() == CreativeModeTabs.NATURAL_BLOCKS) {
@@ -92,6 +95,8 @@ public class AntarchyNeoforgeCreativeModeTabs {
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_EGGS_ITEM.get());
event.accept(AntarchyNeoforgeItems.LURKING_TERROR_EGGS_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());
@@ -135,6 +140,8 @@ public class AntarchyNeoforgeCreativeModeTabs {
event.accept(AntarchyNeoforgeItems.BLOOD_CRYSTAL_SHARD.get());
event.accept(AntarchyNeoforgeItems.BLOOD_CRYSTAL_APPLE.get());
event.accept(AntarchyNeoforgeItems.MANTIS_CLAW.get());
event.accept(AntarchyNeoforgeItems.KING_SCALE.get());
event.accept(AntarchyNeoforgeItems.QUEEN_SCALE.get());
event.accept(AntarchyNeoforgeItems.BRUTALFLY_WING.get());
event.accept(AntarchyNeoforgeItems.PRIMORDIAL_SCUTE.get());
event.accept(AntarchyNeoforgeItems.TRIFFID_GOO.get());
@@ -285,6 +292,7 @@ public class AntarchyNeoforgeCreativeModeTabs {
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));
@@ -384,7 +392,7 @@ public class AntarchyNeoforgeCreativeModeTabs {
case "ichor_bucket", "antiwater_bucket", "cloud_bucket" -> 16;
// 17 - Misc wearables / gadgets
case "moggles", "brutalfly_elytra", "fallen_king_crown" -> 17;
case "moggles", "brutalfly_elytra", "fallen_king_crown", "jumpy_boots" -> 17;
// 18 - Weapons
case "battle_axe", "basilisk_dagger", "squidzooka", "shrink_ray", "growth_ray",
@@ -415,7 +423,8 @@ public class AntarchyNeoforgeCreativeModeTabs {
"moleworm", "uranium_nugget", "titanium_nugget",
"uranium_ingot", "titanium_ingot", "lucid_eye",
"mantis_claw", "jumpy_bug_leg", "brutalfly_wing", "cornea_ear",
"primordial_scute", "triffid_goo", "vortex_eye" -> 22;
"primordial_scute", "triffid_goo", "vortex_eye",
"king_scale", "queen_scale" -> 22;
// 23 - Arrows (reserved for future arrow types)
@@ -15,6 +15,7 @@ import com.craisinlord.antarchy.content.entity.DrTrayaurusEntity;
import com.craisinlord.antarchy.content.entity.EasterBunnyEntity;
import com.craisinlord.antarchy.content.entity.EmperorScorpionEntity;
import com.craisinlord.antarchy.content.entity.HushProjectileEntity;
import com.craisinlord.antarchy.content.entity.JumpyBugEntity;
import com.craisinlord.antarchy.content.entity.MantisEntity;
import com.craisinlord.antarchy.content.entity.MissileSquidEntity;
import com.craisinlord.antarchy.content.entity.MolevoreEntity;
@@ -40,6 +41,8 @@ import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity;
import com.craisinlord.antarchy.content.entity.lucid.LucidEntity;
import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity;
import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity;
import com.craisinlord.antarchy.content.entity.CreepingHorrorEntity;
import com.craisinlord.antarchy.content.entity.LurkingTerrorEntity;
import com.craisinlord.antarchy.content.entity.ToreterrorEntity;
import com.craisinlord.antarchy.content.entity.WaterBombEntity;
import net.minecraft.core.registries.Registries;
@@ -117,6 +120,11 @@ public final class AntarchyNeoforgeEntites {
.sized(0.55F, 0.75F)
.clientTrackingRange(8)
.build("bomber"));
public static final DeferredHolder<EntityType<?>, EntityType<JumpyBugEntity>> JUMPY_BUG = ENTITY_TYPES.register("jumpy_bug",
() -> EntityType.Builder.of(JumpyBugEntity::new, MobCategory.MONSTER)
.sized(3.0F, 3.0F)
.clientTrackingRange(8)
.build("jumpy_bug"));
public static final DeferredHolder<EntityType<?>, EntityType<SizeRayProjectileEntity>> SHRINK_RAY_PROJECTILE = ENTITY_TYPES.register("shrink_ray_projectile",
() -> EntityType.Builder.<SizeRayProjectileEntity>of(SizeRayProjectileEntity::createShrink, MobCategory.MISC)
.sized(0.5F, 0.5F)
@@ -253,6 +261,16 @@ public final class AntarchyNeoforgeEntites {
.clientTrackingRange(8)
.updateInterval(1)
.build("water_bomb"));
public static final DeferredHolder<EntityType<?>, EntityType<CreepingHorrorEntity>> CREEPING_HORROR = ENTITY_TYPES.register("creeping_horror",
() -> EntityType.Builder.of(CreepingHorrorEntity::new, MobCategory.MONSTER)
.sized(0.7F, 0.5F)
.clientTrackingRange(10)
.build("creeping_horror"));
public static final DeferredHolder<EntityType<?>, EntityType<LurkingTerrorEntity>> LURKING_TERROR = ENTITY_TYPES.register("lurking_terror",
() -> EntityType.Builder.of(LurkingTerrorEntity::new, MobCategory.MONSTER)
.sized(0.8F, 0.6F)
.clientTrackingRange(10)
.build("lurking_terror"));
public static final DeferredHolder<EntityType<?>, EntityType<UpwardFallingBlockEntity>> UPWARD_FALLING_BLOCK = ENTITY_TYPES.register("upward_falling_block",
() -> EntityType.Builder.<UpwardFallingBlockEntity>of(
UpwardFallingBlockEntity::new, MobCategory.MISC)
@@ -2,6 +2,8 @@ package com.craisinlord.antarchy.neoforge.registry;
import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.entity.*;
import com.craisinlord.antarchy.content.entity.CreepingHorrorEntity;
import com.craisinlord.antarchy.content.entity.LurkingTerrorEntity;
import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity;
import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity;
import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity;
@@ -46,6 +48,7 @@ public class AntarchyNeoforgeEntityAttributes {
event.put(AntarchyNeoforgeEntites.BED_BUG.get(), BedBugEntity.createAttributes().build());
event.put(AntarchyNeoforgeEntites.WASP.get(), WaspEntity.createAttributes().build());
event.put(AntarchyNeoforgeEntites.BOMBER.get(), BomberEntity.createAttributes().build());
event.put(AntarchyNeoforgeEntites.JUMPY_BUG.get(), JumpyBugEntity.createAttributes().build());
event.put(AntarchyNeoforgeEntites.MANTIS.get(), MantisEntity.createAttributes().build());
event.put(AntarchyNeoforgeEntites.TRIFFID.get(), TriffidEntity.createAttributes().build());
event.put(AntarchyNeoforgeEntites.LUCID.get(), LucidEntity.createAttributes().build());
@@ -53,6 +56,8 @@ public class AntarchyNeoforgeEntityAttributes {
event.put(AntarchyNeoforgeEntites.BASILISK.get(), BasiliskEntity.createAttributes().build());
event.put(AntarchyNeoforgeEntites.EMPEROR_SCORPION.get(), EmperorScorpionEntity.createAttributes().build());
event.put(AntarchyNeoforgeEntites.TORETERROR.get(), ToreterrorEntity.createAttributes().build());
event.put(AntarchyNeoforgeEntites.CREEPING_HORROR.get(), CreepingHorrorEntity.createAttributes().build());
event.put(AntarchyNeoforgeEntites.LURKING_TERROR.get(), LurkingTerrorEntity.createAttributes().build());
AttributeSupplier redAntAttributes = buildAntAttributes(AntarchySettings.redAntHealth(), AntarchySettings.redAntMovementSpeed(), AntarchySettings.redAntAttackDamage()).build();
AttributeSupplier brownAntAttributes = buildAntAttributes(AntarchySettings.brownAntHealth(), AntarchySettings.brownAntMovementSpeed(), AntarchySettings.brownAntAttackDamage()).build();
@@ -14,6 +14,7 @@ import com.craisinlord.antarchy.content.item.BloodCrystalShardItem;
import com.craisinlord.antarchy.content.item.ultimate.*;
import com.craisinlord.antarchy.content.item.NightmareArmorItem;
import com.craisinlord.antarchy.content.item.PrimordialArmorItem;
import com.craisinlord.antarchy.content.item.JumpyBootsItem;
import com.craisinlord.antarchy.content.item.WaterCannonItem;
import com.craisinlord.antarchy.content.item.NightmareSwordItem;
import com.craisinlord.antarchy.content.item.LucidEyeItem;
@@ -117,6 +118,16 @@ public final class AntarchyNeoforgeItems {
3.0F,
0.1F
));
private static final DeferredHolder<ArmorMaterial, ArmorMaterial> JUMPY_BOOTS_ARMOR_MATERIAL = ARMOR_MATERIALS.register("jumpy_boots",
() -> new ArmorMaterial(
createJumpyBootsDefense(),
15,
SoundEvents.ARMOR_EQUIP_NETHERITE,
() -> Ingredient.of(Items.NETHERITE_BOOTS),
List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "jumpy_boots"))),
3.0F,
0.1F
));
private static final DeferredHolder<ArmorMaterial, ArmorMaterial> FALLEN_KING_CROWN_ARMOR_MATERIAL = ARMOR_MATERIALS.register("fallen_king_crown",
() -> new ArmorMaterial(
createFallenKingCrownDefense(),
@@ -259,6 +270,8 @@ public final class AntarchyNeoforgeItems {
public static final DeferredItem<net.minecraft.world.item.BlockItem> DREAM_LANTERN_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DREAM_LANTERN);
public static final DeferredItem<net.minecraft.world.item.BlockItem> DREAM_CAMPFIRE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DREAM_CAMPFIRE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> BED_BUG_EGG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BED_BUG_EGG);
public static final DeferredItem<net.minecraft.world.item.BlockItem> CREEPING_HORROR_EGGS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CREEPING_HORROR_EGGS);
public static final DeferredItem<net.minecraft.world.item.BlockItem> LURKING_TERROR_EGGS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.LURKING_TERROR_EGGS);
public static final DeferredItem<net.minecraft.world.item.BlockItem> WASP_NEST_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.WASP_NEST);
public static final DeferredItem<net.minecraft.world.item.BlockItem> HUSHWEED_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.HUSHWEED);
public static final DeferredItem<BucketItem> ICHOR_BUCKET = ITEMS.register("ichor_bucket",
@@ -294,8 +307,13 @@ public final class AntarchyNeoforgeItems {
-2.2F
));
public static final DeferredItem<Item> MANTIS_CLAW = ITEMS.registerSimpleItem("mantis_claw", new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<Item> JUMPY_BUG_LEG = ITEMS.register("jumpy_bug_leg",
() -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<Item> KING_SCALE = ITEMS.register("king_scale",
() -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.RARE)));
public static final DeferredItem<Item> QUEEN_SCALE = ITEMS.register("queen_scale",
() -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.RARE)));
public static final DeferredItem<Item> JUMPY_BUG_LEG = ITEMS.registerSimpleItem("jumpy_bug_leg", new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<JumpyBootsItem> JUMPY_BOOTS = ITEMS.register("jumpy_boots",
() -> new JumpyBootsItem(JUMPY_BOOTS_ARMOR_MATERIAL, new Item.Properties().stacksTo(1).rarity(Rarity.UNCOMMON).fireResistant().durability(ArmorItem.Type.BOOTS.getDurability(37))));
public static final DeferredItem<Item> BRUTALFLY_WING = ITEMS.registerSimpleItem("brutalfly_wing", new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<BrutalflyElytraItem> BRUTALFLY_ELYTRA = ITEMS.register("brutalfly_elytra",
() -> new BrutalflyElytraItem(new Item.Properties().rarity(Rarity.UNCOMMON).durability(480)));
@@ -495,6 +513,8 @@ public final class AntarchyNeoforgeItems {
() -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.WASP, 0x111111, 0xF1D800, new Item.Properties()));
public static final DeferredItem<DeferredSpawnEggItem> BOMBER_SPAWN_EGG = ITEMS.register("bomber_spawn_egg",
() -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.BOMBER, 0x7A7A7A, 0xB32020, new Item.Properties()));
public static final DeferredItem<DeferredSpawnEggItem> JUMPY_BUG_SPAWN_EGG = ITEMS.register("jumpy_bug_spawn_egg",
() -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.JUMPY_BUG, 0x111111, 0xFF7A00, new Item.Properties()));
public static final DeferredItem<DeferredSpawnEggItem> CLOUD_SHARK_SPAWN_EGG = ITEMS.register("cloud_shark_spawn_egg",
() -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.CLOUD_SHARK, 0xDDEAF4, 0x7F96A8, new Item.Properties()));
public static final DeferredItem<DeferredSpawnEggItem> KRAKEN_SPAWN_EGG = ITEMS.register("kraken_spawn_egg",
@@ -532,6 +552,10 @@ public final class AntarchyNeoforgeItems {
() -> new PrimordialArmorItem(PRIMORDIAL_ARMOR_MATERIAL, ArmorItem.Type.BOOTS, new Item.Properties().stacksTo(1).rarity(Rarity.RARE).fireResistant()));
public static final DeferredItem<DeferredSpawnEggItem> TORETERROR_SPAWN_EGG = ITEMS.register("toreterror_spawn_egg",
() -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.TORETERROR, 0x90EE90, 0x5C4033, new Item.Properties().rarity(Rarity.EPIC)));
public static final DeferredItem<DeferredSpawnEggItem> CREEPING_HORROR_SPAWN_EGG = ITEMS.register("creeping_horror_spawn_egg",
() -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.CREEPING_HORROR, 0x6B3A1F, 0x6B0000, new Item.Properties()));
public static final DeferredItem<DeferredSpawnEggItem> LURKING_TERROR_SPAWN_EGG = ITEMS.register("lurking_terror_spawn_egg",
() -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.LURKING_TERROR, 0x2D5A1B, 0x8B0000, new Item.Properties()));
private AntarchyNeoforgeItems() {}
@@ -632,4 +656,14 @@ public final class AntarchyNeoforgeItems {
defense.put(ArmorItem.Type.BODY, 2);
return defense;
}
private static EnumMap<ArmorItem.Type, Integer> createJumpyBootsDefense() {
EnumMap<ArmorItem.Type, Integer> defense = new EnumMap<>(ArmorItem.Type.class);
defense.put(ArmorItem.Type.BOOTS, 3);
defense.put(ArmorItem.Type.LEGGINGS, 0);
defense.put(ArmorItem.Type.CHESTPLATE, 0);
defense.put(ArmorItem.Type.HELMET, 0);
defense.put(ArmorItem.Type.BODY, 0);
return defense;
}
}
@@ -3,6 +3,7 @@ package com.craisinlord.antarchy.neoforge.registry;
import com.craisinlord.antarchy.content.network.BloodCrystalKatanaTrailPayload;
import com.craisinlord.antarchy.neoforge.network.AntarchyGravityNetworking;
import com.craisinlord.antarchy.neoforge.network.BrutalflyElytraNetworking;
import com.craisinlord.antarchy.neoforge.network.JumpyBootsNetworking;
import com.craisinlord.antarchy.neoforge.network.MultipartNetworking;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.neoforge.network.event.RegisterPayloadHandlersEvent;
@@ -18,6 +19,7 @@ public class AntarchyNeoforgePayloadHandlers {
var registrar = event.registrar("1");
AntarchyGravityNetworking.register(registrar);
BrutalflyElytraNetworking.register(registrar);
JumpyBootsNetworking.register(registrar);
registrar.playToClient(
com.craisinlord.antarchy.content.network.BloodglassStatePayload.TYPE,
com.craisinlord.antarchy.content.network.BloodglassStatePayload.STREAM_CODEC,
@@ -33,6 +33,7 @@ public class AntarchyNeoforgeSpawnPlacements {
event.register(AntarchyNeoforgeEntites.CLOUD_SHARK.get(), SpawnPlacementTypes.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, CloudSharkEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR);
event.register(AntarchyNeoforgeEntites.WASP.get(), SpawnPlacementTypes.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, WaspEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR);
event.register(AntarchyNeoforgeEntites.BOMBER.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, BomberEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR);
event.register(AntarchyNeoforgeEntites.JUMPY_BUG.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, JumpyBugEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR);
event.register(AntarchyNeoforgeEntites.KRAKEN.get(), SpawnPlacementTypes.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, KrakenEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR);
event.register(AntarchyNeoforgeEntites.MISSILE_SQUID.get(), SpawnPlacementTypes.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MissileSquidEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR);
event.register(AntarchyNeoforgeEntites.NIGHTMARE.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, NightmareEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR);