Skip to content

Instantly share code, notes, and snippets.

@PaulBGD
Created April 12, 2015 02:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save PaulBGD/af05e99be6ba0fd1d2f6 to your computer and use it in GitHub Desktop.
Save PaulBGD/af05e99be6ba0fd1d2f6 to your computer and use it in GitHub Desktop.
No spawning mobs
/**
* @author PaulBGD
*/
public class ChunkProviderServerHook extends ChunkProviderServer {
@Setter
private static int distance = FactionConfiguration.getConfiguration().spawnProtection;
public ChunkProviderServerHook(WorldServer worldserver, IChunkLoader ichunkloader, IChunkProvider ichunkprovider) {
super(worldserver, ichunkloader, ichunkprovider);
}
@Override
public List<BiomeBase.BiomeMeta> getMobsFor(EnumCreatureType enumcreaturetype, BlockPosition blockposition) {
SerializedLocation serializedLocation = FactionConfiguration.getConfiguration().spawn;
if (MathUtils.square(serializedLocation.x - blockposition.getX()) + MathUtils.square(serializedLocation.z - blockposition.getZ()) < MathUtils.square(distance)) {
return ImmutableList.of(); // empty list, as no mobs spawn here
}
return super.getMobsFor(enumcreaturetype, blockposition);
}
public static void setup(org.bukkit.World world) {
WorldServer handle = ((CraftWorld) world).getHandle();
ChunkProviderServer chunkProviderServer = handle.chunkProviderServer;
IChunkLoader iChunkLoader = null;
try {
Field chunkLoader = ChunkProviderServer.class.getDeclaredField("chunkLoader");
chunkLoader.setAccessible(true);
iChunkLoader = (IChunkLoader) chunkLoader.get(chunkProviderServer);
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
ChunkProviderServerHook hook = new ChunkProviderServerHook(handle, iChunkLoader, chunkProviderServer.chunkProvider);
// transfer fields
hook.unloadQueue = chunkProviderServer.unloadQueue;
hook.chunks = chunkProviderServer.chunks;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment