Skip to content

Commit 014fcb6

Browse files
committed
Disable mob spawning in map workspaces
1 parent 6f44fe1 commit 014fcb6

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

src/main/java/com/lovetropics/minigames/LoveTropics.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
import com.lovetropics.minigames.common.core.item.MinigameDataComponents;
6464
import com.lovetropics.minigames.common.core.item.MinigameItems;
6565
import com.lovetropics.minigames.common.core.map.VoidChunkGenerator;
66+
import com.lovetropics.minigames.common.core.map.workspace.MapWorkspaceManager;
6667
import com.lovetropics.minigames.common.role.StreamHosts;
6768
import com.lovetropics.minigames.common.util.registry.LoveTropicsRegistrate;
6869
import com.mojang.brigadier.CommandDispatcher;
@@ -75,6 +76,7 @@
7576
import net.minecraft.resources.ResourceKey;
7677
import net.minecraft.resources.ResourceLocation;
7778
import net.minecraft.server.MinecraftServer;
79+
import net.minecraft.world.entity.MobSpawnType;
7880
import net.minecraft.world.item.CreativeModeTab;
7981
import net.minecraft.world.phys.Vec3;
8082
import net.neoforged.api.distmarker.Dist;
@@ -90,10 +92,12 @@
9092
import net.neoforged.neoforge.client.event.RegisterGuiLayersEvent;
9193
import net.neoforged.neoforge.common.NeoForge;
9294
import net.neoforged.neoforge.event.RegisterCommandsEvent;
95+
import net.neoforged.neoforge.event.entity.living.MobSpawnEvent;
9396
import net.neoforged.neoforge.event.server.ServerAboutToStartEvent;
9497
import net.neoforged.neoforge.event.server.ServerStoppingEvent;
9598
import org.slf4j.Logger;
9699

100+
import java.util.Objects;
97101
import java.util.function.BiConsumer;
98102
import java.util.function.Supplier;
99103
import java.util.regex.Pattern;
@@ -113,6 +117,7 @@ public LoveTropics(IEventBus modBus, ModContainer modContainer) {
113117
NeoForge.EVENT_BUS.addListener(this::onServerAboutToStart);
114118
NeoForge.EVENT_BUS.addListener(this::onServerStopping);
115119
NeoForge.EVENT_BUS.addListener(this::registerCommands);
120+
NeoForge.EVENT_BUS.addListener(this::onAttemptSpawn);
116121

117122
modBus.addListener(ConfigLT::onLoad);
118123
modBus.addListener(ConfigLT::onFileChange);
@@ -227,6 +232,15 @@ private void onServerStopping(final ServerStoppingEvent event) {
227232
BackendIntegrations.get().sendClose();
228233
}
229234

235+
private void onAttemptSpawn(final MobSpawnEvent.PositionCheck event) {
236+
if (event.getSpawnType() == MobSpawnType.SPAWNER) {
237+
var workspace = MapWorkspaceManager.get(event.getLevel().getServer());
238+
if (workspace.getWorkspace(event.getLevel().getLevel().dimension()) != null) {
239+
event.setResult(MobSpawnEvent.PositionCheck.Result.FAIL);
240+
}
241+
}
242+
}
243+
230244
public static void onServerStoppingUnsafely(MinecraftServer server) {
231245
RuntimeDimensions.onServerStoppingUnsafely(server);
232246
}

0 commit comments

Comments
 (0)