diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/bridge/world/server/ServerChunkProviderBridge.java b/arclight-common/src/main/java/io/izzel/arclight/common/bridge/world/server/ServerChunkProviderBridge.java index 24cfc507..baa59b9a 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/bridge/world/server/ServerChunkProviderBridge.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/bridge/world/server/ServerChunkProviderBridge.java @@ -1,5 +1,9 @@ package io.izzel.arclight.common.bridge.world.server; +import net.minecraft.entity.EntityClassification; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraft.world.chunk.Chunk; import net.minecraft.world.server.ServerWorldLightManager; import java.io.IOException; @@ -15,4 +19,6 @@ public interface ServerChunkProviderBridge { boolean bridge$isChunkLoaded(int x, int z); ServerWorldLightManager bridge$getLightManager(); + + void bridge$worldNaturalSpawn(EntityClassification classification, World worldIn, Chunk chunk, BlockPos pos); } diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/server/ServerChunkProviderMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/server/ServerChunkProviderMixin.java index 3494ee26..02709aa7 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/server/ServerChunkProviderMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/server/ServerChunkProviderMixin.java @@ -24,7 +24,6 @@ import net.minecraft.world.server.ServerWorld; import net.minecraft.world.server.ServerWorldLightManager; import net.minecraft.world.server.TicketManager; import net.minecraft.world.server.TicketType; -import net.minecraft.world.spawner.WorldEntitySpawner; import net.minecraft.world.storage.WorldInfo; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -175,7 +174,7 @@ public abstract class ServerChunkProviderMixin implements ServerChunkProviderBri if (entityclassification != EntityClassification.MISC && (!entityclassification.getPeacefulCreature() || this.spawnPassives) && (entityclassification.getPeacefulCreature() || this.spawnHostiles) && (!entityclassification.getAnimal() || flag2)) { int i1 = limit * l / field_217238_b; if (object2intmap.getInt(entityclassification) <= i1) { - WorldEntitySpawner.spawnEntitiesInChunk(entityclassification, this.world, chunk, blockpos); + this.bridge$worldNaturalSpawn(entityclassification, this.world, chunk, blockpos); } } } diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/v1_15/world/server/ServerChunkProviderMixin_1_15.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/v1_15/world/server/ServerChunkProviderMixin_1_15.java new file mode 100644 index 00000000..c8b5a9d1 --- /dev/null +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/v1_15/world/server/ServerChunkProviderMixin_1_15.java @@ -0,0 +1,20 @@ +package io.izzel.arclight.common.mixin.v1_15.world.server; + +import io.izzel.arclight.common.bridge.world.server.ServerChunkProviderBridge; +import net.minecraft.entity.EntityClassification; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraft.world.chunk.Chunk; +import net.minecraft.world.server.ServerChunkProvider; +import net.minecraft.world.server.ServerWorld; +import net.minecraft.world.spawner.WorldEntitySpawner; +import org.spongepowered.asm.mixin.Mixin; + +@Mixin(ServerChunkProvider.class) +public abstract class ServerChunkProviderMixin_1_15 implements ServerChunkProviderBridge { + + @Override + public void bridge$worldNaturalSpawn(EntityClassification classification, World worldIn, Chunk chunk, BlockPos pos) { + WorldEntitySpawner.spawnEntitiesInChunk(classification, (ServerWorld) worldIn, chunk, pos); + } +} diff --git a/arclight-common/src/main/resources/mixins.arclight.core.1_15.json b/arclight-common/src/main/resources/mixins.arclight.core.1_15.json index 7c18701e..049226b9 100644 --- a/arclight-common/src/main/resources/mixins.arclight.core.1_15.json +++ b/arclight-common/src/main/resources/mixins.arclight.core.1_15.json @@ -82,6 +82,7 @@ "world.chunk.ChunkMixin_1_15", "world.dimension.DimensionTypeMixin_1_15", "world.gen.feature.structure.SwampHutPieceMixin_1_15", + "world.server.ServerChunkProviderMixin_1_15", "world.server.ServerMultiWorldMixin_1_15", "world.server.ServerWorldMixin_1_15", "world.server.TicketManagerMixin_1_15", diff --git a/arclight-forge-1.14/src/main/java/io/izzel/arclight/impl/mixin/v1_14/core/world/server/ServerChunkProviderMixin_1_14.java b/arclight-forge-1.14/src/main/java/io/izzel/arclight/impl/mixin/v1_14/core/world/server/ServerChunkProviderMixin_1_14.java new file mode 100644 index 00000000..8737648d --- /dev/null +++ b/arclight-forge-1.14/src/main/java/io/izzel/arclight/impl/mixin/v1_14/core/world/server/ServerChunkProviderMixin_1_14.java @@ -0,0 +1,19 @@ +package io.izzel.arclight.impl.mixin.v1_14.core.world.server; + +import io.izzel.arclight.common.bridge.world.server.ServerChunkProviderBridge; +import net.minecraft.entity.EntityClassification; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraft.world.chunk.Chunk; +import net.minecraft.world.server.ServerChunkProvider; +import net.minecraft.world.spawner.WorldEntitySpawner; +import org.spongepowered.asm.mixin.Mixin; + +@Mixin(ServerChunkProvider.class) +public abstract class ServerChunkProviderMixin_1_14 implements ServerChunkProviderBridge { + + @Override + public void bridge$worldNaturalSpawn(EntityClassification classification, World worldIn, Chunk chunk, BlockPos pos) { + WorldEntitySpawner.performNaturalSpawning(classification, worldIn, chunk, pos); + } +} diff --git a/arclight-forge-1.14/src/main/resources/mixins.arclight.impl.core.1_14.json b/arclight-forge-1.14/src/main/resources/mixins.arclight.impl.core.1_14.json index 7d9ca967..629d15a9 100644 --- a/arclight-forge-1.14/src/main/resources/mixins.arclight.impl.core.1_14.json +++ b/arclight-forge-1.14/src/main/resources/mixins.arclight.impl.core.1_14.json @@ -80,6 +80,7 @@ "world.chunk.ChunkMixin_1_14", "world.dimension.DimensionTypeMixin_1_14", "world.gen.feature.structure.SwampHutPieceMixin_1_14", + "world.server.ServerChunkProviderMixin_1_14", "world.server.TicketManagerMixin_1_14", "world.spawner.WorldEntitySpawnerMixin_1_14", "world.storage.MapDataMixin_1_14"