mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Implement configurable search radius for villagers to spawn iron golems
This commit is contained in:
committed by
granny
parent
dcc3d19905
commit
bc307f6750
@@ -1,41 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
|
||||||
Date: Wed, 8 Jun 2022 14:13:39 -0400
|
|
||||||
Subject: [PATCH] Implement configurable search radius for villagers to spawn
|
|
||||||
iron golems
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java
|
|
||||||
index 4170bd886f68e3c21df6f9680ad6f6aa26d74c01..e7ac8d4c6e839c19776b9c99bf6658104607a579 100644
|
|
||||||
--- a/net/minecraft/world/entity/npc/Villager.java
|
|
||||||
+++ b/net/minecraft/world/entity/npc/Villager.java
|
|
||||||
@@ -1075,6 +1075,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
|
||||||
}
|
|
||||||
|
|
||||||
public void spawnGolemIfNeeded(ServerLevel world, long time, int requiredCount) {
|
|
||||||
+ if (world.purpurConfig.villagerSpawnIronGolemRadius > 0 && world.getEntitiesOfClass(net.minecraft.world.entity.animal.IronGolem.class, getBoundingBox().inflate(world.purpurConfig.villagerSpawnIronGolemRadius)).size() > world.purpurConfig.villagerSpawnIronGolemLimit) return; // Purpur
|
|
||||||
if (this.wantsToSpawnGolem(time)) {
|
|
||||||
AABB axisalignedbb = this.getBoundingBox().inflate(10.0D, 10.0D, 10.0D);
|
|
||||||
List<Villager> list = world.getEntitiesOfClass(Villager.class, axisalignedbb);
|
|
||||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
index 7cdcea1f5170bc095b365f126a05cb4a6ca70087..f789100866e21cdf7b2891dfcb6913081f597d79 100644
|
|
||||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
@@ -2929,6 +2929,8 @@ public class PurpurWorldConfig {
|
|
||||||
public int villagerLobotomizeCheckInterval = 100;
|
|
||||||
public boolean villagerLobotomizeWaitUntilTradeLocked = false;
|
|
||||||
public boolean villagerDisplayTradeItem = true;
|
|
||||||
+ public int villagerSpawnIronGolemRadius = 0;
|
|
||||||
+ public int villagerSpawnIronGolemLimit = 0;
|
|
||||||
private void villagerSettings() {
|
|
||||||
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
|
|
||||||
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
|
|
||||||
@@ -2965,6 +2967,8 @@ public class PurpurWorldConfig {
|
|
||||||
villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval);
|
|
||||||
villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked);
|
|
||||||
villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem);
|
|
||||||
+ villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius);
|
|
||||||
+ villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean vindicatorRidable = false;
|
|
||||||
@@ -119,6 +119,14 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean hungry() {
|
private boolean hungry() {
|
||||||
|
@@ -928,6 +_,7 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
public void spawnGolemIfNeeded(ServerLevel serverLevel, long gameTime, int minVillagerAmount) {
|
||||||
|
+ if (serverLevel.purpurConfig.villagerSpawnIronGolemRadius > 0 && serverLevel.getEntitiesOfClass(net.minecraft.world.entity.animal.IronGolem.class, getBoundingBox().inflate(serverLevel.purpurConfig.villagerSpawnIronGolemRadius)).size() > serverLevel.purpurConfig.villagerSpawnIronGolemLimit) return; // Purpur - Implement configurable search radius for villagers to spawn iron golems
|
||||||
|
if (this.wantsToSpawnGolem(gameTime)) {
|
||||||
|
AABB aabb = this.getBoundingBox().inflate(10.0, 10.0, 10.0);
|
||||||
|
List<Villager> entitiesOfClass = serverLevel.getEntitiesOfClass(Villager.class, aabb);
|
||||||
@@ -1001,6 +_,12 @@
|
@@ -1001,6 +_,12 @@
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -2928,6 +2928,8 @@ public class PurpurWorldConfig {
|
|||||||
public int villagerLobotomizeCheckInterval = 100;
|
public int villagerLobotomizeCheckInterval = 100;
|
||||||
public boolean villagerLobotomizeWaitUntilTradeLocked = false;
|
public boolean villagerLobotomizeWaitUntilTradeLocked = false;
|
||||||
public boolean villagerDisplayTradeItem = true;
|
public boolean villagerDisplayTradeItem = true;
|
||||||
|
public int villagerSpawnIronGolemRadius = 0;
|
||||||
|
public int villagerSpawnIronGolemLimit = 0;
|
||||||
private void villagerSettings() {
|
private void villagerSettings() {
|
||||||
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
|
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
|
||||||
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
|
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
|
||||||
@@ -2964,6 +2966,8 @@ public class PurpurWorldConfig {
|
|||||||
villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval);
|
villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval);
|
||||||
villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked);
|
villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked);
|
||||||
villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem);
|
villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem);
|
||||||
|
villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius);
|
||||||
|
villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean vindicatorRidable = false;
|
public boolean vindicatorRidable = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user