summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSenmori <thesenmori@gmail.com>2018-01-24 17:18:25 +1100
committermd_5 <git@md-5.net>2018-01-24 17:19:41 +1100
commitc7656468e4601fb70e0d7049c4b947e16034546f (patch)
treecaaa12658e0a97b97048a327b476e18b9734aba3
parent4a030536cd41e839fe494c442d763fd5feef0037 (diff)
downloadcraftbukkit-c7656468e4601fb70e0d7049c4b947e16034546f.tar
craftbukkit-c7656468e4601fb70e0d7049c4b947e16034546f.tar.gz
craftbukkit-c7656468e4601fb70e0d7049c4b947e16034546f.tar.lz
craftbukkit-c7656468e4601fb70e0d7049c4b947e16034546f.tar.xz
craftbukkit-c7656468e4601fb70e0d7049c4b947e16034546f.zip
Expand CreatureSpawner API
-rw-r--r--nms-patches/MobSpawnerAbstract.patch20
-rw-r--r--src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java64
2 files changed, 84 insertions, 0 deletions
diff --git a/nms-patches/MobSpawnerAbstract.patch b/nms-patches/MobSpawnerAbstract.patch
index 0d3b89df..9f63bb2a 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 67f4c730..2ec70843 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<TileEntityMobSpa
public void setDelay(int delay) {
this.getSnapshot().getSpawner().spawnDelay = delay;
}
+
+ @Override
+ public int getMinSpawnDelay() {
+ return this.getSnapshot().getSpawner().minSpawnDelay;
+ }
+
+ @Override
+ public void setMinSpawnDelay(int spawnDelay) {
+ Preconditions.checkArgument(spawnDelay <= getMaxSpawnDelay(), "Minimum Spawn Delay must be less than or equal to Maximum Spawn Delay");
+ this.getSnapshot().getSpawner().minSpawnDelay = spawnDelay;
+ }
+
+ @Override
+ public int getMaxSpawnDelay() {
+ return this.getSnapshot().getSpawner().maxSpawnDelay;
+ }
+
+ @Override
+ public void setMaxSpawnDelay(int spawnDelay) {
+ Preconditions.checkArgument(spawnDelay > 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;
+ }
}