mirror of
				https://github.com/IntellectualSites/PlotSquared.git
				synced 2025-10-22 06:03:45 +02:00 
			
		
		
		
	Compare commits
	
		
			4 Commits
		
	
	
		
			feat/v7/ge
			...
			fix/v6/con
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 5f90c663e8 | ||
|   | 320363e5ff | ||
|   | 366c26dc15 | ||
|   | 5402516db0 | 
| @@ -112,30 +112,7 @@ public class BukkitPlotGenerator extends ChunkGenerator | |||||||
|     @Override |     @Override | ||||||
|     public @NonNull List<BlockPopulator> getDefaultPopulators(@NonNull World world) { |     public @NonNull List<BlockPopulator> getDefaultPopulators(@NonNull World world) { | ||||||
|         try { |         try { | ||||||
|             if (!this.loaded) { |             checkLoaded(world); | ||||||
|                 String name = world.getName(); |  | ||||||
|                 PlotSquared.get().loadWorld(name, this); |  | ||||||
|                 final Set<PlotArea> areas = this.plotAreaManager.getPlotAreasSet(name); |  | ||||||
|                 if (!areas.isEmpty()) { |  | ||||||
|                     PlotArea area = areas.iterator().next(); |  | ||||||
|                     if (!area.isMobSpawning()) { |  | ||||||
|                         if (!area.isSpawnEggs()) { |  | ||||||
|                             world.setSpawnFlags(false, false); |  | ||||||
|                         } |  | ||||||
|                         world.setAmbientSpawnLimit(0); |  | ||||||
|                         world.setAnimalSpawnLimit(0); |  | ||||||
|                         world.setMonsterSpawnLimit(0); |  | ||||||
|                         world.setWaterAnimalSpawnLimit(0); |  | ||||||
|                     } else { |  | ||||||
|                         world.setSpawnFlags(true, true); |  | ||||||
|                         world.setAmbientSpawnLimit(-1); |  | ||||||
|                         world.setAnimalSpawnLimit(-1); |  | ||||||
|                         world.setMonsterSpawnLimit(-1); |  | ||||||
|                         world.setWaterAnimalSpawnLimit(-1); |  | ||||||
|                     } |  | ||||||
|                 } |  | ||||||
|                 this.loaded = true; |  | ||||||
|             } |  | ||||||
|         } catch (Exception e) { |         } catch (Exception e) { | ||||||
|             e.printStackTrace(); |             e.printStackTrace(); | ||||||
|         } |         } | ||||||
| @@ -154,6 +131,39 @@ public class BukkitPlotGenerator extends ChunkGenerator | |||||||
|         return toAdd; |         return toAdd; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     private synchronized void checkLoaded(@NonNull World world) { | ||||||
|  |         // Do not attempt to load configurations until WorldEdit has a platform ready. | ||||||
|  |         if (!PlotSquared.get().isWeInitialised()) { | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |         if (!this.loaded) { | ||||||
|  |             String name = world.getName(); | ||||||
|  |             PlotSquared.get().loadWorld(name, this); | ||||||
|  |             final Set<PlotArea> areas = this.plotAreaManager.getPlotAreasSet(name); | ||||||
|  |             if (!areas.isEmpty()) { | ||||||
|  |                 PlotArea area = areas.iterator().next(); | ||||||
|  |                 if (!area.isMobSpawning()) { | ||||||
|  |                     if (!area.isSpawnEggs()) { | ||||||
|  |                         world.setSpawnFlags(false, false); | ||||||
|  |                     } | ||||||
|  |                     setSpawnLimits(world, 0); | ||||||
|  |                 } else { | ||||||
|  |                     world.setSpawnFlags(true, true); | ||||||
|  |                     setSpawnLimits(world, -1); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             this.loaded = true; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @SuppressWarnings("deprecation") | ||||||
|  |     private void setSpawnLimits(@NonNull World world, int limit) { | ||||||
|  |         world.setAmbientSpawnLimit(limit); | ||||||
|  |         world.setAnimalSpawnLimit(limit); | ||||||
|  |         world.setMonsterSpawnLimit(limit); | ||||||
|  |         world.setWaterAnimalSpawnLimit(limit); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public @NonNull ChunkData generateChunkData( |     public @NonNull ChunkData generateChunkData( | ||||||
|             @NonNull World world, @NonNull Random random, int x, int z, |             @NonNull World world, @NonNull Random random, int x, int z, | ||||||
| @@ -201,9 +211,7 @@ public class BukkitPlotGenerator extends ChunkGenerator | |||||||
|     private void generate(BlockVector2 loc, World world, ScopedQueueCoordinator result) { |     private void generate(BlockVector2 loc, World world, ScopedQueueCoordinator result) { | ||||||
|         // Load if improperly loaded |         // Load if improperly loaded | ||||||
|         if (!this.loaded) { |         if (!this.loaded) { | ||||||
|             String name = world.getName(); |             checkLoaded(world); | ||||||
|             PlotSquared.get().loadWorld(name, this); |  | ||||||
|             this.loaded = true; |  | ||||||
|         } |         } | ||||||
|         // Process the chunk |         // Process the chunk | ||||||
|         if (ChunkManager.preProcessChunk(loc, result)) { |         if (ChunkManager.preProcessChunk(loc, result)) { | ||||||
|   | |||||||
| @@ -72,7 +72,10 @@ import com.plotsquared.core.util.ReflectionUtils; | |||||||
| import com.plotsquared.core.util.task.TaskManager; | import com.plotsquared.core.util.task.TaskManager; | ||||||
| import com.plotsquared.core.uuid.UUIDPipeline; | import com.plotsquared.core.uuid.UUIDPipeline; | ||||||
| import com.sk89q.worldedit.WorldEdit; | import com.sk89q.worldedit.WorldEdit; | ||||||
|  | import com.sk89q.worldedit.event.platform.PlatformReadyEvent; | ||||||
| import com.sk89q.worldedit.math.BlockVector2; | import com.sk89q.worldedit.math.BlockVector2; | ||||||
|  | import com.sk89q.worldedit.util.eventbus.EventHandler; | ||||||
|  | import com.sk89q.worldedit.util.eventbus.Subscribe; | ||||||
| import org.apache.logging.log4j.LogManager; | import org.apache.logging.log4j.LogManager; | ||||||
| import org.apache.logging.log4j.Logger; | import org.apache.logging.log4j.Logger; | ||||||
| import org.checkerframework.checker.nullness.qual.MonotonicNonNull; | import org.checkerframework.checker.nullness.qual.MonotonicNonNull; | ||||||
| @@ -153,6 +156,8 @@ public class PlotSquared { | |||||||
|     private EventDispatcher eventDispatcher; |     private EventDispatcher eventDispatcher; | ||||||
|     private PlotListener plotListener; |     private PlotListener plotListener; | ||||||
|  |  | ||||||
|  |     private boolean weInitialised; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Initialize PlotSquared with the desired Implementation class. |      * Initialize PlotSquared with the desired Implementation class. | ||||||
|      * |      * | ||||||
| @@ -223,6 +228,7 @@ public class PlotSquared { | |||||||
|             } |             } | ||||||
|  |  | ||||||
|             this.worldedit = WorldEdit.getInstance(); |             this.worldedit = WorldEdit.getInstance(); | ||||||
|  |             WorldEdit.getInstance().getEventBus().register(new WEPlatformReadyListener()); | ||||||
|  |  | ||||||
|             // Create Event utility class |             // Create Event utility class | ||||||
|             this.eventDispatcher = new EventDispatcher(this.worldedit); |             this.eventDispatcher = new EventDispatcher(this.worldedit); | ||||||
| @@ -1574,6 +1580,13 @@ public class PlotSquared { | |||||||
|         return this.plotListener; |         return this.plotListener; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Get if the {@link PlatformReadyEvent} has been sent by WE. There is no way to query this within WE itself. | ||||||
|  |      */ | ||||||
|  |     public boolean isWeInitialised() { | ||||||
|  |         return weInitialised; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Different ways of sorting {@link Plot plots} |      * Different ways of sorting {@link Plot plots} | ||||||
|      */ |      */ | ||||||
| @@ -1596,4 +1609,15 @@ public class PlotSquared { | |||||||
|         DISTANCE_FROM_ORIGIN |         DISTANCE_FROM_ORIGIN | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     private final class WEPlatformReadyListener { | ||||||
|  |  | ||||||
|  |         @SuppressWarnings("unused") | ||||||
|  |         @Subscribe(priority = EventHandler.Priority.VERY_EARLY) | ||||||
|  |         public void onPlatformReady(PlatformReadyEvent event) { | ||||||
|  |             weInitialised = true; | ||||||
|  |             WorldEdit.getInstance().getEventBus().unregister(WEPlatformReadyListener.this); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user