1.20 backport

This commit is contained in:
craisinlord committed 2026-10-14 17:39:56 -05:00
1 parent f7e7bebac3
commit d54264c6c8
4681 files changed
+61551 -78441

No files matched your search

@@ -183,7 +183,6 @@ public final class AntarchyConfigCatalog {
|| name.startsWith("nightmareSword")
|| name.startsWith("basiliskDagger")
|| name.startsWith("squidzooka")
|| name.equals("invertProjectilesFromInvertedPlayers")
|| name.startsWith("gravityGun")
|| name.startsWith("critterCage")
|| name.equals("potentNyxiteInvertedDurationSeconds")
@@ -156,7 +156,6 @@ public final class AntarchySettings {
private static double rpoLauncherExplosionDamage = 34.0D;
private static double rpoLauncherExplosionRadius = 14.0D;
private static double sizeRayCooldownSeconds = 1.0D;
private static boolean invertProjectilesFromInvertedPlayers = false;
private static boolean gravityGunEnabled = true;
private static boolean gravityGunBlocksEnabled = true;
private static boolean gravityGunEntitiesEnabled = true;
@@ -1211,10 +1210,6 @@ public final class AntarchySettings {
return sizeRayCooldownSeconds;
}
public static boolean invertProjectilesFromInvertedPlayers() {
return invertProjectilesFromInvertedPlayers;
}
public static boolean gravityGunEnabled() {
return gravityGunEnabled;
}
@@ -1814,10 +1809,6 @@ public final class AntarchySettings {
sizeRayCooldownSeconds = value;
}
public static void setInvertProjectilesFromInvertedPlayers(boolean value) {
invertProjectilesFromInvertedPlayers = value;
}
public static void setGravityGunEnabled(boolean value) {
gravityGunEnabled = value;
}
@@ -76,6 +76,8 @@ public final class AntarchyTags {
public static final TagKey<EntityType<?>> SIZE_CHANGING_IMMUNE = TagKey.create(Registries.ENTITY_TYPE, id("size_changing_immune"));
public static final TagKey<EntityType<?>> CRITTER_CAGE_BLACKLIST = TagKey.create(Registries.ENTITY_TYPE, id("critter_cage_blacklist"));
public static final TagKey<EntityType<?>> PARALYSIS_IMMUNE = TagKey.create(Registries.ENTITY_TYPE, id("paralysis_immune"));
public static final TagKey<EntityType<?>> UNDERSIDE_CEILING_SPAWNERS = TagKey.create(Registries.ENTITY_TYPE, id("underside_ceiling_spawners"));
public static final TagKey<EntityType<?>> UNDERSIDE_CEILING_SHORT_GAP = TagKey.create(Registries.ENTITY_TYPE, id("underside_ceiling_short_gap"));
public static final TagKey<EntityType<?>> HUSHWEED_TARGETS = TagKey.create(Registries.ENTITY_TYPE, id("hushweed_targets"));
public static final TagKey<EntityType<?>> FLYTRAP_PREY = TagKey.create(Registries.ENTITY_TYPE, id("flytrap_prey"));
public static final TagKey<EntityType<?>> STINKY_REPELLED_HOSTILES = TagKey.create(Registries.ENTITY_TYPE, id("stinky_repelled_hostiles"));
@@ -650,7 +650,7 @@ public final class CreativeTabContents {
for (String potionPath : ANTARCHY_POTION_FAMILIES) {
acceptPotionFamily(output, potionPath);
}
for (String diskId : List.of("antarchy:introduction", "antarchy:toreterror_arena", "antarchy:high_fructose_corn_syrup",
for (String diskId : List.of("antarchy:toreterror_arena", "antarchy:high_fructose_corn_syrup",
"antarchy:elythia", "antarchy:flying_squirrel", "antarchy:brutalfly", "antarchy:rainbow_ant", "antarchy:kraken", "antarchy:cavaryn", "antarchy:hercules_beetle", "antarchy:thoraxis", "antarchy:temporal_fields", "antarchy:bloodglass", "antarchy:vortex")) {
ItemStack disk = new ItemStack(com.craisinlord.antos.content.AntOSObjects.FLOPPY_DISK.get());
disk.set(com.craisinlord.antos.content.AntOSObjects.FLOPPY_DISK_COMPONENT.get(), ResourceLocation.parse(diskId));
@@ -167,7 +167,7 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity {
public net.minecraft.world.entity.SpawnGroupData finalizeSpawn(ServerLevelAccessor level, DifficultyInstance difficulty,
MobSpawnType spawnReason, @Nullable net.minecraft.world.entity.SpawnGroupData spawnData) {
ConfiguredMobSpawnUtil.applyConfiguredHealth(this, AntarchySettings.emperorScorpionHealth());
if (ThoraxisUndersideManager.shouldSpawnInvertedOnDreamSand(level, this.blockPosition())) {
if (ThoraxisUndersideManager.isUndersideCeilingSpot(level, this.blockPosition(), this.getType())) {
ThoraxisUndersideManager.applyUndersideInversion(this);
}
return super.finalizeSpawn(level, difficulty, spawnReason, spawnData);
@@ -245,18 +245,12 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity {
if (level.getDifficulty() == Difficulty.PEACEFUL) {
return false;
}
if (ThoraxisUndersideManager.shouldSpawnInvertedOnDreamSand(level, pos)) {
if (ThoraxisUndersideManager.isUndersideCeilingSpawn(entityType, level, pos)) {
return true;
}
// Dream Dunes can use Dream Sandstone as the ceiling surface too. Keep
// the Emperor restricted to a supported underside position, but do
// not require the surface to be the narrower Dream Sand variant.
if (pos.getY() < 0 && level.getBiome(pos).is(DREAM_DUNES) && level.isEmptyBlock(pos)) {
BlockState below = level.getBlockState(pos.below());
BlockState above = level.getBlockState(pos.above());
boolean floorSupport = !below.is(Blocks.BEDROCK) && below.isFaceSturdy(level, pos.below(), Direction.UP);
boolean ceilingSupport = !above.is(Blocks.BEDROCK) && above.isFaceSturdy(level, pos.above(), Direction.DOWN);
return floorSupport || ceilingSupport;
return !below.is(Blocks.BEDROCK) && below.isFaceSturdy(level, pos.below(), Direction.UP);
}
return Monster.checkMonsterSpawnRules(entityType, level, spawnReason, pos, random);
}
@@ -112,15 +112,15 @@ public class ManticoreEntity extends Monster implements GeoEntity {
|| spawnReason == MobSpawnType.MOB_SUMMONED) {
return true;
}
if (pos.getY() >= 0) {
if (pos.getY() >= 0 || level.getDifficulty() == Difficulty.PEACEFUL) {
return false;
}
if (ThoraxisUndersideManager.isUndersideCeilingSpawn(type, level, pos)) {
return true;
}
BlockState below = level.getBlockState(pos.below());
BlockState above = level.getBlockState(pos.above());
boolean floorSupport = !below.is(Blocks.BEDROCK) && below.isFaceSturdy(level, pos.below(), Direction.UP);
boolean ceilingSupport = !above.is(Blocks.BEDROCK) && above.isFaceSturdy(level, pos.above(), Direction.DOWN);
return level.getDifficulty() != Difficulty.PEACEFUL
&& (floorSupport || ceilingSupport)
return floorSupport
&& level.isEmptyBlock(pos)
&& Monster.checkMonsterSpawnRules(type, level, spawnReason, pos, random);
}
@@ -117,7 +117,7 @@ public class ScorpionEntity extends Monster implements GeoEntity {
if (pos.getY() >= 0 && level.getBiome(pos).is(DREAM_DUNES) && random.nextBoolean()) {
return false;
}
if (ThoraxisUndersideManager.shouldSpawnInvertedOnDreamSand(level, pos)) {
if (ThoraxisUndersideManager.isUndersideCeilingSpawn(entityType, level, pos)) {
return level.getDifficulty() != Difficulty.PEACEFUL;
}
return level.getDifficulty() != Difficulty.PEACEFUL
@@ -146,7 +146,7 @@ public class ScorpionEntity extends Monster implements GeoEntity {
public SpawnGroupData finalizeSpawn(ServerLevelAccessor level, DifficultyInstance difficulty, MobSpawnType spawnType, @Nullable SpawnGroupData spawnGroupData) {
this.assignRandomTextureVariant();
ConfiguredMobSpawnUtil.applyConfiguredHealth(this, AntarchySettings.scorpionHealth());
if (ThoraxisUndersideManager.shouldSpawnInvertedOnDreamSand(level, this.blockPosition())) {
if (ThoraxisUndersideManager.isUndersideCeilingSpot(level, this.blockPosition(), this.getType())) {
ThoraxisUndersideManager.applyUndersideInversion(this);
}
return super.finalizeSpawn(level, difficulty, spawnType, spawnGroupData);
@@ -25,7 +25,7 @@ public final class ComputerScientistTradeManager extends SimpleJsonResourceReloa
private static final Gson GSON = new Gson();
private static final String DIRECTORY = "computer_scientist_trades";
private static final List<ResourceLocation> GENERAL_DISKS = List.of(
id("introduction"), id("high_fructose_corn_syrup"),
id("high_fructose_corn_syrup"),
id("elythia"), id("flying_squirrel"), id("rainbow_ant"), id("kraken"), id("cavaryn"), id("thoraxis"),
id("temporal_fields"), id("bloodglass"), id("vortex"));
private static volatile List<TradeEntry> loadedTrades = List.of();
@@ -2,8 +2,8 @@ package com.craisinlord.antarchy.content.worldgen.thoraxis;
import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.content.AntarchyObjects;
import com.craisinlord.antarchy.content.AntarchyTags;
import com.craisinlord.antarchy.content.advancement.AntarchyAdvancementTriggers;
import com.craisinlord.antarchy.content.block.DreamSandBlock;
import com.craisinlord.anthology.gravity.GravityApi;
import com.craisinlord.anthology.gravity.GravityDirection;
import com.craisinlord.anthology.gravity.GravityTransition;
@@ -20,11 +20,13 @@ import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.ServerLevelAccessor;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.NaturalSpawner;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.Vec3;
@@ -52,6 +54,8 @@ public final class ThoraxisUndersideManager {
private static final int UNDERSIDE_ENTRY_BORDER_Y = GRAVITY_FLIP_Y - 7;
private static final int FRESH_ENTRY_DELAY_TICKS = 20;
private static final int ENTRY_SLOW_FALL_DURATION_TICKS = 300;
private static final double CEILING_SPAWN_GAP = 1.75D;
private static final double SHORT_CEILING_SPAWN_GAP = 1.25D;
private static final Map<ServerLevel, TrackingState> STATES = new WeakHashMap<>();
private ThoraxisUndersideManager() {
@@ -346,25 +350,38 @@ public final class ThoraxisUndersideManager {
}
}
public static boolean shouldSpawnInvertedOnDreamSand(ServerLevelAccessor level, BlockPos pos) {
public static boolean isUndersideCeilingSpawn(EntityType<?> type, ServerLevelAccessor level, BlockPos pos) {
return type.is(AntarchyTags.Entities.UNDERSIDE_CEILING_SPAWNERS) && isUndersideCeilingSpot(level, pos, type);
}
public static boolean isUndersideCeilingSpot(ServerLevelAccessor level, BlockPos pos, EntityType<?> type) {
if (!isThoraxis(level.getLevel()) || pos.getY() >= GRAVITY_FLIP_Y) {
return false;
}
BlockState bodyState = level.getBlockState(pos);
if (!bodyState.isAir() && !bodyState.getCollisionShape(level, pos).isEmpty()) {
BlockPos belowPos = pos.below();
BlockState belowState = level.getBlockState(belowPos);
if (!NaturalSpawner.isValidEmptySpawnBlock(level, pos, bodyState, bodyState.getFluidState(), type)
|| !NaturalSpawner.isValidEmptySpawnBlock(level, belowPos, belowState, belowState.getFluidState(), type)
|| belowState.isFaceSturdy(level, belowPos, Direction.UP)) {
return false;
}
BlockPos supportPos = pos.above();
BlockState supportState = level.getBlockState(supportPos);
if (!(supportState.getBlock() instanceof DreamSandBlock)) {
return false;
}
BlockPos ceilingPos = pos.above();
BlockState ceilingState = level.getBlockState(ceilingPos);
return ceilingState.isFaceSturdy(level, ceilingPos, Direction.DOWN)
&& ceilingState.isValidSpawn(level, ceilingPos, type);
}
return supportState.isFaceSturdy(level, supportPos, Direction.DOWN)
&& level.getFluidState(pos).isEmpty()
&& level.isEmptyBlock(pos.below());
public static double ceilingSpawnFeetY(EntityType<?> type, BlockPos pos, double height) {
double gap = type.is(AntarchyTags.Entities.UNDERSIDE_CEILING_SHORT_GAP) ? SHORT_CEILING_SPAWN_GAP : CEILING_SPAWN_GAP;
return pos.getY() + 1.0D - gap - height;
}
public static AABB ceilingSpawnBounds(EntityType<?> type, BlockPos pos) {
double feetY = ceilingSpawnFeetY(type, pos, type.getHeight());
return type.getSpawnAABB(pos.getX() + 0.5D, feetY, pos.getZ() + 0.5D).setMaxY(pos.getY() + 1.0D);
}
public static boolean isThoraxis(Level level) {
@@ -0,0 +1,58 @@
package com.craisinlord.antarchy.mixins;
import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisUndersideManager;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import com.llamalad7.mixinextras.sugar.Local;
import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.Mob;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.NaturalSpawner;
import net.minecraft.world.level.biome.MobSpawnSettings;
import net.minecraft.world.phys.AABB;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@Mixin(NaturalSpawner.class)
public abstract class ThoraxisCeilingSpawnMixin {
@WrapOperation(
method = "isValidSpawnPostitionForType",
at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/SpawnPlacements;isSpawnPositionOk(Lnet/minecraft/world/entity/EntityType;Lnet/minecraft/world/level/LevelReader;Lnet/minecraft/core/BlockPos;)Z")
)
private static boolean antarchy$allowCeilingPlacement(EntityType<?> type, LevelReader level, BlockPos pos, Operation<Boolean> original) {
if (level instanceof ServerLevel serverLevel && ThoraxisUndersideManager.isUndersideCeilingSpawn(type, serverLevel, pos)) {
return true;
}
return original.call(type, level, pos);
}
@WrapOperation(
method = "isValidSpawnPostitionForType",
at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerLevel;noCollision(Lnet/minecraft/world/phys/AABB;)Z")
)
private static boolean antarchy$checkCeilingSpawnBounds(ServerLevel level, AABB bounds, Operation<Boolean> original,
@Local(argsOnly = true) MobSpawnSettings.SpawnerData spawnerData,
@Local(argsOnly = true) BlockPos.MutableBlockPos pos) {
if (ThoraxisUndersideManager.isUndersideCeilingSpawn(spawnerData.type, level, pos)) {
return original.call(level, ThoraxisUndersideManager.ceilingSpawnBounds(spawnerData.type, pos));
}
return original.call(level, bounds);
}
@WrapOperation(
method = "spawnCategoryForPosition(Lnet/minecraft/world/entity/MobCategory;Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/level/chunk/ChunkAccess;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/NaturalSpawner$SpawnPredicate;Lnet/minecraft/world/level/NaturalSpawner$AfterSpawnCallback;)V",
at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Mob;moveTo(DDDFF)V")
)
private static void antarchy$placeCeilingSpawn(Mob mob, double x, double y, double z, float yRot, float xRot, Operation<Void> original,
@Local(argsOnly = true) ServerLevel level) {
BlockPos pos = BlockPos.containing(x, y, z);
if (ThoraxisUndersideManager.isUndersideCeilingSpawn(mob.getType(), level, pos)) {
original.call(mob, x, ThoraxisUndersideManager.ceilingSpawnFeetY(mob.getType(), pos, mob.getBbHeight()), z, yRot, xRot);
ThoraxisUndersideManager.applyUndersideInversion(mob);
return;
}
original.call(mob, x, y, z, yRot, xRot);
}
}
@@ -33,6 +33,7 @@
"LivingEntityJumpingAccessor",
"CommandedMobMixin",
"UndertrialSpawnPlacementsMixin",
"ThoraxisCeilingSpawnMixin",
"LivingEntityRoyalEffectsMixin",
"JudgmentMarkEntityMixin",
"RoyalJudgmentCombatMixin",
@@ -1513,7 +1513,6 @@
,"guide.antarchy.category.cavaryn": "CAVARYN"
,"guide.antarchy.missing_title": "CORRUPTED FILE"
,"guide.antarchy.missing_disk_title": "UNREADABLE DISK"
,"guide.antarchy.disk.introduction.title": "INITIAL BOOT NOTES"
,"guide.antarchy.disk.toreterror_arena.title": "TORETERROR ARENA DATA"
,"guide.antarchy.disk.high_fructose_corn_syrup.title": "CORN SYRUP DATA"
,"guide.antarchy.disk.elythia.title": "ELYTHIA ACCESS RECORD"
@@ -1525,9 +1524,6 @@
,"guide.antarchy.disk.temporal_fields.title": "TEMPORAL MANIPULATION"
,"guide.antarchy.disk.bloodglass.title": "BLOODGLASS SURVIVAL NOTES"
,"guide.antarchy.disk.vortex.title": "VORTEX"
,"guide.antarchy.entry.introduction.title": "SYSTEM INITIALIZED"
,"guide.antarchy.entry.introduction.subtitle": "A machine for remembering what should have stayed forgotten."
,"guide.antarchy.entry.introduction.description": "Insert recovered floppy disks to expand this archive."
,"guide.antarchy.entry.toreterror.title": "Toreterror"
,"guide.antarchy.entry.toreterror_arena.subtitle": "Elythia Ocean boss record"
,"guide.antarchy.entry.toreterror_arena.description": "A powerful creature of the Testudines taxonomic order. It dwells in a coliseum somewhere in an Elythia Ocean; this archive can trace the nearest one for you, and its coordinates are listed below."
@@ -1538,10 +1534,27 @@
,"guide.antarchy.entry.hercules_beetle.description": "An enormous insect dwelling in Cavaryn. It is capable of a very powerful charge that can, and will, displace terrain."
,"guide.antarchy.entry.hercules_beetle.description2": "Aggressive on sight and omnivorous."
,"guide.antarchy.entry.hercules_beetle.description3": "Once injured in combat, the beast can be pacified with Broodfruit. When pacified, it bonds with the one who fed it, almost as if it respects them after the battle."
,"guide.antarchy.entry.elythia.title": "Elythia"
,"guide.antarchy.entry.elythia.subtitle": "Dimension and portal access record"
,"guide.antarchy.entry.elythia.description": "Right-click a Brown Ant to teleport there directly, or sacrifice one inside a Mossy Ouranwood frame to light a permanent, reusable portal."
,"guide.antarchy.entry.elythia.description2": "Cloud Sea only forms high in the sky, and only in about one in five regions up there. Elythia Ocean is where Toreterror Arenas are found."
,"guide.antarchy.entry.brown_ant.title": "Brown Ant"
,"guide.antarchy.entry.brown_ant.subtitle": "The way to Elythia"
,"guide.antarchy.entry.brown_ant.description": "Right-click a Brown Ant and it carries you to Elythia. Sacrifice one inside a Mossy Ouranwood frame and you get a portal that stays lit for good."
,"guide.antarchy.entry.brown_ant.description2": "Their nests turn up in Overworld forests, taigas and plains, and in Elythia. Brown Ants are harmless, and they breed with sugar."
,"guide.antarchy.entry.brown_ant.description3": "Cloud Sea only forms high in the sky, and only in about one region in five. Toreterror Arenas are out in the Elythia Ocean."
,"guide.antarchy.entry.termite.title": "Termite"
,"guide.antarchy.entry.termite.subtitle": "The way to Cavaryn"
,"guide.antarchy.entry.termite.description": "Right-click a Termite to travel to Cavaryn, or sacrifice one inside a Myrmite frame to light a permanent portal."
,"guide.antarchy.entry.termite.description2": "Termites nest in Overworld forests, taigas and plains, and in Cavaryn itself. They strip and eat wood near them, so keep them away from wooden builds. They back away from torchlight and breed with wood."
,"guide.antarchy.entry.termite.description3": "In Cavaryn, staying in one spot, killing hostiles or breaking eggs draws attention. Push it far enough and a swarm finds you. Moving on lets the area cool down."
,"guide.antarchy.entry.termite.description4": "Glowcap, Biowart, Moleworm, Wormy and Brooding Tunnel regions escalate differently. In most of them the last wave of a swarm brings a Hercules Beetle."
,"guide.antarchy.entry.red_ant.title": "Red Ant"
,"guide.antarchy.entry.red_ant.subtitle": "The way to Thoraxis"
,"guide.antarchy.entry.red_ant.description": "Right-click a Red Ant to travel to Thoraxis, or sacrifice one inside a Nyxite frame to light a portal. They nest in the Nether and attack on sight."
,"guide.antarchy.entry.red_ant.description2": "Thoraxis doesn't follow the rules of physics. You'll find gravity specifically is very wrong there, even inverted. It also has Antiwater, a liquid that flows upwards, and Antiwater geysers."
,"guide.antarchy.entry.red_ant.description3": "Bluestone is like Redstone but upside down. It can even be used to make upside down rails."
,"guide.antarchy.entry.red_ant.description4": "Dimensional tears come in linked pairs. Step into one and who knows how and where you'll emerge."
,"guide.antarchy.gallery.elythia": "Seen in Elythia"
,"guide.antarchy.gallery.cavaryn": "Seen in Cavaryn"
,"guide.antarchy.gallery.thoraxis": "Seen in Thoraxis"
,"guide.antarchy.gallery.drops": "Drops"
,"guide.antarchy.entry.flying_squirrel.title": "Flying Squirrel"
,"guide.antarchy.entry.flying_squirrel.subtitle": "Elythia companion record"
,"guide.antarchy.entry.flying_squirrel.description": "You wanna get nuts? Let’s get nuts."
@@ -1558,18 +1571,6 @@
,"guide.antarchy.entry.glimmer.description5": "Apple Cow: hunger drains 25 percent slower, and it grants a burst of Saturation and Regeneration when your food runs low. Ouranwood Deer: Speed I, and it knocks back hostile mobs you sprint into."
,"guide.antarchy.entry.glimmer.description6": "Frog: Jump Boost I, and it can devour a nearby hostile mob, growing bigger and stronger for a while. Ant: slightly longer attack reach, and a solid hit on something large grants a burst of Strength II."
,"guide.antarchy.entry.glimmer.description7": "Elka: Bloodglass Ward II. When one of those ward hearts breaks, it shatters into a shockwave around you."
,"guide.antarchy.entry.cavaryn.title": "Cavaryn"
,"guide.antarchy.entry.cavaryn.subtitle": "Dimension and portal access record"
,"guide.antarchy.entry.cavaryn.description": "Right-click a Termite to teleport there directly, or sacrifice one inside a Myrmite frame to light a permanent, reusable portal."
,"guide.antarchy.entry.cavaryn.description2": "Staying in one spot, killing hostiles, or breaking eggs raises local mob attention. Push it far enough and a swarm finds you; moving on lets an area cool down."
,"guide.antarchy.entry.cavaryn.description3": "Glowcap, Biowart, Moleworm, Wormy, and Brooding Tunnel regions escalate differently, so which biome you are in matters as much as how long you have been there."
,"guide.antarchy.entry.thoraxis.title": "Thoraxis"
,"guide.antarchy.entry.thoraxis.subtitle": "Dimension and portal access record"
,"guide.antarchy.entry.thoraxis.description": "Right-click a Red Ant to teleport there directly, or sacrifice one inside a Nyxite frame to light a permanent, reusable portal."
,"guide.antarchy.entry.thoraxis.description2": "Do not assume Nether rules: beds fail, respawn anchors work, the sky never lightens, and gravity flips once you cross far enough below center."
,"guide.antarchy.entry.thoraxis.description3": "Bluestone runs like Redstone's mirror image: the same wiring, but reacting the opposite way. The Vortex Lens shows it best: Redstone pulls, Bluestone pushes. Antimetal blocks reverse gravity locally and have their own rail system."
,"guide.antarchy.entry.thoraxis.description4": "Vertical progression runs Dream Dunes, Umbral Hills, Lucid Pools, and Nadir Forest, though height is a tendency, not a guaranteed layer."
,"guide.antarchy.entry.thoraxis.description5": "Dimensional tears spawn in linked pairs. Step through one and you're pulled to its twin, with your gravity flipped for a while after."
,"guide.antarchy.entry.temporal_fields.title": "Temporal Manipulation"
,"guide.antarchy.entry.temporal_fields.subtitle": "Time dilation, contraction, and Chronosphere reference"
,"guide.antarchy.entry.temporal_fields.description": "Time Dilation and Time Contraction change how fast affected entities experience the world."
@@ -1597,9 +1598,8 @@
,"guide.antarchy.entry.high_fructose_corn_syrup.description3": "Used on any food in a crafting grid, it Americanizes it: extra nutrition, extra saturation, and a burst of Regeneration."
,"guide.antarchy.entry.rainbow_ant.title": "Rainbow Ant"
,"guide.antarchy.entry.rainbow_ant.subtitle": "Dimensional gateway record"
,"guide.antarchy.entry.rainbow_ant.description": "A Rainbow Ant. It's your average dimensional ant... or so I thought at first. The Rainbow Ant doesn't lead to any dimension unless it is fed Rainbow Sugar."
,"guide.antarchy.entry.rainbow_ant.description2": "I visited the dimension of the Rainbow Ant and returned, intending to note what I saw. When I went back to the ant's dimension later, I found it was a different dimension."
,"guide.antarchy.entry.rainbow_ant.description3": "My previous notes on the Rainbow Ant have unfortunately been discarded, as I now know the dimension is different every time. For all I know, there could be millions of dimensions this fascinating creature acts as a gateway to."
,"guide.antarchy.entry.rainbow_ant.description": "A Rainbow Ant. It's your average dimensional ant... or is it? They seem to have an affinity for Rainbow Sugar."
,"guide.antarchy.entry.rainbow_ant.description2": "Each Rainbow Ant stores a unique dimension inside of it. Rainbow Ants are the key to the multiverse."
,"guide.antarchy.disk.rainbow_ant.title": "RAINBOW ANT FIELD NOTES"
,"guide.antarchy.disk.brutalfly.title": "BRUTALFLY FIELD NOTES"
,"guide.antarchy.entry.brutalfly.title": "Brutalfly"
@@ -1,5 +1,5 @@
{
"category": "antarchy:cavaryn",
"title": "guide.antarchy.disk.cavaryn.title",
"entries": ["antarchy:cavaryn"]
"entries": ["antarchy:termite"]
}
@@ -1,5 +1,5 @@
{
"category": "antarchy:elythia",
"title": "guide.antarchy.disk.elythia.title",
"entries": ["antarchy:elythia"]
"entries": ["antarchy:brown_ant"]
}
@@ -1,5 +1,5 @@
{
"category": "antarchy:thoraxis",
"title": "guide.antarchy.disk.thoraxis.title",
"entries": ["antarchy:thoraxis", "antarchy:nightmare"]
"entries": ["antarchy:red_ant", "antarchy:nightmare"]
}
@@ -4,5 +4,14 @@
"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"],
"cover_item": "antarchy:blood_crystal_shard"
"cover_item": "antarchy:blood_crystal_shard",
"green_tint": false,
"gallery": [
{"item": "antarchy:blood_crystal_helmet"},
{"item": "antarchy:blood_crystal_chestplate"},
{"item": "antarchy:blood_crystal_leggings"},
{"item": "antarchy:blood_crystal_boots"},
{"item": "antarchy:blood_crystal_katana"},
{"item": "antarchy:blood_crystal_apple"}
]
}
@@ -0,0 +1,31 @@
{
"type": "entity",
"category": "elythia",
"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"],
"entity": "antarchy:brown_ant",
"cover_entity": "antarchy:brown_ant",
"dimension": "antarchy:elythia",
"rotation": 45,
"green_tint": false,
"gallery_title": "guide.antarchy.gallery.elythia",
"gallery": [
"antarchy:king",
"antarchy:toreterror",
"antarchy:brutalfly",
"antarchy:basilisk",
"antarchy:glimmer",
"antarchy:flying_squirrel",
"antarchy:ouranwood_deer",
"antarchy:elka",
"antarchy:mantis",
"antarchy:alpha_mantis",
"antarchy:apple_cow",
"antarchy:stratoshark",
"antarchy:missile_squid",
"antarchy:octopus_bomb",
"antarchy:dorrie",
"antarchy:butterfly"
]
}
@@ -9,5 +9,10 @@
"locator": "antarchy:brutalfly",
"dimension": "antarchy:elythia",
"rotation": 45,
"render_scale": 0.6
"render_scale": 0.6,
"green_tint": false,
"gallery_title": "guide.antarchy.gallery.drops",
"gallery": [
{"item": "antarchy:brutalfly_wing"}
]
}
@@ -1,10 +0,0 @@
{
"type": "dimension",
"category": "cavaryn",
"title": "guide.antarchy.entry.cavaryn.title",
"subtitle": "guide.antarchy.entry.cavaryn.subtitle",
"description": ["guide.antarchy.entry.cavaryn.description", "guide.antarchy.entry.cavaryn.description2", "guide.antarchy.entry.cavaryn.description3"],
"cover_entity": "antarchy:termite",
"rotation": 45,
"dimension": "antarchy:cavaryn"
}
@@ -4,5 +4,6 @@
"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"],
"cover_item": "antarchy:duplicator_log"
"cover_item": "antarchy:duplicator_log",
"green_tint": false
}
@@ -6,5 +6,6 @@
"description": ["guide.antarchy.entry.easter_bunny.description", "guide.antarchy.entry.easter_bunny.description2"],
"entity": "antarchy:easter_bunny",
"cover_entity": "antarchy:easter_bunny",
"rotation": 45
"rotation": 45,
"green_tint": false
}
@@ -1,10 +0,0 @@
{
"type": "dimension",
"category": "elythia",
"title": "guide.antarchy.entry.elythia.title",
"subtitle": "guide.antarchy.entry.elythia.subtitle",
"description": ["guide.antarchy.entry.elythia.description", "guide.antarchy.entry.elythia.description2"],
"cover_entity": "antarchy:brown_ant",
"rotation": 45,
"dimension": "antarchy:elythia"
}
@@ -6,5 +6,6 @@
"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"],
"entity": "antarchy:flying_squirrel",
"rotation": 45,
"render_scale": 0.8
"render_scale": 0.8,
"green_tint": false
}
@@ -6,5 +6,6 @@
"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"],
"entity": "antarchy:glimmer",
"rotation": 45,
"render_scale": 0.8
"render_scale": 0.8,
"green_tint": false
}
@@ -7,5 +7,10 @@
"entity": "antarchy:hercules_beetle",
"cover_entity": "antarchy:hercules_beetle",
"rotation": 45,
"render_scale": 0.5
"render_scale": 0.5,
"green_tint": false,
"gallery": [
{"item": "antarchy:hercules_horn"},
{"item": "antarchy:broodfruit"}
]
}
@@ -4,5 +4,6 @@
"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"],
"cover_item": "antarchy:high_fructose_corn_syrup"
"cover_item": "antarchy:high_fructose_corn_syrup",
"green_tint": false
}
@@ -1,8 +0,0 @@
{
"type": "article",
"category": "general",
"title": "guide.antarchy.entry.introduction.title",
"subtitle": "guide.antarchy.entry.introduction.subtitle",
"description": ["guide.antarchy.entry.introduction.description"],
"cover_item": "antos:floppy_disk"
}
@@ -15,5 +15,11 @@
"locator": "antarchy:kings_tree",
"dimension": "antarchy:elythia",
"rotation": 45,
"render_scale": 0.5
"render_scale": 0.5,
"green_tint": false,
"gallery": [
"antarchy:prince",
{"item": "antarchy:king_scale"},
{"item": "antarchy:prince_egg"}
]
}
@@ -11,5 +11,11 @@
],
"entity": "antarchy:kraken",
"cover_entity": "antarchy:kraken",
"render_scale": 0.5
"render_scale": 0.5,
"green_tint": false,
"gallery_title": "guide.antarchy.gallery.drops",
"gallery": [
{"item": "antarchy:kraken_tentacle"},
{"item": "antarchy:kraken_tooth"}
]
}
@@ -4,5 +4,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"],
"entity": "antarchy:nightmare"
"entity": "antarchy:nightmare",
"green_tint": false,
"gallery_title": "guide.antarchy.gallery.drops",
"gallery": [
{"item": "antarchy:nightmare_scale"}
]
}
@@ -6,5 +6,6 @@
"description": ["guide.antarchy.entry.prince.description", "guide.antarchy.entry.prince.description2"],
"entity": "antarchy:prince",
"cover_entity": "antarchy:prince",
"rotation": 45
"rotation": 45,
"green_tint": false
}
@@ -6,5 +6,6 @@
"description": ["guide.antarchy.entry.princess.description", "guide.antarchy.entry.princess.description2"],
"entity": "antarchy:princess",
"cover_entity": "antarchy:princess",
"rotation": 45
"rotation": 45,
"green_tint": false
}
@@ -16,5 +16,14 @@
"locator": "antarchy:queen",
"dimension": "antarchy:thoraxis",
"rotation": 45,
"render_scale": 0.5
"render_scale": 0.5,
"green_tint": false,
"gallery": [
"antarchy:manticore",
"antarchy:princess",
{"item": "antarchy:queen_scale"},
{"item": "antarchy:princess_egg"},
{"item": "antarchy:blood_crystal_shard"},
{"item": "antarchy:music_disc_the_queen"}
]
}
@@ -5,10 +5,13 @@
"subtitle": "guide.antarchy.entry.rainbow_ant.subtitle",
"description": [
"guide.antarchy.entry.rainbow_ant.description",
"guide.antarchy.entry.rainbow_ant.description2",
"guide.antarchy.entry.rainbow_ant.description3"
"guide.antarchy.entry.rainbow_ant.description2"
],
"entity": "antarchy:rainbow_ant",
"cover_entity": "antarchy:rainbow_ant",
"rotation": 45
"rotation": 45,
"green_tint": false,
"gallery": [
{"item": "antarchy:rainbow_sugar"}
]
}
@@ -0,0 +1,29 @@
{
"type": "entity",
"category": "thoraxis",
"title": "guide.antarchy.entry.red_ant.title",
"subtitle": "guide.antarchy.entry.red_ant.subtitle",
"description": [
"guide.antarchy.entry.red_ant.description",
"guide.antarchy.entry.red_ant.description2",
"guide.antarchy.entry.red_ant.description3",
"guide.antarchy.entry.red_ant.description4"
],
"entity": "antarchy:red_ant",
"cover_entity": "antarchy:red_ant",
"dimension": "antarchy:thoraxis",
"rotation": 45,
"green_tint": false,
"gallery_title": "guide.antarchy.gallery.thoraxis",
"gallery": [
"antarchy:queen",
"antarchy:nightmare",
"antarchy:reverie",
"antarchy:lucid",
"antarchy:vortex",
"antarchy:manticore",
"antarchy:emperor_scorpion",
"antarchy:scorpion",
"antarchy:bed_bug"
]
}
@@ -4,5 +4,6 @@
"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"],
"cover_potion": "antarchy:time_dilation"
"cover_potion": "antarchy:time_dilation",
"green_tint": false
}
@@ -0,0 +1,26 @@
{
"type": "entity",
"category": "cavaryn",
"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"],
"entity": "antarchy:termite",
"cover_entity": "antarchy:termite",
"dimension": "antarchy:cavaryn",
"rotation": 45,
"green_tint": false,
"gallery_title": "guide.antarchy.gallery.cavaryn",
"gallery": [
"antarchy:hercules_beetle",
"antarchy:jerry",
"antarchy:crawling_blight",
"antarchy:skulking_fright",
"antarchy:springbug",
"antarchy:spit_bug",
"antarchy:moleworm",
"antarchy:molevore",
"antarchy:worm",
"antarchy:rolly_polly",
"antarchy:stink_bug"
]
}
@@ -1,10 +0,0 @@
{
"type": "dimension",
"category": "thoraxis",
"title": "guide.antarchy.entry.thoraxis.title",
"subtitle": "guide.antarchy.entry.thoraxis.subtitle",
"description": ["guide.antarchy.entry.thoraxis.description", "guide.antarchy.entry.thoraxis.description2", "guide.antarchy.entry.thoraxis.description3", "guide.antarchy.entry.thoraxis.description4", "guide.antarchy.entry.thoraxis.description5"],
"cover_entity": "antarchy:red_ant",
"rotation": 45,
"dimension": "antarchy:thoraxis"
}
@@ -10,5 +10,11 @@
"dimension": "antarchy:elythia",
"search_radius": 100,
"cover_entity": "antarchy:toreterror",
"render_scale": 0.8
"render_scale": 0.8,
"green_tint": false,
"gallery_title": "guide.antarchy.gallery.drops",
"gallery": [
{"item": "antarchy:primordial_scute"},
{"item": "antarchy:water_cannon"}
]
}
@@ -5,5 +5,11 @@
"subtitle": "guide.antarchy.entry.vortex.subtitle",
"description": ["guide.antarchy.entry.vortex.description", "guide.antarchy.entry.vortex.description2", "guide.antarchy.entry.vortex.description3"],
"cover_entity": "antarchy:vortex",
"render_scale": 0.8
"render_scale": 0.8,
"green_tint": false,
"gallery": [
{"item": "antarchy:vortex_lens"},
{"item": "antarchy:eye_of_the_storm"},
{"item": "antarchy:bluestone"}
]
}
@@ -43,7 +43,7 @@
1.0
],
"humidity": [
0.1,
0.0,
1.0
],
"continentalness": [
@@ -73,7 +73,7 @@
1.0
],
"humidity": [
0.1,
0.0,
1.0
],
"continentalness": [
@@ -163,8 +163,8 @@
1.0
],
"humidity": [
-0.15,
0.45
-0.05,
0.25
],
"continentalness": [
-1.0,
@@ -175,8 +175,8 @@
1.0
],
"weirdness": [
-0.6,
0.9
-0.35,
0.55
],
"depth": [
-2.0,
@@ -193,7 +193,7 @@
1.0
],
"humidity": [
0.45,
0.35,
1.0
],
"continentalness": [
@@ -209,7 +209,7 @@
0.9
],
"depth": [
0.15,
0.0,
2.0
],
"offset": 0.0
@@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"antarchy:scorpion"
]
}
@@ -0,0 +1,8 @@
{
"replace": false,
"values": [
"antarchy:scorpion",
"antarchy:emperor_scorpion",
"antarchy:manticore"
]
}