From c6b47b496af0f479f2b4b6e3acd5204d50f841f4 Mon Sep 17 00:00:00 2001 From: craisinlord Date: Sat, 19 Sep 2026 01:01:13 -0500 Subject: [PATCH] fixed game dev not working various fabric issues added archives to loot tables --- ...ivingEntityChronosphereEquipmentMixin.java | 11 +- .../data/antarchy/dimension_type/cavaryn.json | 2 +- .../antarchy/config/AntarchySettings.java | 2 +- .../antarchy/content/block/RoyalEggBlock.java | 55 +++++++- .../client/AntarchyArchivePreviews.java | 15 ++ .../content/client/HoverboardSoundSystem.java | 128 ++++++++++++++++++ .../client/game/AntarchyComputerGames.java | 6 - .../renderer/RoyalIndicatorRenderer.java | 15 +- .../dispenser/BugSprayDispenseBehavior.java | 35 +++++ .../antarchy/content/entity/BomberEntity.java | 2 +- .../content/entity/ButterflyEntity.java | 2 +- .../content/entity/CaterpillarEntity.java | 2 +- .../content/entity/CrawlingBlightEntity.java | 2 +- .../content/entity/EmperorScorpionEntity.java | 1 + .../content/entity/HerculesBeetleEntity.java | 2 +- .../content/entity/HoverboardEntity.java | 2 +- .../antarchy/content/entity/JerryEntity.java | 2 +- .../content/entity/ReverieEntity.java | 2 +- .../content/entity/RollyPollyEntity.java | 2 +- .../content/entity/ScorpionEntity.java | 4 + .../content/entity/SkulkingFrightEntity.java | 2 +- .../content/entity/SpitBugEntity.java | 2 +- .../content/entity/SpringbugEntity.java | 2 +- .../content/entity/StinkBugEntity.java | 2 +- .../antarchy/content/entity/WaspEntity.java | 2 +- .../content/entity/ant/AntTeleportHelper.java | 29 ++-- .../flying_squirrel/FlyingSquirrelEntity.java | 2 +- .../content/entity/royal/KingEntity.java | 10 ++ .../entity/stratoshark/StratosharkEntity.java | 1 + .../antarchy/content/item/HoverboardItem.java | 5 +- .../content/item/RoyalGuardianArmorItem.java | 6 +- .../content/item/RoyalGuardianShieldItem.java | 2 +- .../content/item/RoyalGuardianSwordItem.java | 2 +- .../worldgen/thoraxis/QueenTrailGrid.java | 2 +- ...ThoraxisTransitionThroatConfiguration.java | 11 ++ .../ThoraxisTransitionThroatFeature.java | 25 ++-- .../thoraxis/ThoraxisUndersideManager.java | 44 ++++-- .../mixins/time/TemporalMiningSpeedMixin.java | 39 ++++++ .../resources/antarchy-common.mixins.json | 1 + .../antarchy/blockstates/prince_egg.json | 18 ++- .../antarchy/blockstates/princess_egg.json | 18 ++- .../resources/assets/antarchy/lang/en_us.json | 82 ++++++++--- .../advancement/anger_the_hive_mind.json | 4 +- .../antarchy/computer/disk/antman_game.json | 5 - .../data/antarchy/computer/disk/glimmer.json | 5 + .../antarchy/computer/entry/bloodglass.json | 2 +- .../data/antarchy/computer/entry/cavaryn.json | 2 +- .../computer/entry/duplicator_tree.json | 2 +- .../antarchy/computer/entry/easter_bunny.json | 2 +- .../data/antarchy/computer/entry/elythia.json | 2 +- .../computer/entry/flying_squirrel.json | 2 +- .../data/antarchy/computer/entry/glimmer.json | 10 ++ .../entry/high_fructose_corn_syrup.json | 2 +- .../data/antarchy/computer/entry/king.json | 2 +- .../data/antarchy/computer/entry/kraken.json | 2 +- .../antarchy/computer/entry/nightmare.json | 2 +- .../data/antarchy/computer/entry/prince.json | 2 +- .../antarchy/computer/entry/princess.json | 2 +- .../data/antarchy/computer/entry/queen.json | 2 +- .../computer/entry/temporal_fields.json | 2 +- .../antarchy/computer/entry/thoraxis.json | 2 +- .../computer/entry/toreterror_arena.json | 2 +- .../data/antarchy/computer/entry/vortex.json | 2 +- .../data/antarchy/dimension_type/cavaryn.json | 2 +- .../antarchy/loot_table/blocks/ant_trap.json | 15 ++ .../chests/basilisk_lair/generic.json | 26 ++++ .../chests/basilisk_lair/treasure.json | 26 ++++ .../chests/fallen_kingdom_castle/generic.json | 13 ++ .../fallen_kingdom_castle/treasure.json | 13 ++ .../chests/queen_castle/generic.json | 6 +- .../chests/queen_castle/treasure.json | 6 +- .../chests/ruined_arena/generic.json | 13 ++ .../chests/ruined_prison/generic.json | 13 ++ .../chests/ruined_prison/warden_cache.json | 13 ++ .../chests/stampys_house/storage.json | 13 ++ .../chests/temple_of_technoblade/generic.json | 13 ++ .../temple_of_technoblade/treasure.json | 13 ++ .../chests/tigers_eye_shrine/treasure.json | 13 ++ .../chests/trayaurus_lab/trayaurus_lab.json | 13 ++ .../chests/underside_ruins/treasure.json | 6 +- .../data/antarchy/recipe/bug_spray.json | 19 +++ .../antarchy/worldgen/biome/dream_dunes.json | 1 + .../thoraxis_transition_throat.json | 4 +- .../thoraxis_transition_throat_large.json | 6 + .../thoraxis_transition_throat_large.json | 24 ++++ .../worldgen/structure/tigers_eye_shrine.json | 2 +- .../worldgen/structure/underside_castle.json | 2 +- .../worldgen/structure/underside_ruins.json | 2 +- .../structure_set/tigers_eye_shrine.json | 2 +- .../acquirable_job_site.json | 2 +- .../worldgen/noise/nether/temperature.json | 7 + .../worldgen/noise/nether/vegetation.json | 7 + .../antarchy/fabric/AntarchyFabric.java | 1 + .../fabric/AntarchyFabricContent.java | 2 + .../mixin/ThoraxisWaterBucketMixin.java | 72 ++++++++++ .../mixin/entity/ParalyzedMobFreezeMixin.java | 22 +++ .../fabric/registry/AntarchyFabricMisc.java | 7 +- .../fabric/registry/DeferredHolder.java | 1 + .../src/main/resources/fabric.mod.json | 2 +- .../neoforge/AntarchyToolsConfig.java | 2 +- .../registry/AntarchyNeoForgeEvents.java | 2 +- .../registry/AntarchyNeoforgeMisc.java | 2 +- 102 files changed, 926 insertions(+), 139 deletions(-) create mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/AntarchyArchivePreviews.java create mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/HoverboardSoundSystem.java create mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/content/dispenser/BugSprayDispenseBehavior.java create mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisTransitionThroatConfiguration.java create mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/TemporalMiningSpeedMixin.java delete mode 100644 common-1.21.1/src/main/resources/data/antarchy/computer/disk/antman_game.json create mode 100644 common-1.21.1/src/main/resources/data/antarchy/computer/disk/glimmer.json create mode 100644 common-1.21.1/src/main/resources/data/antarchy/computer/entry/glimmer.json create mode 100644 common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/ant_trap.json create mode 100644 common-1.21.1/src/main/resources/data/antarchy/recipe/bug_spray.json create mode 100644 common-1.21.1/src/main/resources/data/antarchy/worldgen/configured_feature/thoraxis_transition_throat_large.json create mode 100644 common-1.21.1/src/main/resources/data/antarchy/worldgen/placed_feature/thoraxis_transition_throat_large.json create mode 100644 common-1.21.1/src/main/resources/data/minecraft/worldgen/noise/nether/temperature.json create mode 100644 common-1.21.1/src/main/resources/data/minecraft/worldgen/noise/nether/vegetation.json create mode 100644 fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/mixin/ThoraxisWaterBucketMixin.java create mode 100644 fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/mixin/entity/ParalyzedMobFreezeMixin.java diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/mixins/time/LivingEntityChronosphereEquipmentMixin.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/mixins/time/LivingEntityChronosphereEquipmentMixin.java index 83b84a2d..cfd398de 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/mixins/time/LivingEntityChronosphereEquipmentMixin.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/mixins/time/LivingEntityChronosphereEquipmentMixin.java @@ -1,6 +1,5 @@ package com.craisinlord.antarchy.mixins.time; -import com.craisinlord.antarchy.content.enchantment.AntarchyEnchantments; import com.craisinlord.antarchy.content.time.ChronosphereManager; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.EquipmentSlot; @@ -13,10 +12,10 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(LivingEntity.class) public abstract class LivingEntityChronosphereEquipmentMixin { - @Inject(method = "setItemSlot", at = @At("TAIL")) - private void antarchy$refreshChronosphere(EquipmentSlot slot, ItemStack stack, CallbackInfo callback) { - if (slot != EquipmentSlot.CHEST) return; - LivingEntity self = (LivingEntity) (Object) this; - if (self instanceof ServerPlayer player) ChronosphereManager.refresh(player); + @Inject(method = "onEquipItem", at = @At("TAIL")) + private void antarchy$refreshChronosphere(EquipmentSlot slot, ItemStack oldStack, ItemStack newStack, CallbackInfo callback) { + if (slot == EquipmentSlot.CHEST && (Object) this instanceof ServerPlayer player) { + ChronosphereManager.refresh(player); + } } } diff --git a/common-1.20.1/src/main/resources/data/antarchy/dimension_type/cavaryn.json b/common-1.20.1/src/main/resources/data/antarchy/dimension_type/cavaryn.json index 5aed0ffe..421deaf8 100644 --- a/common-1.20.1/src/main/resources/data/antarchy/dimension_type/cavaryn.json +++ b/common-1.20.1/src/main/resources/data/antarchy/dimension_type/cavaryn.json @@ -1,5 +1,5 @@ { - "ultrawarm": true, + "ultrawarm": false, "natural": false, "coordinate_scale": 64.0, "bed_works": false, diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java index 35274045..1ed7f7c3 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java @@ -240,7 +240,7 @@ public final class AntarchySettings { private static double royalGuardianSwordStormJumpRange = 9.0D; private static double royalAssailantBattleAxeAttackDamage = 151.0D; private static double royalAssailantBattleAxeAttackSpeed = -2.9D; - private static double royalWeaponAttackReachBonus = 1.0D; + private static double royalWeaponAttackReachBonus = 3.2D; private static double royalWeaponAttackKnockbackBonus = 1.0D; private static int royalWeaponDurability = 4608; private static int royalWeaponEnchantability = 30; diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/RoyalEggBlock.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/RoyalEggBlock.java index 05e78ab6..409dfb9a 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/RoyalEggBlock.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/RoyalEggBlock.java @@ -3,6 +3,7 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.block.entity.RoyalEggBlockEntity; import com.craisinlord.antarchy.content.entity.royal.RoyalMountEntity; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisUndersideManager; import java.util.UUID; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -18,6 +19,7 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.MobSpawnType; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.Level; import net.minecraft.world.entity.item.FallingBlockEntity; import net.minecraft.world.level.LevelAccessor; @@ -30,6 +32,7 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.block.state.properties.IntegerProperty; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.phys.shapes.CollisionContext; @@ -39,6 +42,7 @@ import org.jetbrains.annotations.Nullable; public abstract class RoyalEggBlock extends BaseEntityBlock { public static final IntegerProperty HATCH = BlockStateProperties.HATCH; + public static final BooleanProperty INVERTED = BooleanProperty.create("inverted"); private static final int MAX_HATCH = 2; private static final int FALL_DELAY = 2; @@ -49,16 +53,23 @@ public abstract class RoyalEggBlock extends BaseEntityBlock { Block.box(5.0D, 14.0D, 5.0D, 11.0D, 15.0D, 11.0D), Block.box(6.0D, 15.0D, 6.0D, 10.0D, 16.0D, 10.0D)); + private static final VoxelShape INVERTED_SHAPE = Shapes.or( + Block.box(3.0D, 3.0D, 3.0D, 13.0D, 16.0D, 13.0D), + Block.box(2.0D, 5.0D, 2.0D, 14.0D, 15.0D, 14.0D), + Block.box(4.0D, 2.0D, 4.0D, 12.0D, 3.0D, 12.0D), + Block.box(5.0D, 1.0D, 5.0D, 11.0D, 2.0D, 11.0D), + Block.box(6.0D, 0.0D, 6.0D, 10.0D, 1.0D, 10.0D)); + protected RoyalEggBlock(Properties properties) { super(properties); - this.registerDefaultState(this.stateDefinition.any().setValue(HATCH, 0)); + this.registerDefaultState(this.stateDefinition.any().setValue(HATCH, 0).setValue(INVERTED, false)); } protected abstract EntityType mountType(); @Override protected void createBlockStateDefinition(StateDefinition.Builder builder) { - builder.add(HATCH); + builder.add(HATCH, INVERTED); } @Override @@ -68,7 +79,16 @@ public abstract class RoyalEggBlock extends BaseEntityBlock { @Override protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { - return SHAPE; + return state.getValue(INVERTED) ? INVERTED_SHAPE : SHAPE; + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return this.defaultBlockState().setValue(INVERTED, isInvertedGravityAt(context.getLevel(), context.getClickedPos())); + } + + private static boolean isInvertedGravityAt(Level level, BlockPos pos) { + return ThoraxisUndersideManager.isThoraxis(level) && pos.getY() < ThoraxisUndersideManager.GRAVITY_FLIP_Y; } @Nullable @@ -105,7 +125,8 @@ public abstract class RoyalEggBlock extends BaseEntityBlock { UUID placer = source == null ? null : source.getPlacerUuid(); int hatch = state.getValue(HATCH); level.setBlock(pos, Blocks.AIR.defaultBlockState(), 2); - level.setBlock(target, state.setValue(HATCH, Math.max(0, hatch - 1)), 2); + level.setBlock(target, state.setValue(HATCH, Math.max(0, hatch - 1)) + .setValue(INVERTED, isInvertedGravityAt(level, target)), 2); if (level.getBlockEntity(target) instanceof RoyalEggBlockEntity moved) { moved.setPlacerUuid(placer); } @@ -129,6 +150,12 @@ public abstract class RoyalEggBlock extends BaseEntityBlock { @Override protected void tick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + boolean inverted = state.getValue(INVERTED); + if (inverted) { + tickInvertedFall(state, level, pos); + return; + } + if (!FallingBlock.isFree(level.getBlockState(pos.below())) || pos.getY() < level.getMinBuildHeight()) { return; } @@ -141,6 +168,26 @@ public abstract class RoyalEggBlock extends BaseEntityBlock { } } + /** + * Vanilla FallingBlockEntity always falls in world-down direction, so an + * unsupported egg placed with inverted underside gravity is stepped + * upward toward its support instead of being handed to that entity. + */ + private void tickInvertedFall(BlockState state, ServerLevel level, BlockPos pos) { + BlockPos above = pos.above(); + if (!FallingBlock.isFree(level.getBlockState(above)) || above.getY() > level.getMaxBuildHeight()) { + return; + } + + UUID placer = level.getBlockEntity(pos) instanceof RoyalEggBlockEntity egg ? egg.getPlacerUuid() : null; + level.removeBlock(pos, false); + level.setBlock(above, state, Block.UPDATE_ALL); + if (level.getBlockEntity(above) instanceof RoyalEggBlockEntity moved) { + moved.setPlacerUuid(placer); + } + level.scheduleTick(above, this, FALL_DELAY); + } + @Override protected boolean isRandomlyTicking(BlockState state) { return true; diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/AntarchyArchivePreviews.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/AntarchyArchivePreviews.java new file mode 100644 index 00000000..7fac1223 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/AntarchyArchivePreviews.java @@ -0,0 +1,15 @@ +package com.craisinlord.antarchy.content.client; + +import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity; +import com.craisinlord.antos.api.client.archive.ArchiveEntityPreviewRegistry; +import net.minecraft.resources.ResourceLocation; + +public final class AntarchyArchivePreviews { + private AntarchyArchivePreviews() {} + + public static void register() { + ArchiveEntityPreviewRegistry.register(ResourceLocation.fromNamespaceAndPath("antarchy", "nightmare"), entity -> { + if (entity instanceof NightmareEntity nightmare) nightmare.setArchivePreviewFlying(); + }); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/HoverboardSoundSystem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/HoverboardSoundSystem.java new file mode 100644 index 00000000..17dee3e8 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/HoverboardSoundSystem.java @@ -0,0 +1,128 @@ +package com.craisinlord.antarchy.content.client; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.entity.HoverboardEntity; +import com.craisinlord.antarchy.mixins.LivingEntityJumpingAccessor; +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.sounds.AbstractTickableSoundInstance; +import net.minecraft.client.resources.sounds.SoundInstance; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.entity.Entity; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public final class HoverboardSoundSystem { + private static final float MIN_PITCH = 0.75F; + private static final float MAX_PITCH = 1.6F; + private static final float MIN_VOLUME = 0.45F; + private static final float MAX_VOLUME = 0.8F; + + private static final Map ACTIVE = new HashMap<>(); + + private HoverboardSoundSystem() { + } + + public static void tick() { + Minecraft mc = Minecraft.getInstance(); + if (mc.level == null) { + stopAll(mc); + return; + } + if (mc.isPaused()) { + return; + } + + Set activeIds = new HashSet<>(); + for (Entity entity : mc.level.entitiesForRendering()) { + if (!(entity instanceof HoverboardEntity hoverboard) || !hoverboard.isVehicle()) { + continue; + } + + int id = hoverboard.getId(); + activeIds.add(id); + IdleLoopSound sound = ACTIVE.get(id); + if (sound == null || !mc.getSoundManager().isActive(sound)) { + sound = new IdleLoopSound(hoverboard); + ACTIVE.put(id, sound); + mc.getSoundManager().play(sound); + } + } + + ACTIVE.entrySet().removeIf(entry -> { + if (activeIds.contains(entry.getKey())) { + return false; + } + mc.getSoundManager().stop(entry.getValue()); + return true; + }); + } + + private static void stopAll(Minecraft mc) { + ACTIVE.values().forEach(mc.getSoundManager()::stop); + ACTIVE.clear(); + } + + private static final class IdleLoopSound extends AbstractTickableSoundInstance { + private final HoverboardEntity hoverboard; + private double lastX; + private double lastZ; + + private IdleLoopSound(HoverboardEntity hoverboard) { + super(AntarchySoundEvents.HOVERBOARD_IDLE.get(), SoundSource.NEUTRAL, RandomSource.create()); + this.hoverboard = hoverboard; + this.looping = true; + this.delay = 0; + this.relative = false; + this.attenuation = SoundInstance.Attenuation.LINEAR; + this.volume = MIN_VOLUME; + this.pitch = MIN_PITCH; + this.x = hoverboard.getX(); + this.y = hoverboard.getY(); + this.z = hoverboard.getZ(); + this.lastX = this.x; + this.lastZ = this.z; + } + + @Override + public void tick() { + if (this.hoverboard.isRemoved() || !this.hoverboard.isVehicle()) { + this.stop(); + return; + } + + double dx = this.hoverboard.getX() - this.lastX; + double dz = this.hoverboard.getZ() - this.lastZ; + double speed = Math.sqrt(dx * dx + dz * dz); + this.lastX = this.hoverboard.getX(); + this.lastZ = this.hoverboard.getZ(); + + this.x = this.hoverboard.getX(); + this.y = this.hoverboard.getY(); + this.z = this.hoverboard.getZ(); + + double maxSpeed = Math.max(AntarchySettings.hoverboardMaxSpeed(), 0.0001D); + float speedRatio = (float) Mth.clamp(speed / maxSpeed, 0.0D, 1.0D); + boolean jumping = false; + Entity passenger = this.hoverboard.getControllingPassenger(); + if (passenger instanceof net.minecraft.world.entity.player.Player player) { + jumping = ((LivingEntityJumpingAccessor) player).antarchy$isJumping(); + } + boolean movingUpward = this.hoverboard.getDeltaMovement().y > 0.02D; + float liftRatio = jumping || movingUpward ? 1.0F : 0.0F; + this.volume = Mth.lerp(speedRatio, MIN_VOLUME, MAX_VOLUME); + this.pitch = Mth.lerp(speedRatio, MIN_PITCH, MAX_PITCH) + + Mth.lerp(liftRatio, 0.0F, 0.2F); + } + + @Override + public boolean canStartSilent() { + return true; + } + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/game/AntarchyComputerGames.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/game/AntarchyComputerGames.java index e9f6174b..d379407f 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/game/AntarchyComputerGames.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/game/AntarchyComputerGames.java @@ -23,12 +23,6 @@ public final class AntarchyComputerGames { AntarchyGameNetworking.requestBasiliskState(pos); return new GameSession(() -> { if (!loaded.get()) loaded.set(loadScores(pos, AntarchyGamePayload.BASILISK_STATE, program::setStoredScores)); program.tick(); }, program::render, key -> loaded.get() && program.keyPressed(key), ignored -> false); })); - registerIfMissing(game("antman", "ANTMAN.EXE", pos -> { - AntmanProgram program = new AntmanProgram(true, 0, 0, score -> AntarchyGameNetworking.saveAntmanScore(pos, score)); - var loaded = new java.util.concurrent.atomic.AtomicBoolean(); - AntarchyGameNetworking.requestAntmanState(pos); - return new GameSession(() -> { if (!loaded.get()) loaded.set(loadScores(pos, AntarchyGamePayload.ANTMAN_STATE, program::setStoredScores)); program.tick(); }, program::render, key -> loaded.get() && program.keyPressed(key), ignored -> false); - })); } private static void registerIfMissing(ComputerGame game) { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/RoyalIndicatorRenderer.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/RoyalIndicatorRenderer.java index 1d60e898..6c6c3e44 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/RoyalIndicatorRenderer.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/RoyalIndicatorRenderer.java @@ -28,11 +28,12 @@ public final class RoyalIndicatorRenderer { crownPoints(lines, pose, radius, spin, 1.0F, 0.80F, 0.22F, 0.95F); } if (judged) { - float markY = commanded ? -0.13F : 0.0F; + float markY = commanded ? -0.13F : 0.08F; poseStack.translate(0.0D, markY, 0.0D); pose = poseStack.last(); brackets(lines, pose, radius * 1.18F, -spin * 1.7F); ring(lines, pose, radius * 0.73F, -spin * 0.7F, 1.0F, 0.91F, 0.48F, 0.85F, 24); + judgmentFlare(lines, pose, radius * 0.82F, spin); } poseStack.popPose(); } @@ -79,6 +80,18 @@ public final class RoyalIndicatorRenderer { } } + private static void judgmentFlare(VertexConsumer out, PoseStack.Pose pose, float radius, float rotation) { + // The old mark was almost edge-on from normal gameplay camera angles. Add a vertical, + // unmistakable judgment sigil while keeping the rotating ring as its core. + for (int i = 0; i < 4; i++) { + double angle = rotation + Math.PI * 0.5D * i; + float x = (float) Math.cos(angle) * radius; + float z = (float) Math.sin(angle) * radius; + line(out, pose, x, -0.16F, z, 0.0F, 0.22F, 0.0F, 1.0F, 0.68F, 0.08F, 1.0F); + line(out, pose, 0.0F, 0.22F, 0.0F, -x, -0.16F, -z, 1.0F, 0.91F, 0.35F, 0.95F); + } + } + private static void line(VertexConsumer out, PoseStack.Pose pose, float x1, float y1, float z1, float x2, float y2, float z2, float r, float g, float b, float a) { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/dispenser/BugSprayDispenseBehavior.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/dispenser/BugSprayDispenseBehavior.java new file mode 100644 index 00000000..a23206cc --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/dispenser/BugSprayDispenseBehavior.java @@ -0,0 +1,35 @@ +package com.craisinlord.antarchy.content.dispenser; + +import com.craisinlord.antarchy.content.item.BugSprayItem; +import net.minecraft.core.Direction; +import net.minecraft.core.Position; +import net.minecraft.core.dispenser.BlockSource; +import net.minecraft.core.dispenser.DefaultDispenseItemBehavior; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.DispenserBlock; +import net.minecraft.world.phys.Vec3; + +public final class BugSprayDispenseBehavior extends DefaultDispenseItemBehavior { + @Override + protected ItemStack execute(BlockSource source, ItemStack stack) { + if (!(source.level() instanceof ServerLevel level)) return stack; + + Direction direction = source.state().getValue(DispenserBlock.FACING); + Position position = DispenserBlock.getDispensePosition(source); + Vec3 origin = new Vec3(position.x(), position.y(), position.z()); + Vec3 facing = new Vec3(direction.getStepX(), direction.getStepY(), direction.getStepZ()); + BugSprayItem.spray(level, origin, facing, origin, net.minecraft.sounds.SoundSource.BLOCKS, source.pos()); + + stack.setDamageValue(stack.getDamageValue() + 1); + if (stack.getDamageValue() >= stack.getMaxDamage()) { + stack.shrink(1); + } + return stack; + } + + @Override + protected void playSound(BlockSource source) { + source.level().levelEvent(1002, source.pos(), 0); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/BomberEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/BomberEntity.java index 75f601ee..cd32bc2f 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/BomberEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/BomberEntity.java @@ -96,7 +96,7 @@ public class BomberEntity extends Monster implements GeoEntity { } public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { - if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { + if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.TRIAL_SPAWNER || spawnReason == MobSpawnType.COMMAND) { return true; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ButterflyEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ButterflyEntity.java index e2217ce3..44848ad8 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ButterflyEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ButterflyEntity.java @@ -153,7 +153,7 @@ public class ButterflyEntity extends Animal implements FlyingAnimal, GeoEntity { } public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { - if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { + if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.TRIAL_SPAWNER || spawnReason == MobSpawnType.COMMAND) { return true; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/CaterpillarEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/CaterpillarEntity.java index 6b06e8c8..87442487 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/CaterpillarEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/CaterpillarEntity.java @@ -149,7 +149,7 @@ public class CaterpillarEntity extends Animal implements GeoEntity { } public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { - if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { + if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.TRIAL_SPAWNER || spawnReason == MobSpawnType.COMMAND) { return true; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/CrawlingBlightEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/CrawlingBlightEntity.java index 68bd01a2..86b48eec 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/CrawlingBlightEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/CrawlingBlightEntity.java @@ -84,7 +84,7 @@ public class CrawlingBlightEntity extends Monster implements GeoEntity { } public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { - if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { + if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.TRIAL_SPAWNER || spawnReason == MobSpawnType.COMMAND) { return true; } BlockPos belowPos = pos.below(); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/EmperorScorpionEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/EmperorScorpionEntity.java index 226a3fb7..e55c2edf 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/EmperorScorpionEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/EmperorScorpionEntity.java @@ -235,6 +235,7 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity { MobSpawnType spawnReason, BlockPos pos, RandomSource random) { if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER + || spawnReason == MobSpawnType.TRIAL_SPAWNER || spawnReason == MobSpawnType.COMMAND) { return true; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HerculesBeetleEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HerculesBeetleEntity.java index 1f3c5ca5..472b2051 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HerculesBeetleEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HerculesBeetleEntity.java @@ -218,7 +218,7 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl } public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { - if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { + if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.TRIAL_SPAWNER || spawnReason == MobSpawnType.COMMAND) { return true; } boolean floorSpawn = level.getBlockState(pos.below()).isFaceSturdy(level, pos.below(), Direction.UP) diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HoverboardEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HoverboardEntity.java index 4bcfb8ef..ac2ce6c4 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HoverboardEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HoverboardEntity.java @@ -70,7 +70,7 @@ public class HoverboardEntity extends PathfinderMob implements GeoEntity { @Override public boolean canBeAffected(MobEffectInstance effectInstance) { - return false; + return effectInstance.getEffect().value() instanceof com.craisinlord.antarchy.content.effect.InvertedMobEffect; } public static AttributeSupplier.Builder createAttributes() { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/JerryEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/JerryEntity.java index 1acc8f96..1d670cfc 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/JerryEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/JerryEntity.java @@ -98,7 +98,7 @@ public class JerryEntity extends Monster implements GeoEntity { } public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, net.minecraft.core.BlockPos pos, net.minecraft.util.RandomSource random) { - if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { + if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.TRIAL_SPAWNER || spawnReason == MobSpawnType.COMMAND) { return true; } return level.getDifficulty() != Difficulty.PEACEFUL diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ReverieEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ReverieEntity.java index 27cf6706..292d603b 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ReverieEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ReverieEntity.java @@ -213,7 +213,7 @@ public class ReverieEntity extends PathfinderMob implements FlyingAnimal, GeoEnt } public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { - if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { + if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.TRIAL_SPAWNER || spawnReason == MobSpawnType.COMMAND) { return true; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/RollyPollyEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/RollyPollyEntity.java index 4d833739..cbd95196 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/RollyPollyEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/RollyPollyEntity.java @@ -110,7 +110,7 @@ public class RollyPollyEntity extends TamableAnimal implements GeoEntity { } public static boolean canSpawn(EntityType entityType, net.minecraft.world.level.ServerLevelAccessor level, net.minecraft.world.entity.MobSpawnType spawnReason, BlockPos pos, net.minecraft.util.RandomSource random) { - if (spawnReason == net.minecraft.world.entity.MobSpawnType.SPAWN_EGG || spawnReason == net.minecraft.world.entity.MobSpawnType.SPAWNER || spawnReason == net.minecraft.world.entity.MobSpawnType.COMMAND) { + if (spawnReason == net.minecraft.world.entity.MobSpawnType.SPAWN_EGG || spawnReason == net.minecraft.world.entity.MobSpawnType.SPAWNER || spawnReason == net.minecraft.world.entity.MobSpawnType.TRIAL_SPAWNER || spawnReason == net.minecraft.world.entity.MobSpawnType.COMMAND) { return true; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ScorpionEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ScorpionEntity.java index c98c9f36..b55695c3 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ScorpionEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ScorpionEntity.java @@ -159,6 +159,10 @@ public class ScorpionEntity extends Monster implements GeoEntity { this.attackCooldownTicks--; } if (this.attackAnimTicks > 0) { + if (!this.isAlive()) { + this.resetAttackState(); + return; + } if (!this.level().isClientSide) { this.tickAttackWindup(); } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/SkulkingFrightEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/SkulkingFrightEntity.java index af9a17c0..437f6c7b 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/SkulkingFrightEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/SkulkingFrightEntity.java @@ -70,7 +70,7 @@ public class SkulkingFrightEntity extends Monster implements GeoEntity { } public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { - if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { + if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.TRIAL_SPAWNER || spawnReason == MobSpawnType.COMMAND) { return true; } BlockPos belowPos = pos.below(); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/SpitBugEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/SpitBugEntity.java index e62d83ae..d500a640 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/SpitBugEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/SpitBugEntity.java @@ -87,7 +87,7 @@ public class SpitBugEntity extends Monster implements GeoEntity { } public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { - if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { + if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.TRIAL_SPAWNER || spawnReason == MobSpawnType.COMMAND) { return true; } return level.getDifficulty() != Difficulty.PEACEFUL diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/SpringbugEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/SpringbugEntity.java index c8ecd317..167a61c4 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/SpringbugEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/SpringbugEntity.java @@ -135,7 +135,7 @@ public class SpringbugEntity extends Monster implements GeoEntity { } public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { - if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { + if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.TRIAL_SPAWNER || spawnReason == MobSpawnType.COMMAND) { return true; } return level.getDifficulty() != Difficulty.PEACEFUL diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/StinkBugEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/StinkBugEntity.java index c671999a..f0a33638 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/StinkBugEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/StinkBugEntity.java @@ -70,7 +70,7 @@ public class StinkBugEntity extends Animal implements GeoEntity { } public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { - if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { + if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.TRIAL_SPAWNER || spawnReason == MobSpawnType.COMMAND) { return true; } BlockPos belowPos = pos.below(); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/WaspEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/WaspEntity.java index 35a2526d..a16a0f48 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/WaspEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/WaspEntity.java @@ -97,7 +97,7 @@ public class WaspEntity extends Monster implements GeoEntity, FlyingAnimal { } public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { - if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { + if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.TRIAL_SPAWNER || spawnReason == MobSpawnType.COMMAND) { return true; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ant/AntTeleportHelper.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ant/AntTeleportHelper.java index 58fc5bbc..84eb3fc3 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ant/AntTeleportHelper.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ant/AntTeleportHelper.java @@ -40,6 +40,8 @@ public final class AntTeleportHelper { private static final double COMPANION_FOLLOW_RADIUS = 16.0D; private static final int ARRIVAL_SEARCH_RADIUS = 24; private static final int ARRIVAL_VERTICAL_SEARCH = 24; + private static final int EXPANDED_ARRIVAL_SEARCH_RADIUS = 48; + private static final int EXPANDED_ARRIVAL_VERTICAL_SEARCH = 48; private AntTeleportHelper() { } @@ -270,10 +272,21 @@ public final class AntTeleportHelper { @Nullable private static Vec3 findSafeArrivalPosition(ServerPlayer player, ServerLevel destination, BlockPos preferredPos) { - loadArrivalSearchArea(destination, preferredPos); + loadArrivalSearchArea(destination, preferredPos, ARRIVAL_SEARCH_RADIUS); int[] yRange = getDimensionYRange(destination); if (yRange != null) { - return findSafeArrivalPositionInYRange(player, destination, preferredPos, yRange[0], yRange[1]); + Vec3 safePos = findSafeArrivalPositionInYRange( + player, destination, preferredPos, yRange[0], yRange[1], ARRIVAL_SEARCH_RADIUS, ARRIVAL_VERTICAL_SEARCH); + if (safePos != null) { + return safePos; + } + + // The bounded search can fail near rough or sparsely-generated terrain. + // Retry once with a wider radius before giving up. + loadArrivalSearchArea(destination, preferredPos, EXPANDED_ARRIVAL_SEARCH_RADIUS); + return findSafeArrivalPositionInYRange( + player, destination, preferredPos, yRange[0], yRange[1], + EXPANDED_ARRIVAL_SEARCH_RADIUS, EXPANDED_ARRIVAL_VERTICAL_SEARCH); } Set candidates = new LinkedHashSet<>(); @@ -318,9 +331,9 @@ public final class AntTeleportHelper { * bounded area up front so unloaded terrain is not mistaken for an unsafe * destination and rejected prematurely. */ - private static void loadArrivalSearchArea(ServerLevel destination, BlockPos preferredPos) { + private static void loadArrivalSearchArea(ServerLevel destination, BlockPos preferredPos, int searchRadius) { ChunkPos center = new ChunkPos(preferredPos); - int chunkRadius = (ARRIVAL_SEARCH_RADIUS >> 4) + 1; + int chunkRadius = (searchRadius >> 4) + 1; for (int chunkX = center.x - chunkRadius; chunkX <= center.x + chunkRadius; chunkX++) { for (int chunkZ = center.z - chunkRadius; chunkZ <= center.z + chunkRadius; chunkZ++) { destination.getChunk(chunkX, chunkZ); @@ -347,10 +360,10 @@ public final class AntTeleportHelper { } @Nullable - private static Vec3 findSafeArrivalPositionInYRange(ServerPlayer player, ServerLevel destination, BlockPos preferredPos, int minY, int maxY) { + private static Vec3 findSafeArrivalPositionInYRange(ServerPlayer player, ServerLevel destination, BlockPos preferredPos, int minY, int maxY, int searchRadius, int verticalSearch) { Set surfaceCandidates = new LinkedHashSet<>(); boolean elythia = destination.dimension() == PermanentPortalType.ELYTHIA.primaryDimension(); - for (int radius = 0; radius <= ARRIVAL_SEARCH_RADIUS; radius++) { + for (int radius = 0; radius <= searchRadius; radius++) { for (int xOff = -radius; xOff <= radius; xOff++) { for (int zOff = -radius; zOff <= radius; zOff++) { if (radius > 0 && Math.abs(xOff) != radius && Math.abs(zOff) != radius) { @@ -372,7 +385,7 @@ public final class AntTeleportHelper { addArrivalCandidate(surfaceCandidates, destination.getHeightmapPos(Heightmap.Types.WORLD_SURFACE, column)); } - for (int yOffset = 1; yOffset <= ARRIVAL_VERTICAL_SEARCH; yOffset++) { + for (int yOffset = 1; yOffset <= verticalSearch; yOffset++) { surfaceCandidates.add(surface.above(yOffset)); if (!elythia) { surfaceCandidates.add(surface.below(yOffset)); @@ -404,7 +417,7 @@ public final class AntTeleportHelper { // Heightmaps can be stale or unsuitable around structures, so retain a // bounded exhaustive search as a final generated-terrain attempt in // dimensions whose configured arrival ranges intentionally allow it. - for (int radius = 0; radius <= ARRIVAL_SEARCH_RADIUS; radius++) { + for (int radius = 0; radius <= searchRadius; radius++) { for (int xOff = -radius; xOff <= radius; xOff++) { for (int zOff = -radius; zOff <= radius; zOff++) { if (radius > 0 && Math.abs(xOff) != radius && Math.abs(zOff) != radius) { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/flying_squirrel/FlyingSquirrelEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/flying_squirrel/FlyingSquirrelEntity.java index 1680d6b0..a9dd1733 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/flying_squirrel/FlyingSquirrelEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/flying_squirrel/FlyingSquirrelEntity.java @@ -204,7 +204,7 @@ public class FlyingSquirrelEntity extends TamableAnimal implements GeoEntity { } public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { - if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { + if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.TRIAL_SPAWNER || spawnReason == MobSpawnType.COMMAND) { return true; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/KingEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/KingEntity.java index 46f02b4a..9b92ef8b 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/KingEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/KingEntity.java @@ -119,6 +119,7 @@ public class KingEntity extends RoyalBossEntity { private static final int CLOSE_QUARTERS_APPROACH_TICKS = 120; private static final int CLOSE_QUARTERS_EXIT_GRACE_TICKS = 40; private static final int DECREE_RESPONSE_GRACE_TICKS = 30; + private static final int DECREE_ANNOUNCEMENT_TICKS = 40; private static final int PROJECTILE_PRESSURE_MAX = 60; private static final int PROJECTILE_PRESSURE_PER_HIT = 10; private static final int GROUND_ASSAULT_TICKS = 200; @@ -149,6 +150,7 @@ public class KingEntity extends RoyalBossEntity { private int treePatrolFailures; private int decreeCooldownTicks; private int activeDecreeTicks; + private int decreeAnnouncementTicks; private int decreeResponseGraceTicks; private int stompCooldownTicks; private int wingGustCooldownTicks; @@ -1366,6 +1368,7 @@ public class KingEntity extends RoyalBossEntity { this.endDecree(this.getTarget()); this.activeDecree = decree; this.activeDecreeTicks = 300; + this.decreeAnnouncementTicks = DECREE_ANNOUNCEMENT_TICKS; this.decreeResponseGraceTicks = DECREE_RESPONSE_GRACE_TICKS; this.decreeCooldownTicks = 0; this.closeQuartersEntered.clear(); @@ -1879,6 +1882,7 @@ public class KingEntity extends RoyalBossEntity { } this.activeDecree = null; this.activeDecreeTicks = 0; + this.decreeAnnouncementTicks = 0; this.decreeRetreatPressure = false; return; } @@ -1892,6 +1896,7 @@ public class KingEntity extends RoyalBossEntity { return; } this.activeDecreeTicks = 300; + this.decreeAnnouncementTicks = DECREE_ANNOUNCEMENT_TICKS; this.decreeResponseGraceTicks = DECREE_RESPONSE_GRACE_TICKS; this.activeDecree = this.pickDecree(target); this.decreeRetreatPressure = false; @@ -1905,6 +1910,10 @@ public class KingEntity extends RoyalBossEntity { this.broadcastActiveDecree(level); } this.broadcastActiveDecree(level); + if (this.decreeAnnouncementTicks > 0) { + this.decreeAnnouncementTicks--; + return; + } boolean hasCompletableParticipants = false; boolean everyParticipantComplete = true; for (ServerPlayer participant : participants) { @@ -2024,6 +2033,7 @@ public class KingEntity extends RoyalBossEntity { } this.activeDecree = null; this.activeDecreeTicks = 0; + this.decreeAnnouncementTicks = 0; this.decreeResponseGraceTicks = 0; this.decreeRetreatPressure = false; this.closeQuartersEntered.clear(); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/stratoshark/StratosharkEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/stratoshark/StratosharkEntity.java index 0bcbf050..98f582d8 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/stratoshark/StratosharkEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/stratoshark/StratosharkEntity.java @@ -131,6 +131,7 @@ public class StratosharkEntity extends Monster implements GeoEntity { return false; } if (spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.SPAWN_EGG + || spawnReason == MobSpawnType.TRIAL_SPAWNER || spawnReason == MobSpawnType.COMMAND || spawnReason == MobSpawnType.BUCKET) { return true; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/HoverboardItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/HoverboardItem.java index 5ac59576..8a77e772 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/HoverboardItem.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/HoverboardItem.java @@ -54,7 +54,10 @@ public class HoverboardItem extends Item { HoverboardEntity hoverboard = new HoverboardEntity(this.entityType, level); Vec3 spawnPos = hitResult.getLocation(); - hoverboard.moveTo(spawnPos.x, spawnPos.y, spawnPos.z, player.getYRot(), 0.0F); + boolean invertedPlacement = com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisUndersideManager.isThoraxis(level) + && spawnPos.y < com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisUndersideManager.GRAVITY_FLIP_Y; + double spawnY = invertedPlacement ? spawnPos.y - hoverboard.getBbHeight() : spawnPos.y; + hoverboard.moveTo(spawnPos.x, spawnY, spawnPos.z, player.getYRot(), 0.0F); hoverboard.setColor(this.color); if (!level.noCollision(hoverboard, hoverboard.getBoundingBox())) { return InteractionResultHolder.fail(stack); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianArmorItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianArmorItem.java index cda042d7..92171af8 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianArmorItem.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianArmorItem.java @@ -3,6 +3,7 @@ package com.craisinlord.antarchy.content.item; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.item.royal.RoyalGearHelper; import java.util.List; +import net.minecraft.ChatFormatting; import net.minecraft.core.Holder; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -74,9 +75,10 @@ public class RoyalGuardianArmorItem extends ArmorItem { case BOOTS -> "boots"; }; tooltipComponents.add(Component.translatable("tooltip.antarchy.royal_guardian_" + slotName + ".judgment", - Math.round(judgmentBonus() * 100.0D))); + Math.round(judgmentBonus() * 100.0D)).withStyle(ChatFormatting.LIGHT_PURPLE)); if (this.armorType == Type.CHESTPLATE) { - tooltipComponents.add(Component.translatable("tooltip.antarchy.royal_guardian_chestplate.boundary")); + tooltipComponents.add(Component.translatable("tooltip.antarchy.royal_guardian_chestplate.boundary") + .withStyle(ChatFormatting.AQUA)); } super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianShieldItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianShieldItem.java index 86fd2dbb..6da112c8 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianShieldItem.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianShieldItem.java @@ -54,7 +54,7 @@ public class RoyalGuardianShieldItem extends ShieldItem { @Override public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { tooltipComponents.add(Component.translatable("tooltip.antarchy.royal_guardian_shield.command") - .withStyle(ChatFormatting.GOLD)); + .withStyle(ChatFormatting.AQUA)); super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianSwordItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianSwordItem.java index 1637ee43..b386bc66 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianSwordItem.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianSwordItem.java @@ -108,7 +108,7 @@ public class RoyalGuardianSwordItem extends SwordItem implements GeoItem { Mode mode = getMode(stack); tooltipComponents.add(Component.translatable("tooltip.antarchy.royal_guardian_sword.mode", Component.translatable(mode.translationKey)).withStyle(ChatFormatting.GOLD)); - tooltipComponents.add(Component.translatable(mode.tooltipKey).withStyle(ChatFormatting.GRAY)); + tooltipComponents.add(Component.translatable(mode.tooltipKey).withStyle(ChatFormatting.LIGHT_PURPLE)); tooltipComponents.add(Component.translatable("tooltip.antarchy.royal_guardian_sword.controls", AntarchySettings.royalGuardianSwordElementalCooldownTicks() / 20.0D).withStyle(ChatFormatting.DARK_GRAY)); super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/QueenTrailGrid.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/QueenTrailGrid.java index 04ceb88a..b036d536 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/QueenTrailGrid.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/QueenTrailGrid.java @@ -3,7 +3,7 @@ package com.craisinlord.antarchy.content.worldgen.thoraxis; import net.minecraft.util.RandomSource; public final class QueenTrailGrid { - public static final int SPACING = 1_536; + public static final int SPACING = 1_500; private static final int JITTER_MARGIN = 256; private QueenTrailGrid() { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisTransitionThroatConfiguration.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisTransitionThroatConfiguration.java new file mode 100644 index 00000000..6df71bb8 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisTransitionThroatConfiguration.java @@ -0,0 +1,11 @@ +package com.craisinlord.antarchy.content.worldgen.thoraxis; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; + +public record ThoraxisTransitionThroatConfiguration(boolean large) implements FeatureConfiguration { + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + Codec.BOOL.fieldOf("large").forGetter(ThoraxisTransitionThroatConfiguration::large) + ).apply(instance, ThoraxisTransitionThroatConfiguration::new)); +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisTransitionThroatFeature.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisTransitionThroatFeature.java index 615bef9e..3756d4ee 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisTransitionThroatFeature.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisTransitionThroatFeature.java @@ -6,17 +6,22 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.levelgen.Heightmap; import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; -import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; -public final class ThoraxisTransitionThroatFeature extends Feature { +public final class ThoraxisTransitionThroatFeature extends Feature { public ThoraxisTransitionThroatFeature() { - super(NoneFeatureConfiguration.CODEC); + super(ThoraxisTransitionThroatConfiguration.CODEC); } @Override - public boolean place(FeaturePlaceContext context) { + public boolean place(FeaturePlaceContext context) { WorldGenLevel level = context.level(); BlockPos origin = context.origin(); + boolean large = context.config().large(); + int searchRadius = large ? 18 : 9; + double baseRadius = large ? 10.0D : 5.0D; + double radiusVariance = large ? 5.0D : 2.5D; + double layerOffsetScale = large ? 4.0D : 2.0D; + BlockPos center = new BlockPos(origin.getX(), ThoraxisUndersideManager.GRAVITY_FLIP_Y, origin.getZ()); int upperSurface = level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, center.getX(), center.getZ()) - 1; int undersideSurface = findUndersideSurface(level, center); @@ -26,13 +31,13 @@ public final class ThoraxisTransitionThroatFeature extends Feature STATES = new WeakHashMap<>(); private ThoraxisUndersideManager() { @@ -144,6 +149,7 @@ public final class ThoraxisUndersideManager { tracking.entities.removeIf(entity -> !entity.isAlive() || entity.isRemoved()); tracking.forcedItems.removeIf(entity -> !entity.isAlive() || entity.isRemoved()); tracking.lastFlipTick.entrySet().removeIf(entry -> now - entry.getValue() > FLIP_COOLDOWN_TICKS * 4L); + tracking.lastUndersideExitTick.entrySet().removeIf(entry -> now - entry.getValue() > RECENT_UNDERSIDE_WINDOW_TICKS * 4L); double elapsedMs = (System.nanoTime() - startNanos) / 1_000_000.0D; if (elapsedMs >= SLOW_TICK_WARN_MS && now - tracking.lastDiagnosticTick >= DIAGNOSTIC_INTERVAL_TICKS) { @@ -161,6 +167,7 @@ public final class ThoraxisUndersideManager { private final Set forcedItems = Collections.newSetFromMap(new IdentityHashMap<>()); private final Map lastFlipTick = new java.util.HashMap<>(); private final Map playerCrossings = new java.util.HashMap<>(); + private final Map lastUndersideExitTick = new java.util.HashMap<>(); private long lastDiagnosticTick = Long.MIN_VALUE / 2L; private DiscoveryStats discover(ServerLevel level) { @@ -190,6 +197,7 @@ public final class ThoraxisUndersideManager { forcedItems.clear(); lastFlipTick.clear(); playerCrossings.clear(); + lastUndersideExitTick.clear(); } } @@ -206,19 +214,18 @@ public final class ThoraxisUndersideManager { continue; } - if (isCrossingGravityBoundary(player) && flipReady(tracking, player.getUUID(), now)) { + if (isCrossingGravityBoundary(player)) { boolean toUnderside = AntarchyGravityApi.getGravityDirection(player) == AntarchyGravityDirection.DOWN; if (!toUnderside) { refreshInvertedEffect(player); + } else { + player.addEffect(new MobEffectInstance(MobEffects.SLOW_FALLING, ENTRY_SLOW_FALL_DURATION_TICKS, 0, false, true, true)); } tracking.playerCrossings.put(player.getUUID(), new PlayerCrossing(toUnderside)); continue; } - MobEffectInstance effect = player.getEffect(AntarchyObjects.INVERTED_EFFECT.get()); - if (player.getY() < ENTER_UNDERSIDE_Y) { - refreshInvertedEffect(player); - } else if (effect != null && isUndersideEffect(effect) && player.getY() < EXIT_UNDERSIDE_Y) { + if (AntarchyGravityApi.isGravityInverted(player) && player.getY() < EXIT_UNDERSIDE_Y) { refreshInvertedEffect(player); } } @@ -237,10 +244,23 @@ public final class ThoraxisUndersideManager { } AABB bounds = player.getBoundingBox(); - boolean clear = crossing.toUnderside ? bounds.maxY < GRAVITY_FLIP_Y : bounds.minY > EXIT_UNDERSIDE_Y; + boolean clear; + if (crossing.toUnderside) { + if (bounds.maxY >= UNDERSIDE_ENTRY_BORDER_Y) { + return; + } + Long lastExit = tracking.lastUndersideExitTick.get(player.getUUID()); + boolean recentlyUnderside = lastExit != null && now - lastExit < RECENT_UNDERSIDE_WINDOW_TICKS; + clear = recentlyUnderside || crossing.ticks >= FRESH_ENTRY_DELAY_TICKS; + } else { + clear = bounds.minY > EXIT_UNDERSIDE_Y; + } if (!clear) { return; } + if (!flipReady(tracking, player.getUUID(), now)) { + return; + } AntarchyGravityDirection destination = crossing.toUnderside ? AntarchyGravityDirection.UP @@ -259,6 +279,7 @@ public final class ThoraxisUndersideManager { refreshInvertedEffect(player); } else { player.removeEffect(AntarchyObjects.INVERTED_EFFECT.get()); + tracking.lastUndersideExitTick.put(player.getUUID(), now); } return; } @@ -276,7 +297,7 @@ public final class ThoraxisUndersideManager { AABB swept = player.getBoundingBox().expandTowards(velocity.scale(-1.0D)).inflate(0.08D); AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(player); return direction == AntarchyGravityDirection.DOWN - ? swept.minY < GRAVITY_FLIP_Y && swept.maxY >= GRAVITY_FLIP_Y && velocity.y <= -MIN_CROSSING_SPEED + ? swept.minY < UNDERSIDE_ENTRY_BORDER_Y && swept.maxY >= UNDERSIDE_ENTRY_BORDER_Y && velocity.y <= -MIN_CROSSING_SPEED : swept.minY <= GRAVITY_FLIP_Y && swept.maxY > GRAVITY_FLIP_Y && velocity.y >= MIN_CROSSING_SPEED; } @@ -338,16 +359,10 @@ public final class ThoraxisUndersideManager { return level.dimension().location().equals(THORAXIS_DIMENSION); } - /** True only while an entity is physically below Thoraxis' gravity boundary. */ public static boolean isInUnderside(Entity entity) { return isThoraxis(entity.level()) && entity.getY() < GRAVITY_FLIP_Y; } - /** - * Projectiles perform their own movement in world coordinates, so they must - * not retain an inverted entity-local movement frame. Underside gravity is - * reversed separately when gravitational acceleration is applied. - */ public static void normalizeProjectileGravityFrame(Projectile projectile) { boolean stateMismatch = AntarchyGravityApi.getGravityDirection(projectile) != AntarchyGravityDirection.DOWN || AntarchyGravityApi.isGravityForced(projectile); @@ -365,7 +380,6 @@ public final class ThoraxisUndersideManager { return isThoraxis(entity.level()) && entity.getY() >= EXIT_UNDERSIDE_Y; } - /** True while an entity is in the region where the underside gravity rule applies. */ public static boolean shouldInvertInUnderside(Entity entity) { return AntarchyGravityApi.isGravityInverted(entity) && isInUnderside(entity); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/TemporalMiningSpeedMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/TemporalMiningSpeedMixin.java new file mode 100644 index 00000000..c8dcd20d --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/TemporalMiningSpeedMixin.java @@ -0,0 +1,39 @@ +package com.craisinlord.antarchy.mixins.time; + +import com.craisinlord.antarchy.content.effect.ContractedMobEffect; +import com.craisinlord.antarchy.content.effect.DilatedMobEffect; +import com.craisinlord.antarchy.content.effect.RoyalEffectHooks; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.player.Player; +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.CallbackInfoReturnable; + +@Mixin(Player.class) +public abstract class TemporalMiningSpeedMixin { + @Inject(method = "getDestroySpeed", at = @At("RETURN"), cancellable = true) + private void antarchy$applyTemporalMiningSpeed( + net.minecraft.world.level.block.state.BlockState state, + CallbackInfoReturnable cir) { + Player player = (Player) (Object) this; + double rate = 1.0D; + + if (RoyalEffectHooks.dilatedHolder() != null) { + MobEffectInstance dilation = player.getEffect(RoyalEffectHooks.dilatedHolder()); + if (dilation != null) { + rate = Math.min(rate, DilatedMobEffect.rateForAmplifier(dilation.getAmplifier())); + } + } + if (RoyalEffectHooks.contractedHolder() != null) { + MobEffectInstance contraction = player.getEffect(RoyalEffectHooks.contractedHolder()); + if (contraction != null) { + rate = Math.max(rate, ContractedMobEffect.rateForAmplifier(contraction.getAmplifier())); + } + } + + if (rate != 1.0D) { + cir.setReturnValue((float) (cir.getReturnValue() * rate)); + } + } +} diff --git a/common-1.21.1/src/main/resources/antarchy-common.mixins.json b/common-1.21.1/src/main/resources/antarchy-common.mixins.json index ef3ea3f1..78bc2893 100644 --- a/common-1.21.1/src/main/resources/antarchy-common.mixins.json +++ b/common-1.21.1/src/main/resources/antarchy-common.mixins.json @@ -116,6 +116,7 @@ "time.LivingEntityAttackCooldownTimeDilationMixin", "time.PlayerCooldownTimeDilationMixin", "time.LivingEntityFoodUseTimeDilationMixin", + "time.TemporalMiningSpeedMixin", "time.LivingEntityChronosphereEquipmentMixin", "time.LookControlTimeDilationMixin", "time.MeleeAttackGoalTimeDilationMixin", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/prince_egg.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/prince_egg.json index ab78d2c4..97c01ebe 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/prince_egg.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/prince_egg.json @@ -1,13 +1,25 @@ { "variants": { - "hatch=0": { + "hatch=0,inverted=false": { "model": "antarchy:block/prince_egg" }, - "hatch=1": { + "hatch=1,inverted=false": { "model": "antarchy:block/prince_egg" }, - "hatch=2": { + "hatch=2,inverted=false": { "model": "antarchy:block/prince_egg" + }, + "hatch=0,inverted=true": { + "model": "antarchy:block/prince_egg", + "x": 180 + }, + "hatch=1,inverted=true": { + "model": "antarchy:block/prince_egg", + "x": 180 + }, + "hatch=2,inverted=true": { + "model": "antarchy:block/prince_egg", + "x": 180 } } } diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/princess_egg.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/princess_egg.json index 54582800..44b3d210 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/princess_egg.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/princess_egg.json @@ -1,13 +1,25 @@ { "variants": { - "hatch=0": { + "hatch=0,inverted=false": { "model": "antarchy:block/princess_egg" }, - "hatch=1": { + "hatch=1,inverted=false": { "model": "antarchy:block/princess_egg" }, - "hatch=2": { + "hatch=2,inverted=false": { "model": "antarchy:block/princess_egg" + }, + "hatch=0,inverted=true": { + "model": "antarchy:block/princess_egg", + "x": 180 + }, + "hatch=1,inverted=true": { + "model": "antarchy:block/princess_egg", + "x": 180 + }, + "hatch=2,inverted=true": { + "model": "antarchy:block/princess_egg", + "x": 180 } } } diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/en_us.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/en_us.json index f1fb1dc0..8f08e181 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/en_us.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/en_us.json @@ -1467,9 +1467,11 @@ ,"enchantment.antarchy.feather_rising": "Feather Rising" ,"enchantment.antarchy.chronosphere": "Chronosphere" ,"entity.minecraft.villager.antarchy.computer_scientist": "Game Developer" + ,"entity.minecraft.villager.computer_scientist": "Game Developer" ,"block.antarchy.ant_trap": "Ant Trap" ,"item.antarchy.bug_spray": "Bug Spray" ,"entity.minecraft.villager.antarchy.pest_control": "Pest Control" + ,"entity.minecraft.villager.pest_control": "Pest Control" ,"guide.antarchy.category.general": "GENERAL" ,"guide.antarchy.category.elythia": "ELYTHIA" ,"guide.antarchy.category.thoraxis": "THORAXIS" @@ -1490,64 +1492,104 @@ ,"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. The machine remembers. The machine does not forgive." + ,"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" - ,"guide.antarchy.entry.toreterror_arena.description": "The nearest Toreterror Arena within search range is listed below. It is always placed in an Elythia Ocean." + ,"guide.antarchy.entry.toreterror_arena.description": "This archive can trace the nearest Toreterror Arena for you, always somewhere in an Elythia Ocean." + ,"guide.antarchy.entry.toreterror_arena.description2": "Toreterror is an ancient turtle that fights with a water cannon at range and a long spinning charge up close, ricocheting off obstacles until it connects." ,"guide.antarchy.entry.elythia.title": "Elythia" ,"guide.antarchy.entry.elythia.subtitle": "Dimension and portal access record" - ,"guide.antarchy.entry.elythia.description": "Elythia is reached through an Elythia portal made with a valid frame. A sacrificed Brown Ant activates the portal. The dimension contains oceans, meadows, forests, coral spikes, and other surface biomes." + ,"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.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. Flying squirrels like nuts, trees, and making a dramatic exit. Feed one to befriend it, then give it plenty of canopy to climb through. If you tell it to, it will perch on top of your head. If it falls, do not panic. It may be gliding. If you fall, you have my permission to panic." + ,"guide.antarchy.entry.flying_squirrel.description": "You wanna get nuts? Let’s get nuts." + ,"guide.antarchy.entry.flying_squirrel.description2": "Flying squirrels like nuts, trees, and dramatic exits. Feed one to befriend it, then give it plenty of canopy to climb through." + ,"guide.antarchy.entry.flying_squirrel.description3": "It may perch on top of your head. This is adorable, but it does make looking upward needlessly complicated." + ,"guide.antarchy.entry.flying_squirrel.description4": "If it falls, do not panic. It may be gliding. If you fall, you have my permission to panic." + ,"guide.antarchy.disk.glimmer.title": "GLIMMER FIELD GUIDE" + ,"guide.antarchy.entry.glimmer.title": "Glimmer" + ,"guide.antarchy.entry.glimmer.subtitle": "Bottled companion and variant record" + ,"guide.antarchy.entry.glimmer.description": "Glimmers are common around Elythia's Glimmering Pools, and rarely appear after dark in Ouranwood Forest, the Elythia Meadow, and the Peach Forest. A wild one caught in daylight away from a pool fades out." + ,"guide.antarchy.entry.glimmer.description2": "Feed a wild Glimmer a Spirit Apple to tame it. An empty-handed right-click cycles it between following, wandering, and sitting." + ,"guide.antarchy.entry.glimmer.description3": "A tamed Glimmer can be bottled: right-click it with an empty glass bottle to capture it, cooldowns and all. Right-click the bottle again anywhere to release it." + ,"guide.antarchy.entry.glimmer.description4": "Variant depends on where it was born. Glimmering Pools produce Frogs, Ouranwood Deer, and Apple Cows. Ouranwood Forest produces Frogs and Deer. The Elythia Meadow produces Apple Cows, and the Peach Forest produces Elkas. The Ant variant is not tied to any habitat; it only appears on a random roll." + ,"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": "Cavaryn is reached through a Cavaryn portal made with a valid frame. A sacrificed Termite activates the portal. The dimension is a deep network of caves, including Glowcap, Biowart, Moleworm, Wormy, and Brooding Tunnel regions." + ,"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": "Thoraxis is reached through a Thoraxis portal made with a valid frame. A sacrificed Red Ant activates the portal. Its vertical progression includes Dream Dunes, Umbral Hills, Lucid Pools, and Nadir Forest." + ,"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 alter the rate of affected entities. The Chronosphere enchantment creates a player-centered field at 35 percent rate; higher levels expand its radius." + ,"guide.antarchy.entry.temporal_fields.description": "Time Dilation and Time Contraction change how fast affected entities experience the world." + ,"guide.antarchy.entry.temporal_fields.description2": "A worn Chronosphere creates a permanent field around you at 35 percent speed. Field radius is 1.5 blocks at level 1, 2.5 at level 2, and 3.5 at level 3+; entities are affected out to twice that radius." + ,"guide.antarchy.entry.temporal_fields.description3": "The effect reaches living entities, projectiles, and dropped items, and anything fired from inside a field keeps that field's speed. Overlapping fields do not stack; the slower or faster rule wins. Kings and Queens are immune to it." ,"guide.antarchy.entry.bloodglass.title": "Bloodglass" ,"guide.antarchy.entry.bloodglass.subtitle": "Reactive protection system" - ,"guide.antarchy.entry.bloodglass.description": "Blood Crystal armor grants Bloodglass Hearts that block an incoming hit, shatter, and recharge. Blood Crystal Apples grant temporary Bloodglass Ward, and the Katana provides launch, dash, and crimson-trail mobility." + ,"guide.antarchy.entry.bloodglass.description": "Blood Crystal armor grants Bloodglass Hearts that absorb one hit, shatter, and recharge." + ,"guide.antarchy.entry.bloodglass.description2": "Each equipped piece adds one heart, and every heart recharges on its own 30-second timer. A Blood Crystal Apple grants two temporary charges lasting 2 minutes, on top of the armor's hearts." + ,"guide.antarchy.entry.bloodglass.description3": "The Katana has a longer reach than it looks, a brief hit-immunity window right after each dash, and a short cooldown before it can dash again." ,"guide.antarchy.entry.vortex.title": "Vortex" ,"guide.antarchy.entry.vortex.subtitle": "Vortex Lens and Eye of the Storm reference" - ,"guide.antarchy.entry.vortex.description": "Redstone power pulls entities into a Vortex Lens beam while Bluestone power blasts them away. The Eye of the Storm launches an updraft and can hurl a homing tornado that carries foes." + ,"guide.antarchy.entry.vortex.description": "The Vortex Lens pulls or pushes depending on signal: Redstone pulls, Bluestone pushes." + ,"guide.antarchy.entry.vortex.description2": "Signal strength scales its size: a 1.5 to 10-block pull radius, with height from 3 to 20 blocks. It deals no damage on its own." + ,"guide.antarchy.entry.vortex.description3": "The Eye of the Storm launches an updraft and a homing tornado on its own trigger, unlike the Lens's signal-controlled field." ,"guide.antarchy.entry.nightmare.title": "Nightmare" ,"guide.antarchy.entry.nightmare.subtitle": "Thoraxis hostile entity record" - ,"guide.antarchy.entry.nightmare.description": "A hostile entity recorded in the deepest Thoraxis regions. The recovered model is presented in monochrome archive mode." + ,"guide.antarchy.entry.nightmare.description": "Recorded in the deepest Thoraxis regions." + ,"guide.antarchy.entry.nightmare.description2": "Its attacks hit harder the lower your health is, so a bad fight gets worse fast." + ,"guide.antarchy.entry.nightmare.description3": "Past half health it takes to the air and opens a pair of portals, stepping through one to teleport behind you and strike. Watch both portals, not just the one it disappears into." ,"guide.antarchy.entry.high_fructose_corn_syrup.title": "High Fructose Corn Syrup" - ,"guide.antarchy.entry.high_fructose_corn_syrup.subtitle": "Nutritional and operational notes" - ,"guide.antarchy.entry.high_fructose_corn_syrup.description": "A sweet substance of uncertain strategic value. Doctoral enthusiasm surrounding it is statistically suspicious." + ,"guide.antarchy.entry.high_fructose_corn_syrup.subtitle": "Field notes on a suspiciously popular bottle" + ,"guide.antarchy.entry.high_fructose_corn_syrup.description": "Brew it by adding Corn, found wild or grown as a crop, to a Water Bottle." + ,"guide.antarchy.entry.high_fructose_corn_syrup.description2": "Drunk on its own, it causes four seconds of Nausea. A doctor would not recommend it." + ,"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": "Entity record" - ,"guide.antarchy.entry.rainbow_ant.description": "When given an activation reagent, a Rainbow Ant can open a portal to its assigned dimension." + ,"guide.antarchy.entry.rainbow_ant.description": "Feed a Rainbow Ant Rainbow Sugar to assign it a destination, then interact with it again to travel there. The destination is stored on that ant, so keep it alive." ,"guide.antarchy.entry.easter_bunny.title": "Easter Bunny" ,"guide.antarchy.entry.easter_bunny.subtitle": "Entity record" - ,"guide.antarchy.entry.easter_bunny.description": "Easter Bunnies periodically lay random spawn eggs." + ,"guide.antarchy.entry.easter_bunny.description": "The Easter Bunny lays spawn eggs for all sorts of creatures! Life is like an easter egg, you never know what you're gonna get." + ,"guide.antarchy.entry.easter_bunny.description2": "Feed them carrots, golden carrots, or dandelions." ,"guide.antarchy.entry.duplicator_tree.title": "Duplicator Tree" ,"guide.antarchy.entry.duplicator_tree.subtitle": "Block record" - ,"guide.antarchy.entry.duplicator_tree.description": "Duplicator Trees copy nearby eligible blocks into open spaces around them." + ,"guide.antarchy.entry.duplicator_tree.description": "A mature Duplicator Tree copies a nearby solid block into an empty, supported space next to it." + ,"guide.antarchy.entry.duplicator_tree.description2": "Fluids, block entities, and other Duplicator Tree blocks will not copy, and duplication happens occasionally, not on a fixed timer." ,"guide.antarchy.disk.kraken.title": "KRAKEN SIGHTING NOTES" ,"guide.antarchy.entry.kraken.title": "Kraken" ,"guide.antarchy.entry.kraken.subtitle": "Overworld aquatic encounter" - ,"guide.antarchy.entry.kraken.description": "Search open Overworld waters; the Kraken can only spawn in water. Some encounters require Bad Omen." + ,"guide.antarchy.entry.kraken.description": "Kill a Squid while under Bad Omen to summon a Kraken where it died. Higher Bad Omen levels raise the odds." + ,"guide.antarchy.entry.kraken.description2": "It only spawns in open water, so pick your fight where it can actually surface." ,"guide.antarchy.disk.king.title": "KING'S TREE FIELD NOTES" ,"guide.antarchy.entry.king.title": "King" ,"guide.antarchy.entry.king.subtitle": "Elythia royal entity record" - ,"guide.antarchy.entry.king.description": "Seek the massive King's Tree in Elythia. The King spawns near its center and patrols the surrounding area." + ,"guide.antarchy.entry.king.description": "Find the massive King's Tree in Elythia. The King spawns and patrols near it." + ,"guide.antarchy.entry.king.description2": "Mid-fight he issues a decree, such as KNEEL, COME NO CLOSER, or SHOW NO MERCY. Obey quickly." + ,"guide.antarchy.entry.king.description3": "Breaking a decree halves your hearts for 30 seconds and calls down his judgment." ,"guide.antarchy.disk.queen.title": "QUEEN HAVOC TRAIL NOTES" ,"guide.antarchy.entry.queen.title": "Queen" ,"guide.antarchy.entry.queen.subtitle": "Thoraxis royal entity record" - ,"guide.antarchy.entry.queen.description": "Follow a Queen Havoc Trail through Thoraxis's underside to its chamber; the Queen appears when you approach." + ,"guide.antarchy.entry.queen.description": "Follow a Queen Havoc Trail through Thoraxis's underside to find her chamber." + ,"guide.antarchy.entry.queen.description2": "She fights with gravity: a ground stomp with an expanding shockwave, black holes that pull you toward their center, and a crushing field that pins you along the current gravity direction." + ,"guide.antarchy.entry.queen.description3": "In her final phase she also casts her own time dilation field, slowing anyone caught inside it." ,"guide.antarchy.entry.prince.title": "Prince" ,"guide.antarchy.entry.prince.subtitle": "Royal mount record" - ,"guide.antarchy.entry.prince.description": "Prince Eggs hatch into small Princes that grow when fed golden items; they can be tamed, saddled to fly, fire elemental bolts, and command nearby hostile mobs." + ,"guide.antarchy.entry.prince.description": "Prince Eggs hatch into small Princes that grow when fed golden items." + ,"guide.antarchy.entry.prince.description2": "A grown Prince can be tamed and saddled for flight, fires elemental bolts at your enemies, and can command nearby hostile mobs. Feed responsibly; you are raising a small flying warlord." ,"guide.antarchy.entry.princess.title": "Princess" ,"guide.antarchy.entry.princess.subtitle": "Royal mount record" - ,"guide.antarchy.entry.princess.description": "Princess Eggs hatch into small Princesses that grow when fed golden items; they can be tamed, saddled to fly, fire elemental bolts, and create time-dilation fields around enemies." + ,"guide.antarchy.entry.princess.description": "Princess Eggs hatch into small Princesses that grow when fed golden items." + ,"guide.antarchy.entry.princess.description2": "A grown Princess can be tamed and saddled for flight, fires elemental bolts, and creates time-dilation fields around enemies." ,"subtitles.antarchy.hoverboard_mount": "Hoverboard starts" ,"subtitles.antarchy.hoverboard_dismount": "Hoverboard stops" ,"subtitles.antarchy.hoverboard_idle": "Hoverboard hums" diff --git a/common-1.21.1/src/main/resources/data/antarchy/advancement/anger_the_hive_mind.json b/common-1.21.1/src/main/resources/data/antarchy/advancement/anger_the_hive_mind.json index 8f6700dd..0cd996a5 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/advancement/anger_the_hive_mind.json +++ b/common-1.21.1/src/main/resources/data/antarchy/advancement/anger_the_hive_mind.json @@ -4,9 +4,7 @@ "kill_horde_common": { "conditions": { "entity": { - "type": { - "tag": "antarchy:horde_common" - } + "type": "#antarchy:horde_common" }, "player": [ { diff --git a/common-1.21.1/src/main/resources/data/antarchy/computer/disk/antman_game.json b/common-1.21.1/src/main/resources/data/antarchy/computer/disk/antman_game.json deleted file mode 100644 index 0512e5d9..00000000 --- a/common-1.21.1/src/main/resources/data/antarchy/computer/disk/antman_game.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "category": "antarchy:general", - "title": "guide.antarchy.disk.antman_game.title", - "entries": [] -} diff --git a/common-1.21.1/src/main/resources/data/antarchy/computer/disk/glimmer.json b/common-1.21.1/src/main/resources/data/antarchy/computer/disk/glimmer.json new file mode 100644 index 00000000..7bad583c --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/computer/disk/glimmer.json @@ -0,0 +1,5 @@ +{ + "category": "antarchy:elythia", + "title": "guide.antarchy.disk.glimmer.title", + "entries": ["antarchy:glimmer"] +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/bloodglass.json b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/bloodglass.json index f1ce876b..abba48dc 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/bloodglass.json +++ b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/bloodglass.json @@ -3,6 +3,6 @@ "category": "thoraxis", "title": "guide.antarchy.entry.bloodglass.title", "subtitle": "guide.antarchy.entry.bloodglass.subtitle", - "description": ["guide.antarchy.entry.bloodglass.description"], + "description": ["guide.antarchy.entry.bloodglass.description", "guide.antarchy.entry.bloodglass.description2", "guide.antarchy.entry.bloodglass.description3"], "cover_item": "antarchy:blood_crystal_shard" } diff --git a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/cavaryn.json b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/cavaryn.json index 1a46a288..af241e33 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/cavaryn.json +++ b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/cavaryn.json @@ -3,7 +3,7 @@ "category": "cavaryn", "title": "guide.antarchy.entry.cavaryn.title", "subtitle": "guide.antarchy.entry.cavaryn.subtitle", - "description": ["guide.antarchy.entry.cavaryn.description"], + "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" diff --git a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/duplicator_tree.json b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/duplicator_tree.json index 8ff71cf7..5a557533 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/duplicator_tree.json +++ b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/duplicator_tree.json @@ -3,6 +3,6 @@ "category": "general", "title": "guide.antarchy.entry.duplicator_tree.title", "subtitle": "guide.antarchy.entry.duplicator_tree.subtitle", - "description": ["guide.antarchy.entry.duplicator_tree.description"], + "description": ["guide.antarchy.entry.duplicator_tree.description", "guide.antarchy.entry.duplicator_tree.description2"], "cover_item": "antarchy:duplicator_log" } diff --git a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/easter_bunny.json b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/easter_bunny.json index f3e14b3e..ba0d8df1 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/easter_bunny.json +++ b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/easter_bunny.json @@ -3,7 +3,7 @@ "category": "general", "title": "guide.antarchy.entry.easter_bunny.title", "subtitle": "guide.antarchy.entry.easter_bunny.subtitle", - "description": ["guide.antarchy.entry.easter_bunny.description"], + "description": ["guide.antarchy.entry.easter_bunny.description", "guide.antarchy.entry.easter_bunny.description2"], "entity": "antarchy:easter_bunny", "cover_entity": "antarchy:easter_bunny", "rotation": 45 diff --git a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/elythia.json b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/elythia.json index 6f51f2f0..9736e471 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/elythia.json +++ b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/elythia.json @@ -3,7 +3,7 @@ "category": "elythia", "title": "guide.antarchy.entry.elythia.title", "subtitle": "guide.antarchy.entry.elythia.subtitle", - "description": ["guide.antarchy.entry.elythia.description"], + "description": ["guide.antarchy.entry.elythia.description", "guide.antarchy.entry.elythia.description2"], "cover_entity": "antarchy:brown_ant", "rotation": 45, "dimension": "antarchy:elythia" diff --git a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/flying_squirrel.json b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/flying_squirrel.json index d19d5ff8..0e0fb00b 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/flying_squirrel.json +++ b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/flying_squirrel.json @@ -3,7 +3,7 @@ "category": "elythia", "title": "guide.antarchy.entry.flying_squirrel.title", "subtitle": "guide.antarchy.entry.flying_squirrel.subtitle", - "description": ["guide.antarchy.entry.flying_squirrel.description"], + "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 diff --git a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/glimmer.json b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/glimmer.json new file mode 100644 index 00000000..c3847ee3 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/glimmer.json @@ -0,0 +1,10 @@ +{ + "type": "mob", + "category": "elythia", + "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"], + "entity": "antarchy:glimmer", + "rotation": 45, + "render_scale": 0.8 +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/high_fructose_corn_syrup.json b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/high_fructose_corn_syrup.json index 0a055889..bb9a36a9 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/high_fructose_corn_syrup.json +++ b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/high_fructose_corn_syrup.json @@ -3,6 +3,6 @@ "category": "general", "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"], + "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" } diff --git a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/king.json b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/king.json index 7aaa53eb..c20f36ef 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/king.json +++ b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/king.json @@ -3,7 +3,7 @@ "category": "elythia", "title": "guide.antarchy.entry.king.title", "subtitle": "guide.antarchy.entry.king.subtitle", - "description": ["guide.antarchy.entry.king.description"], + "description": ["guide.antarchy.entry.king.description", "guide.antarchy.entry.king.description2", "guide.antarchy.entry.king.description3"], "entity": "antarchy:king", "cover_entity": "antarchy:king", "rotation": 45, diff --git a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/kraken.json b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/kraken.json index 49780569..0793d5b3 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/kraken.json +++ b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/kraken.json @@ -3,7 +3,7 @@ "category": "general", "title": "guide.antarchy.entry.kraken.title", "subtitle": "guide.antarchy.entry.kraken.subtitle", - "description": ["guide.antarchy.entry.kraken.description"], + "description": ["guide.antarchy.entry.kraken.description", "guide.antarchy.entry.kraken.description2"], "entity": "antarchy:kraken", "cover_entity": "antarchy:kraken", "render_scale": 0.5 diff --git a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/nightmare.json b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/nightmare.json index 6fda6806..bfb36033 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/nightmare.json +++ b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/nightmare.json @@ -3,6 +3,6 @@ "category": "thoraxis", "title": "guide.antarchy.entry.nightmare.title", "subtitle": "guide.antarchy.entry.nightmare.subtitle", - "description": ["guide.antarchy.entry.nightmare.description"], + "description": ["guide.antarchy.entry.nightmare.description", "guide.antarchy.entry.nightmare.description2", "guide.antarchy.entry.nightmare.description3"], "entity": "antarchy:nightmare" } diff --git a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/prince.json b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/prince.json index 78216181..d0b9f830 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/prince.json +++ b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/prince.json @@ -3,7 +3,7 @@ "category": "elythia", "title": "guide.antarchy.entry.prince.title", "subtitle": "guide.antarchy.entry.prince.subtitle", - "description": ["guide.antarchy.entry.prince.description"], + "description": ["guide.antarchy.entry.prince.description", "guide.antarchy.entry.prince.description2"], "entity": "antarchy:prince", "cover_entity": "antarchy:prince", "rotation": 45 diff --git a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/princess.json b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/princess.json index cbe3bda0..923e4a1b 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/princess.json +++ b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/princess.json @@ -3,7 +3,7 @@ "category": "thoraxis", "title": "guide.antarchy.entry.princess.title", "subtitle": "guide.antarchy.entry.princess.subtitle", - "description": ["guide.antarchy.entry.princess.description"], + "description": ["guide.antarchy.entry.princess.description", "guide.antarchy.entry.princess.description2"], "entity": "antarchy:princess", "cover_entity": "antarchy:princess", "rotation": 45 diff --git a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/queen.json b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/queen.json index 3048148c..ed08b6a7 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/queen.json +++ b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/queen.json @@ -3,7 +3,7 @@ "category": "thoraxis", "title": "guide.antarchy.entry.queen.title", "subtitle": "guide.antarchy.entry.queen.subtitle", - "description": ["guide.antarchy.entry.queen.description"], + "description": ["guide.antarchy.entry.queen.description", "guide.antarchy.entry.queen.description2", "guide.antarchy.entry.queen.description3"], "entity": "antarchy:queen", "cover_entity": "antarchy:queen", "rotation": 45, diff --git a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/temporal_fields.json b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/temporal_fields.json index 1c6b0c59..8e69d433 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/temporal_fields.json +++ b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/temporal_fields.json @@ -3,6 +3,6 @@ "category": "thoraxis", "title": "guide.antarchy.entry.temporal_fields.title", "subtitle": "guide.antarchy.entry.temporal_fields.subtitle", - "description": ["guide.antarchy.entry.temporal_fields.description"], + "description": ["guide.antarchy.entry.temporal_fields.description", "guide.antarchy.entry.temporal_fields.description2", "guide.antarchy.entry.temporal_fields.description3"], "cover_potion": "antarchy:time_dilation" } diff --git a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/thoraxis.json b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/thoraxis.json index 144d94b1..a8064bfc 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/thoraxis.json +++ b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/thoraxis.json @@ -3,7 +3,7 @@ "category": "thoraxis", "title": "guide.antarchy.entry.thoraxis.title", "subtitle": "guide.antarchy.entry.thoraxis.subtitle", - "description": ["guide.antarchy.entry.thoraxis.description"], + "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" diff --git a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/toreterror_arena.json b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/toreterror_arena.json index fd35c8c5..3760b807 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/toreterror_arena.json +++ b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/toreterror_arena.json @@ -3,7 +3,7 @@ "category": "elythia", "title": "guide.antarchy.entry.toreterror.title", "subtitle": "guide.antarchy.entry.toreterror_arena.subtitle", - "description": ["guide.antarchy.entry.toreterror_arena.description"], + "description": ["guide.antarchy.entry.toreterror_arena.description", "guide.antarchy.entry.toreterror_arena.description2"], "entity": "antarchy:toreterror", "structure": "antarchy:toreterror_arena", "structure_tag": "antarchy:toreterror_arena_locator", diff --git a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/vortex.json b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/vortex.json index 170fd71a..6fdbd10e 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/computer/entry/vortex.json +++ b/common-1.21.1/src/main/resources/data/antarchy/computer/entry/vortex.json @@ -3,7 +3,7 @@ "category": "thoraxis", "title": "guide.antarchy.entry.vortex.title", "subtitle": "guide.antarchy.entry.vortex.subtitle", - "description": ["guide.antarchy.entry.vortex.description"], + "description": ["guide.antarchy.entry.vortex.description", "guide.antarchy.entry.vortex.description2", "guide.antarchy.entry.vortex.description3"], "cover_entity": "antarchy:vortex", "render_scale": 0.8 } diff --git a/common-1.21.1/src/main/resources/data/antarchy/dimension_type/cavaryn.json b/common-1.21.1/src/main/resources/data/antarchy/dimension_type/cavaryn.json index 5aed0ffe..421deaf8 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/dimension_type/cavaryn.json +++ b/common-1.21.1/src/main/resources/data/antarchy/dimension_type/cavaryn.json @@ -1,5 +1,5 @@ { - "ultrawarm": true, + "ultrawarm": false, "natural": false, "coordinate_scale": 64.0, "bed_works": false, diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/ant_trap.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/ant_trap.json new file mode 100644 index 00000000..bb39d6df --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/ant_trap.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:ant_trap" + } + ] + } + ], + "random_sequence": "antarchy:blocks/ant_trap" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/basilisk_lair/generic.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/basilisk_lair/generic.json index 93e08b3c..e6c76717 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/basilisk_lair/generic.json +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/basilisk_lair/generic.json @@ -148,6 +148,32 @@ } } ] + }, + { + "type": "minecraft:item", + "name": "antos:floppy_disk", + "weight": 4, + "functions": [ + { + "function": "minecraft:set_components", + "components": { + "antos:floppy_disk": "antarchy:elythia" + } + } + ] + }, + { + "type": "minecraft:item", + "name": "antos:floppy_disk", + "weight": 4, + "functions": [ + { + "function": "minecraft:set_components", + "components": { + "antos:floppy_disk": "antarchy:glimmer" + } + } + ] } ], "rolls": { diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/basilisk_lair/treasure.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/basilisk_lair/treasure.json index cbdff84c..195cdb8c 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/basilisk_lair/treasure.json +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/basilisk_lair/treasure.json @@ -47,6 +47,32 @@ } ] }, + { + "type": "minecraft:item", + "name": "antos:floppy_disk", + "weight": 3, + "functions": [ + { + "function": "minecraft:set_components", + "components": { + "antos:floppy_disk": "antarchy:elythia" + } + } + ] + }, + { + "type": "minecraft:item", + "name": "antos:floppy_disk", + "weight": 3, + "functions": [ + { + "function": "minecraft:set_components", + "components": { + "antos:floppy_disk": "antarchy:glimmer" + } + } + ] + }, { "type": "minecraft:item", "name": "minecraft:diamond", diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/generic.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/generic.json index 1946e603..b2dd2320 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/generic.json +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/generic.json @@ -192,6 +192,19 @@ ], "name": "antarchy:titanium_nugget", "weight": 4 + }, + { + "type": "minecraft:item", + "name": "antos:floppy_disk", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_components", + "components": { + "antos:floppy_disk": "antarchy:elythia" + } + } + ] } ], "rolls": { diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/treasure.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/treasure.json index be90946f..86af541b 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/treasure.json +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/fallen_kingdom_castle/treasure.json @@ -93,6 +93,19 @@ ], "name": "minecraft:diamond", "weight": 12 + }, + { + "type": "minecraft:item", + "name": "antos:floppy_disk", + "weight": 6, + "functions": [ + { + "function": "minecraft:set_components", + "components": { + "antos:floppy_disk": "antarchy:elythia" + } + } + ] } ], "rolls": { diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/queen_castle/generic.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/queen_castle/generic.json index ebfa6185..03fe08fd 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/queen_castle/generic.json +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/queen_castle/generic.json @@ -8,5 +8,9 @@ {"type":"minecraft:item","name":"antarchy:blood_crystal_apple","weight":20,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":1,"max":3}}]}, {"type":"minecraft:item","name":"antarchy:lucid_pearl","weight":4},{"type":"minecraft:item","name":"minecraft:golden_apple","weight":5}, {"type":"minecraft:item","name":"minecraft:potion","weight":8,"functions":[{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},{"type":"minecraft:item","name":"minecraft:tipped_arrow","weight":8,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":4,"max":12}},{"function":"minecraft:set_potion","id":"antarchy:inversion"}]}, -{"type":"minecraft:item","name":"minecraft:book","weight":10,"functions":[{"function":"minecraft:enchant_randomly","options":["minecraft:mending","minecraft:unbreaking","minecraft:protection","minecraft:efficiency"]}]} +{"type":"minecraft:item","name":"minecraft:book","weight":10,"functions":[{"function":"minecraft:enchant_randomly","options":["minecraft:mending","minecraft:unbreaking","minecraft:protection","minecraft:efficiency"]}]}, +{"type":"minecraft:item","name":"antos:floppy_disk","weight":4,"functions":[{"function":"minecraft:set_components","components":{"antos:floppy_disk":"antarchy:thoraxis"}}]}, +{"type":"minecraft:item","name":"antos:floppy_disk","weight":3,"functions":[{"function":"minecraft:set_components","components":{"antos:floppy_disk":"antarchy:temporal_fields"}}]}, +{"type":"minecraft:item","name":"antos:floppy_disk","weight":3,"functions":[{"function":"minecraft:set_components","components":{"antos:floppy_disk":"antarchy:bloodglass"}}]}, +{"type":"minecraft:item","name":"antos:floppy_disk","weight":3,"functions":[{"function":"minecraft:set_components","components":{"antos:floppy_disk":"antarchy:vortex"}}]} ]}],"random_sequence":"antarchy:chests/queen_castle/generic"} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/queen_castle/treasure.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/queen_castle/treasure.json index cfa3c85c..b25fc123 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/queen_castle/treasure.json +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/queen_castle/treasure.json @@ -8,5 +8,9 @@ {"type":"minecraft:item","name":"antarchy:potent_nyxite","weight":4},{"type":"minecraft:item","name":"minecraft:enchanted_golden_apple","weight":2}, {"type":"minecraft:item","name":"minecraft:book","weight":14,"functions":[{"function":"minecraft:enchant_randomly","options":["minecraft:mending","minecraft:unbreaking","minecraft:protection","minecraft:efficiency","minecraft:fortune"]}]}, {"type":"minecraft:item","name":"minecraft:potion","weight":8,"functions":[{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},{"type":"minecraft:item","name":"minecraft:tipped_arrow","weight":8,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":6,"max":16}},{"function":"minecraft:set_potion","id":"antarchy:inversion"}]}, -{"type":"minecraft:item","name":"antarchy:titanium_ingot","weight":1},{"type":"minecraft:item","name":"antarchy:uranium_ingot","weight":1} +{"type":"minecraft:item","name":"antarchy:titanium_ingot","weight":1},{"type":"minecraft:item","name":"antarchy:uranium_ingot","weight":1}, +{"type":"minecraft:item","name":"antos:floppy_disk","weight":3,"functions":[{"function":"minecraft:set_components","components":{"antos:floppy_disk":"antarchy:thoraxis"}}]}, +{"type":"minecraft:item","name":"antos:floppy_disk","weight":2,"functions":[{"function":"minecraft:set_components","components":{"antos:floppy_disk":"antarchy:temporal_fields"}}]}, +{"type":"minecraft:item","name":"antos:floppy_disk","weight":2,"functions":[{"function":"minecraft:set_components","components":{"antos:floppy_disk":"antarchy:bloodglass"}}]}, +{"type":"minecraft:item","name":"antos:floppy_disk","weight":2,"functions":[{"function":"minecraft:set_components","components":{"antos:floppy_disk":"antarchy:vortex"}}]} ]}],"random_sequence":"antarchy:chests/queen_castle/treasure"} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/ruined_arena/generic.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/ruined_arena/generic.json index 1d928138..3174b8c1 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/ruined_arena/generic.json +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/ruined_arena/generic.json @@ -224,6 +224,19 @@ } } ] + }, + { + "type": "minecraft:item", + "name": "antos:floppy_disk", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_components", + "components": { + "antos:floppy_disk": "antarchy:elythia" + } + } + ] } ], "rolls": { diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/ruined_prison/generic.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/ruined_prison/generic.json index f7a5e755..ada455c3 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/ruined_prison/generic.json +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/ruined_prison/generic.json @@ -227,6 +227,19 @@ } } ] + }, + { + "type": "minecraft:item", + "name": "antos:floppy_disk", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_components", + "components": { + "antos:floppy_disk": "antarchy:elythia" + } + } + ] } ], "rolls": { diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/ruined_prison/warden_cache.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/ruined_prison/warden_cache.json index ed539a08..31e53b14 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/ruined_prison/warden_cache.json +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/ruined_prison/warden_cache.json @@ -212,6 +212,19 @@ } } ] + }, + { + "type": "minecraft:item", + "name": "antos:floppy_disk", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_components", + "components": { + "antos:floppy_disk": "antarchy:elythia" + } + } + ] } ], "rolls": { diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/stampys_house/storage.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/stampys_house/storage.json index c7093fe5..2bed7f4a 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/stampys_house/storage.json +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/stampys_house/storage.json @@ -163,6 +163,19 @@ "type": "minecraft:item", "name": "minecraft:golden_apple", "weight": 3 + }, + { + "type": "minecraft:item", + "name": "antos:floppy_disk", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_components", + "components": { + "antos:floppy_disk": "antarchy:elythia" + } + } + ] } ], "rolls": { diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/temple_of_technoblade/generic.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/temple_of_technoblade/generic.json index e5882976..c55dd98b 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/temple_of_technoblade/generic.json +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/temple_of_technoblade/generic.json @@ -158,6 +158,19 @@ "type": "minecraft:item", "name": "minecraft:golden_apple", "weight": 4 + }, + { + "type": "minecraft:item", + "name": "antos:floppy_disk", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_components", + "components": { + "antos:floppy_disk": "antarchy:elythia" + } + } + ] } ], "rolls": { diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/temple_of_technoblade/treasure.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/temple_of_technoblade/treasure.json index 189b3f72..b38b6d65 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/temple_of_technoblade/treasure.json +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/temple_of_technoblade/treasure.json @@ -118,6 +118,19 @@ "type": "minecraft:item", "name": "antarchy:fallen_king_crown", "weight": 2 + }, + { + "type": "minecraft:item", + "name": "antos:floppy_disk", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_components", + "components": { + "antos:floppy_disk": "antarchy:elythia" + } + } + ] } ], "rolls": { diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/tigers_eye_shrine/treasure.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/tigers_eye_shrine/treasure.json index d975eaf6..dfbe4efd 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/tigers_eye_shrine/treasure.json +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/tigers_eye_shrine/treasure.json @@ -154,6 +154,19 @@ } } ] + }, + { + "type": "minecraft:item", + "name": "antos:floppy_disk", + "weight": 4, + "functions": [ + { + "function": "minecraft:set_components", + "components": { + "antos:floppy_disk": "antarchy:cavaryn" + } + } + ] } ] } diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/trayaurus_lab/trayaurus_lab.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/trayaurus_lab/trayaurus_lab.json index 3163e7d5..d00416c9 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/trayaurus_lab/trayaurus_lab.json +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/trayaurus_lab/trayaurus_lab.json @@ -436,6 +436,19 @@ "type": "minecraft:item", "name": "antarchy:mud_pie", "weight": 4 + }, + { + "type": "minecraft:item", + "name": "antos:floppy_disk", + "weight": 4, + "functions": [ + { + "function": "minecraft:set_components", + "components": { + "antos:floppy_disk": "antarchy:elythia" + } + } + ] } ], "rolls": { diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/underside_ruins/treasure.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/underside_ruins/treasure.json index a4879e6e..86c7d6bc 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/underside_ruins/treasure.json +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/chests/underside_ruins/treasure.json @@ -10,5 +10,9 @@ {"type":"minecraft:item","name":"minecraft:tipped_arrow","weight":7,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":4,"max":10}},{"function":"minecraft:set_potion","id":"antarchy:inversion"}]}, {"type":"minecraft:item","name":"minecraft:potion","weight":6,"functions":[{"function":"minecraft:set_potion","id":"antarchy:time_contraction"}]}, {"type":"minecraft:item","name":"minecraft:potion","weight":6,"functions":[{"function":"minecraft:set_potion","id":"antarchy:time_dilation"}]}, -{"type":"minecraft:item","name":"antarchy:titanium_ingot","weight":1},{"type":"minecraft:item","name":"antarchy:uranium_ingot","weight":1} +{"type":"minecraft:item","name":"antarchy:titanium_ingot","weight":1},{"type":"minecraft:item","name":"antarchy:uranium_ingot","weight":1}, +{"type":"minecraft:item","name":"antos:floppy_disk","weight":3,"functions":[{"function":"minecraft:set_components","components":{"antos:floppy_disk":"antarchy:thoraxis"}}]}, +{"type":"minecraft:item","name":"antos:floppy_disk","weight":2,"functions":[{"function":"minecraft:set_components","components":{"antos:floppy_disk":"antarchy:temporal_fields"}}]}, +{"type":"minecraft:item","name":"antos:floppy_disk","weight":2,"functions":[{"function":"minecraft:set_components","components":{"antos:floppy_disk":"antarchy:bloodglass"}}]}, +{"type":"minecraft:item","name":"antos:floppy_disk","weight":2,"functions":[{"function":"minecraft:set_components","components":{"antos:floppy_disk":"antarchy:vortex"}}]} ]}],"random_sequence":"antarchy:chests/underside_ruins/treasure"} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/bug_spray.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/bug_spray.json new file mode 100644 index 00000000..2c14a6dd --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/bug_spray.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "IGI", + " I " + ], + "key": { + "I": { + "item": "minecraft:iron_nugget" + }, + "G": { + "item": "antarchy:flytrap_goo" + } + }, + "result": { + "id": "antarchy:bug_spray", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/dream_dunes.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/dream_dunes.json index 2af66886..35f678bf 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/dream_dunes.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/dream_dunes.json @@ -51,6 +51,7 @@ "antarchy:bluestone_ore", "antarchy:thoraxis_ichor_lake", "antarchy:thoraxis_transition_throat", + "antarchy:thoraxis_transition_throat_large", "antarchy:dimensional_tears" ], [], diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/configured_feature/thoraxis_transition_throat.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/configured_feature/thoraxis_transition_throat.json index e82cb683..0e96a4af 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/configured_feature/thoraxis_transition_throat.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/configured_feature/thoraxis_transition_throat.json @@ -1,4 +1,6 @@ { "type": "antarchy:thoraxis_transition_throat", - "config": {} + "config": { + "large": false + } } diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/configured_feature/thoraxis_transition_throat_large.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/configured_feature/thoraxis_transition_throat_large.json new file mode 100644 index 00000000..3a6d2f9e --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/configured_feature/thoraxis_transition_throat_large.json @@ -0,0 +1,6 @@ +{ + "type": "antarchy:thoraxis_transition_throat", + "config": { + "large": true + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/placed_feature/thoraxis_transition_throat_large.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/placed_feature/thoraxis_transition_throat_large.json new file mode 100644 index 00000000..1fcb974f --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/placed_feature/thoraxis_transition_throat_large.json @@ -0,0 +1,24 @@ +{ + "feature": "antarchy:thoraxis_transition_throat_large", + "placement": [ + { + "type": "minecraft:rarity_filter", + "chance": 640 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:constant", + "value": { + "absolute": 0 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/structure/tigers_eye_shrine.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/structure/tigers_eye_shrine.json index 847e8bfc..ed4432fa 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/structure/tigers_eye_shrine.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/structure/tigers_eye_shrine.json @@ -6,7 +6,7 @@ "allowed_terrain_height_range": 14, "valid_biome_radius_check": 1, "biomes": "#antarchy:has_structure/tigers_eye_shrine_biomes", - "step": "surface_structures", + "step": "underground_structures", "enhanced_terrain_adaptation": { "type": "integrated_api:none" }, diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/structure/underside_castle.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/structure/underside_castle.json index b58b7c96..e39f3775 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/structure/underside_castle.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/structure/underside_castle.json @@ -26,7 +26,7 @@ "max_roof_search_distance": 256, "min_roof_thickness": 3, "min_open_space_below": 16, - "ceiling_offset": 0, + "ceiling_offset": -1, "spawn_overrides": {}, "liquid_settings": "ignore_waterlogging" } diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/structure/underside_ruins.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/structure/underside_ruins.json index a2a448d5..63f5b967 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/structure/underside_ruins.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/structure/underside_ruins.json @@ -26,7 +26,7 @@ "max_roof_search_distance": 256, "min_roof_thickness": 3, "min_open_space_below": 16, - "ceiling_offset": 0, + "ceiling_offset": -1, "spawn_overrides": {}, "liquid_settings": "ignore_waterlogging" } diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/structure_set/tigers_eye_shrine.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/structure_set/tigers_eye_shrine.json index 5df0708e..c4f0faf5 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/structure_set/tigers_eye_shrine.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/structure_set/tigers_eye_shrine.json @@ -9,6 +9,6 @@ "salt": 149275031, "spacing": 24, "separation": 16, - "type": "integrated_api:advanced_random_spread" + "type": "minecraft:random_spread" } } diff --git a/common-1.21.1/src/main/resources/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json b/common-1.21.1/src/main/resources/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json index 7587066e..c401a431 100644 --- a/common-1.21.1/src/main/resources/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json +++ b/common-1.21.1/src/main/resources/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json @@ -1 +1 @@ -{"replace":false,"values":["antarchy:pest_control"]} +{"replace":false,"values":["antarchy:pest_control","antarchy:computer"]} diff --git a/common-1.21.1/src/main/resources/data/minecraft/worldgen/noise/nether/temperature.json b/common-1.21.1/src/main/resources/data/minecraft/worldgen/noise/nether/temperature.json new file mode 100644 index 00000000..ab7b15e6 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/minecraft/worldgen/noise/nether/temperature.json @@ -0,0 +1,7 @@ +{ + "amplitudes": [ + 1.0, + 1.0 + ], + "firstOctave": -7 +} diff --git a/common-1.21.1/src/main/resources/data/minecraft/worldgen/noise/nether/vegetation.json b/common-1.21.1/src/main/resources/data/minecraft/worldgen/noise/nether/vegetation.json new file mode 100644 index 00000000..ab7b15e6 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/minecraft/worldgen/noise/nether/vegetation.json @@ -0,0 +1,7 @@ +{ + "amplitudes": [ + 1.0, + 1.0 + ], + "firstOctave": -7 +} diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabric.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabric.java index 98c87268..83a9eb64 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabric.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabric.java @@ -147,6 +147,7 @@ public final class AntarchyFabric implements ModInitializer { ); @Override public void onInitialize() { + com.craisinlord.antos.fabric.AntOSFabricContent.register(); AntarchyGameRules.bootstrap((name, category, defaultValue) -> GameRuleRegistry.register(name, category, GameRuleFactory.createBooleanRule(defaultValue)) ); diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java index 23514f50..7aee173c 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java @@ -562,6 +562,8 @@ public final class AntarchyFabricContent { com.craisinlord.antarchy.content.time.TimeDilationApi.setFieldSyncDispatcher( com.craisinlord.antarchy.fabric.network.AntarchyFabricTimeDilationNetworking::syncFields ); + AntarchyFabricMisc.POI_TYPES.register(); + AntarchyFabricMisc.VILLAGER_PROFESSIONS.register(); AntarchyFabricEvents.register(); if (isSupportedInfinityLoaded()) { diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/mixin/ThoraxisWaterBucketMixin.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/mixin/ThoraxisWaterBucketMixin.java new file mode 100644 index 00000000..d0b7c5c2 --- /dev/null +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/mixin/ThoraxisWaterBucketMixin.java @@ -0,0 +1,72 @@ +package com.craisinlord.antarchy.fabric.mixin; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.fabric.registry.AntarchyFabricMisc; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.BucketItem; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.material.Fluids; +import net.minecraft.world.phys.BlockHitResult; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(BucketItem.class) +public abstract class ThoraxisWaterBucketMixin { + private static final ResourceLocation THORAXIS_DIMENSION_ID = + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "thoraxis"); + + @Shadow + @Final + public Fluid content; + + @Shadow + protected abstract void playEmptySound(@Nullable Player player, LevelAccessor level, BlockPos pos); + + @Inject(method = "emptyContents", at = @At("HEAD"), cancellable = true) + private void antarchy$replaceWaterWithAntiwaterInThoraxis( + @Nullable Player player, + Level level, + BlockPos pos, + @Nullable BlockHitResult hitResult, + CallbackInfoReturnable cir + ) { + if (this.content != Fluids.WATER || !level.dimension().location().equals(THORAXIS_DIMENSION_ID)) { + return; + } + + BlockState state = level.getBlockState(pos); + boolean canReplace = state.canBeReplaced(this.content); + + if (!state.isAir() && !canReplace && !state.getFluidState().isSource()) { + cir.setReturnValue(false); + return; + } + + if (!level.isClientSide && canReplace && !state.liquid()) { + level.destroyBlock(pos, true); + } + + boolean placed = level.setBlock( + pos, + AntarchyFabricMisc.ANTIWATER.get().defaultFluidState().createLegacyBlock(), + 11 + ); + if (placed || state.getFluidState().isSource()) { + this.playEmptySound(player, level, pos); + cir.setReturnValue(true); + return; + } + + cir.setReturnValue(false); + } +} diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/mixin/entity/ParalyzedMobFreezeMixin.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/mixin/entity/ParalyzedMobFreezeMixin.java new file mode 100644 index 00000000..a0195d80 --- /dev/null +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/mixin/entity/ParalyzedMobFreezeMixin.java @@ -0,0 +1,22 @@ +package com.craisinlord.antarchy.fabric.mixin.entity; + +import com.craisinlord.antarchy.fabric.registry.AntarchyFabricMisc; +import net.minecraft.world.entity.Mob; +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; + +@Mixin(Mob.class) +public abstract class ParalyzedMobFreezeMixin { + @Inject(method = "serverAiStep", at = @At("HEAD")) + private void antarchy$freezeAiWhileParalyzed(CallbackInfo ci) { + Mob mob = (Mob) (Object) this; + if (!mob.hasEffect(AntarchyFabricMisc.mobEffectHolder(AntarchyFabricMisc.PARALYZED))) { + return; + } + + mob.getNavigation().stop(); + mob.setJumping(false); + } +} diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java index f7d3b19a..901a070b 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java @@ -135,10 +135,15 @@ public final class AntarchyFabricMisc { public static final DeferredHolder COMPUTER_POI = POI_TYPES.register("computer", () -> new PoiType( - java.util.Set.copyOf(net.minecraft.world.level.block.Block.byItem(com.craisinlord.antos.content.AntOSObjects.COMPUTER_ITEM.get()).getStateDefinition().getPossibleStates()), + java.util.Set.copyOf(computerPoiStates()), 1, 1)); + private static java.util.Set computerPoiStates() { + net.minecraft.world.level.block.Block block = com.craisinlord.antos.fabric.AntOSFabricContent.COMPUTER; + return java.util.Set.copyOf(block.getStateDefinition().getPossibleStates()); + } + public static final DeferredHolder COMPUTER_SCIENTIST = VILLAGER_PROFESSIONS.register("computer_scientist", () -> new VillagerProfession( "computer_scientist", diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/DeferredHolder.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/DeferredHolder.java index 555df69e..86a936d6 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/DeferredHolder.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/DeferredHolder.java @@ -1,6 +1,7 @@ package com.craisinlord.antarchy.fabric.registry; import java.util.function.Supplier; + import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; diff --git a/fabric-1.21.1/src/main/resources/fabric.mod.json b/fabric-1.21.1/src/main/resources/fabric.mod.json index ec2c4832..941f4981 100644 --- a/fabric-1.21.1/src/main/resources/fabric.mod.json +++ b/fabric-1.21.1/src/main/resources/fabric.mod.json @@ -31,11 +31,11 @@ "antarchy-fabric.mixins.json" ], "depends": { + "antos": "*", "fabricloader": ">=${fabric_loader_version}", "minecraft": "~${minecraft_version}", "java": ">=21", "fabric-api": "*", - "antos": "*", "integrated_api": "*", "geckolib": "*", "sizeable_foliage": "*" diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyToolsConfig.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyToolsConfig.java index 942f04a6..de7ce45b 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyToolsConfig.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyToolsConfig.java @@ -401,7 +401,7 @@ public final class AntarchyToolsConfig { ROYAL_GUARDIAN_SWORD_STORM_JUMP_RANGE = b.defineInRange("guardianSwordStormJumpRange", 9.0D, 0.0D, 128.0D); ROYAL_ASSAILANT_BATTLE_AXE_ATTACK_DAMAGE = b.defineInRange("assailantBattleAxeAttackDamage", 151.0D, 0.0D, 4096.0D); ROYAL_ASSAILANT_BATTLE_AXE_ATTACK_SPEED = b.defineInRange("assailantBattleAxeAttackSpeed", -2.9D, -10.0D, 10.0D); - ROYAL_WEAPON_ATTACK_REACH_BONUS = b.defineInRange("weaponAttackReachBonus", 1.0D, 0.0D, 32.0D); + ROYAL_WEAPON_ATTACK_REACH_BONUS = b.defineInRange("weaponAttackReachBonus", 3.2D, 0.0D, 32.0D); ROYAL_WEAPON_ATTACK_KNOCKBACK_BONUS = b.defineInRange("weaponAttackKnockbackBonus", 1.0D, 0.0D, 32.0D); ROYAL_WEAPON_DURABILITY = b.defineInRange("weaponDurability", 4608, 1, 100000); ROYAL_WEAPON_ENCHANTABILITY = b.defineInRange("weaponEnchantability", 30, 0, 100); diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java index 38e25f9d..1266a4fd 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java @@ -1425,7 +1425,7 @@ public final class AntarchyNeoForgeEvents { Holder computerPoi = BuiltInRegistries.POINT_OF_INTEREST_TYPE.getHolderOrThrow( ResourceKey.create(Registries.POINT_OF_INTEREST_TYPE, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "computer"))); - Block computerBlock = Block.byItem(com.craisinlord.antos.content.AntOSObjects.COMPUTER_ITEM.get()); + Block computerBlock = com.craisinlord.antos.neoforge.AntOSNeoForgeContent.COMPUTER.get(); for (BlockState state : computerBlock.getStateDefinition().getPossibleStates()) { PoiTypesAccessor.antarchy$getTypeByState().put(state, computerPoi); } diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java index e64287f0..a7dfc821 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java @@ -71,7 +71,7 @@ public final class AntarchyNeoforgeMisc { public static final DeferredHolder COMPUTER_POI = POI_TYPES.register("computer", () -> new PoiType( - java.util.Set.copyOf(net.minecraft.world.level.block.Block.byItem(com.craisinlord.antos.content.AntOSObjects.COMPUTER_ITEM.get()).getStateDefinition().getPossibleStates()), + java.util.Set.copyOf(com.craisinlord.antos.neoforge.AntOSNeoForgeContent.COMPUTER.get().getStateDefinition().getPossibleStates()), 1, 1));