mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-19 09:27:43 +01:00
Upstream has released updates that appears to apply and compile correctly Paper Changes: a6ac47e5 Fix numerous item duplication issues and teleport issues b7402f11 Add phantom creative and insomniac controls (#3222) 75819fac Fix Potion#toItemStack swapping the extended and upgraded constructor values (#3216)
73 lines
4.4 KiB
Diff
73 lines
4.4 KiB
Diff
From 491effa3370a085885f8d7a3032af41df7da454c 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 70f43c515..fa08b8e1a 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 f44334b9e..70559714a 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 a2fce0c63..299b080c8 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
|
|
|