mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-06 10:44:39 +01:00
3360d06f76
* Houston, we got a patch * is this the end of the beginning or the beginning of the end
105 lines
No EOL
4.8 KiB
Diff
105 lines
No EOL
4.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
|
Date: Fri, 19 Apr 2019 12:41:13 -0500
|
|
Subject: [PATCH] Mob Spawner API Enhancements
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java
|
|
index 90ca1ee14..b179893a1 100644
|
|
--- a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java
|
|
+++ b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java
|
|
@@ -0,0 +0,0 @@ public abstract class MobSpawnerAbstract {
|
|
this.mobs.clear(); // CraftBukkit - SPIGOT-3496, MC-92282
|
|
}
|
|
|
|
+ public boolean isActivated() { return h(); } // Paper - OBFHELPER
|
|
private boolean h() {
|
|
BlockPosition blockposition = this.b();
|
|
|
|
@@ -0,0 +0,0 @@ public abstract class MobSpawnerAbstract {
|
|
}
|
|
}
|
|
|
|
+ public void resetTimer() { i(); } // Paper - OBFHELPER
|
|
private void i() {
|
|
if (this.maxSpawnDelay <= this.minSpawnDelay) {
|
|
this.spawnDelay = this.minSpawnDelay;
|
|
@@ -0,0 +0,0 @@ public abstract class MobSpawnerAbstract {
|
|
}
|
|
|
|
public void a(NBTTagCompound nbttagcompound) {
|
|
+ // Paper start - use larger int if set
|
|
+ if (nbttagcompound.hasKey("Paper.Delay")) {
|
|
+ this.spawnDelay = nbttagcompound.getInt("Paper.Delay");
|
|
+ } else {
|
|
this.spawnDelay = nbttagcompound.getShort("Delay");
|
|
+ }
|
|
+ // Paper end
|
|
this.mobs.clear();
|
|
if (nbttagcompound.hasKeyOfType("SpawnPotentials", 9)) {
|
|
NBTTagList nbttaglist = nbttagcompound.getList("SpawnPotentials", 10);
|
|
@@ -0,0 +0,0 @@ public abstract class MobSpawnerAbstract {
|
|
} else if (!this.mobs.isEmpty()) {
|
|
this.setSpawnData((MobSpawnerData) WeightedRandom.a(this.a().random, this.mobs));
|
|
}
|
|
-
|
|
+ // Paper start - use ints if set
|
|
+ if (nbttagcompound.hasKeyOfType("Paper.MinSpawnDelay", 99)) {
|
|
+ this.minSpawnDelay = nbttagcompound.getInt("Paper.MinSpawnDelay");
|
|
+ this.maxSpawnDelay = nbttagcompound.getInt("Paper.MaxSpawnDelay");
|
|
+ this.spawnCount = nbttagcompound.getShort("SpawnCount");
|
|
+ } else // Paper end
|
|
if (nbttagcompound.hasKeyOfType("MinSpawnDelay", 99)) {
|
|
- this.minSpawnDelay = nbttagcompound.getShort("MinSpawnDelay");
|
|
- this.maxSpawnDelay = nbttagcompound.getShort("MaxSpawnDelay");
|
|
+ this.minSpawnDelay = nbttagcompound.getInt("MinSpawnDelay");
|
|
+ this.maxSpawnDelay = nbttagcompound.getInt("MaxSpawnDelay");
|
|
this.spawnCount = nbttagcompound.getShort("SpawnCount");
|
|
}
|
|
|
|
@@ -0,0 +0,0 @@ public abstract class MobSpawnerAbstract {
|
|
if (minecraftkey == null) {
|
|
return nbttagcompound;
|
|
} else {
|
|
- nbttagcompound.setShort("Delay", (short) this.spawnDelay);
|
|
- nbttagcompound.setShort("MinSpawnDelay", (short) this.minSpawnDelay);
|
|
- nbttagcompound.setShort("MaxSpawnDelay", (short) this.maxSpawnDelay);
|
|
+ // Paper start
|
|
+ if (spawnDelay > Short.MAX_VALUE) {
|
|
+ nbttagcompound.setInt("Paper.Delay", this.spawnDelay);
|
|
+ }
|
|
+ nbttagcompound.setShort("Delay", (short) Math.min(Short.MAX_VALUE, this.spawnDelay));
|
|
+
|
|
+ if (minSpawnDelay > Short.MAX_VALUE || maxSpawnDelay > Short.MAX_VALUE) {
|
|
+ nbttagcompound.setInt("Paper.MinSpawnDelay", this.minSpawnDelay);
|
|
+ nbttagcompound.setInt("Paper.MaxSpawnDelay", this.maxSpawnDelay);
|
|
+ }
|
|
+
|
|
+ nbttagcompound.setShort("MinSpawnDelay", (short) Math.min(Short.MAX_VALUE, this.minSpawnDelay));
|
|
+ nbttagcompound.setShort("MaxSpawnDelay", (short) Math.min(Short.MAX_VALUE, this.maxSpawnDelay));
|
|
+ // Paper end
|
|
nbttagcompound.setShort("SpawnCount", (short) this.spawnCount);
|
|
nbttagcompound.setShort("MaxNearbyEntities", (short) this.maxNearbyEntities);
|
|
nbttagcompound.setShort("RequiredPlayerRange", (short) this.requiredPlayerRange);
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java b/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java
|
|
index 5c4c3c70c..e78e3804b 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java
|
|
@@ -0,0 +0,0 @@ public class CraftCreatureSpawner extends CraftBlockEntityState<TileEntityMobSpa
|
|
public void setSpawnRange(int spawnRange) {
|
|
this.getSnapshot().getSpawner().spawnRange = spawnRange;
|
|
}
|
|
+
|
|
+ // Paper start
|
|
+ @Override
|
|
+ public boolean isActivated() {
|
|
+ return this.getSnapshot().getSpawner().isActivated();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void resetTimer() {
|
|
+ this.getSnapshot().getSpawner().resetTimer();
|
|
+ }
|
|
+ // Paper end
|
|
}
|
|
--
|