added back rolly polly, fixed various issues, antiwater sponge behavior, expiremental settings disabled natively, farbic keybind conflict fix natively

This commit is contained in:
craisinlord committed 2026-07-19 02:11:55 -05:00
1 parent cc5ab10de7
commit e4b7b76cff
79 files changed
+952 -328

No files matched your search

@@ -180,6 +180,8 @@ public final class AntarchyConfigModuleFabric {
|| name.equals("glowingTorchflowers")
|| name.equals("glowVinesUnderLeaves")
|| name.equals("swingThroughGrassEnabled")
|| name.equals("fabricKeybindingConflictFixEnabled")
|| name.equals("experimentalSettingsPopupDisabled")
|| name.equals("entitySpecificFireOverlayEnabled")
|| name.equals("dreamSandEnabled")
|| name.startsWith("dreamSand")
@@ -299,7 +299,7 @@ public final class AntarchyFabric implements ModInitializer {
BiomeSelectors.tag(GOLDEN_APPLE_COW_SPAWN_BIOMES),
net.minecraft.world.entity.MobCategory.CREATURE,
AntarchyFabricEntities.GOLDEN_APPLE_COW.get(),
3, 1, 3
1, 1, 3
);
BiomeModifications.addSpawn(
BiomeSelectors.tag(FLYING_SQUIRREL_SPAWN_BIOMES),
@@ -269,7 +269,10 @@ public final class AntarchyFabricContent {
AntarchyFabricSounds.JUMPY_BUG_JUMP,
AntarchyFabricSounds.SPIT_BUG_HURT,
AntarchyFabricSounds.SPIT_BUG_SPIT,
AntarchyFabricSounds.BRUTALFLY_SPIT
AntarchyFabricSounds.BRUTALFLY_SPIT,
AntarchyFabricSounds.ROLLY_POLLY_WHEEL_MODE,
AntarchyFabricSounds.ROLLY_POLLY_NORMAL_MODE,
AntarchyFabricSounds.ROLLY_POLLY_ROLL
);
AntarchyObjects.setOctopusBomb(AntarchyFabricEntities.OCTOPUS_BOMB);
@@ -0,0 +1,59 @@
package com.craisinlord.antarchy.fabric;
import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.fabric.registry.AntarchyFabricItems;
import net.minecraft.core.Direction;
import net.minecraft.core.dispenser.BlockSource;
import net.minecraft.core.dispenser.DefaultDispenseItemBehavior;
import net.minecraft.core.dispenser.DispenseItemBehavior;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.MobSpawnType;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.SpawnEggItem;
import net.minecraft.world.level.block.DispenserBlock;
import net.minecraft.world.level.gameevent.GameEvent;
public final class AntarchyFabricDispenserBehaviors {
private static final DispenseItemBehavior SPAWN_EGG_BEHAVIOR = new DefaultDispenseItemBehavior() {
@Override
public ItemStack execute(BlockSource source, ItemStack stack) {
Direction direction = source.state().getValue(DispenserBlock.FACING);
EntityType<?> entityType = ((SpawnEggItem) stack.getItem()).getType(stack);
try {
entityType.spawn(source.level(), stack, null, source.pos().relative(direction), MobSpawnType.DISPENSER, direction != Direction.UP, false);
} catch (Exception exception) {
Antarchy.LOGGER.error("Error while dispensing spawn egg from dispenser at {}", source.pos(), exception);
return ItemStack.EMPTY;
}
stack.shrink(1);
source.level().gameEvent(null, GameEvent.ENTITY_PLACE, source.pos());
return stack;
}
};
private AntarchyFabricDispenserBehaviors() {
}
public static void register() {
registerSpawnEggs();
registerPotions();
}
private static void registerSpawnEggs() {
for (var holder : AntarchyFabricItems.ITEMS.getEntries()) {
Item item = holder.get();
if (item instanceof SpawnEggItem) {
DispenserBlock.registerBehavior(item, SPAWN_EGG_BEHAVIOR);
}
}
}
private static void registerPotions() {
DispenserBlock.registerProjectileBehavior(Items.SPLASH_POTION);
DispenserBlock.registerProjectileBehavior(Items.LINGERING_POTION);
}
}
@@ -25,6 +25,7 @@ import net.fabricmc.fabric.api.event.player.AttackEntityCallback;
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 net.minecraft.world.level.block.ComposterBlock;
import net.minecraft.world.level.block.DispenserBlock;
@@ -58,6 +59,9 @@ public final class AntarchyFabricEvents {
DispenserBlock.registerBehavior(AntarchyFabricItems.SQUIDZOOKA.get(), new SquidzookaDispenseBehavior());
DispenserBlock.registerBehavior(AntarchyFabricItems.RPO_LAUNCHER.get(), new RpoLauncherDispenseBehavior());
DispenserBlock.registerBehavior(AntarchyFabricItems.WATER_CANNON.get(), new WaterCannonDispenseBehavior());
DispenserBlock.registerBehavior(AntarchyFabricItems.SHRINK_RAY.get(), new SizeRayDispenseBehavior());
DispenserBlock.registerBehavior(AntarchyFabricItems.GROWTH_RAY.get(), new SizeRayDispenseBehavior());
AntarchyFabricDispenserBehaviors.register();
ComposterBlock.COMPOSTABLES.put(AntarchyFabricBlocks.UMBRAL_MOSS_BLOCK.get().asItem(), 0.65f);
ComposterBlock.COMPOSTABLES.put(AntarchyFabricBlocks.UMBRAL_MOSS_CARPET.get().asItem(), 0.3f);
@@ -135,7 +135,7 @@ public final class AntarchyFabricClientBootstrap {
EntityRendererRegistry.register(AntarchyFabricEntities.OURANWOOD_DEER.get(), com.craisinlord.antarchy.content.client.renderer.OuranwoodDeerRenderer::new);
EntityRendererRegistry.register(AntarchyFabricEntities.GLIMMER.get(), com.craisinlord.antarchy.content.client.renderer.glimmer.GlimmerRenderer::new);
EntityRendererRegistry.register(AntarchyFabricEntities.ELKA.get(), com.craisinlord.antarchy.content.client.renderer.ElkaRenderer::new);
// EntityRendererRegistry.register(AntarchyFabricEntities.ROLLY_POLLY.get(), RollyPollyRenderer::new);
EntityRendererRegistry.register(AntarchyFabricEntities.ROLLY_POLLY.get(), com.craisinlord.antarchy.content.client.renderer.RollyPollyRenderer::new);
EntityRendererRegistry.register(AntarchyFabricEntities.TERMITE.get(), TermiteRenderer::new);
EntityRendererRegistry.register(AntarchyFabricEntities.CREEPING_HORROR.get(), CreepingHorrorRenderer::new);
EntityRendererRegistry.register(AntarchyFabricEntities.LURKING_TERROR.get(), LurkingTerrorRenderer::new);
@@ -448,7 +448,6 @@ public final class AntarchyFabricClientBootstrap {
ScorpionWhipTetherRenderHandler.tick();
DorrieJumpClientHandler.tick();
HerculesBeetleClientHandler.tick();
RollyPollyClientHandler.tick();
});
BigBerthaClientHandler.register();
@@ -31,20 +31,12 @@ public final class AntarchyKeyBindings {
CATEGORY
);
public static final KeyMapping ROLLY_POLLY_ROLL = new KeyMapping(
"key.antarchy.rolly_polly_roll",
InputConstants.Type.KEYSYM,
GLFW.GLFW_KEY_R,
CATEGORY
);
private AntarchyKeyBindings() {}
public static void register() {
KeyBindingHelper.registerKeyBinding(BRUTALFLY_FLAP);
KeyBindingHelper.registerKeyBinding(DORRIE_CHARGE_JUMP);
KeyBindingHelper.registerKeyBinding(HERCULES_BEETLE_CHARGE);
KeyBindingHelper.registerKeyBinding(ROLLY_POLLY_ROLL);
}
public static boolean isBrutalflyFlapPressed() {
@@ -0,0 +1,40 @@
package com.craisinlord.antarchy.fabric.client;
import com.mojang.blaze3d.platform.InputConstants;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.minecraft.client.KeyMapping;
public final class KeybindingConflictFixStore {
private static final Map<InputConstants.Key, List<KeyMapping>> MAPPINGS = new HashMap<>();
private KeybindingConflictFixStore() {
}
public static void add(InputConstants.Key key, KeyMapping mapping) {
List<KeyMapping> mappings = MAPPINGS.computeIfAbsent(key, ignored -> new ArrayList<>());
if (!mappings.contains(mapping)) {
mappings.add(mapping);
}
}
public static void clear() {
MAPPINGS.clear();
}
public static List<KeyMapping> others(InputConstants.Key key, KeyMapping active) {
List<KeyMapping> mappings = MAPPINGS.get(key);
if (mappings == null || mappings.size() < 2) {
return List.of();
}
List<KeyMapping> others = new ArrayList<>(mappings.size() - 1);
for (KeyMapping mapping : mappings) {
if (mapping != active) {
others.add(mapping);
}
}
return others;
}
}
@@ -1,29 +0,0 @@
package com.craisinlord.antarchy.fabric.client;
import com.craisinlord.antarchy.content.entity.RollyPollyEntity;
import com.craisinlord.antarchy.content.network.RollyPollyRollPayload;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
public final class RollyPollyClientHandler {
private static boolean wasPressingRoll;
private RollyPollyClientHandler() {
}
public static void tick() {
Minecraft mc = Minecraft.getInstance();
LocalPlayer player = mc.player;
if (player == null || mc.screen != null || !(player.getVehicle() instanceof RollyPollyEntity)) {
wasPressingRoll = false;
return;
}
boolean pressingRoll = AntarchyKeyBindings.ROLLY_POLLY_ROLL.isDown();
if (pressingRoll && !wasPressingRoll) {
ClientPlayNetworking.send(new RollyPollyRollPayload());
}
wasPressingRoll = pressingRoll;
}
}
@@ -0,0 +1,99 @@
package com.craisinlord.antarchy.fabric.mixin;
import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.AntarchyTags;
import com.craisinlord.antarchy.content.movement.DreamSandLowGravityAccess;
import com.craisinlord.antarchy.fabric.registry.AntarchyFabricBlocks;
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.LivingEntity;
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;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(LivingEntity.class)
public abstract class DreamSandMovementMixin {
@Inject(method = "jumpFromGround", at = @At("TAIL"))
private void antarchy$handleDreamSandJump(CallbackInfo ci) {
LivingEntity self = (LivingEntity) (Object) this;
if (self.level().isClientSide()) return;
DreamSandLowGravityAccess access = (DreamSandLowGravityAccess) self;
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);
}
}
@Inject(method = "tick", at = @At("TAIL"))
private void antarchy$tickDreamSandLowGravity(CallbackInfo ci) {
LivingEntity self = (LivingEntity) (Object) this;
if (self.level().isClientSide()) return;
DreamSandLowGravityAccess access = (DreamSandLowGravityAccess) self;
int landingGraceTicks = access.antarchy$getDreamSandLandingGraceTicks();
if (landingGraceTicks > 0) {
access.antarchy$setDreamSandLandingGraceTicks(landingGraceTicks - 1);
}
if (!AntarchySettings.dreamSandEnabled() || antarchy$isDreamSandLowGravityBlacklisted(self) || !access.antarchy$isDreamSandLowGravityActive()) {
return;
}
int remainingTicks = access.antarchy$getDreamSandLowGravityTicksRemaining();
if (remainingTicks > 0) {
access.antarchy$setDreamSandLowGravityTicksRemaining(remainingTicks - 1);
}
if (access.antarchy$getDreamSandLowGravityTicksRemaining() <= 0) {
access.antarchy$clearDreamSandLowGravity();
return;
}
if (antarchy$isOnSolidGround(self)) {
access.antarchy$setDreamSandLowGravityActive(false);
access.antarchy$setDreamSandLowGravityTicksRemaining(0);
access.antarchy$setDreamSandLandingGraceTicks(2);
} else if (!self.onGround() && self.getDeltaMovement().y < 0.0D) {
self.setDeltaMovement(
self.getDeltaMovement().x,
self.getDeltaMovement().y * AntarchySettings.dreamSandGravityMultiplier(),
self.getDeltaMovement().z
);
}
}
@Inject(method = "causeFallDamage", at = @At("HEAD"), cancellable = true)
private void antarchy$handleDreamSandFall(float fallDistance, float multiplier, DamageSource source, CallbackInfoReturnable<Boolean> cir) {
LivingEntity self = (LivingEntity) (Object) this;
DreamSandLowGravityAccess access = (DreamSandLowGravityAccess) self;
if (!AntarchySettings.dreamSandEnabled()
|| antarchy$isDreamSandLowGravityBlacklisted(self)
|| (!access.antarchy$isDreamSandLowGravityActive() && access.antarchy$getDreamSandLandingGraceTicks() <= 0)) {
return;
}
self.resetFallDistance();
cir.setReturnValue(false);
}
private static boolean antarchy$isOnSolidGround(LivingEntity livingEntity) {
return livingEntity.onGround() && livingEntity.getBlockStateOn().blocksMotion();
}
private static boolean antarchy$isStandingOnDreamSand(LivingEntity livingEntity) {
return livingEntity.level().getBlockState(livingEntity.getOnPosLegacy()).is(AntarchyFabricBlocks.DREAM_SAND.get());
}
private static boolean antarchy$isDreamSandLowGravityBlacklisted(LivingEntity livingEntity) {
return livingEntity.getType().is(AntarchyTags.Entities.DREAM_SAND_LOW_GRAVITY_BLACKLIST);
}
}
@@ -0,0 +1,68 @@
package com.craisinlord.antarchy.fabric.mixin.client;
import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.fabric.client.KeybindingConflictFixStore;
import com.mojang.blaze3d.platform.InputConstants;
import java.util.Map;
import net.minecraft.client.KeyMapping;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
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(KeyMapping.class)
public abstract class KeybindingConflictFixMixin {
@Shadow @Final private static Map<InputConstants.Key, KeyMapping> MAP;
@Shadow @Final private static Map<String, KeyMapping> ALL;
@Shadow private InputConstants.Key key;
@Shadow private boolean isDown;
@Shadow private int clickCount;
@Inject(method = "<init>(Ljava/lang/String;Lcom/mojang/blaze3d/platform/InputConstants$Type;ILjava/lang/String;)V", at = @At("TAIL"))
private void antarchy$addInitialMapping(String name, InputConstants.Type type, int key, String category, CallbackInfo ci) {
KeybindingConflictFixStore.add(this.key, (KeyMapping) (Object) this);
}
@Inject(method = "resetMapping", at = @At("TAIL"))
private static void antarchy$rebuildMappings(CallbackInfo ci) {
KeybindingConflictFixStore.clear();
for (KeyMapping mapping : ALL.values()) {
KeybindingConflictFixStore.add(((KeybindingConflictFixMixin) (Object) mapping).key, mapping);
}
}
@Inject(method = "click", at = @At("TAIL"))
private static void antarchy$clickConflicts(InputConstants.Key key, CallbackInfo ci) {
if (!AntarchySettings.fabricKeybindingConflictFixEnabled()) {
return;
}
KeyMapping active = MAP.get(key);
for (KeyMapping mapping : KeybindingConflictFixStore.others(key, active)) {
((KeybindingConflictFixMixin) (Object) mapping).antarchy$click();
}
}
@Inject(method = "set", at = @At("TAIL"))
private static void antarchy$setConflicts(InputConstants.Key key, boolean down, CallbackInfo ci) {
if (!AntarchySettings.fabricKeybindingConflictFixEnabled()) {
return;
}
KeyMapping active = MAP.get(key);
for (KeyMapping mapping : KeybindingConflictFixStore.others(key, active)) {
((KeybindingConflictFixMixin) (Object) mapping).antarchy$setDown(down);
}
}
@Unique
private void antarchy$click() {
this.clickCount++;
}
@Unique
private void antarchy$setDown(boolean down) {
this.isDown = down;
}
}
@@ -88,7 +88,6 @@ public final class AntarchyFabricNetworking {
PayloadTypeRegistry.playC2S().register(HerculesBeetleJumpInputPayload.TYPE, HerculesBeetleJumpInputPayload.STREAM_CODEC);
PayloadTypeRegistry.playC2S().register(HerculesBeetleMountedAttackPayload.TYPE, HerculesBeetleMountedAttackPayload.STREAM_CODEC);
PayloadTypeRegistry.playC2S().register(HerculesBeetleMountedChargePayload.TYPE, HerculesBeetleMountedChargePayload.STREAM_CODEC);
PayloadTypeRegistry.playC2S().register(com.craisinlord.antarchy.content.network.RollyPollyRollPayload.TYPE, com.craisinlord.antarchy.content.network.RollyPollyRollPayload.STREAM_CODEC);
PayloadTypeRegistry.playC2S().register(MultipartAttackPayload.TYPE, MultipartAttackPayload.STREAM_CODEC);
PayloadTypeRegistry.playC2S().register(MultipartInteractPayload.TYPE, MultipartInteractPayload.STREAM_CODEC);
}
@@ -116,8 +115,6 @@ public final class AntarchyFabricNetworking {
context.server().execute(() -> handleHerculesBeetleMountedAttack(context.player(), payload)));
ServerPlayNetworking.registerGlobalReceiver(HerculesBeetleMountedChargePayload.TYPE, (payload, context) ->
context.server().execute(() -> handleHerculesBeetleMountedCharge(context.player(), payload)));
ServerPlayNetworking.registerGlobalReceiver(com.craisinlord.antarchy.content.network.RollyPollyRollPayload.TYPE, (payload, context) ->
context.server().execute(() -> handleRollyPollyRoll(context.player())));
ServerPlayNetworking.registerGlobalReceiver(MultipartAttackPayload.TYPE, (payload, context) ->
context.server().execute(() -> handleMultipartAttack(context.player(), payload)));
ServerPlayNetworking.registerGlobalReceiver(MultipartInteractPayload.TYPE, (payload, context) ->
@@ -397,12 +394,6 @@ public final class AntarchyFabricNetworking {
}
}
private static void handleRollyPollyRoll(ServerPlayer player) {
if (player.getVehicle() instanceof com.craisinlord.antarchy.content.entity.RollyPollyEntity rollyPolly) {
rollyPolly.handleRollToggle(player);
}
}
public static void triggerHerculesBeetleImpactShake(int durationTicks) {
HerculesBeetleImpactShakeClientState.trigger(durationTicks);
}
@@ -278,11 +278,11 @@ public final class AntarchyFabricEntities {
() -> buildAntType(com.craisinlord.antarchy.content.entity.ant.TermiteEntity::new, MobCategory.CREATURE, "termite"));
// public static final DeferredHolder<EntityType<?>, EntityType<RollyPollyEntity>> ROLLY_POLLY = ENTITY_TYPES.register("rolly_polly",
// () -> EntityType.Builder.of(RollyPollyEntity::new, MobCategory.CREATURE)
// .sized(0.95F, 0.85F)
// .clientTrackingRange(10)
// .build("rolly_polly"));
public static final DeferredHolder<EntityType<?>, EntityType<RollyPollyEntity>> ROLLY_POLLY = ENTITY_TYPES.register("rolly_polly",
() -> EntityType.Builder.of(RollyPollyEntity::new, MobCategory.CREATURE)
.sized(0.95F, 0.85F)
.clientTrackingRange(10)
.build("rolly_polly"));
public static final DeferredHolder<EntityType<?>, EntityType<MolewormEntity>> MOLEWORM = ENTITY_TYPES.register("moleworm",
@@ -303,7 +303,7 @@ public final class AntarchyFabricEntityAttributes {
FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.SPIT_BUG.get(), com.craisinlord.antarchy.content.entity.SpitBugEntity.createAttributes().build());
FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.MANTIS.get(), MantisEntity.createAttributes().build());
FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.ALPHA_MANTIS.get(), AlphaMantisEntity.createAttributes().build());
// FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.ROLLY_POLLY.get(), RollyPollyEntity.createAttributes().build());
FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.ROLLY_POLLY.get(), RollyPollyEntity.createAttributes().build());
FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.TRIFFID.get(), TriffidEntity.createAttributes().build());
FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.LUCID.get(), LucidEntity.createAttributes().build());
FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.SCORPION.get(), ScorpionEntity.createAttributes().build());
@@ -1436,8 +1436,8 @@ public final class AntarchyFabricItems {
() -> new DeferredSpawnEggItem(AntarchyFabricEntities.ALPHA_MANTIS, 0x8FDD6C, 0x2F5D22, new Item.Properties()));
// public static final DeferredItem<DeferredSpawnEggItem> ROLLY_POLLY_SPAWN_EGG = ITEMS.register("rolly_polly_spawn_egg",
// () -> new DeferredSpawnEggItem(AntarchyFabricEntities.ROLLY_POLLY, 0x7284A3, 0xBCC8DB, new Item.Properties()));
public static final DeferredItem<DeferredSpawnEggItem> ROLLY_POLLY_SPAWN_EGG = ITEMS.register("rolly_polly_spawn_egg",
() -> new DeferredSpawnEggItem(AntarchyFabricEntities.ROLLY_POLLY, 0x7284A3, 0xBCC8DB, new Item.Properties()));
public static final DeferredItem<DeferredSpawnEggItem> MOLEVORE_SPAWN_EGG = ITEMS.register("molevore_spawn_egg",
@@ -635,6 +635,9 @@ public final class AntarchyFabricSounds {
public static final DeferredHolder<SoundEvent, SoundEvent> ROLLY_POLLY_IDLE = registerSoundEvent("rolly_polly_idle");
public static final DeferredHolder<SoundEvent, SoundEvent> ROLLY_POLLY_WHEEL_MODE = registerSoundEvent("rolly_polly_wheel_mode");
public static final DeferredHolder<SoundEvent, SoundEvent> ROLLY_POLLY_NORMAL_MODE = registerSoundEvent("rolly_polly_normal_mode");
public static final DeferredHolder<SoundEvent, SoundEvent> ROLLY_POLLY_ROLL = registerSoundEvent("rolly_polly_roll");
public static final DeferredHolder<SoundEvent, SoundEvent> CREEPING_HORROR_GROWL = registerSoundEvent("creeping_horror_growl");
@@ -294,7 +294,7 @@ public final class AntarchyFabricSpawnPlacements {
SpawnPlacements.register(AntarchyFabricEntities.CREEPING_HORROR.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, com.craisinlord.antarchy.content.entity.CreepingHorrorEntity::canSpawn);
SpawnPlacements.register(AntarchyFabricEntities.LURKING_TERROR.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, com.craisinlord.antarchy.content.entity.LurkingTerrorEntity::canSpawn);
SpawnPlacements.register(AntarchyFabricEntities.TERMITE.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.Animal::checkAnimalSpawnRules);
// SpawnPlacements.register(AntarchyFabricEntities.ROLLY_POLLY.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, com.craisinlord.antarchy.content.entity.RollyPollyEntity::canSpawn);
SpawnPlacements.register(AntarchyFabricEntities.ROLLY_POLLY.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, com.craisinlord.antarchy.content.entity.RollyPollyEntity::canSpawn);
}
}
@@ -14,6 +14,7 @@
"BloodglassEffectMixin",
"BloodglassRespawnMixin",
"DreamCampfireBlockEntityMixin",
"DreamSandMovementMixin",
"JumpyBootsFallDamageMixin",
"entity.MultipartEntityLevelRegistryMixin",
"WoodTypeInvoker",
@@ -24,6 +25,7 @@
"client.DuctTapeInputMixin",
"client.AntiwaterFogMixin",
"client.GravityGunMouseScrollMixin",
"client.KeybindingConflictFixMixin",
"client.CrossbowArmPoseMixin",
"client.MultipartClientSpawnMixin",
"client.MultipartEntityLevelRegistryMixin"