mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-19 17:37:42 +01:00
Upstream has released updates that appears to apply and compile correctly Paper Changes: b75eeca0 Boost light task priority to ensure it doesnt hold up chunk loads 3d2bc848 Ensure VillagerTrades doesn't load async - fixes #3495 e470f1ef Add more information to Timing Reports f4a47db6 Improve Thread Pool usage to allow single threads for single cpu servers a4fe910f Fix sounds when using worldedit regen command 70ad51a8 Updated Upstream (Bukkit/CraftBukkit) d7cfa4fa Improve legacy format serialization more
73 lines
4.4 KiB
Diff
73 lines
4.4 KiB
Diff
From 21c076c767f3a22e0ca03b2f0905eb8c6045920c Mon Sep 17 00:00:00 2001
|
|
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
|
Date: Mon, 22 Jul 2019 14:24:26 -0500
|
|
Subject: [PATCH] Pillager limits and leaders chance
|
|
|
|
---
|
|
.../java/net/minecraft/server/ChunkProviderGenerate.java | 1 +
|
|
.../java/net/minecraft/server/EntityMonsterPatrolling.java | 7 ++++++-
|
|
src/main/java/net/pl3x/purpur/PurpurWorldConfig.java | 6 ++++++
|
|
3 files changed, 13 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/ChunkProviderGenerate.java b/src/main/java/net/minecraft/server/ChunkProviderGenerate.java
|
|
index 70f43c5159..fa08b8e1ab 100644
|
|
--- a/src/main/java/net/minecraft/server/ChunkProviderGenerate.java
|
|
+++ b/src/main/java/net/minecraft/server/ChunkProviderGenerate.java
|
|
@@ -143,6 +143,7 @@ public class ChunkProviderGenerate extends ChunkGeneratorAbstract<GeneratorSetti
|
|
}
|
|
} else if (enumcreaturetype == EnumCreatureType.MONSTER) {
|
|
if (WorldGenerator.PILLAGER_OUTPOST.a(this.a, blockposition)) {
|
|
+ if (getWorld().purpurConfig.pillagerLimitOutpostSpawns <= 0 || getWorld().getEntitiesByClass(EntityPillager.class, new AxisAlignedBB(blockposition).grow(128)).size() < getWorld().purpurConfig.pillagerLimitOutpostSpawns) // Purpur
|
|
return WorldGenerator.PILLAGER_OUTPOST.e();
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/EntityMonsterPatrolling.java b/src/main/java/net/minecraft/server/EntityMonsterPatrolling.java
|
|
index f44334b9e1..70559714ac 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityMonsterPatrolling.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityMonsterPatrolling.java
|
|
@@ -49,6 +49,7 @@ public abstract class EntityMonsterPatrolling extends EntityMonster {
|
|
return -0.45D;
|
|
}
|
|
|
|
+ public boolean canBeLeader() { return this.es(); } // Purpur
|
|
public boolean es() {
|
|
return true;
|
|
}
|
|
@@ -56,7 +57,11 @@ public abstract class EntityMonsterPatrolling extends EntityMonster {
|
|
@Nullable
|
|
@Override
|
|
public GroupDataEntity prepare(GeneratorAccess generatoraccess, DifficultyDamageScaler difficultydamagescaler, EnumMobSpawn enummobspawn, @Nullable GroupDataEntity groupdataentity, @Nullable NBTTagCompound nbttagcompound) {
|
|
- if (enummobspawn != EnumMobSpawn.PATROL && enummobspawn != EnumMobSpawn.EVENT && enummobspawn != EnumMobSpawn.STRUCTURE && this.random.nextFloat() < 0.06F && this.es()) {
|
|
+ // Purpur start
|
|
+ World world = generatoraccess.getMinecraftWorld();
|
|
+ if (this.canBeLeader() && enummobspawn != EnumMobSpawn.PATROL && enummobspawn != EnumMobSpawn.EVENT && enummobspawn != EnumMobSpawn.STRUCTURE && this.random.nextFloat() < world.purpurConfig.pillagerLeaderChance) {
|
|
+ if (world.purpurConfig.pillagerLeaderRangeCheck <= 0 || (this instanceof EntityPillager && world.getEntitiesByClass(EntityPillager.class, new AxisAlignedBB(new BlockPosition(this)).grow(world.purpurConfig.pillagerLeaderRangeCheck)).size() == 0))
|
|
+ // Purpur end
|
|
this.patrolLeader = true;
|
|
}
|
|
|
|
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
index a2fce0c635..299b080c89 100644
|
|
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
@@ -525,10 +525,16 @@ public class PurpurWorldConfig {
|
|
public boolean pillagerRidable = false;
|
|
public boolean pillagerRidableInWater = false;
|
|
public boolean pillagerRequireShiftToMount = true;
|
|
+ public int pillagerLimitOutpostSpawns = 0;
|
|
+ public float pillagerLeaderChance = 0.06F;
|
|
+ public int pillagerLeaderRangeCheck = 0;
|
|
private void pillagerSettings() {
|
|
pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable);
|
|
pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater);
|
|
pillagerRequireShiftToMount = getBoolean("mobs.pillager.require-shift-to-mount", pillagerRequireShiftToMount);
|
|
+ pillagerLimitOutpostSpawns = getInt("mobs.pillager.limit-outpost-spawns", pillagerLimitOutpostSpawns);
|
|
+ pillagerLeaderChance = (float) getDouble("mobs.pillager.leader.chance", pillagerLeaderChance);
|
|
+ pillagerLeaderRangeCheck = getInt("mobs.pillager.leader.range-check-for-other-leaders", pillagerLeaderRangeCheck);
|
|
}
|
|
|
|
public boolean polarBearRidable = false;
|
|
--
|
|
2.24.0
|
|
|