mirror of
https://github.com/PaperMC/Paper.git
synced 2025-02-09 09:01:36 +01:00
Configurable mob spawner tick rate
This commit is contained in:
parent
3816346f1c
commit
1ac857b531
@ -1,6 +1,12 @@
|
|||||||
--- a/net/minecraft/world/level/BaseSpawner.java
|
--- a/net/minecraft/world/level/BaseSpawner.java
|
||||||
+++ b/net/minecraft/world/level/BaseSpawner.java
|
+++ b/net/minecraft/world/level/BaseSpawner.java
|
||||||
@@ -54,10 +54,11 @@
|
@@ -49,15 +49,17 @@
|
||||||
|
public int maxNearbyEntities = 6;
|
||||||
|
public int requiredPlayerRange = 16;
|
||||||
|
public int spawnRange = 4;
|
||||||
|
+ private int tickDelay = 0; // Paper - Configurable mob spawner tick rate
|
||||||
|
|
||||||
|
public BaseSpawner() {}
|
||||||
|
|
||||||
public void setEntityId(EntityType<?> type, @Nullable Level world, RandomSource random, BlockPos pos) {
|
public void setEntityId(EntityType<?> type, @Nullable Level world, RandomSource random, BlockPos pos) {
|
||||||
this.getOrCreateNextSpawnData(world, random, pos).getEntityToSpawn().putString("id", BuiltInRegistries.ENTITY_TYPE.getKey(type).toString());
|
this.getOrCreateNextSpawnData(world, random, pos).getEntityToSpawn().putString("id", BuiltInRegistries.ENTITY_TYPE.getKey(type).toString());
|
||||||
@ -13,7 +19,28 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void clientTick(Level world, BlockPos pos) {
|
public void clientTick(Level world, BlockPos pos) {
|
||||||
@@ -157,13 +158,24 @@
|
@@ -82,13 +84,18 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
public void serverTick(ServerLevel world, BlockPos pos) {
|
||||||
|
+ // Paper start - Configurable mob spawner tick rate
|
||||||
|
+ if (spawnDelay > 0 && --tickDelay > 0) return;
|
||||||
|
+ tickDelay = world.paperConfig().tickRates.mobSpawner;
|
||||||
|
+ if (tickDelay == -1) { return; } // If disabled
|
||||||
|
+ // Paper end - Configurable mob spawner tick rate
|
||||||
|
if (this.isNearPlayer(world, pos)) {
|
||||||
|
- if (this.spawnDelay == -1) {
|
||||||
|
+ if (this.spawnDelay < -tickDelay) { // Paper - Configurable mob spawner tick rate
|
||||||
|
this.delay(world, pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.spawnDelay > 0) {
|
||||||
|
- --this.spawnDelay;
|
||||||
|
+ this.spawnDelay -= tickDelay; // Paper - Configurable mob spawner tick rate
|
||||||
|
} else {
|
||||||
|
boolean flag = false;
|
||||||
|
RandomSource randomsource = world.getRandom();
|
||||||
|
@@ -157,13 +164,24 @@
|
||||||
((Mob) entity).finalizeSpawn(world, world.getCurrentDifficultyAt(entity.blockPosition()), EntitySpawnReason.SPAWNER, (SpawnGroupData) null);
|
((Mob) entity).finalizeSpawn(world, world.getCurrentDifficultyAt(entity.blockPosition()), EntitySpawnReason.SPAWNER, (SpawnGroupData) null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user