Merge pull request #79 from craisinlord/anthology-split

2.2.5
This commit is contained in:
craisinlord authored and GitHub committed 2026-10-17 14:46:58 -05:00
commit ffadad3caf
91 files changed
+235 -31

No files matched your search

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -2,6 +2,7 @@ package com.craisinlord.antarchy.content.client;
import com.craisinlord.antarchy.content.network.PortalGunMoonAimPayload;
import com.craisinlord.antarchy.content.portalgun.PortalGunMoonMath;
import java.lang.ref.WeakReference;
import java.util.function.Consumer;
import net.minecraft.client.Camera;
import net.minecraft.client.Minecraft;
@@ -16,7 +17,8 @@ public final class MoonSkyTracker {
private static final long MAX_AGE_MILLIS = 1500L;
private static final double AIM_COSINE = Math.cos(Math.toRadians(PortalGunMoonMath.AIM_TOLERANCE_DEGREES));
private static Vec3 direction;
private static ClientLevel level;
// Weak so a dimension change or logout doesn't pin the old client world in memory.
private static WeakReference<ClientLevel> level = new WeakReference<>(null);
private static long recordedAt;
private static Consumer<PortalGunMoonAimPayload> sender = payload -> {};
@@ -35,7 +37,7 @@ public final class MoonSkyTracker {
}
Vector3f world = camera.rotation().transform(view.normalize());
direction = new Vec3(world.x, world.y, world.z).normalize();
level = renderedLevel;
level = new WeakReference<>(renderedLevel);
recordedAt = System.currentTimeMillis();
}
@@ -44,7 +46,7 @@ public final class MoonSkyTracker {
if (minecraft.player == null) {
return;
}
boolean tracked = direction != null && level == minecraft.level && System.currentTimeMillis() - recordedAt <= MAX_AGE_MILLIS;
boolean tracked = direction != null && level.get() == minecraft.level && System.currentTimeMillis() - recordedAt <= MAX_AGE_MILLIS;
boolean aiming = tracked && minecraft.gameRenderer.getMainCamera().getLookVector().dot(
new Vector3f((float) direction.x, (float) direction.y, (float) direction.z)) >= AIM_COSINE;
sender.accept(new PortalGunMoonAimPayload(tracked, aiming));
@@ -4,6 +4,7 @@ import com.craisinlord.antarchy.content.item.PortalGunItem;
import com.craisinlord.antarchy.content.network.PortalGunIndicatorPayload;
import com.craisinlord.antarchy.content.portalgun.PortalGunPortalEntity;
import com.mojang.blaze3d.systems.RenderSystem;
import java.lang.ref.WeakReference;
import java.util.EnumSet;
import java.util.Set;
import java.util.UUID;
@@ -19,7 +20,8 @@ public final class PortalGunCrosshairRenderer {
private static final int HALF_WIDTH = 17;
private static final float MISSING_BRIGHTNESS = 0.3F;
private static final float MISSING_ALPHA = 0.75F;
private static ClientLevel cachedLevel;
// Weak so a dimension change or logout doesn't pin the old client world in memory.
private static WeakReference<ClientLevel> cachedLevel = new WeakReference<>(null);
private static long cachedGameTime = Long.MIN_VALUE;
private static UUID cachedGunId;
private static Set<PortalGunPortalEntity.PortalSide> cachedPortals = Set.of();
@@ -77,14 +79,14 @@ public final class PortalGunCrosshairRenderer {
}
ClientLevel level = minecraft.level;
long gameTime = level.getGameTime();
if (cachedLevel != level || cachedGameTime != gameTime || !gunId.equals(cachedGunId)) {
if (cachedLevel.get() != level || cachedGameTime != gameTime || !gunId.equals(cachedGunId)) {
Set<PortalGunPortalEntity.PortalSide> portals = EnumSet.noneOf(PortalGunPortalEntity.PortalSide.class);
for (com.craisinlord.anthology.portal.PortalEntity entry : com.craisinlord.anthology.portal.PortalRegistry.all(level)) {
if (entry instanceof PortalGunPortalEntity portal && portal.isAlive() && gunId.equals(portal.getGunId())) {
portals.add(portal.getPortalSide());
}
}
cachedLevel = level;
cachedLevel = new WeakReference<>(level);
cachedGameTime = gameTime;
cachedGunId = gunId;
cachedPortals = Set.copyOf(portals);
@@ -2,6 +2,7 @@ package com.craisinlord.antarchy.content.client;
import com.craisinlord.antarchy.content.network.PortalGunIndicatorPayload;
import com.craisinlord.antarchy.content.network.PortalGunIndicatorRequestPayload;
import java.lang.ref.WeakReference;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@@ -11,7 +12,8 @@ import net.minecraft.client.multiplayer.ClientLevel;
public final class PortalGunIndicatorClientState {
private static final Map<UUID, PortalGunIndicatorPayload> STATES = new HashMap<>();
private static ClientLevel level;
// Weak so a dimension change or logout doesn't pin the old client world in memory.
private static WeakReference<ClientLevel> level = new WeakReference<>(null);
private static long lastRequestTick = Long.MIN_VALUE;
private static UUID lastRequestedGun;
private static Consumer<PortalGunIndicatorRequestPayload> requestSender = payload -> {};
@@ -28,8 +30,8 @@ public final class PortalGunIndicatorClientState {
if (currentLevel == null || gunId == null || minecraft.player == null) {
return;
}
if (level != currentLevel) {
level = currentLevel;
if (level.get() != currentLevel) {
level = new WeakReference<>(currentLevel);
STATES.clear();
lastRequestedGun = null;
lastRequestTick = Long.MIN_VALUE;
@@ -52,7 +54,7 @@ public final class PortalGunIndicatorClientState {
public static void clear() {
STATES.clear();
level = null;
level = new WeakReference<>(null);
lastRequestedGun = null;
lastRequestTick = Long.MIN_VALUE;
}
@@ -46,6 +46,7 @@ public class AlphaMantisEntity extends MantisEntity {
private static final double FORCED_RETURN_RADIUS = 144.0D;
private static final int RESET_DELAY_TICKS = 300;
private static final double HOME_RETURN_SPEED = 1.05D;
private static final int HOME_REPATH_INTERVAL_TICKS = 20;
private final ServerBossEvent bossEvent =
new com.craisinlord.antarchy.content.boss.EntityLinkedServerBossEvent(this.getUUID(), Component.translatable("entity.antarchy.alpha_mantis"), BossEvent.BossBarColor.GREEN, BossEvent.BossBarOverlay.PROGRESS);
@@ -53,6 +54,7 @@ public class AlphaMantisEntity extends MantisEntity {
private int summonCooldownTicks;
private int phaseTransitionTicks;
private int disengageTicks;
private int homeRepathCooldown;
private boolean halfHealthTransitionComplete;
@Nullable
private BlockPos encounterHome;
@@ -385,6 +387,7 @@ public class AlphaMantisEntity extends MantisEntity {
if (target != null) {
this.disengageTicks = 0;
this.homeRepathCooldown = 0;
if (this.isOutsideLeashRadius()) {
this.resetEncounter(true);
}
@@ -447,6 +450,11 @@ public class AlphaMantisEntity extends MantisEntity {
return;
}
Vec3 homeCenter = Vec3.atCenterOf(this.encounterHome);
if (this.homeRepathCooldown > 0) {
this.homeRepathCooldown--;
return;
}
this.homeRepathCooldown = HOME_REPATH_INTERVAL_TICKS;
if (this.distanceToSqr(homeCenter) > FORCED_RETURN_RADIUS * FORCED_RETURN_RADIUS) {
this.moveTo(homeCenter.x, this.encounterHome.getY(), homeCenter.z, this.getYRot(), this.getXRot());
this.setDeltaMovement(Vec3.ZERO);
@@ -105,6 +105,7 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity {
private static final double FORCED_RETURN_RADIUS = 144.0D;
private static final int RESET_DELAY_TICKS = 240;
private static final double HOME_RETURN_SPEED = 1.0D;
private static final int HOME_REPATH_INTERVAL_TICKS = 20;
private static final double NEARBY_SCORPION_CHECK_RADIUS = 32.0D;
private static final ResourceKey<Level> THORAXIS_KEY =
@@ -137,6 +138,7 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity {
private int hardenHealTicks;
private int hardenSummonedScorpions;
private int disengageTicks;
private int homeRepathCooldown;
private boolean attackDamageApplied;
private AttackType currentAttack = AttackType.NONE;
private HardenPhase hardenPhase = HardenPhase.NONE;
@@ -798,6 +800,7 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity {
if (target != null) {
this.disengageTicks = 0;
this.homeRepathCooldown = 0;
if (this.isOutsideLeashRadius()) {
this.resetEncounter(true);
}
@@ -870,6 +873,11 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity {
return;
}
Vec3 homeCenter = Vec3.atCenterOf(this.encounterHome);
if (this.homeRepathCooldown > 0) {
this.homeRepathCooldown--;
return;
}
this.homeRepathCooldown = HOME_REPATH_INTERVAL_TICKS;
if (this.distanceToSqr(homeCenter) > FORCED_RETURN_RADIUS * FORCED_RETURN_RADIUS) {
this.moveTo(homeCenter.x, homeCenter.y, homeCenter.z, this.getYRot(), this.getXRot());
this.setDeltaMovement(Vec3.ZERO);
@@ -25,6 +25,9 @@ public final class AntarchyMixinPlugin implements IMixinConfigPlugin {
if (!classPresent(targetClassName)) {
return false;
}
if (mixinClassName.equals("com.craisinlord.antarchy.mixins.EnchantmentTableApplicabilityMixin")) {
return !classPresent("net.minecraftforge.common.extensions.IForgeEnchantment");
}
if (mixinClassName.startsWith("com.craisinlord.antarchy.mixins.compat.scguns.")) {
return classPresent("top.ribs.scguns.entity.projectile.ProjectileEntity");
}
@@ -1669,5 +1669,9 @@
"item.antarchy.music_disc_the_queen.desc": "Karlljp - The Queen",
"item.antarchy.music_disc_verdance.desc": "Hewo - Verdance",
"item.antarchy.music_disc_grotesque.desc": "DocShrekBot - Grotesque",
"attribute.antarchy.entity_interaction_range": "Entity Interaction Range"
"attribute.antarchy.entity_interaction_range": "Entity Interaction Range",
"guide.antarchy.archive_folder.antlas": "Antlas",
"guide.antarchy.archive_folder.elythia": "Elythia",
"guide.antarchy.archive_folder.cavaryn": "Cavaryn",
"guide.antarchy.archive_folder.thoraxis": "Thoraxis"
}
@@ -0,0 +1,6 @@
{
"title": "guide.antarchy.archive_folder.antlas",
"icon_item": "antarchy:portal_gun_atlas",
"sort_order": 10,
"green_tint": false
}
@@ -0,0 +1,7 @@
{
"title": "guide.antarchy.archive_folder.cavaryn",
"icon_item": "antarchy:termite_spawn_egg",
"parent": "antarchy:antlas",
"sort_order": 20,
"green_tint": false
}
@@ -0,0 +1,7 @@
{
"title": "guide.antarchy.archive_folder.elythia",
"icon_item": "antarchy:brown_ant_spawn_egg",
"parent": "antarchy:antlas",
"sort_order": 10,
"green_tint": false
}
@@ -0,0 +1,7 @@
{
"title": "guide.antarchy.archive_folder.thoraxis",
"icon_item": "antarchy:red_ant_spawn_egg",
"parent": "antarchy:antlas",
"sort_order": 30,
"green_tint": false
}
@@ -1,6 +1,8 @@
{
"type": "article",
"category": "thoraxis",
"folder": "antarchy:thoraxis",
"sort_order": 20,
"title": "guide.antarchy.entry.bloodglass.title",
"subtitle": "guide.antarchy.entry.bloodglass.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "entity",
"category": "elythia",
"folder": "antarchy:elythia",
"sort_order": 0,
"title": "guide.antarchy.entry.brown_ant.title",
"subtitle": "guide.antarchy.entry.brown_ant.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "mob",
"category": "elythia",
"folder": "antarchy:elythia",
"sort_order": 30,
"title": "guide.antarchy.entry.brutalfly.title",
"subtitle": "guide.antarchy.entry.brutalfly.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "article",
"category": "general",
"folder": "antarchy:antlas",
"sort_order": 40,
"title": "guide.antarchy.entry.duplicator_tree.title",
"subtitle": "guide.antarchy.entry.duplicator_tree.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "entity",
"category": "general",
"folder": "antarchy:antlas",
"sort_order": 30,
"title": "guide.antarchy.entry.easter_bunny.title",
"subtitle": "guide.antarchy.entry.easter_bunny.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "mob",
"category": "elythia",
"folder": "antarchy:elythia",
"sort_order": 10,
"title": "guide.antarchy.entry.flying_squirrel.title",
"subtitle": "guide.antarchy.entry.flying_squirrel.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "mob",
"category": "elythia",
"folder": "antarchy:elythia",
"sort_order": 20,
"title": "guide.antarchy.entry.glimmer.title",
"subtitle": "guide.antarchy.entry.glimmer.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "mob",
"category": "cavaryn",
"folder": "antarchy:cavaryn",
"sort_order": 10,
"title": "guide.antarchy.entry.hercules_beetle.title",
"subtitle": "guide.antarchy.entry.hercules_beetle.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "article",
"category": "general",
"folder": "antarchy:antlas",
"sort_order": 20,
"title": "guide.antarchy.entry.high_fructose_corn_syrup.title",
"subtitle": "guide.antarchy.entry.high_fructose_corn_syrup.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "entity",
"category": "elythia",
"folder": "antarchy:elythia",
"sort_order": 50,
"title": "guide.antarchy.entry.king.title",
"subtitle": "guide.antarchy.entry.king.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "entity",
"category": "general",
"folder": "antarchy:antlas",
"sort_order": 10,
"title": "guide.antarchy.entry.kraken.title",
"subtitle": "guide.antarchy.entry.kraken.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "mob",
"category": "thoraxis",
"folder": "antarchy:thoraxis",
"sort_order": 10,
"title": "guide.antarchy.entry.nightmare.title",
"subtitle": "guide.antarchy.entry.nightmare.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "entity",
"category": "elythia",
"folder": "antarchy:elythia",
"sort_order": 40,
"title": "guide.antarchy.entry.prince.title",
"subtitle": "guide.antarchy.entry.prince.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "entity",
"category": "thoraxis",
"folder": "antarchy:thoraxis",
"sort_order": 50,
"title": "guide.antarchy.entry.princess.title",
"subtitle": "guide.antarchy.entry.princess.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "entity",
"category": "thoraxis",
"folder": "antarchy:thoraxis",
"sort_order": 60,
"title": "guide.antarchy.entry.queen.title",
"subtitle": "guide.antarchy.entry.queen.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "entity",
"category": "general",
"folder": "antarchy:antlas",
"sort_order": 0,
"title": "guide.antarchy.entry.rainbow_ant.title",
"subtitle": "guide.antarchy.entry.rainbow_ant.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "entity",
"category": "thoraxis",
"folder": "antarchy:thoraxis",
"sort_order": 0,
"title": "guide.antarchy.entry.red_ant.title",
"subtitle": "guide.antarchy.entry.red_ant.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "article",
"category": "thoraxis",
"folder": "antarchy:thoraxis",
"sort_order": 30,
"title": "guide.antarchy.entry.temporal_fields.title",
"subtitle": "guide.antarchy.entry.temporal_fields.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "entity",
"category": "cavaryn",
"folder": "antarchy:cavaryn",
"sort_order": 0,
"title": "guide.antarchy.entry.termite.title",
"subtitle": "guide.antarchy.entry.termite.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "structure",
"category": "elythia",
"folder": "antarchy:elythia",
"sort_order": 60,
"title": "guide.antarchy.entry.toreterror.title",
"subtitle": "guide.antarchy.entry.toreterror_arena.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "article",
"category": "thoraxis",
"folder": "antarchy:thoraxis",
"sort_order": 40,
"title": "guide.antarchy.entry.vortex.title",
"subtitle": "guide.antarchy.entry.vortex.subtitle",
"description": [
@@ -2,6 +2,7 @@ package com.craisinlord.antarchy.content.client;
import com.craisinlord.antarchy.content.network.PortalGunMoonAimPayload;
import com.craisinlord.antarchy.content.portalgun.PortalGunMoonMath;
import java.lang.ref.WeakReference;
import java.util.function.Consumer;
import net.minecraft.client.Camera;
import net.minecraft.client.Minecraft;
@@ -16,7 +17,8 @@ public final class MoonSkyTracker {
private static final long MAX_AGE_MILLIS = 1500L;
private static final double AIM_COSINE = Math.cos(Math.toRadians(PortalGunMoonMath.AIM_TOLERANCE_DEGREES));
private static Vec3 direction;
private static ClientLevel level;
// Weak so a dimension change or logout doesn't pin the old client world in memory.
private static WeakReference<ClientLevel> level = new WeakReference<>(null);
private static long recordedAt;
private static Consumer<PortalGunMoonAimPayload> sender = payload -> {};
@@ -35,7 +37,7 @@ public final class MoonSkyTracker {
}
Vector3f world = camera.rotation().transform(view.normalize());
direction = new Vec3(world.x, world.y, world.z).normalize();
level = renderedLevel;
level = new WeakReference<>(renderedLevel);
recordedAt = System.currentTimeMillis();
}
@@ -44,7 +46,7 @@ public final class MoonSkyTracker {
if (minecraft.player == null) {
return;
}
boolean tracked = direction != null && level == minecraft.level && System.currentTimeMillis() - recordedAt <= MAX_AGE_MILLIS;
boolean tracked = direction != null && level.get() == minecraft.level && System.currentTimeMillis() - recordedAt <= MAX_AGE_MILLIS;
boolean aiming = tracked && minecraft.gameRenderer.getMainCamera().getLookVector().dot(
new Vector3f((float) direction.x, (float) direction.y, (float) direction.z)) >= AIM_COSINE;
sender.accept(new PortalGunMoonAimPayload(tracked, aiming));
@@ -4,6 +4,7 @@ import com.craisinlord.antarchy.content.item.PortalGunItem;
import com.craisinlord.antarchy.content.network.PortalGunIndicatorPayload;
import com.craisinlord.antarchy.content.portalgun.PortalGunPortalEntity;
import com.mojang.blaze3d.systems.RenderSystem;
import java.lang.ref.WeakReference;
import java.util.EnumSet;
import java.util.Set;
import java.util.UUID;
@@ -19,7 +20,8 @@ public final class PortalGunCrosshairRenderer {
private static final int HALF_WIDTH = 17;
private static final float MISSING_BRIGHTNESS = 0.3F;
private static final float MISSING_ALPHA = 0.75F;
private static ClientLevel cachedLevel;
// Weak so a dimension change or logout doesn't pin the old client world in memory.
private static WeakReference<ClientLevel> cachedLevel = new WeakReference<>(null);
private static long cachedGameTime = Long.MIN_VALUE;
private static UUID cachedGunId;
private static Set<PortalGunPortalEntity.PortalSide> cachedPortals = Set.of();
@@ -77,14 +79,14 @@ public final class PortalGunCrosshairRenderer {
}
ClientLevel level = minecraft.level;
long gameTime = level.getGameTime();
if (cachedLevel != level || cachedGameTime != gameTime || !gunId.equals(cachedGunId)) {
if (cachedLevel.get() != level || cachedGameTime != gameTime || !gunId.equals(cachedGunId)) {
Set<PortalGunPortalEntity.PortalSide> portals = EnumSet.noneOf(PortalGunPortalEntity.PortalSide.class);
for (com.craisinlord.anthology.portal.PortalEntity entry : com.craisinlord.anthology.portal.PortalRegistry.all(level)) {
if (entry instanceof PortalGunPortalEntity portal && portal.isAlive() && gunId.equals(portal.getGunId())) {
portals.add(portal.getPortalSide());
}
}
cachedLevel = level;
cachedLevel = new WeakReference<>(level);
cachedGameTime = gameTime;
cachedGunId = gunId;
cachedPortals = Set.copyOf(portals);
@@ -2,6 +2,7 @@ package com.craisinlord.antarchy.content.client;
import com.craisinlord.antarchy.content.network.PortalGunIndicatorPayload;
import com.craisinlord.antarchy.content.network.PortalGunIndicatorRequestPayload;
import java.lang.ref.WeakReference;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@@ -11,7 +12,8 @@ import net.minecraft.client.multiplayer.ClientLevel;
public final class PortalGunIndicatorClientState {
private static final Map<UUID, PortalGunIndicatorPayload> STATES = new HashMap<>();
private static ClientLevel level;
// Weak so a dimension change or logout doesn't pin the old client world in memory.
private static WeakReference<ClientLevel> level = new WeakReference<>(null);
private static long lastRequestTick = Long.MIN_VALUE;
private static UUID lastRequestedGun;
private static Consumer<PortalGunIndicatorRequestPayload> requestSender = payload -> {};
@@ -28,8 +30,8 @@ public final class PortalGunIndicatorClientState {
if (currentLevel == null || gunId == null || minecraft.player == null) {
return;
}
if (level != currentLevel) {
level = currentLevel;
if (level.get() != currentLevel) {
level = new WeakReference<>(currentLevel);
STATES.clear();
lastRequestedGun = null;
lastRequestTick = Long.MIN_VALUE;
@@ -52,7 +54,7 @@ public final class PortalGunIndicatorClientState {
public static void clear() {
STATES.clear();
level = null;
level = new WeakReference<>(null);
lastRequestedGun = null;
lastRequestTick = Long.MIN_VALUE;
}
@@ -46,6 +46,7 @@ public class AlphaMantisEntity extends MantisEntity {
private static final double FORCED_RETURN_RADIUS = 144.0D;
private static final int RESET_DELAY_TICKS = 300;
private static final double HOME_RETURN_SPEED = 1.05D;
private static final int HOME_REPATH_INTERVAL_TICKS = 20;
private final ServerBossEvent bossEvent =
new com.craisinlord.antarchy.content.boss.EntityLinkedServerBossEvent(this.getUUID(), Component.translatable("entity.antarchy.alpha_mantis"), BossEvent.BossBarColor.GREEN, BossEvent.BossBarOverlay.PROGRESS);
@@ -53,6 +54,7 @@ public class AlphaMantisEntity extends MantisEntity {
private int summonCooldownTicks;
private int phaseTransitionTicks;
private int disengageTicks;
private int homeRepathCooldown;
private boolean halfHealthTransitionComplete;
@Nullable
private BlockPos encounterHome;
@@ -386,6 +388,7 @@ public class AlphaMantisEntity extends MantisEntity {
if (target != null) {
this.disengageTicks = 0;
this.homeRepathCooldown = 0;
if (this.isOutsideLeashRadius()) {
this.resetEncounter(true);
}
@@ -448,6 +451,11 @@ public class AlphaMantisEntity extends MantisEntity {
return;
}
Vec3 homeCenter = Vec3.atCenterOf(this.encounterHome);
if (this.homeRepathCooldown > 0) {
this.homeRepathCooldown--;
return;
}
this.homeRepathCooldown = HOME_REPATH_INTERVAL_TICKS;
if (this.distanceToSqr(homeCenter) > FORCED_RETURN_RADIUS * FORCED_RETURN_RADIUS) {
this.moveTo(homeCenter.x, this.encounterHome.getY(), homeCenter.z, this.getYRot(), this.getXRot());
this.setDeltaMovement(Vec3.ZERO);
@@ -105,6 +105,7 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity {
private static final double FORCED_RETURN_RADIUS = 144.0D;
private static final int RESET_DELAY_TICKS = 240;
private static final double HOME_RETURN_SPEED = 1.0D;
private static final int HOME_REPATH_INTERVAL_TICKS = 20;
private static final double NEARBY_SCORPION_CHECK_RADIUS = 32.0D;
private static final ResourceKey<Level> THORAXIS_KEY =
@@ -137,6 +138,7 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity {
private int hardenHealTicks;
private int hardenSummonedScorpions;
private int disengageTicks;
private int homeRepathCooldown;
private boolean attackDamageApplied;
private AttackType currentAttack = AttackType.NONE;
private HardenPhase hardenPhase = HardenPhase.NONE;
@@ -797,6 +799,7 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity {
if (target != null) {
this.disengageTicks = 0;
this.homeRepathCooldown = 0;
if (this.isOutsideLeashRadius()) {
this.resetEncounter(true);
}
@@ -869,6 +872,11 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity {
return;
}
Vec3 homeCenter = Vec3.atCenterOf(this.encounterHome);
if (this.homeRepathCooldown > 0) {
this.homeRepathCooldown--;
return;
}
this.homeRepathCooldown = HOME_REPATH_INTERVAL_TICKS;
if (this.distanceToSqr(homeCenter) > FORCED_RETURN_RADIUS * FORCED_RETURN_RADIUS) {
this.moveTo(homeCenter.x, homeCenter.y, homeCenter.z, this.getYRot(), this.getXRot());
this.setDeltaMovement(Vec3.ZERO);
@@ -43,7 +43,7 @@ import net.minecraft.tags.TagKey;
public class CritterCageItem extends Item {
public static final String ENTITY_DATA_TAG = "EntityData";
private static final TagKey<EntityType<?>> BOSS_TAG = TagKey.create(Registries.ENTITY_TYPE, ResourceLocation.withDefaultNamespace("bosses"));
private static final TagKey<EntityType<?>> BOSS_TAG = TagKey.create(Registries.ENTITY_TYPE, ResourceLocation.fromNamespaceAndPath("c", "bosses"));
private static final int EMPTY_STATE = 0;
private static final int FILLED_PLAIN_STATE = 1;
private static final int FILLED_COLORED_STATE = 2;
@@ -1662,5 +1662,9 @@
"advancements.antarchy.survived_the_horde.description": "Survive a Cavaryn horde to its final wave and break it.",
"advancements.antarchy.glimmer_keeper.title": "Glimmer Keeper",
"advancements.antarchy.glimmer_keeper.description": "Tame every kind of Glimmer.",
"entity.antarchy.portal_gun_portal": "Portal Gun Portal"
"entity.antarchy.portal_gun_portal": "Portal Gun Portal",
"guide.antarchy.archive_folder.antlas": "Antlas",
"guide.antarchy.archive_folder.elythia": "Elythia",
"guide.antarchy.archive_folder.cavaryn": "Cavaryn",
"guide.antarchy.archive_folder.thoraxis": "Thoraxis"
}
@@ -0,0 +1,6 @@
{
"title": "guide.antarchy.archive_folder.antlas",
"icon_item": "antarchy:portal_gun_atlas",
"sort_order": 10,
"green_tint": false
}
@@ -0,0 +1,7 @@
{
"title": "guide.antarchy.archive_folder.cavaryn",
"icon_item": "antarchy:termite_spawn_egg",
"parent": "antarchy:antlas",
"sort_order": 20,
"green_tint": false
}
@@ -0,0 +1,7 @@
{
"title": "guide.antarchy.archive_folder.elythia",
"icon_item": "antarchy:brown_ant_spawn_egg",
"parent": "antarchy:antlas",
"sort_order": 10,
"green_tint": false
}
@@ -0,0 +1,7 @@
{
"title": "guide.antarchy.archive_folder.thoraxis",
"icon_item": "antarchy:red_ant_spawn_egg",
"parent": "antarchy:antlas",
"sort_order": 30,
"green_tint": false
}
@@ -1,6 +1,8 @@
{
"type": "article",
"category": "thoraxis",
"folder": "antarchy:thoraxis",
"sort_order": 20,
"title": "guide.antarchy.entry.bloodglass.title",
"subtitle": "guide.antarchy.entry.bloodglass.subtitle",
"description": ["guide.antarchy.entry.bloodglass.description", "guide.antarchy.entry.bloodglass.description2", "guide.antarchy.entry.bloodglass.description3"],
@@ -1,6 +1,8 @@
{
"type": "entity",
"category": "elythia",
"folder": "antarchy:elythia",
"sort_order": 0,
"title": "guide.antarchy.entry.brown_ant.title",
"subtitle": "guide.antarchy.entry.brown_ant.subtitle",
"description": ["guide.antarchy.entry.brown_ant.description", "guide.antarchy.entry.brown_ant.description2", "guide.antarchy.entry.brown_ant.description3"],
@@ -1,6 +1,8 @@
{
"type": "mob",
"category": "elythia",
"folder": "antarchy:elythia",
"sort_order": 30,
"title": "guide.antarchy.entry.brutalfly.title",
"subtitle": "guide.antarchy.entry.brutalfly.subtitle",
"description": ["guide.antarchy.entry.brutalfly.description", "guide.antarchy.entry.brutalfly.description2", "guide.antarchy.entry.brutalfly.description3", "guide.antarchy.entry.brutalfly.description4"],
@@ -1,6 +1,8 @@
{
"type": "article",
"category": "general",
"folder": "antarchy:antlas",
"sort_order": 40,
"title": "guide.antarchy.entry.duplicator_tree.title",
"subtitle": "guide.antarchy.entry.duplicator_tree.subtitle",
"description": ["guide.antarchy.entry.duplicator_tree.description", "guide.antarchy.entry.duplicator_tree.description2"],
@@ -1,6 +1,8 @@
{
"type": "entity",
"category": "general",
"folder": "antarchy:antlas",
"sort_order": 30,
"title": "guide.antarchy.entry.easter_bunny.title",
"subtitle": "guide.antarchy.entry.easter_bunny.subtitle",
"description": ["guide.antarchy.entry.easter_bunny.description", "guide.antarchy.entry.easter_bunny.description2"],
@@ -1,6 +1,8 @@
{
"type": "mob",
"category": "elythia",
"folder": "antarchy:elythia",
"sort_order": 10,
"title": "guide.antarchy.entry.flying_squirrel.title",
"subtitle": "guide.antarchy.entry.flying_squirrel.subtitle",
"description": ["guide.antarchy.entry.flying_squirrel.description", "guide.antarchy.entry.flying_squirrel.description2", "guide.antarchy.entry.flying_squirrel.description3", "guide.antarchy.entry.flying_squirrel.description4"],
@@ -1,6 +1,8 @@
{
"type": "mob",
"category": "elythia",
"folder": "antarchy:elythia",
"sort_order": 20,
"title": "guide.antarchy.entry.glimmer.title",
"subtitle": "guide.antarchy.entry.glimmer.subtitle",
"description": ["guide.antarchy.entry.glimmer.description", "guide.antarchy.entry.glimmer.description2", "guide.antarchy.entry.glimmer.description3", "guide.antarchy.entry.glimmer.description4", "guide.antarchy.entry.glimmer.description5", "guide.antarchy.entry.glimmer.description6", "guide.antarchy.entry.glimmer.description7"],
@@ -1,6 +1,8 @@
{
"type": "mob",
"category": "cavaryn",
"folder": "antarchy:cavaryn",
"sort_order": 10,
"title": "guide.antarchy.entry.hercules_beetle.title",
"subtitle": "guide.antarchy.entry.hercules_beetle.subtitle",
"description": ["guide.antarchy.entry.hercules_beetle.description", "guide.antarchy.entry.hercules_beetle.description2", "guide.antarchy.entry.hercules_beetle.description3"],
@@ -1,6 +1,8 @@
{
"type": "article",
"category": "general",
"folder": "antarchy:antlas",
"sort_order": 20,
"title": "guide.antarchy.entry.high_fructose_corn_syrup.title",
"subtitle": "guide.antarchy.entry.high_fructose_corn_syrup.subtitle",
"description": ["guide.antarchy.entry.high_fructose_corn_syrup.description", "guide.antarchy.entry.high_fructose_corn_syrup.description2", "guide.antarchy.entry.high_fructose_corn_syrup.description3"],
@@ -1,6 +1,8 @@
{
"type": "entity",
"category": "elythia",
"folder": "antarchy:elythia",
"sort_order": 50,
"title": "guide.antarchy.entry.king.title",
"subtitle": "guide.antarchy.entry.king.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "entity",
"category": "general",
"folder": "antarchy:antlas",
"sort_order": 10,
"title": "guide.antarchy.entry.kraken.title",
"subtitle": "guide.antarchy.entry.kraken.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "mob",
"category": "thoraxis",
"folder": "antarchy:thoraxis",
"sort_order": 10,
"title": "guide.antarchy.entry.nightmare.title",
"subtitle": "guide.antarchy.entry.nightmare.subtitle",
"description": ["guide.antarchy.entry.nightmare.description", "guide.antarchy.entry.nightmare.description2", "guide.antarchy.entry.nightmare.description3"],
@@ -1,6 +1,8 @@
{
"type": "entity",
"category": "elythia",
"folder": "antarchy:elythia",
"sort_order": 40,
"title": "guide.antarchy.entry.prince.title",
"subtitle": "guide.antarchy.entry.prince.subtitle",
"description": ["guide.antarchy.entry.prince.description", "guide.antarchy.entry.prince.description2"],
@@ -1,6 +1,8 @@
{
"type": "entity",
"category": "thoraxis",
"folder": "antarchy:thoraxis",
"sort_order": 50,
"title": "guide.antarchy.entry.princess.title",
"subtitle": "guide.antarchy.entry.princess.subtitle",
"description": ["guide.antarchy.entry.princess.description", "guide.antarchy.entry.princess.description2"],
@@ -1,6 +1,8 @@
{
"type": "entity",
"category": "thoraxis",
"folder": "antarchy:thoraxis",
"sort_order": 60,
"title": "guide.antarchy.entry.queen.title",
"subtitle": "guide.antarchy.entry.queen.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "entity",
"category": "general",
"folder": "antarchy:antlas",
"sort_order": 0,
"title": "guide.antarchy.entry.rainbow_ant.title",
"subtitle": "guide.antarchy.entry.rainbow_ant.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "entity",
"category": "thoraxis",
"folder": "antarchy:thoraxis",
"sort_order": 0,
"title": "guide.antarchy.entry.red_ant.title",
"subtitle": "guide.antarchy.entry.red_ant.subtitle",
"description": [
@@ -1,6 +1,8 @@
{
"type": "article",
"category": "thoraxis",
"folder": "antarchy:thoraxis",
"sort_order": 30,
"title": "guide.antarchy.entry.temporal_fields.title",
"subtitle": "guide.antarchy.entry.temporal_fields.subtitle",
"description": ["guide.antarchy.entry.temporal_fields.description", "guide.antarchy.entry.temporal_fields.description2", "guide.antarchy.entry.temporal_fields.description3"],
@@ -1,6 +1,8 @@
{
"type": "entity",
"category": "cavaryn",
"folder": "antarchy:cavaryn",
"sort_order": 0,
"title": "guide.antarchy.entry.termite.title",
"subtitle": "guide.antarchy.entry.termite.subtitle",
"description": ["guide.antarchy.entry.termite.description", "guide.antarchy.entry.termite.description2", "guide.antarchy.entry.termite.description3", "guide.antarchy.entry.termite.description4"],
@@ -1,6 +1,8 @@
{
"type": "structure",
"category": "elythia",
"folder": "antarchy:elythia",
"sort_order": 60,
"title": "guide.antarchy.entry.toreterror.title",
"subtitle": "guide.antarchy.entry.toreterror_arena.subtitle",
"description": ["guide.antarchy.entry.toreterror_arena.description", "guide.antarchy.entry.toreterror_arena.description2"],
@@ -1,6 +1,8 @@
{
"type": "article",
"category": "thoraxis",
"folder": "antarchy:thoraxis",
"sort_order": 40,
"title": "guide.antarchy.entry.vortex.title",
"subtitle": "guide.antarchy.entry.vortex.subtitle",
"description": ["guide.antarchy.entry.vortex.description", "guide.antarchy.entry.vortex.description2", "guide.antarchy.entry.vortex.description3"],
@@ -0,0 +1,7 @@
{
"replace": false,
"values": [
"antarchy:king",
"antarchy:queen"
]
}
+5 -1
View File
@@ -23,7 +23,7 @@ repositories {
maven { url = 'https://www.cursemaven.com' }
maven { url = 'https://maven.blamejared.com' }
maven { url = 'https://jitpack.io' }
flatDir { dirs file('../anthology_jars'), file('../infinite_dimensions_jars'), file('../integrated_api_jars') }
flatDir { dirs file('libs'), file('../anthology_jars'), file('../infinite_dimensions_jars'), file('../integrated_api_jars') }
maven {
name = "GeckoLib"
url = "https://dl.cloudsmith.io/public/geckolib3/geckolib/maven/"
@@ -99,6 +99,10 @@ dependencies {
implementation fg.deobf("com.craisinlord:anthology:${anthology_version}+1.20.1-forge")
runtimeOnly fg.deobf("local.compat:Apotheosis-1.20.1:7.4.8")
runtimeOnly fg.deobf("local.compat:Placebo-1.20.1:8.6.3")
runtimeOnly fg.deobf("local.compat:ApothicAttributes-1.20.1:1.3.7")
compileOnly("curse.maven:sizeable_foliage-${sizeable_foliage_curseforge_id}:${sizeable_foliage_curseforge_file_id_forge}")
runtimeOnly fg.deobf("curse.maven:sizeable_foliage-${sizeable_foliage_curseforge_id}:${sizeable_foliage_curseforge_file_id_forge}")
+1 -1
View File
@@ -6,7 +6,7 @@ mod_name=Antarchy
mod_description=ANTS! ANTS! ANTS! ANTS!
mod_authors=CraisinLord
mod_group_id=com.craisinlord
mod_version=1.0.4
mod_version=2.2.4
mod_license=All Rights Reserved
minecraft_version=1.20.1
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -22,9 +22,9 @@ public class ConfigGenInvocationMixin {
private void antarchy$safeGenerateAll(MinecraftServer server) {
try {
ConfigGenerator.generateAll(server);
} catch (Exception e) {
} catch (Exception | LinkageError e) {
Antarchy.LOGGER.error(
"[Antarchy] Infinite Dimensions surface rule scan crashed — likely a mod has a malformed surface rule (null 'biome_is' entry). Player login will continue.",
"[Antarchy] Infinite Dimensions config generation crashed — likely a mod with a malformed surface rule or a mismatched dependency. Player login will continue.",
e
);
}
+1 -1
View File
@@ -6,7 +6,7 @@ org.gradle.configureondemand=true
minecraft_version_1_21_1=1.21.1
modid=antarchy
mod_id=antarchy
mod_version=2.2.2
mod_version=2.2.5
maven_group=com.craisinlord
mixin_version=0.15.4+mixin.0.8.7
@@ -22,9 +22,9 @@ public class ConfigGenInvocationMixin {
private void antarchy$safeGenerateAll(MinecraftServer server) {
try {
ConfigGenerator.generateAll(server);
} catch (Exception e) {
} catch (Exception | LinkageError e) {
Antarchy.LOGGER.error(
"[Antarchy] Infinite Dimensions surface rule scan crashed — likely a mod has a malformed surface rule (null 'biome_is' entry). Player login will continue.",
"[Antarchy] Infinite Dimensions config generation crashed — likely a mod with a malformed surface rule or a mismatched dependency. Player login will continue.",
e
);
}
@@ -20,7 +20,7 @@ public interface ConfigGeneratorMixin {
remap = false,
require = 0
)
static void antarchy$skipBrokenBlockEntityFactories(
private static void antarchy$skipBrokenBlockEntityFactories(
Set<ResourceKey<BlockEntityType<?>>> entries,
Consumer<ResourceKey<BlockEntityType<?>>> scan) {
InfinityBlockEntityScanGuard.forEach(entries, scan, (entry, error) ->