fix king and queen attack anim bug

stabalize RainbowAntEntity dims
patch config inconsitency
fixed undervault
performance improvements
This commit is contained in:
craisinlord committed 2026-09-12 23:58:24 -05:00
1 parent 377f3785af
commit 37e941915d
47 files changed
+784 -231

No files matched your search

@@ -72,8 +72,14 @@ public final class AntarchyFabricEvents {
}
public static void register() {
ServerPlayConnectionEvents.JOIN.register((handler, sender, server) -> ChronosphereManager.refresh(handler.player));
ServerPlayerEvents.AFTER_RESPAWN.register((oldPlayer, newPlayer, alive) -> ChronosphereManager.refresh(newPlayer));
ServerPlayConnectionEvents.JOIN.register((handler, sender, server) -> {
ChronosphereManager.refresh(handler.player);
TimeDilationManager.resyncPersistentEffects(handler.player);
});
ServerPlayerEvents.AFTER_RESPAWN.register((oldPlayer, newPlayer, alive) -> {
ChronosphereManager.refresh(newPlayer);
TimeDilationManager.resyncPersistentEffects(newPlayer);
});
ServerEntityWorldChangeEvents.AFTER_PLAYER_CHANGE_WORLD.register((player, origin, destination) -> ChronosphereManager.refresh(player));
net.fabricmc.fabric.api.networking.v1.EntityTrackingEvents.START_TRACKING.register((trackedEntity, player) -> {
if (trackedEntity instanceof com.craisinlord.antarchy.content.time.TimeDilationEntityAccess access
@@ -2,6 +2,7 @@ package com.craisinlord.antarchy.fabric;
import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.compat.infinity.InfinityCompatBridge;
import com.craisinlord.antarchy.compat.infinity.InfinityWarpResult;
import net.lerariemann.infinity.util.InfinityMethods;
import net.lerariemann.infinity.util.teleport.PortalCreator;
import net.lerariemann.infinity.util.teleport.WarpLogic;
@@ -38,13 +39,15 @@ public final class FabricInfinityCompat implements InfinityCompatBridge {
}
@Override
public boolean requestWarp(ServerPlayer player, ResourceLocation dimensionId) {
public InfinityWarpResult requestWarp(ServerPlayer player, ResourceLocation dimensionId) {
try {
WarpLogic.requestWarp(player, dimensionId, false);
return true;
return InfinityWarpResult.PENDING;
} catch (Throwable throwable) {
Antarchy.LOGGER.error("[Antarchy] Failed to request an Infinity warp to {}", dimensionId, throwable);
return false;
return InfinityGenerationFailure.consume(dimensionId)
? InfinityWarpResult.FAILED_GENERATION
: InfinityWarpResult.REJECTED;
}
}
@@ -0,0 +1,20 @@
package com.craisinlord.antarchy.fabric;
import net.minecraft.resources.ResourceLocation;
public final class InfinityGenerationFailure {
private static final ThreadLocal<ResourceLocation> FAILURE = new ThreadLocal<>();
private InfinityGenerationFailure() {
}
public static void mark(ResourceLocation dimensionId) {
FAILURE.set(dimensionId);
}
public static boolean consume(ResourceLocation dimensionId) {
ResourceLocation failed = FAILURE.get();
FAILURE.remove();
return dimensionId.equals(failed);
}
}
@@ -4,6 +4,8 @@ import com.craisinlord.antarchy.content.entity.multipart.MultipartEntityOwner;
import com.craisinlord.antarchy.content.entity.multipart.MultipartFramework;
import com.craisinlord.antarchy.content.entity.multipart.MultipartPartAccess;
import com.craisinlord.antarchy.content.entity.multipart.MultipartPartDefinition;
import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi;
import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
@@ -64,17 +66,27 @@ public class MultipartPartEntity extends Entity implements MultipartPartAccess {
return;
}
AntarchyGravityApi.applySyncedState(
this,
AntarchyGravityApi.getGravityDirection(parent),
AntarchyGravityApi.getPrevGravityDirection(parent),
AntarchyGravityApi.isGravityForced(parent),
AntarchyGravityApi.getTransitionDuration(parent),
AntarchyGravityApi.getTransitionRemaining(parent)
);
double oldX = this.getX();
double oldY = this.getY();
double oldZ = this.getZ();
double yawRadians = Math.toRadians(parent.getYRot());
Vec3 forward = new Vec3(-Math.sin(yawRadians), 0.0D, Math.cos(yawRadians));
Vec3 right = new Vec3(forward.z, 0.0D, -forward.x);
Vec3 position = new Vec3(
parent.getX() + forward.x * definition.forwardOffset() + right.x * definition.lateralOffset(),
parent.getY() + definition.yOffset(),
parent.getZ() + forward.z * definition.forwardOffset() + right.z * definition.lateralOffset()
);
Vec3 localOffset = new Vec3(
forward.x * definition.forwardOffset() + right.x * definition.lateralOffset(),
definition.yOffset() + (AntarchyGravityApi.isGravityInverted(parent) ? definition.height() : 0.0D),
forward.z * definition.forwardOffset() + right.z * definition.lateralOffset());
Vec3 offset = AntarchyGravityRotationUtil.vecPlayerToWorld(localOffset, AntarchyGravityApi.getGravityDirection(parent));
Vec3 position = parent.position().add(offset);
this.setPos(position.x, position.y, position.z);
this.setYRot(parent.getYRot());
this.setXRot(parent.getXRot());
@@ -0,0 +1,34 @@
package com.craisinlord.antarchy.fabric.mixin.infinity;
import com.craisinlord.antarchy.fabric.InfinityGenerationFailure;
import net.lerariemann.infinity.access.MinecraftServerAccess;
import net.lerariemann.infinity.util.teleport.PortalCreator;
import net.lerariemann.infinity.util.teleport.WarpLogic;
import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer;
import net.minecraft.world.level.Level;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
@Mixin(WarpLogic.class)
public interface WarpLogicMixin {
@Redirect(
method = "requestWarp(Lnet/minecraft/server/level/ServerPlayer;Lnet/minecraft/resources/ResourceLocation;Z)V",
at = @At(value = "INVOKE", target = "Lnet/lerariemann/infinity/util/teleport/PortalCreator;tryAddInfinityDimension(Lnet/minecraft/server/MinecraftServer;Lnet/minecraft/resources/ResourceLocation;)Z")
)
private static boolean antarchy$queuedDimensionCountsAsNew(MinecraftServer server, ResourceLocation dimensionId) throws Throwable {
ResourceKey<Level> key = ResourceKey.create(Registries.DIMENSION, dimensionId);
if (server instanceof MinecraftServerAccess access && access.infinity$hasToAdd(key)) {
return true;
}
try {
return PortalCreator.tryAddInfinityDimension(server, dimensionId);
} catch (Throwable throwable) {
InfinityGenerationFailure.mark(dimensionId);
throw throwable;
}
}
}
@@ -1036,10 +1036,10 @@ public final class AntarchyFabricItems {
public static final DeferredItem<Item> HERCULES_HORN = ITEMS.registerSimpleItem("hercules_horn", new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<Item> KING_SCALE = ITEMS.registerSimpleItem("king_scale", new Item.Properties().rarity(Rarity.RARE));
public static final DeferredItem<Item> KING_SCALE = ITEMS.registerSimpleItem("king_scale", new Item.Properties().rarity(Rarity.RARE).fireResistant());
public static final DeferredItem<Item> QUEEN_SCALE = ITEMS.registerSimpleItem("queen_scale", new Item.Properties().rarity(Rarity.RARE));
public static final DeferredItem<Item> QUEEN_SCALE = ITEMS.registerSimpleItem("queen_scale", new Item.Properties().rarity(Rarity.RARE).fireResistant());
public static final DeferredItem<Item> CHITIN = ITEMS.registerSimpleItem("chitin", new Item.Properties().rarity(Rarity.UNCOMMON));
@@ -21,6 +21,7 @@
"entity.MultipartEntityLevelRegistryMixin",
"WoodTypeInvoker",
"infinity.PortalCreatorMixin",
"infinity.WarpLogicMixin",
"infinity.AmendmentRareOresMixin"
],
"client": [