63
63
import com .lovetropics .minigames .common .core .item .MinigameDataComponents ;
64
64
import com .lovetropics .minigames .common .core .item .MinigameItems ;
65
65
import com .lovetropics .minigames .common .core .map .VoidChunkGenerator ;
66
+ import com .lovetropics .minigames .common .core .map .workspace .MapWorkspaceManager ;
66
67
import com .lovetropics .minigames .common .role .StreamHosts ;
67
68
import com .lovetropics .minigames .common .util .registry .LoveTropicsRegistrate ;
68
69
import com .mojang .brigadier .CommandDispatcher ;
75
76
import net .minecraft .resources .ResourceKey ;
76
77
import net .minecraft .resources .ResourceLocation ;
77
78
import net .minecraft .server .MinecraftServer ;
79
+ import net .minecraft .world .entity .MobSpawnType ;
78
80
import net .minecraft .world .item .CreativeModeTab ;
79
81
import net .minecraft .world .phys .Vec3 ;
80
82
import net .neoforged .api .distmarker .Dist ;
90
92
import net .neoforged .neoforge .client .event .RegisterGuiLayersEvent ;
91
93
import net .neoforged .neoforge .common .NeoForge ;
92
94
import net .neoforged .neoforge .event .RegisterCommandsEvent ;
95
+ import net .neoforged .neoforge .event .entity .living .MobSpawnEvent ;
93
96
import net .neoforged .neoforge .event .server .ServerAboutToStartEvent ;
94
97
import net .neoforged .neoforge .event .server .ServerStoppingEvent ;
95
98
import org .slf4j .Logger ;
96
99
100
+ import java .util .Objects ;
97
101
import java .util .function .BiConsumer ;
98
102
import java .util .function .Supplier ;
99
103
import java .util .regex .Pattern ;
@@ -113,6 +117,7 @@ public LoveTropics(IEventBus modBus, ModContainer modContainer) {
113
117
NeoForge .EVENT_BUS .addListener (this ::onServerAboutToStart );
114
118
NeoForge .EVENT_BUS .addListener (this ::onServerStopping );
115
119
NeoForge .EVENT_BUS .addListener (this ::registerCommands );
120
+ NeoForge .EVENT_BUS .addListener (this ::onAttemptSpawn );
116
121
117
122
modBus .addListener (ConfigLT ::onLoad );
118
123
modBus .addListener (ConfigLT ::onFileChange );
@@ -227,6 +232,15 @@ private void onServerStopping(final ServerStoppingEvent event) {
227
232
BackendIntegrations .get ().sendClose ();
228
233
}
229
234
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
+
230
244
public static void onServerStoppingUnsafely (MinecraftServer server ) {
231
245
RuntimeDimensions .onServerStoppingUnsafely (server );
232
246
}
0 commit comments