Skip to content
This repository was archived by the owner on Apr 13, 2025. It is now read-only.

Commit bc307f6

Browse files
BillyGalbreathgranny
authored andcommitted
Implement configurable search radius for villagers to spawn iron golems
1 parent dcc3d19 commit bc307f6

3 files changed

Lines changed: 12 additions & 41 deletions

File tree

patches/server/0238-Implement-configurable-search-radius-for-villagers-t.patch

Lines changed: 0 additions & 41 deletions
This file was deleted.

purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,14 @@
119119
}
120120

121121
private boolean hungry() {
122+
@@ -928,6 +_,7 @@
123+
}
124+
125+
public void spawnGolemIfNeeded(ServerLevel serverLevel, long gameTime, int minVillagerAmount) {
126+
+ 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
127+
if (this.wantsToSpawnGolem(gameTime)) {
128+
AABB aabb = this.getBoundingBox().inflate(10.0, 10.0, 10.0);
129+
List<Villager> entitiesOfClass = serverLevel.getEntitiesOfClass(Villager.class, aabb);
122130
@@ -1001,6 +_,12 @@
123131

124132
@Override

purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2928,6 +2928,8 @@ private void vexSettings() {
29282928
public int villagerLobotomizeCheckInterval = 100;
29292929
public boolean villagerLobotomizeWaitUntilTradeLocked = false;
29302930
public boolean villagerDisplayTradeItem = true;
2931+
public int villagerSpawnIronGolemRadius = 0;
2932+
public int villagerSpawnIronGolemLimit = 0;
29312933
private void villagerSettings() {
29322934
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
29332935
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
@@ -2964,6 +2966,8 @@ private void villagerSettings() {
29642966
villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval);
29652967
villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked);
29662968
villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem);
2969+
villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius);
2970+
villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit);
29672971
}
29682972

29692973
public boolean vindicatorRidable = false;

0 commit comments

Comments
 (0)