From c7656468e4601fb70e0d7049c4b947e16034546f Mon Sep 17 00:00:00 2001 From: Senmori Date: Wed, 24 Jan 2018 17:18:25 +1100 Subject: [PATCH] Expand CreatureSpawner API --- nms-patches/MobSpawnerAbstract.patch | 20 ++++++ .../block/CraftCreatureSpawner.java | 64 +++++++++++++++++++ 2 files changed, 84 insertions(+) diff --git a/nms-patches/MobSpawnerAbstract.patch b/nms-patches/MobSpawnerAbstract.patch index 0d3b89df1..9f63bb2a9 100644 --- a/nms-patches/MobSpawnerAbstract.patch +++ b/nms-patches/MobSpawnerAbstract.patch @@ -1,5 +1,25 @@ --- a/net/minecraft/server/MobSpawnerAbstract.java +++ b/net/minecraft/server/MobSpawnerAbstract.java +@@ -12,13 +12,13 @@ + private MobSpawnerData spawnData = new MobSpawnerData(); + private double d; + private double e; +- private int minSpawnDelay = 200; +- private int maxSpawnDelay = 800; +- private int spawnCount = 4; ++ public int minSpawnDelay = 200; // CraftBukkit private -> public ++ public int maxSpawnDelay = 800; // CraftBukkit private -> public ++ public int spawnCount = 4; // CraftBukkit private -> public + private Entity i; +- private int maxNearbyEntities = 6; +- private int requiredPlayerRange = 16; +- private int spawnRange = 4; ++ public int maxNearbyEntities = 6; // CraftBukkit private -> public ++ public int requiredPlayerRange = 16; // CraftBukkit private -> public ++ public int spawnRange = 4; // CraftBukkit private -> public + + public MobSpawnerAbstract() {} + @@ -32,6 +32,7 @@ public void setMobName(@Nullable MinecraftKey minecraftkey) { if (minecraftkey != null) { diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java b/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java index 67f4c7303..2ec708434 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java @@ -1,5 +1,6 @@ package org.bukkit.craftbukkit.block; +import com.google.common.base.Preconditions; import net.minecraft.server.MinecraftKey; import net.minecraft.server.TileEntityMobSpawner; import org.bukkit.Material; @@ -57,4 +58,67 @@ public class CraftCreatureSpawner extends CraftBlockEntityState 0, "Maximum Spawn Delay must be greater than 0."); + Preconditions.checkArgument(spawnDelay >= getMinSpawnDelay(), "Maximum Spawn Delay must be greater than or equal to Minimum Spawn Delay"); + this.getSnapshot().getSpawner().maxSpawnDelay = spawnDelay; + } + + @Override + public int getMaxNearbyEntities() { + return this.getSnapshot().getSpawner().maxNearbyEntities; + } + + @Override + public void setMaxNearbyEntities(int maxNearbyEntities) { + this.getSnapshot().getSpawner().maxNearbyEntities = maxNearbyEntities; + } + + @Override + public int getSpawnCount() { + return this.getSnapshot().getSpawner().spawnCount; + } + + @Override + public void setSpawnCount(int count) { + this.getSnapshot().getSpawner().spawnCount = count; + } + + @Override + public int getRequiredPlayerRange() { + return this.getSnapshot().getSpawner().requiredPlayerRange; + } + + @Override + public void setRequiredPlayerRange(int requiredPlayerRange) { + this.getSnapshot().getSpawner().requiredPlayerRange = requiredPlayerRange; + } + + @Override + public int getSpawnRange() { + return this.getSnapshot().getSpawner().spawnRange; + } + + @Override + public void setSpawnRange(int spawnRange) { + this.getSnapshot().getSpawner().spawnRange = spawnRange; + } }