diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/AppleCowEntityVariants.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/AppleCowEntityVariants.java index 8789e97b..45896731 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/AppleCowEntityVariants.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/AppleCowEntityVariants.java @@ -25,10 +25,4 @@ public final class AppleCowEntityVariants { super(entityType, level); } } - - public static class HoneyedAppleCow extends AppleCowEntity { - public HoneyedAppleCow(EntityType entityType, Level level) { - super(entityType, level); - } - } } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/portal/PermanentPortalShape.java b/common/src/main/java/com/craisinlord/antarchy/content/portal/PermanentPortalShape.java index a533f2e6..e8723581 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/portal/PermanentPortalShape.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/portal/PermanentPortalShape.java @@ -214,6 +214,10 @@ public final class PermanentPortalShape { for (int y = -1; y <= 3; y++) { for (int x = -1; x <= 2; x++) { BlockPos pos = bottomLeft.relative(widthDirection, x).above(y); + boolean cornerSpot = (x == -1 || x == 2) && (y == -1 || y == 3); + if (cornerSpot) { + continue; + } if (x == -1 || x == 2 || y == -1 || y == 3) { level.setBlock(pos, frameState, Block.UPDATE_ALL); } else { @@ -233,6 +237,10 @@ public final class PermanentPortalShape { BlockPos pos = bottomLeft.relative(widthDirection, x).above(y); BlockState state = level.getBlockState(pos); boolean frameSpot = x == -1 || x == 2 || y == -1 || y == 3; + boolean cornerSpot = (x == -1 || x == 2) && (y == -1 || y == 3); + if (cornerSpot) { + continue; + } if (frameSpot) { if (!state.isAir() && !state.is(frameBlock) && !state.canBeReplaced()) { return false; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/portal/PermanentPortalTeleporter.java b/common/src/main/java/com/craisinlord/antarchy/content/portal/PermanentPortalTeleporter.java index 02abb785..a6c968a0 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/portal/PermanentPortalTeleporter.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/portal/PermanentPortalTeleporter.java @@ -22,6 +22,7 @@ import org.jetbrains.annotations.Nullable; public final class PermanentPortalTeleporter { private static final int SEARCH_RADIUS = 24; private static final int VERTICAL_SEARCH = 24; + private static final int EXISTING_PORTAL_SEARCH_RADIUS = 48; private PermanentPortalTeleporter() { } @@ -64,6 +65,11 @@ public final class PermanentPortalTeleporter { Vec3 safe = findSafeArrivalPosition(entity, destination, preferredPos); if (safe != null) { + PermanentPortalShape nearbyActive = findActiveNearby(destination, BlockPos.containing(safe), type); + if (nearbyActive != null) { + return nearbyActive.center(); + } + PermanentPortalShape created = createReturnPortal(destination, safe, type); if (created != null) { return created.center(); @@ -74,6 +80,33 @@ public final class PermanentPortalTeleporter { return createFallbackPlatform(destination, preferredPos, type.platformBlock().defaultBlockState()); } + @Nullable + private static PermanentPortalShape findActiveNearby(ServerLevel level, BlockPos center, PermanentPortalType type) { + for (int radius = 0; radius <= EXISTING_PORTAL_SEARCH_RADIUS; radius++) { + for (int xOff = -radius; xOff <= radius; xOff++) { + for (int yOff = -radius; yOff <= radius; yOff++) { + for (int zOff = -radius; zOff <= radius; zOff++) { + if (radius > 0 && Math.abs(xOff) != radius && Math.abs(yOff) != radius && Math.abs(zOff) != radius) { + continue; + } + + BlockPos candidate = center.offset(xOff, yOff, zOff); + PermanentPortalShape xShape = PermanentPortalShape.findActive(level, candidate, type, Direction.Axis.X); + if (xShape != null) { + return xShape; + } + PermanentPortalShape zShape = PermanentPortalShape.findActive(level, candidate, type, Direction.Axis.Z); + if (zShape != null) { + return zShape; + } + } + } + } + } + + return null; + } + @Nullable private static Vec3 findSafeArrivalPosition(Entity entity, ServerLevel destination, BlockPos preferredPos) { int[] yRange = getDimensionYRange(destination); diff --git a/common/src/main/resources/assets/antarchy/lang/en_us.json b/common/src/main/resources/assets/antarchy/lang/en_us.json index c1c25ffe..ef4967c6 100644 --- a/common/src/main/resources/assets/antarchy/lang/en_us.json +++ b/common/src/main/resources/assets/antarchy/lang/en_us.json @@ -134,7 +134,6 @@ "entity.antarchy.apple_cow": "Apple Cow", "entity.antarchy.golden_apple_cow": "Golden Apple Cow", "entity.antarchy.enchanted_golden_apple_cow": "Enchanted Golden Apple Cow", - "entity.antarchy.honeyed_apple_cow": "Honeyed Apple Cow", "entity.antarchy.easter_bunny": "Easter Bunny", "entity.antarchy.glimmer": "Glimmer", "entity.antarchy.flying_squirrel": "Flying Squirrel", @@ -356,7 +355,6 @@ "item.antarchy.rainbow_ant_spawn_egg": "Rainbow Ant Spawn Egg", "item.antarchy.golden_apple_cow_spawn_egg": "Golden Apple Cow Spawn Egg", "item.antarchy.enchanted_golden_apple_cow_spawn_egg": "Enchanted Golden Apple Cow Spawn Egg", - "item.antarchy.honeyed_apple_cow_spawn_egg": "Honeyed Apple Cow Spawn Egg", "item.antarchy.dr_trayaurus_spawn_egg": "Dr. Trayaurus Spawn Egg", "item.antarchy.easter_bunny_spawn_egg": "Easter Bunny Spawn Egg", "item.antarchy.glimmer_spawn_egg": "Glimmer Spawn Egg", diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java index 46cd1697..35f645de 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java @@ -1974,7 +1974,7 @@ public final class AntarchyFabricContent { "red_ant_spawn_egg", "brown_ant_spawn_egg", "rainbow_ant_spawn_egg", "termite_spawn_egg", "moleworm_spawn_egg", "mantis_spawn_egg", "alpha_mantis_spawn_egg", "rolly_polly_spawn_egg", "molevore_spawn_egg", "triffid_spawn_egg", "apple_cow_spawn_egg", "golden_apple_cow_spawn_egg", "enchanted_golden_apple_cow_spawn_egg", - "honeyed_apple_cow_spawn_egg", "dr_trayaurus_spawn_egg", "wasp_spawn_egg", + "dr_trayaurus_spawn_egg", "wasp_spawn_egg", "bomber_spawn_egg", "jumpy_bug_spawn_egg", "stink_bug_spawn_egg", "cloud_shark_spawn_egg", "kraken_spawn_egg", "missile_squid_spawn_egg", "octopus_bomb_spawn_egg", "nightmare_spawn_egg", "bed_bug_spawn_egg", "lucid_spawn_egg", "scorpion_spawn_egg", "basilisk_spawn_egg", "emperor_scorpion_spawn_egg", "toreterror_spawn_egg", diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntites.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntites.java index 14b26395..372f0a31 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntites.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntites.java @@ -4,7 +4,6 @@ import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.AppleCow; import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.EnchantedGoldenAppleCow; import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.GoldenAppleCow; -import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.HoneyedAppleCow; import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity; import com.craisinlord.antarchy.content.entity.BedBugEntity; import com.craisinlord.antarchy.content.entity.BomberEntity; @@ -194,9 +193,6 @@ public final class AntarchyNeoforgeEntites { () -> buildCowType(GoldenAppleCow::new, "golden_apple_cow")); public static final DeferredHolder, EntityType> ENCHANTED_GOLDEN_APPLE_COW = ENTITY_TYPES.register("enchanted_golden_apple_cow", () -> buildCowType(EnchantedGoldenAppleCow::new, "enchanted_golden_apple_cow")); - public static final DeferredHolder, EntityType> HONEYED_APPLE_COW = CREATE_LOADED - ? ENTITY_TYPES.register("honeyed_apple_cow", () -> buildCowType(HoneyedAppleCow::new, "honeyed_apple_cow")) - : null; public static final DeferredHolder, EntityType> DR_TRAYAURUS = ENTITY_TYPES.register("dr_trayaurus", () -> EntityType.Builder.of(DrTrayaurusEntity::new, MobCategory.MISC) .sized(0.6F, 1.95F) diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntityAttributes.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntityAttributes.java index 701ce974..08e38c1b 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntityAttributes.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntityAttributes.java @@ -40,6 +40,12 @@ public class AntarchyNeoforgeEntityAttributes { event.put(AntarchyNeoforgeEntites.APPLE_COW.get(), cowAttributes); event.put(AntarchyNeoforgeEntites.GOLDEN_APPLE_COW.get(), cowAttributes); event.put(AntarchyNeoforgeEntites.ENCHANTED_GOLDEN_APPLE_COW.get(), cowAttributes); + event.put(AntarchyNeoforgeEntites.TERMITE.get(), buildAntAttributes( + AntarchySettings.termiteHealth(), + AntarchySettings.termiteMovementSpeed(), + AntarchySettings.termiteAttackDamage() + ).build()); + event.put(AntarchyNeoforgeEntites.ROLLY_POLLY.get(), RollyPollyEntity.createAttributes().build()); event.put(AntarchyNeoforgeEntites.DR_TRAYAURUS.get(), Villager.createAttributes().build()); event.put(AntarchyNeoforgeEntites.CLOUD_SHARK.get(), CloudSharkEntity.createAttributes().build()); event.put(AntarchyNeoforgeEntites.KRAKEN.get(), KrakenEntity.createAttributes().build()); diff --git a/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/honeyed_apple_cow_spawns.json b/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/honeyed_apple_cow_spawns.json deleted file mode 100644 index 4df5d6b0..00000000 --- a/neoforge/src/main/resources/data/antarchy/neoforge/biome_modifier/honeyed_apple_cow_spawns.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "neoforge:conditions": [ - { - "type": "neoforge:mod_loaded", - "modid": "create" - } - ], - "type": "neoforge:add_spawns", - "biomes": "#antarchy:honeyed_apple_cow_spawn_biomes", - "spawners": [ - { - "type": "antarchy:honeyed_apple_cow", - "weight": 2, - "minCount": 1, - "maxCount": 2 - } - ] -}