diff --git a/build.gradle b/build.gradle index afa4fd1..ed90a4c 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,6 @@ //file:noinspection GroovyAccessibility //file:noinspection GroovyAssignabilityCheck +//file:noinspection DependencyNotationArgument plugins { id "architectury-plugin" version "${architectury_plugin_version}" diff --git a/common/build.gradle b/common/build.gradle index e2b4565..2d2c63b 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -1,5 +1,6 @@ //file:noinspection GroovyAccessibility //file:noinspection GroovyAssignabilityCheck +//file:noinspection DependencyNotationArgument architectury { common(rootProject.enabled_platforms.split(",")) diff --git a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/NoisiumChunkManager.java b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/NoisiumChunkManager.java index 13ca0fe..d46affb 100644 --- a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/NoisiumChunkManager.java +++ b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/NoisiumChunkManager.java @@ -1,5 +1,6 @@ package io.github.steveplays28.noisiumchunkmanager; +import io.github.steveplays28.noisiumchunkmanager.server.NoisiumChunkManagerServerInitialiser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -11,6 +12,6 @@ public class NoisiumChunkManager { public static void initialize() { LOGGER.info("Loading {}.", MOD_NAME); - io.github.steveplays28.noisiumchunkmanager.experimental.server.NoisiumChunkManagerServerInitialiser.initialise(); + NoisiumChunkManagerServerInitialiser.initialise(); } } diff --git a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/config/NoisiumChunkManagerConfig.java b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/config/NoisiumChunkManagerConfig.java index 30e3507..2315169 100644 --- a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/config/NoisiumChunkManagerConfig.java +++ b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/config/NoisiumChunkManagerConfig.java @@ -4,7 +4,6 @@ import dev.isxander.yacl3.config.v2.api.SerialEntry; import dev.isxander.yacl3.config.v2.api.autogen.AutoGen; import dev.isxander.yacl3.config.v2.api.autogen.IntField; -import dev.isxander.yacl3.config.v2.api.autogen.TickBox; import dev.isxander.yacl3.config.v2.api.serializer.GsonConfigSerializerBuilder; import io.github.steveplays28.noisiumchunkmanager.util.ModLoaderUtil; import net.minecraft.util.Identifier; @@ -23,10 +22,6 @@ public class NoisiumChunkManagerConfig { private static final @NotNull String SERVER_CATEGORY = "server"; private static final @NotNull String SERVER_WORLD_CHUNK_MANAGER_GROUP = "serverWorldChunkManager"; - @AutoGen(category = SERVER_CATEGORY, group = SERVER_WORLD_CHUNK_MANAGER_GROUP) - @SerialEntry(comment = "A re-implementation of the server world's chunk manager. Every world has its own chunk manager. After changing this option you MUST restart Minecraft.") - @TickBox - public boolean serverWorldChunkManagerEnabled = false; @AutoGen(category = SERVER_CATEGORY, group = SERVER_WORLD_CHUNK_MANAGER_GROUP) @SerialEntry(comment = "The amount of threads used by a server world's chunk manager. Every world has its own chunk manager, and thus its own threads. After changing this option you MUST restart the server.") @IntField(min = 1, format = "%i threads") diff --git a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/extension/world/chunk/WorldChunkExtension.java b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/extension/world/chunk/WorldChunkExtension.java index f2b634a..31e4ad9 100644 --- a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/extension/world/chunk/WorldChunkExtension.java +++ b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/extension/world/chunk/WorldChunkExtension.java @@ -1,4 +1,4 @@ -package io.github.steveplays28.noisiumchunkmanager.experimental.extension.world.chunk; +package io.github.steveplays28.noisiumchunkmanager.extension.world.chunk; import java.util.BitSet; diff --git a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/client/gui/hud/DebugHudMixin.java b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/client/gui/hud/DebugHudMixin.java index 93796ad..16a0d52 100644 --- a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/client/gui/hud/DebugHudMixin.java +++ b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/client/gui/hud/DebugHudMixin.java @@ -1,5 +1,6 @@ package io.github.steveplays28.noisiumchunkmanager.mixin.client.gui.hud; +import io.github.steveplays28.noisiumchunkmanager.extension.world.server.ServerWorldExtension; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.hud.DebugHud; @@ -34,7 +35,7 @@ public abstract class DebugHudMixin { return; } - @NotNull var noisiumServerWorldChunkManager = ((io.github.steveplays28.noisiumchunkmanager.experimental.extension.world.server.ServerWorldExtension) serverWorld).noisiumchunkmanager$getServerWorldChunkManager(); + @NotNull var noisiumServerWorldChunkManager = ((ServerWorldExtension) serverWorld).noisiumchunkmanager$getServerWorldChunkManager(); if (!noisiumServerWorldChunkManager.isChunkLoaded(playerChunkPosition)) { cir.setReturnValue(null); return; diff --git a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/server/network/ServerPlayerEntityMixin.java b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/server/network/ServerPlayerEntityMixin.java index e5d1526..41b3430 100644 --- a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/server/network/ServerPlayerEntityMixin.java +++ b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/server/network/ServerPlayerEntityMixin.java @@ -3,7 +3,9 @@ import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.mojang.authlib.GameProfile; +import io.github.steveplays28.noisiumchunkmanager.extension.world.server.ServerWorldExtension; import io.github.steveplays28.noisiumchunkmanager.mixin.accessor.server.network.SpawnLocatingAccessor; +import io.github.steveplays28.noisiumchunkmanager.server.world.ServerWorldChunkManager; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.server.MinecraftServer; import net.minecraft.server.network.ServerPlayerEntity; @@ -37,13 +39,13 @@ public ServerPlayerEntityMixin(World world, BlockPos pos, float yaw, GameProfile @WrapOperation(method = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/network/ServerPlayerEntity;moveToSpawn(Lnet/minecraft/server/world/ServerWorld;)V")) private void noisiumchunkmanager$moveToSpawnWrapGetChunkAsyncWhenComplete(@NotNull ServerPlayerEntity instance, @NotNull ServerWorld serverWorld, @NotNull Operation original) { - ((io.github.steveplays28.noisiumchunkmanager.experimental.extension.world.server.ServerWorldExtension) serverWorld).noisiumchunkmanager$getServerWorldChunkManager().getChunkAsync( + ((ServerWorldExtension) serverWorld).noisiumchunkmanager$getServerWorldChunkManager().getChunkAsync( new ChunkPos(serverWorld.getSpawnPos())).whenComplete((worldChunk, throwable) -> original.call(instance, serverWorld)); } /** * @author Steveplays28 - * @reason Wait for {@link net.minecraft.world.chunk.WorldChunk}s from the {@link ServerWorld}'s {@link io.github.steveplays28.noisiumchunkmanager.experimental.server.world.ServerWorldChunkManager} asynchronously. + * @reason Wait for {@link net.minecraft.world.chunk.WorldChunk}s from the {@link ServerWorld}'s {@link ServerWorldChunkManager} asynchronously. */ @Overwrite private void moveToSpawn(@NotNull ServerWorld serverWorld) { @@ -78,7 +80,7 @@ private void moveToSpawn(@NotNull ServerWorld serverWorld) { int s = q / (worldSpawnRadius * 2 + 1); var searchPositionX = worldSpawnBlockPosition.getX() + r - worldSpawnRadius; var searchPositionZ = worldSpawnBlockPosition.getZ() + s - worldSpawnRadius; - ((io.github.steveplays28.noisiumchunkmanager.experimental.extension.world.server.ServerWorldExtension) serverWorld).noisiumchunkmanager$getServerWorldChunkManager().getChunkAsync( + ((ServerWorldExtension) serverWorld).noisiumchunkmanager$getServerWorldChunkManager().getChunkAsync( new ChunkPos(searchPositionX, searchPositionZ)).whenComplete((worldChunk, throwable) -> { @Nullable var overworldSpawnBlockPosition = SpawnLocatingAccessor.invokeFindOverworldSpawn( serverWorld, searchPositionX, searchPositionZ); diff --git a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/server/network/SpawnLocatingMixin.java b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/server/network/SpawnLocatingMixin.java index 1baf94a..b2d913e 100644 --- a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/server/network/SpawnLocatingMixin.java +++ b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/server/network/SpawnLocatingMixin.java @@ -1,5 +1,6 @@ package io.github.steveplays28.noisiumchunkmanager.mixin.server.network; +import io.github.steveplays28.noisiumchunkmanager.extension.world.server.ServerWorldExtension; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.server.network.SpawnLocating; @@ -19,18 +20,18 @@ public class SpawnLocatingMixin { // TODO: Change to an @Inject at HEAD /** * @author Steveplays28 - * @reason + * @reason TODO */ @Overwrite public static @Nullable BlockPos findOverworldSpawn(@NotNull ServerWorld serverWorld, int searchBlockPosX, int searchBlockPosZ) { - var noisiumServerWorldChunkManager = ((io.github.steveplays28.noisiumchunkmanager.experimental.extension.world.server.ServerWorldExtension) serverWorld).noisiumchunkmanager$getServerWorldChunkManager(); + var noisiumServerWorldChunkManager = ((ServerWorldExtension) serverWorld).noisiumchunkmanager$getServerWorldChunkManager(); var chunkPosition = new ChunkPos( ChunkSectionPos.getSectionCoord(searchBlockPosX), ChunkSectionPos.getSectionCoord(searchBlockPosZ)); if (!noisiumServerWorldChunkManager.isChunkLoaded(chunkPosition)) { return null; } - var chunk = ((io.github.steveplays28.noisiumchunkmanager.experimental.extension.world.server.ServerWorldExtension) serverWorld).noisiumchunkmanager$getServerWorldChunkManager().getChunk(chunkPosition); + var chunk = noisiumServerWorldChunkManager.getChunk(chunkPosition); int i = serverWorld.getDimension().hasCeiling() ? serverWorld.getChunkManager().getChunkGenerator().getSpawnHeight( serverWorld) : chunk.sampleHeightmap(Heightmap.Type.MOTION_BLOCKING, searchBlockPosX & 15, searchBlockPosZ & 15); if (i < serverWorld.getBottomY()) { diff --git a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/server/world/ServerChunkManagerMixin.java b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/server/world/ServerChunkManagerMixin.java index b8b9303..bc1bf6e 100644 --- a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/server/world/ServerChunkManagerMixin.java +++ b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/server/world/ServerChunkManagerMixin.java @@ -1,7 +1,11 @@ package io.github.steveplays28.noisiumchunkmanager.mixin.server.world; import com.mojang.datafixers.DataFixer; -import io.github.steveplays28.noisiumchunkmanager.experimental.util.world.chunk.networking.packet.PacketUtil; +import io.github.steveplays28.noisiumchunkmanager.extension.world.server.ServerWorldExtension; +import io.github.steveplays28.noisiumchunkmanager.server.world.ServerWorldChunkManager; +import io.github.steveplays28.noisiumchunkmanager.server.world.chunk.event.ServerChunkEvent; +import io.github.steveplays28.noisiumchunkmanager.server.world.event.ServerTickEvent; +import io.github.steveplays28.noisiumchunkmanager.util.world.chunk.networking.packet.PacketUtil; import net.minecraft.entity.Entity; import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.s2c.play.BlockUpdateS2CPacket; @@ -40,7 +44,7 @@ /** * {@link Mixin} into {@link ServerChunkManager}. - * This {@link Mixin} redirects all method calls from the {@link ServerWorld}'s {@link ServerChunkManager} to the {@link ServerWorld}'s {@link io.github.steveplays28.noisiumchunkmanager.experimental.server.world.ServerWorldChunkManager}. + * This {@link Mixin} redirects all method calls from the {@link ServerWorld}'s {@link ServerChunkManager} to the {@link ServerWorld}'s {@link ServerWorldChunkManager}. */ @Mixin(ServerChunkManager.class) public abstract class ServerChunkManagerMixin { @@ -80,7 +84,7 @@ public abstract class ServerChunkManagerMixin { @Inject(method = "tick(Ljava/util/function/BooleanSupplier;Z)V", at = @At(value = "HEAD"), cancellable = true) private void noisiumchunkmanager$stopServerChunkManagerFromTicking(@NotNull BooleanSupplier shouldKeepTicking, boolean tickChunks, @NotNull CallbackInfo ci) { - io.github.steveplays28.noisiumchunkmanager.experimental.server.world.event.ServerTickEvent.SERVER_ENTITY_MOVEMENT_TICK.invoker().onServerEntityMovementTick(); + ServerTickEvent.SERVER_ENTITY_MOVEMENT_TICK.invoker().onServerEntityMovementTick(); ci.cancel(); } @@ -92,7 +96,7 @@ public abstract class ServerChunkManagerMixin { // TODO: Fix infinite loop @Inject(method = "getChunk(IILnet/minecraft/world/chunk/ChunkStatus;Z)Lnet/minecraft/world/chunk/Chunk;", at = @At(value = "HEAD"), cancellable = true) private void noisiumchunkmanager$getChunkFromNoisiumServerWorldChunkManager(int chunkX, int chunkZ, ChunkStatus leastStatus, boolean create, CallbackInfoReturnable cir) { - var noisiumServerWorldChunkManager = ((io.github.steveplays28.noisiumchunkmanager.experimental.extension.world.server.ServerWorldExtension) this.getWorld()).noisiumchunkmanager$getServerWorldChunkManager(); + var noisiumServerWorldChunkManager = ((ServerWorldExtension) this.getWorld()).noisiumchunkmanager$getServerWorldChunkManager(); var chunkPosition = new ChunkPos(chunkX, chunkZ); if (!noisiumServerWorldChunkManager.isChunkLoaded(chunkPosition)) { cir.setReturnValue(noisiumServerWorldChunkManager.getIoWorldChunk(chunkPosition)); @@ -104,7 +108,7 @@ public abstract class ServerChunkManagerMixin { @Inject(method = "getChunk(II)Lnet/minecraft/world/chunk/light/LightSourceView;", at = @At(value = "HEAD"), cancellable = true) private void noisiumchunkmanager$getChunkFromNoisiumServerWorldChunkManager(int chunkX, int chunkZ, CallbackInfoReturnable cir) { - var noisiumServerWorldChunkManager = ((io.github.steveplays28.noisiumchunkmanager.experimental.extension.world.server.ServerWorldExtension) this.getWorld()).noisiumchunkmanager$getServerWorldChunkManager(); + var noisiumServerWorldChunkManager = ((ServerWorldExtension) this.getWorld()).noisiumchunkmanager$getServerWorldChunkManager(); var chunkPosition = new ChunkPos(chunkX, chunkZ); if (!noisiumServerWorldChunkManager.isChunkLoaded(chunkPosition)) { cir.setReturnValue(noisiumServerWorldChunkManager.getIoWorldChunk(chunkPosition)); @@ -116,7 +120,7 @@ public abstract class ServerChunkManagerMixin { @Inject(method = "getWorldChunk", at = @At(value = "HEAD"), cancellable = true) private void noisiumchunkmanager$getWorldChunkFromNoisiumServerWorldChunkManager(int chunkX, int chunkZ, CallbackInfoReturnable cir) { - var noisiumServerWorldChunkManager = ((io.github.steveplays28.noisiumchunkmanager.experimental.extension.world.server.ServerWorldExtension) this.getWorld()).noisiumchunkmanager$getServerWorldChunkManager(); + var noisiumServerWorldChunkManager = ((ServerWorldExtension) this.getWorld()).noisiumchunkmanager$getServerWorldChunkManager(); var chunkPosition = new ChunkPos(chunkX, chunkZ); if (!noisiumServerWorldChunkManager.isChunkLoaded(chunkPosition)) { cir.setReturnValue(noisiumServerWorldChunkManager.getIoWorldChunk(chunkPosition)); @@ -186,7 +190,7 @@ public abstract class ServerChunkManagerMixin { @Inject(method = "onLightUpdate", at = @At(value = "HEAD"), cancellable = true) private void noisiumchunkmanager$updateLightingViaNoisiumServerWorldChunkManager(LightType lightType, ChunkSectionPos chunkSectionPos, CallbackInfo ci) { - io.github.steveplays28.noisiumchunkmanager.experimental.server.world.chunk.event.ServerChunkEvent.LIGHT_UPDATE.invoker().onLightUpdate(lightType, chunkSectionPos); + ServerChunkEvent.LIGHT_UPDATE.invoker().onLightUpdate(lightType, chunkSectionPos); ci.cancel(); } @@ -197,7 +201,7 @@ public abstract class ServerChunkManagerMixin { @Inject(method = "isChunkLoaded", at = @At(value = "HEAD"), cancellable = true) private void noisiumchunkmanager$isChunkLoadedInNoisiumServerWorldChunkManager(int chunkX, int chunkZ, CallbackInfoReturnable cir) { - cir.setReturnValue(((io.github.steveplays28.noisiumchunkmanager.experimental.extension.world.server.ServerWorldExtension) this.getWorld()).noisiumchunkmanager$getServerWorldChunkManager().isChunkLoaded( + cir.setReturnValue(((ServerWorldExtension) this.getWorld()).noisiumchunkmanager$getServerWorldChunkManager().isChunkLoaded( new ChunkPos(chunkX, chunkZ))); } @@ -213,12 +217,12 @@ public abstract class ServerChunkManagerMixin { @Inject(method = "getNoiseConfig", at = @At(value = "HEAD"), cancellable = true) private void noisiumchunkmanager$getNoiseConfigFromServerChunkManager(@NotNull CallbackInfoReturnable cir) { - cir.setReturnValue(((io.github.steveplays28.noisiumchunkmanager.experimental.extension.world.server.ServerWorldExtension) this.getWorld()).noisiumchunkmanager$getNoiseConfig()); + cir.setReturnValue(((ServerWorldExtension) this.getWorld()).noisiumchunkmanager$getNoiseConfig()); } @Inject(method = "getChunkIoWorker", at = @At(value = "HEAD"), cancellable = true) private void noisiumchunkmanager$getChunkIoWorkerFromNoisiumServerWorldChunkManager(@NotNull CallbackInfoReturnable cir) { - cir.setReturnValue(((io.github.steveplays28.noisiumchunkmanager.experimental.extension.world.server.ServerWorldExtension) this.getWorld()).noisiumchunkmanager$getServerWorldChunkManager().getChunkIoWorker()); + cir.setReturnValue(((ServerWorldExtension) this.getWorld()).noisiumchunkmanager$getServerWorldChunkManager().getChunkIoWorker()); } @Inject(method = {"getLoadedChunkCount", "getTotalChunksLoadedCount"}, at = @At(value = "HEAD"), cancellable = true) diff --git a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/server/world/ServerEntityManagerMixin.java b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/server/world/ServerEntityManagerMixin.java index 036fc65..9d6663e 100644 --- a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/server/world/ServerEntityManagerMixin.java +++ b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/server/world/ServerEntityManagerMixin.java @@ -1,5 +1,6 @@ package io.github.steveplays28.noisiumchunkmanager.mixin.server.world; +import io.github.steveplays28.noisiumchunkmanager.server.world.entity.event.ServerEntityEvent; import net.minecraft.entity.Entity; import net.minecraft.server.world.ServerEntityManager; import net.minecraft.world.entity.EntityLike; @@ -8,7 +9,6 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import io.github.steveplays28.noisiumchunkmanager.experimental.server.world.entity.event.ServerEntityEvent; @Mixin(value = ServerEntityManager.class, priority = 500) public class ServerEntityManagerMixin { diff --git a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/server/world/ServerWorldMixin.java b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/server/world/ServerWorldMixin.java index 2bf0208..3880c61 100644 --- a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/server/world/ServerWorldMixin.java +++ b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/server/world/ServerWorldMixin.java @@ -68,13 +68,13 @@ public abstract class ServerWorldMixin implements ServerWorldExtension { /** * Keeps a reference to this {@link ServerWorld}'s {@link ServerWorldEntityTracker}, to make sure it doesn't get garbage collected until the object is no longer necessary. */ - @SuppressWarnings({"unused", "FieldCanBeLocal"}) + @SuppressWarnings("unused") @Unique private ServerWorldEntityTracker noisiumchunkmanager$serverWorldEntityManager; /** * Keeps a reference to this {@link ServerWorld}'s {@link ServerWorldPlayerChunkLoader}, to make sure it doesn't get garbage collected until the object is no longer necessary. */ - @SuppressWarnings({"unused", "FieldCanBeLocal"}) + @SuppressWarnings("unused") @Unique private ServerWorldPlayerChunkLoader noisiumchunkmanager$serverWorldPlayerChunkLoader; diff --git a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/world/chunk/WorldChunkMixin.java b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/world/chunk/WorldChunkMixin.java index ace9d32..21c3166 100644 --- a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/world/chunk/WorldChunkMixin.java +++ b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/world/chunk/WorldChunkMixin.java @@ -1,5 +1,6 @@ package io.github.steveplays28.noisiumchunkmanager.mixin.world.chunk; +import io.github.steveplays28.noisiumchunkmanager.extension.world.chunk.WorldChunkExtension; import net.minecraft.world.chunk.WorldChunk; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; @@ -7,7 +8,7 @@ import java.util.BitSet; @Mixin(WorldChunk.class) -public class WorldChunkMixin implements io.github.steveplays28.noisiumchunkmanager.experimental.extension.world.chunk.WorldChunkExtension { +public class WorldChunkMixin implements WorldChunkExtension { @Unique private final BitSet noisiumchunkmanager$blockLightBits = new BitSet(); @Unique diff --git a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/world/gen/chunk/ChunkGeneratorMixin.java b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/world/gen/chunk/ChunkGeneratorMixin.java index 2312bf4..ebfb992 100644 --- a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/world/gen/chunk/ChunkGeneratorMixin.java +++ b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/mixin/world/gen/chunk/ChunkGeneratorMixin.java @@ -1,5 +1,6 @@ package io.github.steveplays28.noisiumchunkmanager.mixin.world.gen.chunk; +import io.github.steveplays28.noisiumchunkmanager.server.world.ServerWorldChunkManager; import it.unimi.dsi.fastutil.ints.IntArraySet; import it.unimi.dsi.fastutil.ints.IntSet; import it.unimi.dsi.fastutil.objects.ObjectArraySet; @@ -66,7 +67,7 @@ private static BlockBox getBlockBoxForChunk(Chunk chunk) { /** * Replaces {@link ChunkGenerator#addStructureReferences} with a simpler one, that only checks the center chunk, instead of iterating outwards. - * This fixes an infinite loop with {@link io.github.steveplays28.noisiumchunkmanager.experimental.server.world.ServerWorldChunkManager}. + * This fixes an infinite loop with {@link ServerWorldChunkManager}. */ @Inject(method = "addStructureReferences", at = @At(value = "HEAD"), cancellable = true) public void noisiumchunkmanager$replaceAddStructureReferencesToFixAnInfiniteLoop(StructureWorldAccess world, StructureAccessor structureAccessor, Chunk chunk, CallbackInfo ci) { diff --git a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/server/NoisiumChunkManagerServerInitialiser.java b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/server/NoisiumChunkManagerServerInitialiser.java index 3f8bbf0..20e22be 100644 --- a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/server/NoisiumChunkManagerServerInitialiser.java +++ b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/server/NoisiumChunkManagerServerInitialiser.java @@ -1,16 +1,17 @@ package io.github.steveplays28.noisiumchunkmanager.server; import dev.architectury.event.events.common.LifecycleEvent; +import io.github.steveplays28.noisiumchunkmanager.server.player.ServerPlayerBlockUpdater; public class NoisiumChunkManagerServerInitialiser { /** - * Keeps a reference to the {@link io.github.steveplays28.noisiumchunkmanager.experimental.server.player.ServerPlayerBlockUpdater}, to make sure it doesn't get garbage collected until the object is no longer necessary. + * Keeps a reference to the {@link ServerPlayerBlockUpdater}, to make sure it doesn't get garbage collected until the object is no longer necessary. */ @SuppressWarnings("unused") - private static io.github.steveplays28.noisiumchunkmanager.experimental.server.player.ServerPlayerBlockUpdater serverPlayerBlockUpdater; + private static ServerPlayerBlockUpdater serverPlayerBlockUpdater; public static void initialise() { - LifecycleEvent.SERVER_STARTED.register(instance -> serverPlayerBlockUpdater = new io.github.steveplays28.noisiumchunkmanager.experimental.server.player.ServerPlayerBlockUpdater()); + LifecycleEvent.SERVER_STARTED.register(instance -> serverPlayerBlockUpdater = new ServerPlayerBlockUpdater()); LifecycleEvent.SERVER_STOPPING.register(instance -> serverPlayerBlockUpdater = null); } } diff --git a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/server/player/ServerPlayerBlockUpdater.java b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/server/player/ServerPlayerBlockUpdater.java index e457a0d..724455d 100644 --- a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/server/player/ServerPlayerBlockUpdater.java +++ b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/server/player/ServerPlayerBlockUpdater.java @@ -1,8 +1,8 @@ -package io.github.steveplays28.noisiumchunkmanager.experimental.server.player; +package io.github.steveplays28.noisiumchunkmanager.server.player; import dev.architectury.event.EventResult; import dev.architectury.event.events.common.BlockEvent; -import io.github.steveplays28.noisiumchunkmanager.experimental.util.world.chunk.ChunkUtil; +import io.github.steveplays28.noisiumchunkmanager.util.world.chunk.ChunkUtil; import net.minecraft.block.Blocks; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; diff --git a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/server/world/ServerVersionedChunkStorage.java b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/server/world/ServerVersionedChunkStorage.java index 77fc41f..7fd75d1 100644 --- a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/server/world/ServerVersionedChunkStorage.java +++ b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/server/world/ServerVersionedChunkStorage.java @@ -1,4 +1,4 @@ -package io.github.steveplays28.noisiumchunkmanager.experimental.server.world; +package io.github.steveplays28.noisiumchunkmanager.server.world; import com.mojang.datafixers.DataFixer; import net.minecraft.world.storage.VersionedChunkStorage; diff --git a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/server/world/ServerWorldChunkManager.java b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/server/world/ServerWorldChunkManager.java index 4931754..722a3ac 100644 --- a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/server/world/ServerWorldChunkManager.java +++ b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/server/world/ServerWorldChunkManager.java @@ -6,10 +6,12 @@ import dev.architectury.event.events.common.TickEvent; import io.github.steveplays28.noisiumchunkmanager.NoisiumChunkManager; import io.github.steveplays28.noisiumchunkmanager.config.NoisiumChunkManagerConfig; +import io.github.steveplays28.noisiumchunkmanager.extension.world.chunk.WorldChunkExtension; +import io.github.steveplays28.noisiumchunkmanager.server.world.chunk.event.ServerChunkEvent; import io.github.steveplays28.noisiumchunkmanager.util.world.chunk.ChunkUtil; -import io.github.steveplays28.noisiumchunkmanager.experimental.world.chunk.IoWorldChunk; import io.github.steveplays28.noisiumchunkmanager.mixin.accessor.util.collection.PackedIntegerArrayAccessor; import io.github.steveplays28.noisiumchunkmanager.mixin.accessor.world.gen.chunk.ChunkGeneratorAccessor; +import io.github.steveplays28.noisiumchunkmanager.world.chunk.IoWorldChunk; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.entity.EntityType; @@ -95,9 +97,8 @@ public ServerWorldChunkManager(@NotNull ServerWorld serverWorld, @NotNull ChunkG this.ioWorldChunks = new ConcurrentHashMap<>(); this.loadedWorldChunks = new HashMap<>(); - io.github.steveplays28.noisiumchunkmanager.experimental.server.world.chunk.event.ServerChunkEvent.LIGHT_UPDATE.register( - this::onLightUpdateAsync); - io.github.steveplays28.noisiumchunkmanager.experimental.server.world.chunk.event.ServerChunkEvent.BLOCK_CHANGE.register(this::onBlockChange); + ServerChunkEvent.LIGHT_UPDATE.register(this::onLightUpdateAsync); + ServerChunkEvent.BLOCK_CHANGE.register(this::onBlockChange); TickEvent.SERVER_LEVEL_POST.register(instance -> { if (!instance.equals(serverWorld) || instance.getPlayers().isEmpty()) { return; @@ -163,8 +164,7 @@ public ServerWorldChunkManager(@NotNull ServerWorld serverWorld, @NotNull ChunkG fetchedWorldChunk.loadEntities(); loadingWorldChunks.remove(chunkPos); loadedWorldChunks.put(chunkPos, fetchedWorldChunk); - io.github.steveplays28.noisiumchunkmanager.experimental.server.world.chunk.event.ServerChunkEvent.WORLD_CHUNK_GENERATED.invoker().onWorldChunkGenerated( - fetchedWorldChunk); + ServerChunkEvent.WORLD_CHUNK_GENERATED.invoker().onWorldChunkGenerated(fetchedWorldChunk); }); loadingWorldChunks.put(chunkPos, worldChunkCompletableFuture); return worldChunkCompletableFuture; @@ -195,8 +195,7 @@ public ServerWorldChunkManager(@NotNull ServerWorld serverWorld, @NotNull ChunkG var fetchedWorldChunk = new WorldChunk( serverWorld, generateChunk(chunkPos, this::getIoWorldChunk, ioWorldChunks::remove), null); loadedWorldChunks.put(chunkPos, fetchedWorldChunk); - io.github.steveplays28.noisiumchunkmanager.experimental.server.world.chunk.event.ServerChunkEvent.WORLD_CHUNK_GENERATED.invoker().onWorldChunkGenerated( - fetchedWorldChunk); + ServerChunkEvent.WORLD_CHUNK_GENERATED.invoker().onWorldChunkGenerated(fetchedWorldChunk); return fetchedWorldChunk; } @@ -207,8 +206,7 @@ public ServerWorldChunkManager(@NotNull ServerWorld serverWorld, @NotNull ChunkG serverWorld.getServer().executeSync(() -> fetchedWorldChunk.addChunkTickSchedulers(serverWorld)); fetchedWorldChunk.loadEntities(); loadedWorldChunks.put(chunkPos, fetchedWorldChunk); - io.github.steveplays28.noisiumchunkmanager.experimental.server.world.chunk.event.ServerChunkEvent.WORLD_CHUNK_GENERATED.invoker().onWorldChunkGenerated( - fetchedWorldChunk); + ServerChunkEvent.WORLD_CHUNK_GENERATED.invoker().onWorldChunkGenerated(fetchedWorldChunk); return fetchedWorldChunk; } @@ -303,7 +301,7 @@ private void onLightUpdateAsync(@NotNull LightType lightType, @NotNull ChunkSect var chunkPosition = chunkSectionPosition.toChunkPos(); getChunkAsync(chunkPosition).whenCompleteAsync((worldChunk, throwable) -> { - var worldChunkExtension = (io.github.steveplays28.noisiumchunkmanager.experimental.extension.world.chunk.WorldChunkExtension) worldChunk; + var worldChunkExtension = (WorldChunkExtension) worldChunk; var skyLightBits = worldChunkExtension.noisiumchunkmanager$getBlockLightBits(); var blockLightBits = worldChunkExtension.noisiumchunkmanager$getSkyLightBits(); int chunkSectionYPositionDifference = chunkSectionYPosition - bottomY; diff --git a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/server/world/chunk/event/ServerChunkEvent.java b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/server/world/chunk/event/ServerChunkEvent.java index 98485fb..d75b7c0 100644 --- a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/server/world/chunk/event/ServerChunkEvent.java +++ b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/server/world/chunk/event/ServerChunkEvent.java @@ -2,6 +2,7 @@ import dev.architectury.event.Event; import dev.architectury.event.EventFactory; +import io.github.steveplays28.noisiumchunkmanager.server.world.ServerWorldChunkManager; import net.minecraft.block.BlockState; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkSectionPos; @@ -28,7 +29,7 @@ public interface ServerChunkEvent { @FunctionalInterface interface WorldChunkGenerated { /** - * Invoked after a {@link WorldChunk} has been generated by {@link io.github.steveplays28.noisiumchunkmanager.experimental.server.world.ServerWorldChunkManager}. + * Invoked after a {@link WorldChunk} has been generated by {@link ServerWorldChunkManager}. * * @param worldChunk The generated {@link WorldChunk}. */ @@ -38,7 +39,7 @@ interface WorldChunkGenerated { @FunctionalInterface interface LightUpdate { /** - * Invoked before a {@link WorldChunk} has had a light update processed by {@link io.github.steveplays28.noisiumchunkmanager.experimental.server.world.ServerWorldChunkManager}. + * Invoked before a {@link WorldChunk} has had a light update processed by {@link ServerWorldChunkManager}. * * @param lightType The {@link LightType} of the {@link WorldChunk}. * @param chunkSectionPosition The {@link ChunkSectionPos} of the {@link WorldChunk}. @@ -49,7 +50,7 @@ interface LightUpdate { @FunctionalInterface interface BlockChange { /** - * Invoked before a {@link WorldChunk} has had a block change processed by {@link io.github.steveplays28.noisiumchunkmanager.experimental.server.world.ServerWorldChunkManager}. + * Invoked before a {@link WorldChunk} has had a block change processed by {@link ServerWorldChunkManager}. * * @param blockPos The {@link BlockPos} where the block change has happened. * @param oldBlockState The old {@link BlockState} at the {@link BlockPos}. diff --git a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/world/chunk/IoWorldChunk.java b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/world/chunk/IoWorldChunk.java index 09349c6..66b0b13 100644 --- a/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/world/chunk/IoWorldChunk.java +++ b/common/src/main/java/io/github/steveplays28/noisiumchunkmanager/world/chunk/IoWorldChunk.java @@ -1,4 +1,4 @@ -package io.github.steveplays28.noisiumchunkmanager.experimental.world.chunk; +package io.github.steveplays28.noisiumchunkmanager.world.chunk; import net.minecraft.block.Block; import net.minecraft.fluid.Fluid; diff --git a/common/src/main/resources/assets/noisiumchunkmanager/lang/en_us.json b/common/src/main/resources/assets/noisiumchunkmanager/lang/en_us.json index 320e73f..a6a7260 100644 --- a/common/src/main/resources/assets/noisiumchunkmanager/lang/en_us.json +++ b/common/src/main/resources/assets/noisiumchunkmanager/lang/en_us.json @@ -1,7 +1,6 @@ { "yacl3.config.noisium:config.category.server": "Server", "yacl3.config.noisium:config.category.server.group.serverWorldChunkManager": "Server World Chunk Manager (experimental)", - "yacl3.config.noisium:config.serverWorldChunkManagerEnabled": "Server World Chunk Manager", "yacl3.config.noisium:config.serverWorldChunkManagerThreads": "Server World Chunk Manager Threads", "yacl3.config.noisium:config.serverWorldChunkManagerLightingThreads": "Server World Chunk Manager Lighting Threads" } diff --git a/fabric/build.gradle b/fabric/build.gradle index b294829..715c145 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -1,5 +1,6 @@ //file:noinspection GroovyAccessibility //file:noinspection GroovyAssignabilityCheck +//file:noinspection DependencyNotationArgument plugins { id "com.github.johnrengelman.shadow" version "${shadow_plugin_version}" diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 597c46f..e478078 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -37,10 +37,10 @@ "environment": "*", "entrypoints": { "main": [ - "io.github.steveplays28.noisium.fabric.NoisiumFabric" + "io.github.steveplays28.noisiumchunkmanager.fabric.NoisiumFabric" ], "modmenu": [ - "io.github.steveplays28.noisium.client.compat.modmenu.NoisiumChunkManagerModMenuCompat" + "io.github.steveplays28.noisiumchunkmanager.client.compat.modmenu.NoisiumChunkManagerModMenuCompat" ] }, "mixins": [ diff --git a/forge/build.gradle b/forge/build.gradle index e33f72d..dd96520 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -1,5 +1,6 @@ //file:noinspection GroovyAccessibility //file:noinspection GroovyAssignabilityCheck +//file:noinspection DependencyNotationArgument plugins { id "com.github.johnrengelman.shadow" version "${shadow_plugin_version}" diff --git a/settings.gradle b/settings.gradle index a2567e4..7dc99bd 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,7 @@ +//file:noinspection GroovyAccessibility +//file:noinspection GroovyAssignabilityCheck +//file:noinspection DependencyNotationArgument + pluginManagement { repositories { maven { url "https://maven.fabricmc.net/" }