apply minecraft feature patches

This commit is contained in:
granny
2026-03-24 01:25:28 -07:00
parent 2b97f2764b
commit 465f4d86be
21 changed files with 1777 additions and 1782 deletions

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
index 646e16b3d69b5516e8f7c401828fec731378979c..7a9a37a630ea68328512c1a80bdaaefdd2253b9c 100644
index c91b960c1cc087c424e6d17ad8f53a1f4cc354c3..9ed2866992573347548be47d1980a810e50dc653 100644
--- a/net/minecraft/server/players/PlayerList.java
+++ b/net/minecraft/server/players/PlayerList.java
@@ -887,6 +887,27 @@ public abstract class PlayerList {
@@ -888,6 +888,27 @@ public abstract class PlayerList {
player.getBukkitEntity().recalculatePermissions(); // CraftBukkit
this.server.getCommands().sendCommands(player);
} // Paper - Add sendOpLevel API
@@ -37,10 +37,10 @@ index 646e16b3d69b5516e8f7c401828fec731378979c..7a9a37a630ea68328512c1a80bdaaefd
// Paper start - whitelist verify event / login event
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
index 3339cb1068ab162e36c410950e83e5f32dd9b705..9312a20c37329f2892e0b6231566bb1f96e1e7ac 100644
index d4b7f1a861e67a00f7d8022b8198e04c1d279393..0f671feacee9827312cd04c158bf1e69c0f0273f 100644
--- a/net/minecraft/world/entity/player/Player.java
+++ b/net/minecraft/world/entity/player/Player.java
@@ -181,6 +181,7 @@ public abstract class Player extends Avatar implements ContainerUser {
@@ -176,6 +176,7 @@ public abstract class Player extends Avatar implements ContainerUser {
public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; // Paper - flying fall damage
public int burpDelay = 0; // Purpur - Burp delay
public boolean canPortalInstant = false; // Purpur - Add portal permission bypass
@@ -49,11 +49,11 @@ index 3339cb1068ab162e36c410950e83e5f32dd9b705..9312a20c37329f2892e0b6231566bb1f
// CraftBukkit start
public boolean fauxSleeping;
diff --git a/net/minecraft/world/inventory/ChestMenu.java b/net/minecraft/world/inventory/ChestMenu.java
index 1fb3a34ea872dec73658fac59743e46ef8db5151..4c3b8d7ba777916ffc5ad0feccffbc7634bffe8d 100644
index e77bfcd31cdcfd5836dc5db561e3fe2bc552a4b1..afa2ead0548766669201526d83f351c227c97e87 100644
--- a/net/minecraft/world/inventory/ChestMenu.java
+++ b/net/minecraft/world/inventory/ChestMenu.java
@@ -66,10 +66,30 @@ public class ChestMenu extends AbstractContainerMenu {
return new ChestMenu(MenuType.GENERIC_9x6, containerId, playerInventory, 6);
return new ChestMenu(MenuType.GENERIC_9x6, containerId, inventory, 6);
}
+ // Purpur start - Barrels and enderchests 6 rows
@@ -66,8 +66,8 @@ index 1fb3a34ea872dec73658fac59743e46ef8db5151..4c3b8d7ba777916ffc5ad0feccffbc76
+ }
+ // Purpur end - Barrels and enderchests 6 rows
+
public static ChestMenu threeRows(int containerId, Inventory playerInventory, Container container) {
return new ChestMenu(MenuType.GENERIC_9x3, containerId, playerInventory, container, 3);
public static ChestMenu threeRows(final int containerId, final Inventory inventory, final Container container) {
return new ChestMenu(MenuType.GENERIC_9x3, containerId, inventory, container, 3);
}
+ // Purpur start - Barrels and enderchests 6 rows
@@ -80,11 +80,11 @@ index 1fb3a34ea872dec73658fac59743e46ef8db5151..4c3b8d7ba777916ffc5ad0feccffbc76
+ }
+ // Purpur end - Barrels and enderchests 6 rows
+
public static ChestMenu sixRows(int containerId, Inventory playerInventory, Container container) {
return new ChestMenu(MenuType.GENERIC_9x6, containerId, playerInventory, container, 6);
public static ChestMenu sixRows(final int containerId, final Inventory inventory, final Container container) {
return new ChestMenu(MenuType.GENERIC_9x6, containerId, inventory, container, 6);
}
diff --git a/net/minecraft/world/inventory/PlayerEnderChestContainer.java b/net/minecraft/world/inventory/PlayerEnderChestContainer.java
index 9749909b8253b432bb2f7fba2cd8ff17a8579b30..1ef8696003e62af8dfd59340dd9cce76920b45f6 100644
index 4df3a32faf85595372f4b250482d852c985ea3ab..8347150af55119d772b797e79be412f7e17a0f1f 100644
--- a/net/minecraft/world/inventory/PlayerEnderChestContainer.java
+++ b/net/minecraft/world/inventory/PlayerEnderChestContainer.java
@@ -26,11 +26,18 @@ public class PlayerEnderChestContainer extends SimpleContainer {
@@ -104,25 +104,23 @@ index 9749909b8253b432bb2f7fba2cd8ff17a8579b30..1ef8696003e62af8dfd59340dd9cce76
+ }
+ // Purpur end - Barrels and enderchests 6 rows
+
public void setActiveChest(EnderChestBlockEntity enderChestBlockEntity) {
this.activeChest = enderChestBlockEntity;
public void setActiveChest(final EnderChestBlockEntity activeChest) {
this.activeChest = activeChest;
}
diff --git a/net/minecraft/world/level/block/EnderChestBlock.java b/net/minecraft/world/level/block/EnderChestBlock.java
index 383e8285d366c7f594b0b4ff55b367970c9b69e4..077edf449d4faa41abafb94ac41dfe822f449d04 100644
index 24a2c411da0ebbb7f97d621bb76ff686621f9aae..7ba9e8f6414246b589ff423fac63f80505326505 100644
--- a/net/minecraft/world/level/block/EnderChestBlock.java
+++ b/net/minecraft/world/level/block/EnderChestBlock.java
@@ -85,8 +85,8 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
enderChestInventory.setActiveChest(enderChestBlockEntity); // Needs to happen before ChestMenu.threeRows as it is required for opening animations
@@ -88,7 +88,7 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
// Paper start - Fix InventoryOpenEvent cancellation - moved up;
container.setActiveChest(enderChest); // Needs to happen before ChestMenu.threeRows as it is required for opening animations
if (level instanceof ServerLevel serverLevel && player.openMenu(
new SimpleMenuProvider(
- (containerId, playerInventory, player1) -> ChestMenu.threeRows(containerId, playerInventory, enderChestInventory), CONTAINER_TITLE
- )
+ (containerId, playerInventory, player1) -> org.purpurmc.purpur.PurpurConfig.enderChestSixRows ? getEnderChestSixRows(containerId, playerInventory, player, enderChestInventory) : ChestMenu.threeRows(containerId, playerInventory, enderChestInventory), CONTAINER_TITLE
+ ) // Purpur - Barrels and enderchests 6 rows
- new SimpleMenuProvider((containerId, inventory, p) -> ChestMenu.threeRows(containerId, inventory, container), CONTAINER_TITLE)
+ new SimpleMenuProvider((containerId, inventory, p) -> org.purpurmc.purpur.PurpurConfig.enderChestSixRows ? getEnderChestSixRows(containerId, inventory, player, container) : ChestMenu.threeRows(containerId, inventory, container), CONTAINER_TITLE) // Purpur - Barrels and enderchests 6 rows
).isPresent()) {
// Paper end - Fix InventoryOpenEvent cancellation - moved up;
player.awardStat(Stats.OPEN_ENDERCHEST);
@@ -100,6 +100,35 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
@@ -102,6 +102,35 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
}
}
@@ -156,13 +154,13 @@ index 383e8285d366c7f594b0b4ff55b367970c9b69e4..077edf449d4faa41abafb94ac41dfe82
+ // Purpur end - Barrels and enderchests 6 rows
+
@Override
public BlockEntity newBlockEntity(BlockPos pos, BlockState state) {
return new EnderChestBlockEntity(pos, state);
public BlockEntity newBlockEntity(final BlockPos worldPosition, final BlockState blockState) {
return new EnderChestBlockEntity(worldPosition, blockState);
diff --git a/net/minecraft/world/level/block/entity/BarrelBlockEntity.java b/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
index 75c09a2079c89f9346391abdd01ef8790b9cbb13..04f6b3c328377091734a111f5a219379e32b5640 100644
index 9eb6cb86ff70f04863cae3def1006f82bcb4fa6b..79ca37b3e4ed98139b8adbdccd39d597315c7f99 100644
--- a/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
@@ -59,7 +59,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
@@ -60,7 +60,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
}
// CraftBukkit end
private static final Component DEFAULT_NAME = Component.translatable("container.barrel");
@@ -178,9 +176,9 @@ index 75c09a2079c89f9346391abdd01ef8790b9cbb13..04f6b3c328377091734a111f5a219379
+ }, ItemStack.EMPTY);
+ // Purpur end - Barrels and enderchests 6 rows
public final ContainerOpenersCounter openersCounter = new ContainerOpenersCounter() {
@Override
protected void onOpen(Level level, BlockPos pos, BlockState state) {
@@ -111,7 +120,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
{
Objects.requireNonNull(BarrelBlockEntity.this);
@@ -116,7 +125,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
@Override
public int getContainerSize() {
@@ -198,19 +196,19 @@ index 75c09a2079c89f9346391abdd01ef8790b9cbb13..04f6b3c328377091734a111f5a219379
}
@Override
@@ -131,7 +149,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
@@ -136,7 +154,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
@Override
protected AbstractContainerMenu createMenu(int id, Inventory player) {
- return ChestMenu.threeRows(id, player, this);
protected AbstractContainerMenu createMenu(final int containerId, final Inventory inventory) {
- return ChestMenu.threeRows(containerId, inventory, this);
+ // Purpur start - Barrels and enderchests 6 rows
+ return switch (org.purpurmc.purpur.PurpurConfig.barrelRows) {
+ case 6 -> ChestMenu.sixRows(id, player, this);
+ case 5 -> ChestMenu.fiveRows(id, player, this);
+ case 4 -> ChestMenu.fourRows(id, player, this);
+ case 2 -> ChestMenu.twoRows(id, player, this);
+ case 1 -> ChestMenu.oneRow(id, player, this);
+ default -> ChestMenu.threeRows(id, player, this);
+ case 6 -> ChestMenu.sixRows(containerId, inventory, this);
+ case 5 -> ChestMenu.fiveRows(containerId, inventory, this);
+ case 4 -> ChestMenu.fourRows(containerId, inventory, this);
+ case 2 -> ChestMenu.twoRows(containerId, inventory, this);
+ case 1 -> ChestMenu.oneRow(containerId, inventory, this);
+ default -> ChestMenu.threeRows(containerId, inventory, this);
+ };
+ // Purpur end - Barrels and enderchests 6 rows
}

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Giants AI settings
diff --git a/net/minecraft/world/entity/monster/Giant.java b/net/minecraft/world/entity/monster/Giant.java
index 416bb85fc87b5f9e372f33df8fe27f12e83834b9..40cf8f44a6b01d45306dab4ba4f9a7ea7c6590a9 100644
index 7b6952f13e18548d0e71035d6cd6cfb24c03e6ee..c39031e8fdfb0dff7867d9525dbddde110242647 100644
--- a/net/minecraft/world/entity/monster/Giant.java
+++ b/net/minecraft/world/entity/monster/Giant.java
@@ -30,8 +30,25 @@ public class Giant extends Monster {
@@ -69,7 +69,7 @@ index 416bb85fc87b5f9e372f33df8fe27f12e83834b9..40cf8f44a6b01d45306dab4ba4f9a7ea
+ // Purpur end - Giants AI settings
+
@Override
public float getWalkTargetValue(BlockPos pos, LevelReader level) {
public float getWalkTargetValue(final BlockPos pos, final LevelReader level) {
- return level.getPathfindingCostFromLightLevels(pos);
+ return super.getWalkTargetValue(pos, level); // Purpur - Giants AI settings - fix light requirements for natural spawns
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Chickens can retaliate
diff --git a/net/minecraft/world/entity/animal/chicken/Chicken.java b/net/minecraft/world/entity/animal/chicken/Chicken.java
index bfc5c6639ef1005d2752d5164f3613ddacc46bf1..52a0bf792337e2f1cf11e215b033caae21ee774b 100644
index 3e1e904d9401bef41271fe8d29a22b6cd944e766..0392c8a94801a1dee735ff610058fbb2180571fa 100644
--- a/net/minecraft/world/entity/animal/chicken/Chicken.java
+++ b/net/minecraft/world/entity/animal/chicken/Chicken.java
@@ -95,6 +95,11 @@ public class Chicken extends Animal {
@@ -98,6 +98,11 @@ public class Chicken extends Animal {
public void initAttributes() {
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.chickenMaxHealth);
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.chickenScale);
@@ -20,14 +20,14 @@ index bfc5c6639ef1005d2752d5164f3613ddacc46bf1..52a0bf792337e2f1cf11e215b033caae
}
// Purpur end - Configurable entity base attributes
@@ -102,13 +107,21 @@ public class Chicken extends Animal {
@@ -105,13 +110,21 @@ public class Chicken extends Animal {
protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this));
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
- this.goalSelector.addGoal(1, new PanicGoal(this, 1.4));
+ //this.goalSelector.addGoal(1, new PanicGoal(this, 1.4)); // Purpur - Chickens can retaliate - moved down
this.goalSelector.addGoal(2, new BreedGoal(this, 1.0));
this.goalSelector.addGoal(3, new TemptGoal(this, 1.0, itemStack -> itemStack.is(ItemTags.CHICKEN_FOOD), false));
this.goalSelector.addGoal(3, new TemptGoal(this, 1.0, i -> i.is(ItemTags.CHICKEN_FOOD), false));
this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.1));
this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 1.0));
this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F));
@@ -42,8 +42,8 @@ index bfc5c6639ef1005d2752d5164f3613ddacc46bf1..52a0bf792337e2f1cf11e215b033caae
+ // Purpur end - Chickens can retaliate
}
@Override
@@ -117,7 +130,7 @@ public class Chicken extends Animal {
public Holder<ChickenSoundVariant> getSoundVariant() {
@@ -132,7 +145,7 @@ public class Chicken extends Animal {
}
public static AttributeSupplier.Builder createAttributes() {

View File

@@ -5,13 +5,13 @@ Subject: [PATCH] Minecart settings and WASD controls
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 2eba1b0ac8b4a0bb34d04b81c4c279db6e716b3b..01efe1fbd185ebd3a60c6bbb7aa2d82817506e7d 100644
index e5d9c8e6999f3b7a40269fc5b06da4878a114046..b8ebcaca72ed6c92802fe289f8db1e0223d7470d 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -1311,6 +1311,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -1296,6 +1296,11 @@ public class ServerPlayer extends Player {
} else {
// Purpur start - Add boat fall damage config
if (damageSource.is(net.minecraft.tags.DamageTypeTags.IS_FALL)) {
if (source.is(net.minecraft.tags.DamageTypeTags.IS_FALL)) {
+ // Purpur start - Minecart settings and WASD controls
+ if (getRootVehicle() instanceof AbstractMinecart && level().purpurConfig.minecartControllable && !level().purpurConfig.minecartControllableFallDamage) {
+ return false;
@@ -21,7 +21,7 @@ index 2eba1b0ac8b4a0bb34d04b81c4c279db6e716b3b..01efe1fbd185ebd3a60c6bbb7aa2d828
return false;
}
diff --git a/net/minecraft/world/entity/vehicle/minecart/AbstractMinecart.java b/net/minecraft/world/entity/vehicle/minecart/AbstractMinecart.java
index 1123ec0038552e0b40774f4a433ff325695ea071..48099ae66045b6e78ec52832e3b972ac9c9bc246 100644
index 9f72e7eeecf3037a498e7688f55cc029a49f388d..59cf0d4dcffc00313e06574987e4364f6ca21eb5 100644
--- a/net/minecraft/world/entity/vehicle/minecart/AbstractMinecart.java
+++ b/net/minecraft/world/entity/vehicle/minecart/AbstractMinecart.java
@@ -105,6 +105,10 @@ public abstract class AbstractMinecart extends VehicleEntity {
@@ -49,7 +49,7 @@ index 1123ec0038552e0b40774f4a433ff325695ea071..48099ae66045b6e78ec52832e3b972ac
}
}
@@ -278,6 +287,14 @@ public abstract class AbstractMinecart extends VehicleEntity {
@@ -289,6 +298,14 @@ public abstract class AbstractMinecart extends VehicleEntity {
@Override
public void tick() {
@@ -64,7 +64,7 @@ index 1123ec0038552e0b40774f4a433ff325695ea071..48099ae66045b6e78ec52832e3b972ac
// CraftBukkit start
double prevX = this.getX();
double prevY = this.getY();
@@ -392,15 +409,61 @@ public abstract class AbstractMinecart extends VehicleEntity {
@@ -405,15 +422,61 @@ public abstract class AbstractMinecart extends VehicleEntity {
this.behavior.moveAlongTrack(level);
}
@@ -87,10 +87,10 @@ index 1123ec0038552e0b40774f4a433ff325695ea071..48099ae66045b6e78ec52832e3b972ac
+ }
+ // Purpur end - Minecart settings and WASD controls
+
protected void comeOffTrack(ServerLevel level) {
protected void comeOffTrack(final ServerLevel level) {
double maxSpeed = this.getMaxSpeed(level);
Vec3 deltaMovement = this.getDeltaMovement();
this.setDeltaMovement(Mth.clamp(deltaMovement.x, -maxSpeed, maxSpeed), deltaMovement.y, Mth.clamp(deltaMovement.z, -maxSpeed, maxSpeed));
Vec3 movement = this.getDeltaMovement();
this.setDeltaMovement(Mth.clamp(movement.x, -maxSpeed, maxSpeed), movement.y, Mth.clamp(movement.z, -maxSpeed, maxSpeed));
+
+ // Purpur start - Minecart settings and WASD controls
+ if (level().purpurConfig.minecartControllable && !isInWater() && !isInLava() && !passengers.isEmpty()) {
@@ -127,23 +127,23 @@ index 1123ec0038552e0b40774f4a433ff325695ea071..48099ae66045b6e78ec52832e3b972ac
this.move(MoverType.SELF, this.getDeltaMovement());
if (!this.onGround()) {
diff --git a/net/minecraft/world/item/MinecartItem.java b/net/minecraft/world/item/MinecartItem.java
index 3b511139985ea1646661ae0a6bcd1f0e386561e7..3a65e1a0b914d113feb727833803ece8f3b2e020 100644
index 7464dbde8cc3348748d2a3733624bd2274f9c735..91df0baebab1da9cd060cb93698c7f154c719669 100644
--- a/net/minecraft/world/item/MinecartItem.java
+++ b/net/minecraft/world/item/MinecartItem.java
@@ -30,8 +30,9 @@ public class MinecartItem extends Item {
BlockPos clickedPos = context.getClickedPos();
BlockState blockState = level.getBlockState(clickedPos);
BlockPos pos = context.getClickedPos();
BlockState blockState = level.getBlockState(pos);
if (!blockState.is(BlockTags.RAILS)) {
- return InteractionResult.FAIL;
- } else {
+ if (!level.purpurConfig.minecartPlaceAnywhere) return InteractionResult.FAIL; // Purpur - Minecart settings and WASD controls
+ if (blockState.isSolid()) clickedPos = clickedPos.relative(context.getClickedFace());
+ if (blockState.isSolid()) pos = pos.relative(context.getClickedFace());
+ } // else { // Purpur - Minecart settings and WASD controls
ItemStack itemInHand = context.getItemInHand();
RailShape railShape = blockState.getBlock() instanceof BaseRailBlock
ItemStack itemStack = context.getItemInHand();
RailShape shape = blockState.getBlock() instanceof BaseRailBlock
? blockState.getValue(((BaseRailBlock)blockState.getBlock()).getShapeProperty())
@@ -72,6 +73,6 @@ public class MinecartItem extends Item {
itemInHand.shrink(1);
@@ -70,6 +71,6 @@ public class MinecartItem extends Item {
itemStack.shrink(1);
return InteractionResult.SUCCESS;
}
- }

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Villagers follow emerald blocks
diff --git a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java
index 686776bb00560f9da8838bd5f8dd64aaddfa7a2b..ccdd439a89b7e7e10ee960cfe1e5e119d5367799 100644
index 6b78ddb4ec40d45634288796a98e34714e0deb68..34d2394006a006ea0773a52bb43b5cb3617470e5 100644
--- a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java
+++ b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java
@@ -173,7 +173,7 @@ public class DefaultAttributes {
@@ -18,35 +18,35 @@ index 686776bb00560f9da8838bd5f8dd64aaddfa7a2b..ccdd439a89b7e7e10ee960cfe1e5e119
.put(EntityType.WITHER, WitherBoss.createAttributes().build())
.put(EntityType.WITHER_SKELETON, AbstractSkeleton.createAttributes().build())
diff --git a/net/minecraft/world/entity/ai/goal/TemptGoal.java b/net/minecraft/world/entity/ai/goal/TemptGoal.java
index 18030dc04eb7d7971e457637b5320b1e41665658..60ebd57de496eba6ad307195ffacd3b7fc4149ff 100644
index af2bd8a5cf760792a63dfb9c2370360f288beab6..016167a6ff90dfe5a2e66596eaab2c8f2775c016 100644
--- a/net/minecraft/world/entity/ai/goal/TemptGoal.java
+++ b/net/minecraft/world/entity/ai/goal/TemptGoal.java
@@ -70,7 +70,7 @@ public class TemptGoal extends Goal {
}
private boolean shouldFollow(LivingEntity entity) {
- return this.items.test(entity.getMainHandItem()) || this.items.test(entity.getOffhandItem());
+ return (this.items.test(entity.getMainHandItem()) || this.items.test(entity.getOffhandItem())) && (!(this.mob instanceof net.minecraft.world.entity.npc.villager.Villager villager) || !villager.isSleeping()); // Purpur - Villagers follow emerald blocks
private boolean shouldFollow(final LivingEntity player) {
- return this.items.test(player.getMainHandItem()) || this.items.test(player.getOffhandItem());
+ return (this.items.test(player.getMainHandItem()) || this.items.test(player.getOffhandItem())) && (!(this.mob instanceof net.minecraft.world.entity.npc.villager.Villager villager) || !villager.isSleeping()); // Purpur - Villagers follow emerald blocks
}
@Override
diff --git a/net/minecraft/world/entity/npc/villager/AbstractVillager.java b/net/minecraft/world/entity/npc/villager/AbstractVillager.java
index fa8f1ea38192f9ad0a961a53399f295d83af7721..05d1a859e1aee639ad9572f2369e6db3c3d7a111 100644
index f6ac52144958b48dad0b0f682634fad3d8e9557c..0825e06843c3613843cf7c15fa3fb3a1c0787781 100644
--- a/net/minecraft/world/entity/npc/villager/AbstractVillager.java
+++ b/net/minecraft/world/entity/npc/villager/AbstractVillager.java
@@ -38,6 +38,7 @@ import net.minecraft.world.phys.Vec3;
import org.jspecify.annotations.Nullable;
@@ -52,6 +52,7 @@ import org.jspecify.annotations.Nullable;
import org.slf4j.Logger;
public abstract class AbstractVillager extends AgeableMob implements InventoryCarrier, Npc, Merchant {
public abstract class AbstractVillager extends AgeableMob implements Npc, Merchant, InventoryCarrier {
+ public static final net.minecraft.world.item.crafting.Ingredient TEMPT_ITEMS = net.minecraft.world.item.crafting.Ingredient.of(net.minecraft.world.level.block.Blocks.EMERALD_BLOCK.asItem()); // Purpur - Villagers follow emerald blocks
private static final Logger LOGGER = LogUtils.getLogger();
private static final EntityDataAccessor<Integer> DATA_UNHAPPY_COUNTER = SynchedEntityData.defineId(AbstractVillager.class, EntityDataSerializers.INT);
public static final int VILLAGER_SLOT_OFFSET = 300;
private static final int VILLAGER_INVENTORY_SIZE = 8;
private @Nullable Player tradingPlayer;
diff --git a/net/minecraft/world/entity/npc/villager/Villager.java b/net/minecraft/world/entity/npc/villager/Villager.java
index 6f9658af51f1f30434756f871cf6ab5cd2f3a7ea..02836bd2e8fda563877d3014ab839734aebc7457 100644
index ddbfcf8e16e17a3f482cb99de61ae8e40a383c18..6105aa39baf888dd625f4d345822a4058bf83ef4 100644
--- a/net/minecraft/world/entity/npc/villager/Villager.java
+++ b/net/minecraft/world/entity/npc/villager/Villager.java
@@ -269,6 +269,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -271,6 +271,7 @@ public class Villager extends AbstractVillager implements VillagerDataHolder, Re
@Override
protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this));
@@ -54,7 +54,7 @@ index 6f9658af51f1f30434756f871cf6ab5cd2f3a7ea..02836bd2e8fda563877d3014ab839734
}
// Purpur end - Ridables
@@ -277,6 +278,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -279,6 +280,7 @@ public class Villager extends AbstractVillager implements VillagerDataHolder, Re
public void initAttributes() {
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.villagerMaxHealth);
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.villagerScale);
@@ -62,7 +62,7 @@ index 6f9658af51f1f30434756f871cf6ab5cd2f3a7ea..02836bd2e8fda563877d3014ab839734
}
// Purpur end - Configurable entity base attributes
@@ -345,7 +347,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -320,7 +322,7 @@ public class Villager extends AbstractVillager implements VillagerDataHolder, Re
}
public static AttributeSupplier.Builder createAttributes() {
@@ -72,7 +72,7 @@ index 6f9658af51f1f30434756f871cf6ab5cd2f3a7ea..02836bd2e8fda563877d3014ab839734
public boolean assignProfessionWhenSpawned() {
diff --git a/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java b/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
index 9d5dbaeafd899594425547fc58b87a1d0a52066e..c6c4f4f2a970db7e782181eaca312931b192b0d5 100644
index 848aeba87bd220d7241c5adeba26fbd6591dbbae..ea74d8ac0b5de890124361e65aeb9a08ad09fa1b 100644
--- a/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
+++ b/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
@@ -89,9 +89,16 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over
@@ -92,7 +92,7 @@ index 9d5dbaeafd899594425547fc58b87a1d0a52066e..c6c4f4f2a970db7e782181eaca312931
@Override
protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this));
@@ -126,6 +133,7 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over
@@ -123,6 +130,7 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over
this.goalSelector.addGoal(1, new PanicGoal(this, 0.5));
this.goalSelector.addGoal(1, new LookAtTradingPlayerGoal(this));
this.goalSelector.addGoal(2, new WanderingTrader.WanderToPositionGoal(this, 2.0, 0.35));

View File

@@ -5,15 +5,14 @@ Subject: [PATCH] Implement elytra settings
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
index 51e7ca17a8e32be76cdcd7a59a15acf4b73cc98a..c4fa59a13be8affa28de7bc8f2da3e353515c821 100644
index 7119a83b5b9811ab3ef2622f91c966741818e48f..2e7e5c4c42bcdb6135a088ffe0a7a8f4558dc12c 100644
--- a/net/minecraft/world/entity/LivingEntity.java
+++ b/net/minecraft/world/entity/LivingEntity.java
@@ -3895,7 +3895,18 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
.filter(equipmentSlot1 -> canGlideUsing(this.getItemBySlot(equipmentSlot1), equipmentSlot1))
.toList();
EquipmentSlot equipmentSlot = Util.getRandom(list, this.random);
- this.getItemBySlot(equipmentSlot).hurtAndBreak(1, this, equipmentSlot);
+
@@ -3945,7 +3945,16 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
if (freeFallInterval % 2 == 0) {
List<EquipmentSlot> slotsWithGliders = EquipmentSlot.VALUES.stream().filter(slot -> canGlideUsing(this.getItemBySlot(slot), slot)).toList();
EquipmentSlot slotToDamage = Util.getRandom(slotsWithGliders, this.random);
- this.getItemBySlot(slotToDamage).hurtAndBreak(1, this, slotToDamage);
+ // Purpur start - Implement elytra settings
+ int damage = level().purpurConfig.elytraDamagePerSecond;
+ if (level().purpurConfig.elytraDamageMultiplyBySpeed > 0) {
@@ -22,14 +21,13 @@ index 51e7ca17a8e32be76cdcd7a59a15acf4b73cc98a..c4fa59a13be8affa28de7bc8f2da3e35
+ damage *= (int) speed;
+ }
+ }
+
+ this.getItemBySlot(equipmentSlot).hurtAndBreak(damage, this, equipmentSlot);
+ this.getItemBySlot(slotToDamage).hurtAndBreak(damage, this, slotToDamage);
+ // Purpur end - Implement elytra settings
}
this.gameEvent(GameEvent.ELYTRA_GLIDE);
diff --git a/net/minecraft/world/item/FireworkRocketItem.java b/net/minecraft/world/item/FireworkRocketItem.java
index 2c597e20c1ff587f2eadef600bedb9e01b999bbf..e548f7161f14d7dc02d6882c3639ff65d59d7b37 100644
index c17607cb1fd5403f17a64b4218571e669b840a2e..6545145e1f83b333fd1d05ab714c9869c5d2d7fe 100644
--- a/net/minecraft/world/item/FireworkRocketItem.java
+++ b/net/minecraft/world/item/FireworkRocketItem.java
@@ -73,6 +73,17 @@ public class FireworkRocketItem extends Item implements ProjectileItem {
@@ -48,13 +46,13 @@ index 2c597e20c1ff587f2eadef600bedb9e01b999bbf..e548f7161f14d7dc02d6882c3639ff65
+ }
+ // Purpur end - Implement elytra settings
if (event.shouldConsume() && !player.hasInfiniteMaterials()) {
itemInHand.shrink(1); // Moved up from below
itemStack.shrink(1); // Moved up from below
} else {
diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java
index b8e38ce9b5c4b11e5bcbe6cf5603d6d39454759c..fd90ba8eba88c8d4fa372cb1047e0af8528f914d 100644
index 842bc5b3b7a31a8cc3b5651fb69092402d83606c..70a45aab9ac93973a3dde08140a4acf4813987f3 100644
--- a/net/minecraft/world/item/ItemStack.java
+++ b/net/minecraft/world/item/ItemStack.java
@@ -702,6 +702,14 @@ public final class ItemStack implements DataComponentHolder {
@@ -695,6 +695,14 @@ public final class ItemStack implements DataComponentHolder, ItemInstance {
org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerItemBreakEvent(serverPlayer, this); // Paper - Add EntityDamageItemEvent
}
// CraftBukkit end
@@ -70,24 +68,23 @@ index b8e38ce9b5c4b11e5bcbe6cf5603d6d39454759c..fd90ba8eba88c8d4fa372cb1047e0af8
onBreak.accept(item);
}
diff --git a/net/minecraft/world/item/TridentItem.java b/net/minecraft/world/item/TridentItem.java
index b87861c089f849e855d10c15ede53fd7c9e6a47c..633bb1a6d69b55717a9a07978b92f625ff5d066a 100644
index 710b8711184ea6e1cf0dfd338b897923ed2b79fb..82995f60dbb62325b46bc8a87cd2087461715c4f 100644
--- a/net/minecraft/world/item/TridentItem.java
+++ b/net/minecraft/world/item/TridentItem.java
@@ -126,6 +126,17 @@ public class TridentItem extends Item implements ProjectileItem {
f1 *= tridentSpinAttackStrength / squareRoot;
f2 *= tridentSpinAttackStrength / squareRoot;
if (!org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerRiptideEvent(player, stack, f, f1, f2)) return false; // Paper - Add player riptide event
+ // Purpur start - Implement elytra settings
+ List<net.minecraft.world.entity.EquipmentSlot> list = net.minecraft.world.entity.EquipmentSlot.VALUES.stream().filter((enumitemslot) -> LivingEntity.canGlideUsing(entity.getItemBySlot(enumitemslot), enumitemslot)).toList();
+ if (!list.isEmpty()) {
+ net.minecraft.world.entity.EquipmentSlot enumitemslot = net.minecraft.util.Util.getRandom(list, entity.random);
+ ItemStack glideItem = entity.getItemBySlot(enumitemslot);
+ if (glideItem.has(net.minecraft.core.component.DataComponents.GLIDER) && level.purpurConfig.elytraDamagePerTridentBoost > 0) {
+ glideItem.hurtAndBreak(level.purpurConfig.elytraDamagePerTridentBoost, entity, enumitemslot);
@@ -125,6 +125,16 @@ public class TridentItem extends Item implements ProjectileItem {
yd *= riptideStrength / dist;
zd *= riptideStrength / dist;
if (!org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerRiptideEvent(player, itemStack, xd, yd, zd)) return false; // Paper - Add player riptide event
+ // Purpur start - Implement elytra settings
+ List<net.minecraft.world.entity.EquipmentSlot> list = net.minecraft.world.entity.EquipmentSlot.VALUES.stream().filter((enumitemslot) -> LivingEntity.canGlideUsing(entity.getItemBySlot(enumitemslot), enumitemslot)).toList();
+ if (!list.isEmpty()) {
+ net.minecraft.world.entity.EquipmentSlot enumitemslot = net.minecraft.util.Util.getRandom(list, entity.random);
+ ItemStack glideItem = entity.getItemBySlot(enumitemslot);
+ if (glideItem.has(net.minecraft.core.component.DataComponents.GLIDER) && level.purpurConfig.elytraDamagePerTridentBoost > 0) {
+ glideItem.hurtAndBreak(level.purpurConfig.elytraDamagePerTridentBoost, entity, enumitemslot);
+ }
+ }
+ }
+ // Purpur end - Implement elytra settings
+
player.push(f, f1, f2);
player.startAutoSpinAttack(20, 8.0F, stack);
if (player.onGround()) {
+ // Purpur end - Implement elytra settings
player.push(xd, yd, zd);
player.startAutoSpinAttack(20, 8.0F, itemStack);
if (player.onGround()) {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable jockey options
diff --git a/net/minecraft/world/entity/monster/zombie/Drowned.java b/net/minecraft/world/entity/monster/zombie/Drowned.java
index 0b6d2bcec8506686eb6e0aaeb14870c14bd84e9d..3b1e3e7c1218cbfdfe48db3fad15280f43fd3311 100644
index 573abf9eae9f5492e4231d663814352f7e046fe2..0f64fe7e15655c63f996106d504ab4d18dac4a1c 100644
--- a/net/minecraft/world/entity/monster/zombie/Drowned.java
+++ b/net/minecraft/world/entity/monster/zombie/Drowned.java
@@ -109,6 +109,23 @@ public class Drowned extends Zombie implements RangedAttackMob {
@@ -116,6 +116,23 @@ public class Drowned extends Zombie implements RangedAttackMob {
}
// Purpur end - Configurable entity base attributes
@@ -33,10 +33,10 @@ index 0b6d2bcec8506686eb6e0aaeb14870c14bd84e9d..3b1e3e7c1218cbfdfe48db3fad15280f
protected void addBehaviourGoals() {
this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0));
diff --git a/net/minecraft/world/entity/monster/zombie/Husk.java b/net/minecraft/world/entity/monster/zombie/Husk.java
index 03270138e6fae7ee28f958cafee5b74b18dce355..d31145fee0f646d734e90199288b29f07854d066 100644
index 1c985585a2da43e59bb5b9ebd742e1e31b2cda29..c3f2d9ab49eb501f26939387624f326227908b81 100644
--- a/net/minecraft/world/entity/monster/zombie/Husk.java
+++ b/net/minecraft/world/entity/monster/zombie/Husk.java
@@ -58,6 +58,23 @@ public class Husk extends Zombie {
@@ -66,6 +66,23 @@ public class Husk extends Zombie {
}
// Purpur end - Configurable entity base attributes
@@ -61,10 +61,10 @@ index 03270138e6fae7ee28f958cafee5b74b18dce355..d31145fee0f646d734e90199288b29f0
public boolean isSunSensitive() {
return false;
diff --git a/net/minecraft/world/entity/monster/zombie/Zombie.java b/net/minecraft/world/entity/monster/zombie/Zombie.java
index d873ca9873e95f3a5869cb63a93b0643a9c867dc..638642628c3dc9fa25d25c589029219c23d1e602 100644
index 900c768b0118153ea2c74dea0960aef3217da441..5bf9970b93e27004dd832c8465dc95a681583ef6 100644
--- a/net/minecraft/world/entity/monster/zombie/Zombie.java
+++ b/net/minecraft/world/entity/monster/zombie/Zombie.java
@@ -128,6 +128,20 @@ public class Zombie extends Monster {
@@ -138,6 +138,20 @@ public class Zombie extends Monster {
}
// Purpur end - Configurable entity base attributes
@@ -85,42 +85,42 @@ index d873ca9873e95f3a5869cb63a93b0643a9c867dc..638642628c3dc9fa25d25c589029219c
@Override
protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
@@ -531,19 +545,18 @@ public class Zombie extends Monster {
@@ -550,19 +564,18 @@ public class Zombie extends Monster {
}
if (spawnGroupData instanceof Zombie.ZombieGroupData zombieGroupData) {
- if (zombieGroupData.isBaby) {
if (groupData instanceof Zombie.ZombieGroupData zombieData) {
- if (zombieData.isBaby) {
- this.setBaby(true);
+ if (!jockeyOnlyBaby() || zombieGroupData.isBaby) { // Purpur - Configurable jockey options
+ this.setBaby(zombieGroupData.isBaby); // Purpur - Configurable jockey options
if (zombieGroupData.canSpawnJockey) {
+ if (!jockeyOnlyBaby() || zombieData.isBaby) { // Purpur - Configurable jockey options
+ this.setBaby(zombieData.isBaby); // Purpur - Configurable jockey options
if (zombieData.canSpawnJockey) {
- if (random.nextFloat() < 0.05) {
- List<Chicken> entitiesOfClass = level.getEntitiesOfClass(
- List<Chicken> chickens = level.getEntitiesOfClass(
+ if (random.nextFloat() < jockeyChance()) { // Purpur - Configurable jockey options
+ List<Chicken> entitiesOfClass = jockeyTryExistingChickens() ? level.getEntitiesOfClass( // Purpur - Configurable jockey options
+ List<Chicken> chickens = jockeyTryExistingChickens() ? level.getEntitiesOfClass( // Purpur - Configurable jockey options
Chicken.class, this.getBoundingBox().inflate(5.0, 3.0, 5.0), EntitySelector.ENTITY_NOT_BEING_RIDDEN
- );
+ ) : java.util.Collections.emptyList(); // Purpur - Configurable jockey options
if (!entitiesOfClass.isEmpty()) {
Chicken chicken = entitiesOfClass.get(0);
if (!chickens.isEmpty()) {
Chicken chicken = chickens.get(0);
chicken.setChickenJockey(true);
this.startRiding(chicken, false, false);
- }
- } else if (random.nextFloat() < 0.05) {
+ } else { // Purpur - Configurable jockey options
Chicken chicken1 = EntityType.CHICKEN.create(this.level(), EntitySpawnReason.JOCKEY);
if (chicken1 != null) {
chicken1.snapTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), 0.0F);
@@ -552,6 +565,7 @@ public class Zombie extends Monster {
this.startRiding(chicken1, false, false);
level.addFreshEntity(chicken1, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.MOUNT); // CraftBukkit
Chicken chicken = EntityType.CHICKEN.create(this.level(), EntitySpawnReason.JOCKEY);
if (chicken != null) {
chicken.snapTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), 0.0F);
@@ -571,6 +584,7 @@ public class Zombie extends Monster {
this.startRiding(chicken, false, false);
level.addFreshEntity(chicken, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.MOUNT); // CraftBukkit
}
+ } // Purpur - Configurable jockey options
}
}
}
diff --git a/net/minecraft/world/entity/monster/zombie/ZombieVillager.java b/net/minecraft/world/entity/monster/zombie/ZombieVillager.java
index 0a02684ec00540b91a2a68e5787e51d15b3743a7..62f55763d95e496da8b8fcf7d95752777e323b48 100644
index 02cc4228bfc1ee27ffceb39d6406fce89f6d8312..8a5634d2204b9abae560d34a7b0616b3ebdc68ab 100644
--- a/net/minecraft/world/entity/monster/zombie/ZombieVillager.java
+++ b/net/minecraft/world/entity/monster/zombie/ZombieVillager.java
@@ -114,6 +114,23 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
@@ -145,13 +145,13 @@ index 0a02684ec00540b91a2a68e5787e51d15b3743a7..62f55763d95e496da8b8fcf7d9575277
+ // Purpur end - Configurable jockey options
+
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder);
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
super.defineSynchedData(entityData);
diff --git a/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java
index 3ff8c95075f9d25c3a2e4160ee6d18057838a7b5..ec39ad6740361774f9ecfda7186cab9d8fac90f2 100644
index b6c14d7c5fbe7f37d4d5b865aae60d4a05af081b..d1edf1f44de1fc6d23bcd8044f8bf4165821790e 100644
--- a/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java
+++ b/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java
@@ -89,6 +89,23 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
@@ -93,6 +93,23 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
}
// Purpur end - Configurable entity base attributes

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Phantoms attracted to crystals and crystals shoot phantoms
diff --git a/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
index d1c593ccfab7bee4366ee7c56606a230964e3fb7..21d678008fac473dff4c3e10890882ab94d0087c 100644
index 0bfb8cd53e87d986679d4e26ebf77c52e58c1c10..fd901b84bc105a2ccf59eef687a20d53b84e1906 100644
--- a/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
+++ b/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
@@ -27,6 +27,12 @@ public class EndCrystal extends Entity {
@@ -19,7 +19,7 @@ index d1c593ccfab7bee4366ee7c56606a230964e3fb7..21d678008fac473dff4c3e10890882ab
+ private int idleCooldown = 0;
+ // Purpur end - Phantoms attracted to crystals and crystals shoot phantoms
public EndCrystal(EntityType<? extends EndCrystal> type, Level level) {
public EndCrystal(final EntityType<? extends EndCrystal> type, final Level level) {
super(type, level);
@@ -95,6 +101,49 @@ public class EndCrystal extends Entity {
// Paper end - Fix invulnerable end crystals
@@ -72,18 +72,18 @@ index d1c593ccfab7bee4366ee7c56606a230964e3fb7..21d678008fac473dff4c3e10890882ab
@Override
diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java
index 046d6d3b665d0dbb5403ebe91d18503ec7613936..7077beafe2251fcc4e37578091bfaa02714268b9 100644
index b45eb26fa78a4bafa247c3cf8f20fb2f076646c5..c33910433eae54df4d1d4b918c28b361bd510577 100644
--- a/net/minecraft/world/entity/monster/Phantom.java
+++ b/net/minecraft/world/entity/monster/Phantom.java
@@ -49,6 +49,7 @@ public class Phantom extends Mob implements Enemy {
Vec3 moveTargetPoint = Vec3.ZERO;
@Nullable public BlockPos anchorPoint;
Phantom.AttackPhase attackPhase = Phantom.AttackPhase.CIRCLE;
@@ -50,6 +50,7 @@ public class Phantom extends Mob implements Enemy {
private Vec3 moveTargetPoint = Vec3.ZERO;
public @Nullable BlockPos anchorPoint;
private Phantom.AttackPhase attackPhase = Phantom.AttackPhase.CIRCLE;
+ Vec3 crystalPosition; // Purpur - Phantoms attracted to crystals and crystals shoot phantoms
// Paper start
public java.util.@Nullable UUID spawningEntity;
public boolean shouldBurnInDay = true;
@@ -107,6 +108,25 @@ public class Phantom extends Mob implements Enemy {
@@ -108,6 +109,25 @@ public class Phantom extends Mob implements Enemy {
}
// Purpur end - Ridables
@@ -109,7 +109,7 @@ index 046d6d3b665d0dbb5403ebe91d18503ec7613936..7077beafe2251fcc4e37578091bfaa02
@Override
public boolean isFlapping() {
return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0;
@@ -120,9 +140,15 @@ public class Phantom extends Mob implements Enemy {
@@ -121,9 +141,15 @@ public class Phantom extends Mob implements Enemy {
@Override
protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
@@ -128,7 +128,7 @@ index 046d6d3b665d0dbb5403ebe91d18503ec7613936..7077beafe2251fcc4e37578091bfaa02
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
this.targetSelector.addGoal(1, new Phantom.PhantomAttackPlayerTargetGoal());
}
@@ -506,6 +532,124 @@ public class Phantom extends Mob implements Enemy {
@@ -513,6 +539,124 @@ public class Phantom extends Mob implements Enemy {
}
}
@@ -243,13 +243,13 @@ index 046d6d3b665d0dbb5403ebe91d18503ec7613936..7077beafe2251fcc4e37578091bfaa02
+ private void updateOffset() {
+ this.offset += this.direction * 15.0F * 0.017453292F;
+ phantom.moveTargetPoint = phantom.crystalPosition.add(
+ this.radius * Mth.cos(this.offset),
+ -4.0F + this.verticalChange,
+ this.radius * Mth.sin(this.offset));
+ this.radius * Mth.cos(this.offset),
+ -4.0F + this.verticalChange,
+ this.radius * Mth.sin(this.offset));
+ }
+ }
+ // Purpur end - Phantoms attracted to crystals and crystals shoot phantoms
+
class PhantomMoveControl extends org.purpurmc.purpur.controller.FlyingMoveControllerWASD { // Purpur - Ridables
private float speed = 0.1F;
private class PhantomMoveControl extends org.purpurmc.purpur.controller.FlyingMoveControllerWASD { // Purpur - Ridables
private float speed;

View File

@@ -5,18 +5,18 @@ Subject: [PATCH] Phantoms burn in light
diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java
index 7077beafe2251fcc4e37578091bfaa02714268b9..6e8fe1b694ade45ffbf0b9bb39b954deffeb2402 100644
index c33910433eae54df4d1d4b918c28b361bd510577..da014eae20abb320ecb897517810e4ab53783a89 100644
--- a/net/minecraft/world/entity/monster/Phantom.java
+++ b/net/minecraft/world/entity/monster/Phantom.java
@@ -54,6 +54,7 @@ public class Phantom extends Mob implements Enemy {
@@ -55,6 +55,7 @@ public class Phantom extends Mob implements Enemy {
public java.util.@Nullable UUID spawningEntity;
public boolean shouldBurnInDay = true;
// Paper end
+ private static final net.minecraft.world.item.crafting.Ingredient TORCH = net.minecraft.world.item.crafting.Ingredient.of(net.minecraft.world.item.Items.TORCH, net.minecraft.world.item.Items.SOUL_TORCH); // Purpur - Phantoms burn in light
public Phantom(EntityType<? extends Phantom> type, Level level) {
public Phantom(final EntityType<? extends Phantom> type, final Level level) {
super(type, level);
@@ -238,7 +239,11 @@ public class Phantom extends Mob implements Enemy {
@@ -239,7 +240,11 @@ public class Phantom extends Mob implements Enemy {
// Paper start
@Override
public boolean isSunBurnTick() {
@@ -29,15 +29,15 @@ index 7077beafe2251fcc4e37578091bfaa02714268b9..6e8fe1b694ade45ffbf0b9bb39b954de
}
// Paper end
@@ -366,6 +371,7 @@ public class Phantom extends Mob implements Enemy {
List<Player> nearbyPlayers = serverLevel.getNearbyPlayers(
this.attackTargeting, Phantom.this, Phantom.this.getBoundingBox().inflate(16.0, 64.0, 16.0)
);
+ if (level().purpurConfig.phantomIgnorePlayersWithTorch) nearbyPlayers.removeIf(human -> TORCH.test(human.getItemInHand(net.minecraft.world.InteractionHand.MAIN_HAND)) || TORCH.test(human.getItemInHand(net.minecraft.world.InteractionHand.OFF_HAND))); // Purpur - Phantoms burn in light
if (!nearbyPlayers.isEmpty()) {
nearbyPlayers.sort(Comparator.<Player, Double>comparing(Entity::getY).reversed());
@@ -362,6 +367,7 @@ public class Phantom extends Mob implements Enemy {
this.nextScanTick = reducedTickDelay(60);
ServerLevel level = getServerLevel(Phantom.this.level());
List<Player> players = level.getNearbyPlayers(this.attackTargeting, Phantom.this, Phantom.this.getBoundingBox().inflate(16.0, 64.0, 16.0));
+ if (level().purpurConfig.phantomIgnorePlayersWithTorch) players.removeIf(human -> TORCH.test(human.getItemInHand(net.minecraft.world.InteractionHand.MAIN_HAND)) || TORCH.test(human.getItemInHand(net.minecraft.world.InteractionHand.OFF_HAND))); // Purpur - Phantoms burn in light
if (!players.isEmpty()) {
players.sort(Comparator.<Player, Double>comparing(Entity::getY).reversed());
@@ -736,6 +742,12 @@ public class Phantom extends Mob implements Enemy {
@@ -752,6 +758,12 @@ public class Phantom extends Mob implements Enemy {
return false;
} else if (!target.isAlive()) {
return false;

View File

@@ -5,24 +5,24 @@ Subject: [PATCH] Make entity breeding times configurable
diff --git a/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java b/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java
index 35aec6c3aa2f09f13954fda67902b3c975f566e3..fff139abc9341f3ab2dac568a922235dc5e81b3e 100644
index 5e448f83d2426fb09785b2899e1bf5950ced6608..4f04eebef9ecd84137ac067c5adcbe977c21a617 100644
--- a/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java
+++ b/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java
@@ -118,8 +118,10 @@ public class VillagerMakeLove extends Behavior<Villager> {
if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(breedOffspring, parent, partner, null, null, 0).isCancelled()) {
@@ -117,8 +117,10 @@ public class VillagerMakeLove extends Behavior<Villager> {
if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(child, source, target, null, null, 0).isCancelled()) {
return Optional.empty();
}
- parent.setAge(6000);
- partner.setAge(6000);
- source.setAge(6000);
- target.setAge(6000);
+ // Purpur start - Make entity breeding times configurable
+ parent.setAge(level.purpurConfig.villagerBreedingTicks);
+ partner.setAge(level.purpurConfig.villagerBreedingTicks);
+ source.setAge(level.purpurConfig.villagerBreedingTicks);
+ target.setAge(level.purpurConfig.villagerBreedingTicks);
+ // Purpur end - Make entity breeding times configurable
level.addFreshEntityWithPassengers(breedOffspring, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING);
level.addFreshEntityWithPassengers(child, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING);
// CraftBukkit end - call EntityBreedEvent
level.broadcastEntityEvent(breedOffspring, EntityEvent.LOVE_HEARTS);
level.broadcastEntityEvent(child, EntityEvent.LOVE_HEARTS);
diff --git a/net/minecraft/world/entity/animal/Animal.java b/net/minecraft/world/entity/animal/Animal.java
index 2e7e7c1913f5cbc20ce116c5ae3e185fc83094c0..53d04c412d36015a30ae2680f61651db6acbf2f2 100644
index 774210ebe09af15f85a919512dfd2f98e7bdee6e..407ffe0e6b5893c3abf0b1ff60fd0a27ec965e0c 100644
--- a/net/minecraft/world/entity/animal/Animal.java
+++ b/net/minecraft/world/entity/animal/Animal.java
@@ -46,6 +46,7 @@ public abstract class Animal extends AgeableMob {
@@ -31,26 +31,26 @@ index 2e7e7c1913f5cbc20ce116c5ae3e185fc83094c0..53d04c412d36015a30ae2680f61651db
public @Nullable ItemStack breedItem; // CraftBukkit - Add breedItem variable
+ public abstract int getPurpurBreedTime(); // Purpur - Make entity breeding times configurable
protected Animal(EntityType<? extends Animal> type, Level level) {
protected Animal(final EntityType<? extends Animal> type, final Level level) {
super(type, level);
@@ -271,8 +272,10 @@ public abstract class Animal extends AgeableMob {
player.awardStat(Stats.ANIMALS_BRED);
CriteriaTriggers.BRED_ANIMALS.trigger(player, this, animal, baby);
CriteriaTriggers.BRED_ANIMALS.trigger(player, this, partner, offspring);
} // Paper - Call EntityBreedEvent
- this.setAge(6000);
- animal.setAge(6000);
- partner.setAge(6000);
+ // Purpur start - Make entity breeding times configurable
+ this.setAge(this.getPurpurBreedTime());
+ animal.setAge(animal.getPurpurBreedTime());
+ partner.setAge(partner.getPurpurBreedTime());
+ // Purpur end - Make entity breeding times configurable
this.resetLove();
animal.resetLove();
partner.resetLove();
level.broadcastEntityEvent(this, EntityEvent.IN_LOVE_HEARTS);
diff --git a/net/minecraft/world/entity/animal/armadillo/Armadillo.java b/net/minecraft/world/entity/animal/armadillo/Armadillo.java
index 1f6b28531127ea2e5b291583f6bb6a236868fbf0..8ae1f8471f35028c1c469dc9cb9eac9b564a5c5e 100644
index 7c2c71a57b9278aea428e314462cebc08e168b50..83688ac732758ee0613fc2e187838b4607b8edc9 100644
--- a/net/minecraft/world/entity/animal/armadillo/Armadillo.java
+++ b/net/minecraft/world/entity/animal/armadillo/Armadillo.java
@@ -107,6 +107,13 @@ public class Armadillo extends Animal {
@@ -115,6 +115,13 @@ public class Armadillo extends Animal {
}
// Purpur end - Configurable entity base attributes
@@ -62,13 +62,13 @@ index 1f6b28531127ea2e5b291583f6bb6a236868fbf0..8ae1f8471f35028c1c469dc9cb9eac9b
+ // Purpur end - Make entity breeding times configurable
+
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder);
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
super.defineSynchedData(entityData);
diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java
index 3f9e15685ba52a5b9bd4282ba6de6751296975bf..79dfebbd72424d5a3a13d4ba89a555fdf782e703 100644
index c10b06f8adcd59869d043e48cfe3fdb60051c3db..d4178d85b74a41a0d2808681008f1686578db98d 100644
--- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java
+++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java
@@ -146,6 +146,13 @@ public class Axolotl extends Animal implements Bucketable {
@@ -143,6 +143,13 @@ public class Axolotl extends Animal implements Bucketable {
}
// Purpur end - Configurable entity base attributes
@@ -80,13 +80,13 @@ index 3f9e15685ba52a5b9bd4282ba6de6751296975bf..79dfebbd72424d5a3a13d4ba89a555fd
+ // Purpur end - Make entity breeding times configurable
+
@Override
public float getWalkTargetValue(BlockPos pos, LevelReader level) {
public float getWalkTargetValue(final BlockPos pos, final LevelReader level) {
return 0.0F;
diff --git a/net/minecraft/world/entity/animal/bee/Bee.java b/net/minecraft/world/entity/animal/bee/Bee.java
index 7d7ab4c5092ac085e8cd6d3a432feb683db5a282..473aa29e3075fcab44a14c2bc14d3f222b55cbad 100644
index f31b67e2bd4b0279f52bd7c2ee0e63c49fbcec17..36c5c555faa9a29ec742c97ea8a6fcf720e6d9a1 100644
--- a/net/minecraft/world/entity/animal/bee/Bee.java
+++ b/net/minecraft/world/entity/animal/bee/Bee.java
@@ -485,6 +485,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -488,6 +488,13 @@ public class Bee extends Animal implements FlyingAnimal, NeutralMob {
}
// Purpur end - Configurable entity base attributes
@@ -101,10 +101,10 @@ index 7d7ab4c5092ac085e8cd6d3a432feb683db5a282..473aa29e3075fcab44a14c2bc14d3f22
public long getPersistentAngerEndTime() {
return this.entityData.get(DATA_ANGER_END_TIME);
diff --git a/net/minecraft/world/entity/animal/camel/Camel.java b/net/minecraft/world/entity/animal/camel/Camel.java
index 95e86330e1e973c43e50bd4ac310212b8a057430..842b20242c323572d4c04d3a2d5fe21a54d53ed4 100644
index aeb8c71596a2393ac1fc67768052ce319fc25d6d..f2e87ebef0d52b2009658aae522398180a15cb92 100644
--- a/net/minecraft/world/entity/animal/camel/Camel.java
+++ b/net/minecraft/world/entity/animal/camel/Camel.java
@@ -97,6 +97,13 @@ public class Camel extends AbstractHorse {
@@ -103,6 +103,13 @@ public class Camel extends AbstractHorse {
}
// Purpur end - Ridables
@@ -116,13 +116,13 @@ index 95e86330e1e973c43e50bd4ac310212b8a057430..842b20242c323572d4c04d3a2d5fe21a
+ // Purpur end - Make entity breeding times configurable
+
@Override
protected void addAdditionalSaveData(ValueOutput output) {
protected void addAdditionalSaveData(final ValueOutput output) {
super.addAdditionalSaveData(output);
diff --git a/net/minecraft/world/entity/animal/chicken/Chicken.java b/net/minecraft/world/entity/animal/chicken/Chicken.java
index 52a0bf792337e2f1cf11e215b033caae21ee774b..029fe4ac952d9f56824de346d98b341bd0b9b65f 100644
index 0392c8a94801a1dee735ff610058fbb2180571fa..ccf7c4630e08d9be54a4634c642a4cd1cd542a82 100644
--- a/net/minecraft/world/entity/animal/chicken/Chicken.java
+++ b/net/minecraft/world/entity/animal/chicken/Chicken.java
@@ -103,6 +103,13 @@ public class Chicken extends Animal {
@@ -106,6 +106,13 @@ public class Chicken extends Animal {
}
// Purpur end - Configurable entity base attributes
@@ -137,10 +137,10 @@ index 52a0bf792337e2f1cf11e215b033caae21ee774b..029fe4ac952d9f56824de346d98b341b
protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this));
diff --git a/net/minecraft/world/entity/animal/cow/Cow.java b/net/minecraft/world/entity/animal/cow/Cow.java
index 5e5b239ebc774ae66f8c35a725ea917993239ef2..400b0a0a99590e3590cb66724acdc5ba9170f2c4 100644
index 33c0b8f2c43065ea89b3f9c6a519dde27620ed07..7981f60f10c44ab2459933cb15ee961103922364 100644
--- a/net/minecraft/world/entity/animal/cow/Cow.java
+++ b/net/minecraft/world/entity/animal/cow/Cow.java
@@ -54,6 +54,13 @@ public class Cow extends AbstractCow {
@@ -59,6 +59,13 @@ public class Cow extends AbstractCow {
}
// Purpur end - Configurable entity base attributes
@@ -152,10 +152,10 @@ index 5e5b239ebc774ae66f8c35a725ea917993239ef2..400b0a0a99590e3590cb66724acdc5ba
+ // Purpur end - Make entity breeding times configurable
+
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder);
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
super.defineSynchedData(entityData);
diff --git a/net/minecraft/world/entity/animal/cow/MushroomCow.java b/net/minecraft/world/entity/animal/cow/MushroomCow.java
index 85ad44eb3e64232cf1ea326257078c46288a613a..e2aa027dc7a39fa8a8868a7d153e838113fcf97b 100644
index d6ec397a14753526dd34ab3a7e69ae4be36c04a6..68a4edef68c9db6b2b0716fc6283e2c7345d4cda 100644
--- a/net/minecraft/world/entity/animal/cow/MushroomCow.java
+++ b/net/minecraft/world/entity/animal/cow/MushroomCow.java
@@ -85,6 +85,13 @@ public class MushroomCow extends AbstractCow implements Shearable {
@@ -170,10 +170,10 @@ index 85ad44eb3e64232cf1ea326257078c46288a613a..e2aa027dc7a39fa8a8868a7d153e8381
+ // Purpur end - Make entity breeding times configurable
+
@Override
public float getWalkTargetValue(BlockPos pos, LevelReader level) {
public float getWalkTargetValue(final BlockPos pos, final LevelReader level) {
return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos);
diff --git a/net/minecraft/world/entity/animal/equine/Donkey.java b/net/minecraft/world/entity/animal/equine/Donkey.java
index b85d967c7c809683e4576be30ed855941c6e68cc..d74a5cc2a43ef41fd00676bbd17fe4df9edb67ff 100644
index 1a130fc107315b40b4e34a97beb53f7fe0ced14f..8c3d3f0f24e6f5a9b8aa9bf58f3c8b679896017d 100644
--- a/net/minecraft/world/entity/animal/equine/Donkey.java
+++ b/net/minecraft/world/entity/animal/equine/Donkey.java
@@ -40,6 +40,13 @@ public class Donkey extends AbstractChestedHorse {
@@ -191,10 +191,10 @@ index b85d967c7c809683e4576be30ed855941c6e68cc..d74a5cc2a43ef41fd00676bbd17fe4df
public SoundEvent getAmbientSound() {
return SoundEvents.DONKEY_AMBIENT;
diff --git a/net/minecraft/world/entity/animal/equine/Horse.java b/net/minecraft/world/entity/animal/equine/Horse.java
index 9a97cd588fb2dc0f393b2c8768f4e45066a34850..ba9df659ed019f9e58991059fe99c1471bfc94d8 100644
index 8ba8430f41ce74736f405bfac2ef5de6fffe7d49..dbb586058f38b6c4f81e2f6567b7ae8ebbaff5a2 100644
--- a/net/minecraft/world/entity/animal/equine/Horse.java
+++ b/net/minecraft/world/entity/animal/equine/Horse.java
@@ -74,6 +74,13 @@ public class Horse extends AbstractHorse {
@@ -72,6 +72,13 @@ public class Horse extends AbstractHorse {
}
// Purpur end - Configurable entity base attributes
@@ -206,13 +206,13 @@ index 9a97cd588fb2dc0f393b2c8768f4e45066a34850..ba9df659ed019f9e58991059fe99c147
+ // Purpur end - Make entity breeding times configurable
+
@Override
protected void randomizeAttributes(RandomSource random) {
protected void randomizeAttributes(final RandomSource random) {
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt));
diff --git a/net/minecraft/world/entity/animal/equine/Llama.java b/net/minecraft/world/entity/animal/equine/Llama.java
index b54a535add643390a6164ab3f4a2fdd475d60162..960e48f5ae63d8c86758d2573510bf481ca4bca0 100644
index 12abeae3623b49819ab6f852c88ee86ed8c69948..b3c8ccbb3f79043427dcb6f383c4b02d35124689 100644
--- a/net/minecraft/world/entity/animal/equine/Llama.java
+++ b/net/minecraft/world/entity/animal/equine/Llama.java
@@ -152,6 +152,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
@@ -151,6 +151,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
}
// Purpur end - Configurable entity base attributes
@@ -227,7 +227,7 @@ index b54a535add643390a6164ab3f4a2fdd475d60162..960e48f5ae63d8c86758d2573510bf48
return false;
}
diff --git a/net/minecraft/world/entity/animal/equine/Mule.java b/net/minecraft/world/entity/animal/equine/Mule.java
index f49c8a61ac3883f7ff8ad8193ae9ea9136f54c45..180a807026437e949e3f7c3d59864ea328f6f03f 100644
index a866b93312391142b030605e2108fe522d3d8ddd..cf0f3c9d5f8ff348e6fb76db823da4cadce4fc5b 100644
--- a/net/minecraft/world/entity/animal/equine/Mule.java
+++ b/net/minecraft/world/entity/animal/equine/Mule.java
@@ -39,6 +39,13 @@ public class Mule extends AbstractChestedHorse {
@@ -245,7 +245,7 @@ index f49c8a61ac3883f7ff8ad8193ae9ea9136f54c45..180a807026437e949e3f7c3d59864ea3
public SoundEvent getAmbientSound() {
return SoundEvents.MULE_AMBIENT;
diff --git a/net/minecraft/world/entity/animal/equine/SkeletonHorse.java b/net/minecraft/world/entity/animal/equine/SkeletonHorse.java
index d8b7b787b98b86d16578abe1cd19321ad2c176c0..af0e326f5ff8fcb82353bac3143103928a6a08e6 100644
index fcc9b9f884aed489ab6016d1de3dfd861781d8e5..a4a878791be034140a50b901d5daf2533d299756 100644
--- a/net/minecraft/world/entity/animal/equine/SkeletonHorse.java
+++ b/net/minecraft/world/entity/animal/equine/SkeletonHorse.java
@@ -67,6 +67,13 @@ public class SkeletonHorse extends AbstractHorse {
@@ -263,7 +263,7 @@ index d8b7b787b98b86d16578abe1cd19321ad2c176c0..af0e326f5ff8fcb82353bac314310392
return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F);
}
diff --git a/net/minecraft/world/entity/animal/equine/TraderLlama.java b/net/minecraft/world/entity/animal/equine/TraderLlama.java
index deb0a1eb867daec57a644ce698fe50d79fd8960e..65ac46335d642d5dd8c01623721257a4fd53441d 100644
index bfae12b0a2b094dcd5953058f4d6245077a04fd7..7c41aecd2699725211babbac0350cb241f31ca41 100644
--- a/net/minecraft/world/entity/animal/equine/TraderLlama.java
+++ b/net/minecraft/world/entity/animal/equine/TraderLlama.java
@@ -70,6 +70,13 @@ public class TraderLlama extends Llama {
@@ -281,10 +281,10 @@ index deb0a1eb867daec57a644ce698fe50d79fd8960e..65ac46335d642d5dd8c01623721257a4
public boolean isTraderLlama() {
return true;
diff --git a/net/minecraft/world/entity/animal/equine/ZombieHorse.java b/net/minecraft/world/entity/animal/equine/ZombieHorse.java
index 8b8580f8c082a40f958ec61adf32dc7d1485ea68..fa2f18470123f98e336ab5c94bc791e9333356cb 100644
index ae429aec9be39d9af7da4671db15a4506da135d9..4be11663154a870a21832ddba05764a897ce90bd 100644
--- a/net/minecraft/world/entity/animal/equine/ZombieHorse.java
+++ b/net/minecraft/world/entity/animal/equine/ZombieHorse.java
@@ -81,6 +81,13 @@ public class ZombieHorse extends AbstractHorse {
@@ -78,6 +78,13 @@ public class ZombieHorse extends AbstractHorse {
}
// Purpur end - Configurable entity base attributes
@@ -299,7 +299,7 @@ index 8b8580f8c082a40f958ec61adf32dc7d1485ea68..fa2f18470123f98e336ab5c94bc791e9
return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 25.0);
}
diff --git a/net/minecraft/world/entity/animal/feline/Cat.java b/net/minecraft/world/entity/animal/feline/Cat.java
index b7c17aed96dce39cb03780ff251e0e38c3c6adb1..d0aa698ef99cf3b1926018314b4067cc1cd8ac2a 100644
index 4ae9c5e823fefbf5bc7efdfbab27ccd166a70b8b..5c235149eca10c216f0f8d6e645a439d7dbcfbc3 100644
--- a/net/minecraft/world/entity/animal/feline/Cat.java
+++ b/net/minecraft/world/entity/animal/feline/Cat.java
@@ -128,6 +128,13 @@ public class Cat extends TamableAnimal {
@@ -315,9 +315,9 @@ index b7c17aed96dce39cb03780ff251e0e38c3c6adb1..d0aa698ef99cf3b1926018314b4067cc
+
@Override
protected void registerGoals() {
this.temptGoal = new Cat.CatTemptGoal(this, 0.6, stack -> stack.is(ItemTags.CAT_FOOD), true);
this.temptGoal = new Cat.CatTemptGoal(this, 0.6, i -> i.is(ItemTags.CAT_FOOD), true);
diff --git a/net/minecraft/world/entity/animal/feline/Ocelot.java b/net/minecraft/world/entity/animal/feline/Ocelot.java
index c9a8dcfd1e46f97dee0393db3205049c0db1cefb..bf281fd4c050b87fd277ab68e812ab2dcd3d06aa 100644
index 4bf42db19d0f58338f32af1ab7c802c274a8581c..2accf49e8dd907c8a482e5317d07b28fc5492a1e 100644
--- a/net/minecraft/world/entity/animal/feline/Ocelot.java
+++ b/net/minecraft/world/entity/animal/feline/Ocelot.java
@@ -91,6 +91,13 @@ public class Ocelot extends Animal {
@@ -335,10 +335,10 @@ index c9a8dcfd1e46f97dee0393db3205049c0db1cefb..bf281fd4c050b87fd277ab68e812ab2d
return this.entityData.get(DATA_TRUSTING);
}
diff --git a/net/minecraft/world/entity/animal/fox/Fox.java b/net/minecraft/world/entity/animal/fox/Fox.java
index 6819bcb15ad6c85f41a098a9fdb73ce5a7987d8f..3c2f5e711c013a6f51093e94bc4b5518263607a2 100644
index 51b6e7ea13b03e0d64ec70f37ae6394be64bf247..9c049b34c062113a2241fdda2eaae808c0e8e0b1 100644
--- a/net/minecraft/world/entity/animal/fox/Fox.java
+++ b/net/minecraft/world/entity/animal/fox/Fox.java
@@ -197,6 +197,13 @@ public class Fox extends Animal {
@@ -201,6 +201,13 @@ public class Fox extends Animal {
}
// Purpur end - Configurable entity base attributes
@@ -350,10 +350,10 @@ index 6819bcb15ad6c85f41a098a9fdb73ce5a7987d8f..3c2f5e711c013a6f51093e94bc4b5518
+ // Purpur end - Make entity breeding times configurable
+
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder);
@@ -997,8 +1004,10 @@ public class Fox extends Animal {
CriteriaTriggers.BRED_ANIMALS.trigger(serverPlayer, this.animal, this.partner, fox);
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
super.defineSynchedData(entityData);
@@ -1016,8 +1023,10 @@ public class Fox extends Animal {
CriteriaTriggers.BRED_ANIMALS.trigger(loveCause, this.animal, this.partner, offspring);
}
- this.animal.setAge(6000);
@@ -364,12 +364,12 @@ index 6819bcb15ad6c85f41a098a9fdb73ce5a7987d8f..3c2f5e711c013a6f51093e94bc4b5518
+ // Purpur end - Make entity breeding times configurable
this.animal.resetLove();
this.partner.resetLove();
this.level.addFreshEntityWithPassengers(fox, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason
this.level.addFreshEntityWithPassengers(offspring, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason
diff --git a/net/minecraft/world/entity/animal/frog/Frog.java b/net/minecraft/world/entity/animal/frog/Frog.java
index 5b4bb6fd100abc569c5da167735a220014bf5d8c..7d6dbdef68b25e774b5a83bb8aeb2535246459aa 100644
index 977ee6a71e0c52f115a221b09248596db2534739..3d2f06b4e686345632a2493366177e9002cae554 100644
--- a/net/minecraft/world/entity/animal/frog/Frog.java
+++ b/net/minecraft/world/entity/animal/frog/Frog.java
@@ -164,6 +164,13 @@ public class Frog extends Animal {
@@ -141,6 +141,13 @@ public class Frog extends Animal {
}
// Purpur end - Ridables
@@ -381,13 +381,13 @@ index 5b4bb6fd100abc569c5da167735a220014bf5d8c..7d6dbdef68b25e774b5a83bb8aeb2535
+ // Purpur end - Make entity breeding times configurable
+
@Override
protected Brain.Provider<Frog> brainProvider() {
return Brain.provider(MEMORY_TYPES, SENSOR_TYPES);
protected Brain<Frog> makeBrain(final Brain.Packed packedBrain) {
return BRAIN_PROVIDER.makeBrain(this, packedBrain);
diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java
index 6e4d611c959960e8d13f79704c176b41ea5c12c4..07ba57ae845024e0f2fa03a68e126ec79bfc6b15 100644
index 82c27c0e6e9f72eceb5a498af4aad6a7bd766513..da763ba40fdc52d6f6fec97e5e288fbef343ead6 100644
--- a/net/minecraft/world/entity/animal/goat/Goat.java
+++ b/net/minecraft/world/entity/animal/goat/Goat.java
@@ -132,6 +132,13 @@ public class Goat extends Animal {
@@ -117,6 +117,13 @@ public class Goat extends Animal {
}
// Purpur end - Ridables
@@ -399,13 +399,13 @@ index 6e4d611c959960e8d13f79704c176b41ea5c12c4..07ba57ae845024e0f2fa03a68e126ec7
+ // Purpur end - Make entity breeding times configurable
+
@Override
protected Brain.Provider<Goat> brainProvider() {
return Brain.provider(MEMORY_TYPES, SENSOR_TYPES);
protected Brain<Goat> makeBrain(final Brain.Packed packedBrain) {
return BRAIN_PROVIDER.makeBrain(this, packedBrain);
diff --git a/net/minecraft/world/entity/animal/happyghast/HappyGhast.java b/net/minecraft/world/entity/animal/happyghast/HappyGhast.java
index cd888e070a72ff46d35a4425a0013c617b31e159..30204224ed83f6d3cfd64640b332b23cb74d379f 100644
index a8e242fcf7a52fb51bd686f257f7e3d5380e38d5..75a32b65da7080391d0c37622db9cb98c5e092b6 100644
--- a/net/minecraft/world/entity/animal/happyghast/HappyGhast.java
+++ b/net/minecraft/world/entity/animal/happyghast/HappyGhast.java
@@ -146,6 +146,13 @@ public class HappyGhast extends Animal {
@@ -154,6 +154,13 @@ public class HappyGhast extends Animal {
}
// Purpur end - Configurable entity base attributes
@@ -420,10 +420,10 @@ index cd888e070a72ff46d35a4425a0013c617b31e159..30204224ed83f6d3cfd64640b332b23c
protected void ageBoundaryReached() {
if (this.isBaby()) {
diff --git a/net/minecraft/world/entity/animal/nautilus/Nautilus.java b/net/minecraft/world/entity/animal/nautilus/Nautilus.java
index a32ac3907883f65c2a00173128a4a011fd552932..98199869b70c7c0f2b744ac74961c77d473617ca 100644
index cc38312d0a59529e7b8f799ffec2f917c9aa0e9b..e89c0638f7b6d1a463a895dbab5994c15aa4add3 100644
--- a/net/minecraft/world/entity/animal/nautilus/Nautilus.java
+++ b/net/minecraft/world/entity/animal/nautilus/Nautilus.java
@@ -32,6 +32,13 @@ public class Nautilus extends AbstractNautilus {
@@ -39,6 +39,13 @@ public class Nautilus extends AbstractNautilus {
}
// Purpur end - Configurable entity base attributes
@@ -435,13 +435,13 @@ index a32ac3907883f65c2a00173128a4a011fd552932..98199869b70c7c0f2b744ac74961c77d
+ // Purpur end - Make entity breeding times configurable
+
@Override
protected Brain.Provider<Nautilus> brainProvider() {
return NautilusAi.brainProvider();
protected Brain<Nautilus> makeBrain(final Brain.Packed packedBrain) {
return BRAIN_PROVIDER.makeBrain(this, packedBrain);
diff --git a/net/minecraft/world/entity/animal/nautilus/ZombieNautilus.java b/net/minecraft/world/entity/animal/nautilus/ZombieNautilus.java
index 7ef4a15ba2b315a41480484572a6c6898340466b..94383c5020b6631203ddc4e0a58a222729ffe9a2 100644
index 087e768c35c2c2af191c75648b278154ce5e593c..18bfb321e3728d3fa0596da0b86e4b76ced2178a 100644
--- a/net/minecraft/world/entity/animal/nautilus/ZombieNautilus.java
+++ b/net/minecraft/world/entity/animal/nautilus/ZombieNautilus.java
@@ -54,6 +54,13 @@ public class ZombieNautilus extends AbstractNautilus {
@@ -59,6 +59,13 @@ public class ZombieNautilus extends AbstractNautilus {
}
// Purpur end - Configurable entity base attributes
@@ -456,10 +456,10 @@ index 7ef4a15ba2b315a41480484572a6c6898340466b..94383c5020b6631203ddc4e0a58a2227
return AbstractNautilus.createAttributes().add(Attributes.MOVEMENT_SPEED, 1.1F);
}
diff --git a/net/minecraft/world/entity/animal/panda/Panda.java b/net/minecraft/world/entity/animal/panda/Panda.java
index d5060fb8e9a711e6230f2c4950521d8b4f5c01d2..163fe697f57459b36885fa3a18f41370347cab38 100644
index 8844c9279dcdc2d81a63f665d96e9d60f0ab125b..02d5949fb91bbee84fa067dac14d20f53f4a029b 100644
--- a/net/minecraft/world/entity/animal/panda/Panda.java
+++ b/net/minecraft/world/entity/animal/panda/Panda.java
@@ -143,6 +143,13 @@ public class Panda extends Animal {
@@ -146,6 +146,13 @@ public class Panda extends Animal {
}
// Purpur end - Configurable entity base attributes
@@ -471,10 +471,10 @@ index d5060fb8e9a711e6230f2c4950521d8b4f5c01d2..163fe697f57459b36885fa3a18f41370
+ // Purpur end - Make entity breeding times configurable
+
@Override
protected boolean canDispenserEquipIntoSlot(EquipmentSlot slot) {
protected boolean canDispenserEquipIntoSlot(final EquipmentSlot slot) {
return slot == EquipmentSlot.MAINHAND && this.canPickUpLoot();
diff --git a/net/minecraft/world/entity/animal/parrot/Parrot.java b/net/minecraft/world/entity/animal/parrot/Parrot.java
index 7480a491533a47882eaf4b36c320adf45ebfb190..0d62046cb33ed750ab27229fe4f0b43c3a1dd5f4 100644
index d3b9a3ac77f03e3b6b580a678283f85a19cb660e..af3d3b90f2e4d433b3b842dbc37d8c507a73dc1f 100644
--- a/net/minecraft/world/entity/animal/parrot/Parrot.java
+++ b/net/minecraft/world/entity/animal/parrot/Parrot.java
@@ -207,6 +207,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal {
@@ -490,12 +490,12 @@ index 7480a491533a47882eaf4b36c320adf45ebfb190..0d62046cb33ed750ab27229fe4f0b43c
+
@Override
public @Nullable SpawnGroupData finalizeSpawn(
ServerLevelAccessor level, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData spawnGroupData
final ServerLevelAccessor level, final DifficultyInstance difficulty, final EntitySpawnReason spawnReason, @Nullable SpawnGroupData groupData
diff --git a/net/minecraft/world/entity/animal/pig/Pig.java b/net/minecraft/world/entity/animal/pig/Pig.java
index aeb9e57db2233bff20fa5208a679ac9bcb8d5026..0cb09a058c2d21b10677482792b230464ed9f951 100644
index 02ed5052bd06844ec6811c4249398ba8ba8c4ea6..514f13a6965b5f53890ddd2e47ea89e0c1a515c1 100644
--- a/net/minecraft/world/entity/animal/pig/Pig.java
+++ b/net/minecraft/world/entity/animal/pig/Pig.java
@@ -88,6 +88,13 @@ public class Pig extends Animal implements ItemSteerable {
@@ -93,6 +93,13 @@ public class Pig extends Animal implements ItemSteerable {
}
// Purpur end - Configurable entity base attributes
@@ -510,10 +510,10 @@ index aeb9e57db2233bff20fa5208a679ac9bcb8d5026..0cb09a058c2d21b10677482792b23046
protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this));
diff --git a/net/minecraft/world/entity/animal/polarbear/PolarBear.java b/net/minecraft/world/entity/animal/polarbear/PolarBear.java
index 904e4c641f1892220f263528c65f6f81708399cd..97edd950e2142e73ad947590c99d6d5529cbd44c 100644
index e50c934e2c9959f843aae2b2dd05a682ca5f59fc..6d4713663c94e91da7d809e65fa205aff2782f38 100644
--- a/net/minecraft/world/entity/animal/polarbear/PolarBear.java
+++ b/net/minecraft/world/entity/animal/polarbear/PolarBear.java
@@ -126,6 +126,13 @@ public class PolarBear extends Animal implements NeutralMob {
@@ -127,6 +127,13 @@ public class PolarBear extends Animal implements NeutralMob {
}
// Purpur end - Configurable entity base attributes
@@ -525,13 +525,13 @@ index 904e4c641f1892220f263528c65f6f81708399cd..97edd950e2142e73ad947590c99d6d55
+ // Purpur end - Make entity breeding times configurable
+
@Override
public @Nullable AgeableMob getBreedOffspring(ServerLevel level, AgeableMob partner) {
public @Nullable AgeableMob getBreedOffspring(final ServerLevel level, final AgeableMob partner) {
return EntityType.POLAR_BEAR.create(level, EntitySpawnReason.BREEDING);
diff --git a/net/minecraft/world/entity/animal/rabbit/Rabbit.java b/net/minecraft/world/entity/animal/rabbit/Rabbit.java
index cfbab57dd0527c5e2f17718f3974059eb881c2ea..061418a25d359574c4ff44327082b08b4094ee1c 100644
index bf643b9e6929890f061ac2c44b196460234095c4..3aefbdc3e537bc53bba296c7876dee93c95a77ca 100644
--- a/net/minecraft/world/entity/animal/rabbit/Rabbit.java
+++ b/net/minecraft/world/entity/animal/rabbit/Rabbit.java
@@ -156,6 +156,13 @@ public class Rabbit extends Animal {
@@ -170,6 +170,13 @@ public class Rabbit extends Animal {
}
// Purpur end - Configurable entity base attributes
@@ -546,7 +546,7 @@ index cfbab57dd0527c5e2f17718f3974059eb881c2ea..061418a25d359574c4ff44327082b08b
public void registerGoals() {
this.goalSelector.addGoal(1, new FloatGoal(this));
diff --git a/net/minecraft/world/entity/animal/sheep/Sheep.java b/net/minecraft/world/entity/animal/sheep/Sheep.java
index 1d60d35c1330418009f7d1d0b60d263559b68b7f..0e4505474a50d57338c16648cb6049d35455fdc6 100644
index 8d2b5a60ff267452a9724159db8df956a3fc576c..9cc59891521963204399b7f67d94bb78c7e75fb6 100644
--- a/net/minecraft/world/entity/animal/sheep/Sheep.java
+++ b/net/minecraft/world/entity/animal/sheep/Sheep.java
@@ -88,6 +88,13 @@ public class Sheep extends Animal implements Shearable {
@@ -564,10 +564,10 @@ index 1d60d35c1330418009f7d1d0b60d263559b68b7f..0e4505474a50d57338c16648cb6049d3
protected void registerGoals() {
this.eatBlockGoal = new EatBlockGoal(this);
diff --git a/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/net/minecraft/world/entity/animal/sniffer/Sniffer.java
index eb6675394ecc5bba67e0f8bb0220ad92ef2b5e4f..7ef3c94f63c8a25d09e69b818ecdf79795803570 100644
index 7335e46f249b9a88ca0401493636f6e06c0e196d..f169d075cdaa1426c152a8f2682dbaba23de4ccc 100644
--- a/net/minecraft/world/entity/animal/sniffer/Sniffer.java
+++ b/net/minecraft/world/entity/animal/sniffer/Sniffer.java
@@ -114,6 +114,13 @@ public class Sniffer extends Animal {
@@ -119,6 +119,13 @@ public class Sniffer extends Animal {
}
// Purpur end - Configurable entity base attributes
@@ -579,10 +579,10 @@ index eb6675394ecc5bba67e0f8bb0220ad92ef2b5e4f..7ef3c94f63c8a25d09e69b818ecdf797
+ // Purpur end - Make entity breeding times configurable
+
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder);
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
super.defineSynchedData(entityData);
diff --git a/net/minecraft/world/entity/animal/turtle/Turtle.java b/net/minecraft/world/entity/animal/turtle/Turtle.java
index 8d9a1fe887c39588e43e4ccfc46151a033c8ccb7..fce1b1a22e091a1c05650c72e1ceb83e1a1d1ed1 100644
index 2dfcf0c9f8eb762d1683d2841a05219c497fddfc..62d9fce83cc44165c5356049a12bf6081c925857 100644
--- a/net/minecraft/world/entity/animal/turtle/Turtle.java
+++ b/net/minecraft/world/entity/animal/turtle/Turtle.java
@@ -112,6 +112,13 @@ public class Turtle extends Animal {
@@ -596,8 +596,8 @@ index 8d9a1fe887c39588e43e4ccfc46151a033c8ccb7..fce1b1a22e091a1c05650c72e1ceb83e
+ }
+ // Purpur end - Make entity breeding times configurable
+
public void setHomePos(BlockPos homePos) {
this.homePos = homePos;
public void setHomePos(final BlockPos pos) {
this.homePos = pos;
}
@@ -343,8 +350,10 @@ public class Turtle extends Animal {
}
@@ -613,10 +613,10 @@ index 8d9a1fe887c39588e43e4ccfc46151a033c8ccb7..fce1b1a22e091a1c05650c72e1ceb83e
this.partner.resetLove();
RandomSource random = this.animal.getRandom();
diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java
index 7bccee8b5dd689bbff18f34d3afac52bfe34aa42..08a1bafa0e45dbdbf8bdc4d5cb654d080590707d 100644
index 5605c3ecb8ffaace4b21e3bd5bd3d7714b7ea83c..0561b38982c205edc848b1650152491698a80e29 100644
--- a/net/minecraft/world/entity/animal/wolf/Wolf.java
+++ b/net/minecraft/world/entity/animal/wolf/Wolf.java
@@ -216,6 +216,13 @@ public class Wolf extends TamableAnimal implements NeutralMob {
@@ -213,6 +213,13 @@ public class Wolf extends TamableAnimal implements NeutralMob {
}
// Purpur end - Configurable entity base attributes
@@ -631,10 +631,10 @@ index 7bccee8b5dd689bbff18f34d3afac52bfe34aa42..08a1bafa0e45dbdbf8bdc4d5cb654d08
protected void registerGoals() {
this.goalSelector.addGoal(1, new FloatGoal(this));
diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java
index 3308e954c8f6deff89c6df0af01f7774e36b0385..ad6515c2dcde0079095c6777f56319e9901850f8 100644
index f8134a362a2faa49beccb840ea8a899aa4681638..38a17c219bce1a8a8a67b136e0eaf5cf15ec94fd 100644
--- a/net/minecraft/world/entity/monster/Strider.java
+++ b/net/minecraft/world/entity/monster/Strider.java
@@ -117,6 +117,13 @@ public class Strider extends Animal implements ItemSteerable {
@@ -118,6 +118,13 @@ public class Strider extends Animal implements ItemSteerable {
}
// Purpur end - Configurable entity base attributes
@@ -646,13 +646,13 @@ index 3308e954c8f6deff89c6df0af01f7774e36b0385..ad6515c2dcde0079095c6777f56319e9
+ // Purpur end - Make entity breeding times configurable
+
public static boolean checkStriderSpawnRules(
EntityType<Strider> entityType, LevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random
) {
final EntityType<Strider> ignoredType,
final LevelAccessor level,
diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java
index baf81e1919e64af9d6da0a49b19e5f34cf962a79..4498fe26dff2cdec8e90d6559a66ebe7859195bb 100644
index 352139672f2cf1a7d624db4cc5bdef3ab0c9b942..d158807f22a0a08614b2d7054663ef2782a519e3 100644
--- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java
+++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java
@@ -122,6 +122,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
@@ -98,6 +98,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
}
// Purpur end - Configurable entity base attributes
@@ -664,5 +664,5 @@ index baf81e1919e64af9d6da0a49b19e5f34cf962a79..4498fe26dff2cdec8e90d6559a66ebe7
+ // Purpur end - Make entity breeding times configurable
+
@VisibleForTesting
public void setTimeInOverworld(int timeInOverworld) {
public void setTimeInOverworld(final int timeInOverworld) {
this.timeInOverworld = timeInOverworld;

View File

@@ -6,25 +6,25 @@ Subject: [PATCH] Apply display names from item forms of entities to entities
diff --git a/net/minecraft/world/entity/decoration/ArmorStand.java b/net/minecraft/world/entity/decoration/ArmorStand.java
index 959037a01841de06767522512b92e96be7c72b56..c7be4713a526171d2c4b9642d28f1a246e294ff7 100644
index 6490da07840f811fdbbd3c5dfefe4494fe7e7494..0fd3cad21382d3078d15f74c5616b0b70ddd8383 100644
--- a/net/minecraft/world/entity/decoration/ArmorStand.java
+++ b/net/minecraft/world/entity/decoration/ArmorStand.java
@@ -451,6 +451,7 @@ public class ArmorStand extends LivingEntity {
@@ -452,6 +452,7 @@ public class ArmorStand extends LivingEntity {
private org.bukkit.event.entity.EntityDeathEvent brokenByPlayer(ServerLevel level, DamageSource damageSource) { // Paper
ItemStack itemStack = new ItemStack(Items.ARMOR_STAND);
private org.bukkit.event.entity.EntityDeathEvent brokenByPlayer(final ServerLevel level, final DamageSource source) { // Paper
ItemStack result = new ItemStack(Items.ARMOR_STAND);
+ if (level.purpurConfig.persistentDroppableEntityDisplayNames) // Purpur - Apply display names from item forms of entities to entities and vice versa
itemStack.set(DataComponents.CUSTOM_NAME, this.getCustomName());
this.drops.add(new DefaultDrop(itemStack, stack -> Block.popResource(this.level(), this.blockPosition(), stack))); // CraftBukkit - add to drops // Paper - Restore vanilla drops behavior
return this.brokenByAnything(level, damageSource); // Paper
result.set(DataComponents.CUSTOM_NAME, this.getCustomName());
this.drops.add(new DefaultDrop(result, stack -> Block.popResource(this.level(), this.blockPosition(), stack))); // CraftBukkit - add to drops // Paper - Restore vanilla drops behavior
return this.brokenByAnything(level, source); // Paper
diff --git a/net/minecraft/world/entity/decoration/ItemFrame.java b/net/minecraft/world/entity/decoration/ItemFrame.java
index 5f518a7469953f50135ec53d7c6b77b9acbafed9..d5fec174e6accbf93fd70ed1ba64135fb879d0b2 100644
index 898f64de427b84cbf9b0e5198098f8e2e9040928..bc12a7a96d8db8eb6ad2bcfccaa69464c1e2170d 100644
--- a/net/minecraft/world/entity/decoration/ItemFrame.java
+++ b/net/minecraft/world/entity/decoration/ItemFrame.java
@@ -246,7 +246,11 @@ public class ItemFrame extends HangingEntity {
this.removeFramedMap(item);
this.removeFramedMap(itemStack);
} else {
if (dropItem) {
if (withFrame) {
- this.spawnAtLocation(level, this.getFrameItemStack());
+ // Purpur start - Apply display names from item forms of entities to entities and vice versa
+ final ItemStack itemFrame = this.getFrameItemStack();
@@ -33,15 +33,15 @@ index 5f518a7469953f50135ec53d7c6b77b9acbafed9..d5fec174e6accbf93fd70ed1ba64135f
+ // Purpur end - Apply display names from item forms of entities to entities and vice versa
}
if (!item.isEmpty()) {
if (!itemStack.isEmpty()) {
diff --git a/net/minecraft/world/entity/decoration/painting/Painting.java b/net/minecraft/world/entity/decoration/painting/Painting.java
index 682d6e8c400e3343815be83d74dafe7f16477ba2..32b7bfec3d169166fb607b68e4abf484756327ee 100644
index 7195082470ca411caf9c071e970edddae93cb127..9740bb9ec78cad900b9fa7d8ed6fca6a4016de03 100644
--- a/net/minecraft/world/entity/decoration/painting/Painting.java
+++ b/net/minecraft/world/entity/decoration/painting/Painting.java
@@ -182,7 +182,11 @@ public class Painting extends HangingEntity {
if (level.getGameRules().get(GameRules.ENTITY_DROPS)) {
this.playSound(SoundEvents.PAINTING_BREAK, 1.0F, 1.0F);
if (!(entity instanceof Player player && player.hasInfiniteMaterials())) {
if (!(causedBy instanceof Player player && player.hasInfiniteMaterials())) {
- this.spawnAtLocation(level, Items.PAINTING);
+ // Purpur start - Apply display names from item forms of entities to entities and vice versa
+ final ItemStack painting = new ItemStack(Items.PAINTING);
@@ -52,7 +52,7 @@ index 682d6e8c400e3343815be83d74dafe7f16477ba2..32b7bfec3d169166fb607b68e4abf484
}
}
diff --git a/net/minecraft/world/entity/vehicle/boat/AbstractBoat.java b/net/minecraft/world/entity/vehicle/boat/AbstractBoat.java
index d17269c9274bd29c761403138bfc56355c800d9c..e5854af03a58dc26a100feac59357862e46bfeed 100644
index 390f0ec98e9e76239d67dd40d0b183d287bcf1d1..725f2c90fb0b12553441fd91a94ce5c890e1f2b1 100644
--- a/net/minecraft/world/entity/vehicle/boat/AbstractBoat.java
+++ b/net/minecraft/world/entity/vehicle/boat/AbstractBoat.java
@@ -818,7 +818,13 @@ public abstract class AbstractBoat extends VehicleEntity implements Leashable {
@@ -69,9 +69,9 @@ index d17269c9274bd29c761403138bfc56355c800d9c..e5854af03a58dc26a100feac59357862
+ // Purpur end - Apply display names from item forms of entities to entities and vice versa
}
public static enum Status {
@Override
diff --git a/net/minecraft/world/item/ArmorStandItem.java b/net/minecraft/world/item/ArmorStandItem.java
index 962483d6f7225f13f121141882262d36dacad8cb..89d4bc00898fd8f6d40cda87c04c5983e2ea223c 100644
index 4b4cc75640cc567a74c99ec8653436b2f2a50df6..47d1e104d910addcf8322976061ef38d8c791ea8 100644
--- a/net/minecraft/world/item/ArmorStandItem.java
+++ b/net/minecraft/world/item/ArmorStandItem.java
@@ -51,6 +51,10 @@ public class ArmorStandItem extends Item {
@@ -79,14 +79,14 @@ index 962483d6f7225f13f121141882262d36dacad8cb..89d4bc00898fd8f6d40cda87c04c5983
}
// CraftBukkit end
+ // Purpur start - Apply display names from item forms of entities to entities and vice versa
+ if (!serverLevel.purpurConfig.persistentDroppableEntityDisplayNames) armorStand.setCustomName(null);
+ if (serverLevel.purpurConfig.armorstandSetNameVisible && armorStand.getCustomName() != null) armorStand.setCustomNameVisible(true);
+ if (!serverLevel.purpurConfig.persistentDroppableEntityDisplayNames) entity.setCustomName(null);
+ if (serverLevel.purpurConfig.armorstandSetNameVisible && entity.getCustomName() != null) entity.setCustomNameVisible(true);
+ // Purpur end - Apply display names from item forms of entities to entities and vice versa
serverLevel.addFreshEntityWithPassengers(armorStand);
level.playSound(
null, armorStand.getX(), armorStand.getY(), armorStand.getZ(), SoundEvents.ARMOR_STAND_PLACE, SoundSource.BLOCKS, 0.75F, 0.8F
serverLevel.addFreshEntityWithPassengers(entity);
level.playSound(null, entity.getX(), entity.getY(), entity.getZ(), SoundEvents.ARMOR_STAND_PLACE, SoundSource.BLOCKS, 0.75F, 0.8F);
entity.gameEvent(GameEvent.ENTITY_PLACE, context.getPlayer());
diff --git a/net/minecraft/world/item/BoatItem.java b/net/minecraft/world/item/BoatItem.java
index a8732056d0086a0932e82f70396a8849bf8d0ee1..2219d5e3e3d1aaa9f729205191a1f549ed662e2e 100644
index cd7f38ab2553062dcd003bd6f758e4aba77051ea..2b90dec5d564f05f350637a9645d76d4ab7d6126 100644
--- a/net/minecraft/world/item/BoatItem.java
+++ b/net/minecraft/world/item/BoatItem.java
@@ -63,6 +63,7 @@ public class BoatItem extends Item {
@@ -98,15 +98,15 @@ index a8732056d0086a0932e82f70396a8849bf8d0ee1..2219d5e3e3d1aaa9f729205191a1f549
return InteractionResult.FAIL;
} else {
diff --git a/net/minecraft/world/item/HangingEntityItem.java b/net/minecraft/world/item/HangingEntityItem.java
index e9403c7c857bfaf09d8f8851b468aa4431c5be54..ecc890ae91475420215b61311ff959d9c522202d 100644
index 1e30fe428914c8ae4f6caf3cb5a05ced4e183393..c07b334eb05fd277925b684256591d505e5fd46a 100644
--- a/net/minecraft/world/item/HangingEntityItem.java
+++ b/net/minecraft/world/item/HangingEntityItem.java
@@ -59,7 +59,7 @@ public class HangingEntityItem extends Item {
hangingEntity = new GlowItemFrame(level, blockPos, clickedFace);
entity = new GlowItemFrame(level, blockPos, clickedFace);
}
- EntityType.<HangingEntity>createDefaultStackConfig(level, itemInHand, player).accept(hangingEntity);
+ EntityType.<HangingEntity>appendDefaultStackConfig(entity -> {if (!level.purpurConfig.persistentDroppableEntityDisplayNames) entity.setCustomName(null);}, level, itemInHand, player).accept(hangingEntity); // Purpur - Apply display names from item forms of entities to entities and vice versa
if (hangingEntity.survives()) {
- EntityType.<HangingEntity>createDefaultStackConfig(level, itemInHand, player).accept(entity);
+ EntityType.<HangingEntity>appendDefaultStackConfig(entity1 -> {if (!level.purpurConfig.persistentDroppableEntityDisplayNames) entity1.setCustomName(null);}, level, itemInHand, player).accept(entity); // Purpur - Apply display names from item forms of entities to entities and vice versa
if (entity.survives()) {
if (!level.isClientSide()) {
// CraftBukkit start - fire HangingPlaceEvent

View File

@@ -8,7 +8,7 @@ farm Nether Wart. Reimplemented based on a feature of the carpet-extra
mod.
diff --git a/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java b/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java
index 23c9363f03a74a2ddd15ffa1da4e0910dcfe2eb4..83aac5dcc51fbc2cc9ee45c155fb2b5b67293a96 100644
index c49f72d3554c5cf49cbbc57897288da876b4e5f5..9318b27ca960ee00774892b3fd244b0fca1f6e35 100644
--- a/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java
+++ b/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java
@@ -31,6 +31,7 @@ public class HarvestFarmland extends Behavior<Villager> {
@@ -20,48 +20,48 @@ index 23c9363f03a74a2ddd15ffa1da4e0910dcfe2eb4..83aac5dcc51fbc2cc9ee45c155fb2b5b
public HarvestFarmland() {
super(
@@ -49,9 +50,10 @@ public class HarvestFarmland extends Behavior<Villager> {
protected boolean checkExtraStartConditions(ServerLevel level, Villager owner) {
protected boolean checkExtraStartConditions(final ServerLevel level, final Villager body) {
if (!level.getGameRules().get(GameRules.MOB_GRIEFING)) {
return false;
- } else if (!owner.getVillagerData().profession().is(VillagerProfession.FARMER)) {
+ } else if (!owner.getVillagerData().profession().is(VillagerProfession.FARMER) && !(level.purpurConfig.villagerClericsFarmWarts && owner.getVillagerData().profession().is(VillagerProfession.CLERIC))) { // Purpur - Option for Villager Clerics to farm Nether Wart
- } else if (!body.getVillagerData().profession().is(VillagerProfession.FARMER)) {
+ } else if (!body.getVillagerData().profession().is(VillagerProfession.FARMER) && !(level.purpurConfig.villagerClericsFarmWarts && body.getVillagerData().profession().is(VillagerProfession.CLERIC))) { // Purpur - Option for Villager Clerics to farm Nether Wart
return false;
} else {
+ if (!this.clericWartFarmer && owner.getVillagerData().profession().is(VillagerProfession.CLERIC)) this.clericWartFarmer = true; // Purpur - Option for Villager Clerics to farm Nether Wart
BlockPos.MutableBlockPos mutableBlockPos = owner.blockPosition().mutable();
+ if (!this.clericWartFarmer && body.getVillagerData().profession().is(VillagerProfession.CLERIC)) this.clericWartFarmer = true; // Purpur - Option for Villager Clerics to farm Nether Wart
BlockPos.MutableBlockPos mutPos = body.blockPosition().mutable();
this.validFarmlandAroundVillager.clear();
@@ -81,6 +83,7 @@ public class HarvestFarmland extends Behavior<Villager> {
BlockState blockState = level.getBlockState(pos);
Block block = blockState.getBlock();
Block block1 = level.getBlockState(pos.below()).getBlock();
+ if (this.clericWartFarmer) return block == net.minecraft.world.level.block.Blocks.NETHER_WART && blockState.getValue(net.minecraft.world.level.block.NetherWartBlock.AGE) == 3 || blockState.isAir() && block1 == net.minecraft.world.level.block.Blocks.SOUL_SAND; // Purpur - Option for Villager Clerics to farm Nether Wart
return block instanceof CropBlock && ((CropBlock)block).isMaxAge(blockState) || blockState.isAir() && block1 instanceof FarmBlock;
BlockState state = level.getBlockState(blockPos);
Block block = state.getBlock();
Block blockBelow = level.getBlockState(blockPos.below()).getBlock();
+ if (this.clericWartFarmer) return block == net.minecraft.world.level.block.Blocks.NETHER_WART && state.getValue(net.minecraft.world.level.block.NetherWartBlock.AGE) == 3 || state.isAir() && block == net.minecraft.world.level.block.Blocks.SOUL_SAND; // Purpur - Option for Villager Clerics to farm Nether Wart
return block instanceof CropBlock && ((CropBlock)block).isMaxAge(state) || state.isAir() && blockBelow instanceof FarmlandBlock;
}
@@ -107,19 +110,19 @@ public class HarvestFarmland extends Behavior<Villager> {
BlockState blockState = level.getBlockState(this.aboveFarmlandPos);
Block block = blockState.getBlock();
Block block1 = level.getBlockState(this.aboveFarmlandPos.below()).getBlock();
Block blockBelow = level.getBlockState(this.aboveFarmlandPos.below()).getBlock();
- if (block instanceof CropBlock && ((CropBlock)block).isMaxAge(blockState)) {
+ if (block instanceof CropBlock && ((CropBlock)block).isMaxAge(blockState) && !this.clericWartFarmer || this.clericWartFarmer && block == net.minecraft.world.level.block.Blocks.NETHER_WART && blockState.getValue(net.minecraft.world.level.block.NetherWartBlock.AGE) == 3) { // Purpur - Option for Villager Clerics to farm Nether Wart
if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(owner, this.aboveFarmlandPos, blockState.getFluidState().createLegacyBlock())) { // CraftBukkit // Paper - fix wrong block state
level.destroyBlock(this.aboveFarmlandPos, true, owner);
if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(body, this.aboveFarmlandPos, blockState.getFluidState().createLegacyBlock())) { // CraftBukkit // Paper - fix wrong block state
level.destroyBlock(this.aboveFarmlandPos, true, body);
} // CraftBukkit
}
- if (blockState.isAir() && block1 instanceof FarmBlock && owner.hasFarmSeeds()) {
+ if (blockState.isAir() && block1 instanceof FarmBlock && !this.clericWartFarmer || this.clericWartFarmer && block1 == net.minecraft.world.level.block.Blocks.SOUL_SAND && owner.hasFarmSeeds()) { // Purpur - Option for Villager Clerics to farm Nether Wart
SimpleContainer inventory = owner.getInventory();
- if (blockState.isAir() && blockBelow instanceof FarmlandBlock && body.hasFarmSeeds()) {
+ if (blockState.isAir() && blockBelow instanceof FarmlandBlock && !this.clericWartFarmer || this.clericWartFarmer && blockBelow == net.minecraft.world.level.block.Blocks.SOUL_SAND && body.hasFarmSeeds()) { // Purpur - Option for Villager Clerics to farm Nether Wart
SimpleContainer inventory = body.getInventory();
for (int i = 0; i < inventory.getContainerSize(); i++) {
ItemStack item = inventory.getItem(i);
boolean flag = false;
- if (!item.isEmpty() && item.is(ItemTags.VILLAGER_PLANTABLE_SEEDS) && item.getItem() instanceof BlockItem blockItem) {
+ if (!item.isEmpty() && (item.is(ItemTags.VILLAGER_PLANTABLE_SEEDS) || this.clericWartFarmer && item.getItem() == net.minecraft.world.item.Items.NETHER_WART) && item.getItem() instanceof BlockItem blockItem) { // Purpur - Option for Villager Clerics to farm Nether Wart
BlockState blockState1 = blockItem.getBlock().defaultBlockState();
if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(owner, this.aboveFarmlandPos, blockState1)) { // CraftBukkit
level.setBlockAndUpdate(this.aboveFarmlandPos, blockState1);
ItemStack itemStack = inventory.getItem(i);
boolean ok = false;
- if (!itemStack.isEmpty() && itemStack.is(ItemTags.VILLAGER_PLANTABLE_SEEDS) && itemStack.getItem() instanceof BlockItem blockItem) {
+ if (!itemStack.isEmpty() && (itemStack.is(ItemTags.VILLAGER_PLANTABLE_SEEDS) || this.clericWartFarmer && itemStack.getItem() == net.minecraft.world.item.Items.NETHER_WART) && itemStack.getItem() instanceof BlockItem blockItem) { // Purpur - Option for Villager Clerics to farm Nether Wart
BlockState place = blockItem.getBlock().defaultBlockState();
if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(body, this.aboveFarmlandPos, place)) { // CraftBukkit
level.setBlockAndUpdate(this.aboveFarmlandPos, place);
@@ -134,7 +137,7 @@ public class HarvestFarmland extends Behavior<Villager> {
this.aboveFarmlandPos.getX(),
this.aboveFarmlandPos.getY(),
@@ -72,29 +72,29 @@ index 23c9363f03a74a2ddd15ffa1da4e0910dcfe2eb4..83aac5dcc51fbc2cc9ee45c155fb2b5b
1.0F,
1.0F
diff --git a/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java b/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java
index 256fb863683d66235db4fb2b65fb1495672a67bf..81145178ba1ef75c441a09ab5f376d0528299ad3 100644
index 1d405a77c4cf70bd818a4f59163e5b319808d5f3..6a7b51acfc2cd157ce81c3a92d2633375cb1a6a7 100644
--- a/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java
+++ b/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java
@@ -59,6 +59,12 @@ public class TradeWithVillager extends Behavior<Villager> {
throwHalfStack(owner, ImmutableSet.of(Items.WHEAT), villager);
throwHalfStack(body, ImmutableSet.of(Items.WHEAT), target);
}
+ // Purpur start - Option for Villager Clerics to farm Nether Wart
+ if (level.purpurConfig.villagerClericsFarmWarts && level.purpurConfig.villagerClericFarmersThrowWarts && owner.getVillagerData().profession().is(VillagerProfession.CLERIC) && owner.getInventory().countItem(Items.NETHER_WART) > Items.NETHER_WART.getDefaultMaxStackSize() / 2) {
+ throwHalfStack(owner, ImmutableSet.of(Items.NETHER_WART), villager);
+ if (level.purpurConfig.villagerClericsFarmWarts && level.purpurConfig.villagerClericFarmersThrowWarts && body.getVillagerData().profession().is(VillagerProfession.CLERIC) && body.getInventory().countItem(Items.NETHER_WART) > Items.NETHER_WART.getDefaultMaxStackSize() / 2) {
+ throwHalfStack(body, ImmutableSet.of(Items.NETHER_WART), target);
+ }
+ // Purpur end - Option for Villager Clerics to farm Nether Wart
+
if (!this.trades.isEmpty() && owner.getInventory().hasAnyOf(this.trades)) {
throwHalfStack(owner, this.trades, villager);
if (!this.trades.isEmpty() && body.getInventory().hasAnyOf(this.trades)) {
throwHalfStack(body, this.trades, target);
}
diff --git a/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java b/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java
index bb3ac5297860c8af6e213d10fdf5144086e9474b..0e72601781235119d62fe74420153b98edb5ce23 100644
index a5d1b66b07002545381dfc449a2eda26546b904c..0e5039e07c3df288e4b1377225ac52cc96675b66 100644
--- a/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java
+++ b/net/minecraft/world/entity/ai/behavior/VillagerGoalPackages.java
@@ -79,8 +79,13 @@ public class VillagerGoalPackages {
@@ -74,8 +74,13 @@ public class VillagerGoalPackages {
public static ImmutableList<Pair<Integer, ? extends BehaviorControl<? super Villager>>> getWorkPackage(
Holder<VillagerProfession> profession, float speedModifier
final Holder<VillagerProfession> profession, final float speedModifier
) {
+ // Purpur start - Option for Villager Clerics to farm Nether Wart
+ return getWorkPackage(profession, speedModifier, false);
@@ -108,64 +108,64 @@ index bb3ac5297860c8af6e213d10fdf5144086e9474b..0e72601781235119d62fe74420153b98
} else {
workAtPoi = new WorkAtPoi();
diff --git a/net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor.java b/net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor.java
index 39a9e9a6f6dfddbf47a7f96150ef832efe61f89e..c268817b170bd54898bb5f8c2e2e12c0faa7eb1e 100644
index ec12508c112b1e7748a5d197b73a0d540bed10fc..f2daabad51d565cae11e8bfce8b1bf40a7e56a78 100644
--- a/net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor.java
+++ b/net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor.java
@@ -22,6 +22,13 @@ public class SecondaryPoiSensor extends Sensor<Villager> {
@Override
protected void doTick(ServerLevel level, Villager entity) {
protected void doTick(final ServerLevel level, final Villager body) {
+ // Purpur start - Option for Villager Clerics to farm Nether Wart - make sure clerics don't wander to soul sand when the option is off
+ Brain<?> brain = entity.getBrain();
+ if (!level.purpurConfig.villagerClericsFarmWarts && entity.getVillagerData().profession().is(net.minecraft.world.entity.npc.villager.VillagerProfession.CLERIC)) {
+ Brain<?> brain = body.getBrain();
+ if (!level.purpurConfig.villagerClericsFarmWarts && body.getVillagerData().profession().is(net.minecraft.world.entity.npc.villager.VillagerProfession.CLERIC)) {
+ brain.eraseMemory(MemoryModuleType.SECONDARY_JOB_SITE);
+ return;
+ }
+ // Purpur end - Option for Villager Clerics to farm Nether Wart
ResourceKey<Level> resourceKey = level.dimension();
BlockPos blockPos = entity.blockPosition();
List<GlobalPos> list = Lists.newArrayList();
ResourceKey<Level> dimensionType = level.dimension();
BlockPos center = body.blockPosition();
List<GlobalPos> jobSites = Lists.newArrayList();
@@ -38,7 +45,7 @@ public class SecondaryPoiSensor extends Sensor<Villager> {
}
}
- Brain<?> brain = entity.getBrain();
+ //Brain<?> brain = entity.getBrain(); // Purpur - Option for Villager Clerics to farm Nether Wart - moved up
if (!list.isEmpty()) {
brain.setMemory(MemoryModuleType.SECONDARY_JOB_SITE, list);
- Brain<?> brain = body.getBrain();
+ //Brain<?> brain = body.getBrain(); // Purpur - Option for Villager Clerics to farm Nether Wart - moved up
if (!jobSites.isEmpty()) {
brain.setMemory(MemoryModuleType.SECONDARY_JOB_SITE, jobSites);
} else {
diff --git a/net/minecraft/world/entity/npc/villager/Villager.java b/net/minecraft/world/entity/npc/villager/Villager.java
index 02836bd2e8fda563877d3014ab839734aebc7457..ed6642023fccbc8f825d7c5c206d73ffd666f0f9 100644
index 6105aa39baf888dd625f4d345822a4058bf83ef4..fffc71d2f0cd0d4c4f5d8fad38130208cdbe5e67 100644
--- a/net/minecraft/world/entity/npc/villager/Villager.java
+++ b/net/minecraft/world/entity/npc/villager/Villager.java
@@ -315,7 +315,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
villagerBrain.setSchedule(EnvironmentAttributes.VILLAGER_ACTIVITY);
villagerBrain.addActivityWithConditions(
Activity.WORK,
- VillagerGoalPackages.getWorkPackage(holder, 0.5F),
+ VillagerGoalPackages.getWorkPackage(holder, 0.5F, this.level().purpurConfig.villagerClericsFarmWarts), // Purpur - Option for Villager Clerics to farm Nether Wart
ImmutableSet.of(Pair.of(MemoryModuleType.JOB_SITE, MemoryStatus.VALUE_PRESENT))
);
}
@@ -956,7 +956,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -148,7 +148,7 @@ public class Villager extends AbstractVillager implements VillagerDataHolder, Re
activities.add(
ActivityData.create(
Activity.WORK,
- VillagerGoalPackages.getWorkPackage(profession, 0.5F),
+ VillagerGoalPackages.getWorkPackage(profession, 0.5F, body.level().purpurConfig.villagerClericsFarmWarts), // Purpur - Option for Villager Clerics to farm Nether Wart
ImmutableSet.of(Pair.of(MemoryModuleType.JOB_SITE, MemoryStatus.VALUE_PRESENT))
)
);
@@ -945,7 +945,7 @@ public class Villager extends AbstractVillager implements VillagerDataHolder, Re
}
public boolean hasFarmSeeds() {
- return this.getInventory().hasAnyMatching(stack -> stack.is(ItemTags.VILLAGER_PLANTABLE_SEEDS));
+ return this.getInventory().hasAnyMatching(stack -> this.level().purpurConfig.villagerClericsFarmWarts && this.getVillagerData().profession().is(VillagerProfession.CLERIC) ? stack.is(Items.NETHER_WART) : stack.is(ItemTags.VILLAGER_PLANTABLE_SEEDS)); // Purpur - Option for Villager Clerics to farm Nether Wart
- return this.getInventory().hasAnyMatching(item -> item.is(ItemTags.VILLAGER_PLANTABLE_SEEDS));
+ return this.getInventory().hasAnyMatching(item -> this.level().purpurConfig.villagerClericsFarmWarts && this.getVillagerData().profession().is(VillagerProfession.CLERIC) ? item.is(Items.NETHER_WART) : item.is(ItemTags.VILLAGER_PLANTABLE_SEEDS));
}
@Override
diff --git a/net/minecraft/world/entity/npc/villager/VillagerProfession.java b/net/minecraft/world/entity/npc/villager/VillagerProfession.java
index 0acfa8f9d2eab00cf0d8b4bc65c3af52046272bd..8f2edbe693a793d31295d035bc01e4c2b7742b4e 100644
index 1d779d7a51437581fa3d8da38449916362b25ce9..9d71db9db42e38338afe10b24699dae9cc90fcfa 100644
--- a/net/minecraft/world/entity/npc/villager/VillagerProfession.java
+++ b/net/minecraft/world/entity/npc/villager/VillagerProfession.java
@@ -103,7 +103,7 @@ public record VillagerProfession(
register(registry, ARMORER, PoiTypes.ARMORER, SoundEvents.VILLAGER_WORK_ARMORER);
register(registry, BUTCHER, PoiTypes.BUTCHER, SoundEvents.VILLAGER_WORK_BUTCHER);
register(registry, CARTOGRAPHER, PoiTypes.CARTOGRAPHER, SoundEvents.VILLAGER_WORK_CARTOGRAPHER);
- register(registry, CLERIC, PoiTypes.CLERIC, SoundEvents.VILLAGER_WORK_CLERIC);
+ register(registry, CLERIC, PoiTypes.CLERIC, ImmutableSet.of(Items.NETHER_WART), ImmutableSet.of(Blocks.SOUL_SAND), SoundEvents.VILLAGER_WORK_CLERIC); // Purpur - Option for Villager Clerics to farm Nether Wart
register(
@@ -165,6 +165,8 @@ public record VillagerProfession(
registry,
FARMER,
CLERIC,
PoiTypes.CLERIC,
+ ImmutableSet.of(Items.NETHER_WART), // Purpur - Option for Villager Clerics to farm Nether Wart
+ ImmutableSet.of(Blocks.SOUL_SAND), // Purpur - Option for Villager Clerics to farm Nether Wart
SoundEvents.VILLAGER_WORK_CLERIC,
Int2ObjectMap.ofEntries(
Int2ObjectMap.entry(1, TradeSets.CLERIC_LEVEL_1),

View File

@@ -5,23 +5,23 @@ Subject: [PATCH] Add mobGriefing override to everything affected
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
index dc71ae07f2c7a7038e96caf8618dddc5d4932271..717e42ed210408c30f3fa2b6d786a2a51abfecc6 100644
index 2e7e5c4c42bcdb6135a088ffe0a7a8f4558dc12c..7146381e06ed1b946ce43dca293f52da05b46314 100644
--- a/net/minecraft/world/entity/LivingEntity.java
+++ b/net/minecraft/world/entity/LivingEntity.java
@@ -1973,7 +1973,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
@@ -1950,7 +1950,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
if (this.level() instanceof ServerLevel serverLevel) {
boolean var6 = false;
if (this.dead && entitySource instanceof WitherBoss) { // Paper
if (this.dead && killer instanceof WitherBoss) { // Paper
- if (serverLevel.getGameRules().get(GameRules.MOB_GRIEFING)) {
+ if (serverLevel.getGameRules().get(GameRules.MOB_GRIEFING, serverLevel.purpurConfig.witherMobGriefingOverride)) { // Purpur - Add mobGriefing override to everything affected
BlockPos blockPos = this.blockPosition();
BlockState blockState = Blocks.WITHER_ROSE.defaultBlockState();
if (this.level().getBlockState(blockPos).isAir() && blockState.canSurvive(this.level(), blockPos)) {
BlockPos pos = this.blockPosition();
BlockState state = Blocks.WITHER_ROSE.defaultBlockState();
if (this.level().getBlockState(pos).isAir() && state.canSurvive(this.level(), pos)) {
diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java
index 94e7307c0d15fdef7f7dcb28473cb76661600b0e..01667b8d45653aa6b0f77d65599f7dc68979f9f1 100644
index be578b5d4430e934342d3e80b70a1ea56b020a5c..43f1a9287d2a3010d35a88d58df3e950f1011eec 100644
--- a/net/minecraft/world/entity/Mob.java
+++ b/net/minecraft/world/entity/Mob.java
@@ -554,7 +554,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
@@ -560,7 +560,7 @@ public abstract class Mob extends LivingEntity implements Targeting, EquipmentUs
&& this.canPickUpLoot()
&& this.isAlive()
&& !this.dead
@@ -29,22 +29,22 @@ index 94e7307c0d15fdef7f7dcb28473cb76661600b0e..01667b8d45653aa6b0f77d65599f7dc6
+ && serverLevel.getGameRules().get(GameRules.MOB_GRIEFING, serverLevel.purpurConfig.entitiesPickUpLootMobGriefingOverride)) { // Purpur - Add mobGriefing override to everything affected
Vec3i pickupReach = this.getPickupReach();
for (ItemEntity itemEntity : this.level()
for (ItemEntity entity : this.level()
diff --git a/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java b/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java
index 83aac5dcc51fbc2cc9ee45c155fb2b5b67293a96..c68399986583a215da156b9057a61f22cbf6143d 100644
index 9318b27ca960ee00774892b3fd244b0fca1f6e35..573eb81c0328b9b6bd9256d67e533b6cc73f738f 100644
--- a/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java
+++ b/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java
@@ -48,7 +48,7 @@ public class HarvestFarmland extends Behavior<Villager> {
@Override
protected boolean checkExtraStartConditions(ServerLevel level, Villager owner) {
protected boolean checkExtraStartConditions(final ServerLevel level, final Villager body) {
- if (!level.getGameRules().get(GameRules.MOB_GRIEFING)) {
+ if (!level.getGameRules().get(GameRules.MOB_GRIEFING, level.purpurConfig.villagerMobGriefingOverride)) { // Purpur - Add mobGriefing override to everything affected
return false;
} else if (!owner.getVillagerData().profession().is(VillagerProfession.FARMER) && !(level.purpurConfig.villagerClericsFarmWarts && owner.getVillagerData().profession().is(VillagerProfession.CLERIC))) { // Purpur - Option for Villager Clerics to farm Nether Wart
} else if (!body.getVillagerData().profession().is(VillagerProfession.FARMER) && !(level.purpurConfig.villagerClericsFarmWarts && body.getVillagerData().profession().is(VillagerProfession.CLERIC))) { // Purpur - Option for Villager Clerics to farm Nether Wart
return false;
diff --git a/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java b/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java
index 272335ec91615e2619ce95f47dbf228d180239c3..23ba4af0b6785057cfd2a996aebcbcf89697c12f 100644
index e33598c3ea748f81c7efcaa06d9d0597624a852b..80a42d030969e264a93108ca3f2c296dd295ad1d 100644
--- a/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java
+++ b/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java
@@ -31,7 +31,7 @@ public class BreakDoorGoal extends DoorInteractGoal {
@@ -57,32 +57,32 @@ index 272335ec91615e2619ce95f47dbf228d180239c3..23ba4af0b6785057cfd2a996aebcbcf8
&& !this.isOpen();
}
diff --git a/net/minecraft/world/entity/ai/goal/EatBlockGoal.java b/net/minecraft/world/entity/ai/goal/EatBlockGoal.java
index 087861886eeb55324ffe54bda78e19f83bf33e72..0f0311eb836b8da39651ece499fe4bda44bce178 100644
index 0f52b048c33f3dbafd5734dc724bcd74db43884a..a40284d4f3812a169e94593ec14192e079133bd4 100644
--- a/net/minecraft/world/entity/ai/goal/EatBlockGoal.java
+++ b/net/minecraft/world/entity/ai/goal/EatBlockGoal.java
@@ -64,7 +64,7 @@ public class EatBlockGoal extends Goal {
BlockPos blockPos = this.mob.blockPosition();
final BlockState blockState = this.level.getBlockState(blockPos); // Paper - fix wrong block state
BlockPos pos = this.mob.blockPosition();
final BlockState blockState = this.level.getBlockState(pos); // Paper - fix wrong block state
if (IS_EDIBLE.test(blockState)) { // Paper - fix wrong block state
- if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockPos, blockState.getFluidState().createLegacyBlock(), !getServerLevel(this.level).getGameRules().get(GameRules.MOB_GRIEFING))) { // CraftBukkit // Paper - fix wrong block state
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockPos, blockState.getFluidState().createLegacyBlock(), !getServerLevel(this.level).getGameRules().get(GameRules.MOB_GRIEFING, getServerLevel(this.level).purpurConfig.sheepMobGriefingOverride))) { // CraftBukkit // Paper - fix wrong block state // Purpur - Add mobGriefing override to everything affected
this.level.destroyBlock(blockPos, false);
- if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.mob, pos, blockState.getFluidState().createLegacyBlock(), !getServerLevel(this.level).getGameRules().get(GameRules.MOB_GRIEFING))) { // CraftBukkit // Paper - fix wrong block state
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.mob, pos, blockState.getFluidState().createLegacyBlock(), !getServerLevel(this.level).getGameRules().get(GameRules.MOB_GRIEFING, getServerLevel(this.level).purpurConfig.sheepMobGriefingOverride))) { // CraftBukkit // Paper - fix wrong block state // Purpur - Add mobGriefing override to everything affected
this.level.destroyBlock(pos, false);
}
@@ -72,7 +72,7 @@ public class EatBlockGoal extends Goal {
} else {
BlockPos blockPos1 = blockPos.below();
if (this.level.getBlockState(blockPos1).is(Blocks.GRASS_BLOCK)) {
- if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockPos1, Blocks.DIRT.defaultBlockState(), !getServerLevel(this.level).getGameRules().get(GameRules.MOB_GRIEFING))) { // CraftBukkit // Paper - Fix wrong block state
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockPos1, Blocks.DIRT.defaultBlockState(), !getServerLevel(this.level).getGameRules().get(GameRules.MOB_GRIEFING, getServerLevel(this.level).purpurConfig.sheepMobGriefingOverride))) { // CraftBukkit // Paper - Fix wrong block state // Purpur - Add mobGriefing override to everything affected
this.level.levelEvent(LevelEvent.PARTICLES_DESTROY_BLOCK, blockPos1, Block.getId(Blocks.GRASS_BLOCK.defaultBlockState()));
this.level.setBlock(blockPos1, Blocks.DIRT.defaultBlockState(), Block.UPDATE_CLIENTS);
BlockPos below = pos.below();
if (this.level.getBlockState(below).is(Blocks.GRASS_BLOCK)) {
- if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.mob, below, Blocks.DIRT.defaultBlockState(), !getServerLevel(this.level).getGameRules().get(GameRules.MOB_GRIEFING))) { // CraftBukkit // Paper - Fix wrong block state
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.mob, below, Blocks.DIRT.defaultBlockState(), !getServerLevel(this.level).getGameRules().get(GameRules.MOB_GRIEFING, getServerLevel(this.level).purpurConfig.sheepMobGriefingOverride))) { // CraftBukkit // Paper - Fix wrong block state // Purpur - Add mobGriefing override to everything affected
this.level.levelEvent(LevelEvent.PARTICLES_DESTROY_BLOCK, below, Block.getId(Blocks.GRASS_BLOCK.defaultBlockState()));
this.level.setBlock(below, Blocks.DIRT.defaultBlockState(), Block.UPDATE_CLIENTS);
}
diff --git a/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java b/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java
index 50cc4c462640a9d40abef6245439d71e8c593ae6..83be00350765db043b6bf32e7814d9c7119eacc5 100644
index ca91cadd8d52c09a735e6447664bed4753f3cdd3..3277777cb8672d29a0d49ef03f9cf35cc5df3838 100644
--- a/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java
+++ b/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java
@@ -35,7 +35,7 @@ public class RemoveBlockGoal extends MoveToBlockGoal {
@@ -34,7 +34,7 @@ public class RemoveBlockGoal extends MoveToBlockGoal {
@Override
public boolean canUse() {
@@ -92,23 +92,23 @@ index 50cc4c462640a9d40abef6245439d71e8c593ae6..83be00350765db043b6bf32e7814d9c7
} else if (this.nextStartTick > 0) {
this.nextStartTick--;
diff --git a/net/minecraft/world/entity/animal/fox/Fox.java b/net/minecraft/world/entity/animal/fox/Fox.java
index 3c2f5e711c013a6f51093e94bc4b5518263607a2..a0ed30e8ccd41729de8e0ff977a61fa607386640 100644
index 9c049b34c062113a2241fdda2eaae808c0e8e0b1..f781d02d10317bf7cf9b5fe50706bbefb62820d3 100644
--- a/net/minecraft/world/entity/animal/fox/Fox.java
+++ b/net/minecraft/world/entity/animal/fox/Fox.java
@@ -1062,7 +1062,7 @@ public class Fox extends Animal {
@@ -1082,7 +1082,7 @@ public class Fox extends Animal {
}
protected void onReachedTarget() {
- if (getServerLevel(Fox.this.level()).getGameRules().get(GameRules.MOB_GRIEFING)) {
+ if (getServerLevel(Fox.this.level()).getGameRules().get(GameRules.MOB_GRIEFING, getServerLevel(Fox.this.level()).purpurConfig.foxMobGriefingOverride)) { // Purpur - Add mobGriefing override to everything affected
BlockState blockState = Fox.this.level().getBlockState(this.blockPos);
if (blockState.is(Blocks.SWEET_BERRY_BUSH)) {
this.pickSweetBerries(blockState);
BlockState state = Fox.this.level().getBlockState(this.blockPos);
if (state.is(Blocks.SWEET_BERRY_BUSH)) {
this.pickSweetBerries(state);
diff --git a/net/minecraft/world/entity/animal/golem/SnowGolem.java b/net/minecraft/world/entity/animal/golem/SnowGolem.java
index aa53ee0586a85a64e8c6471735e29b2694f61b9d..fa941ba3151da7b965678be7e4c6a4194863cd0a 100644
index bd594838ae25f16e6e16335e06c4d981c5ecdc2a..7091f5bc2ecb9d4b86162fe364447df65d8e9348 100644
--- a/net/minecraft/world/entity/animal/golem/SnowGolem.java
+++ b/net/minecraft/world/entity/animal/golem/SnowGolem.java
@@ -135,7 +135,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
@@ -135,7 +135,7 @@ public class SnowGolem extends AbstractGolem implements RangedAttackMob, Shearab
this.hurtServer(serverLevel, this.damageSources().onFire().knownCause(org.bukkit.event.entity.EntityDamageEvent.DamageCause.MELTING), 1.0F); // CraftBukkit
}
@@ -118,10 +118,10 @@ index aa53ee0586a85a64e8c6471735e29b2694f61b9d..fa941ba3151da7b965678be7e4c6a419
}
diff --git a/net/minecraft/world/entity/animal/rabbit/Rabbit.java b/net/minecraft/world/entity/animal/rabbit/Rabbit.java
index 061418a25d359574c4ff44327082b08b4094ee1c..66fda64006c0a70ab4502f088637bb6871c3bb37 100644
index 3aefbdc3e537bc53bba296c7876dee93c95a77ca..4d79ce89c21ba0b973bbda01bf53665e3b7a1902 100644
--- a/net/minecraft/world/entity/animal/rabbit/Rabbit.java
+++ b/net/minecraft/world/entity/animal/rabbit/Rabbit.java
@@ -648,7 +648,7 @@ public class Rabbit extends Animal {
@@ -696,7 +696,7 @@ public class Rabbit extends Animal {
@Override
public boolean canUse() {
if (this.nextStartTick <= 0) {
@@ -131,36 +131,36 @@ index 061418a25d359574c4ff44327082b08b4094ee1c..66fda64006c0a70ab4502f088637bb68
}
diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
index 9a8da85462dd74eed8c158ea3343354a255d320d..ecfd9f7b56aee3b701821339f41b60bd7bef0e97 100644
index 7e39604a02561880a10d4bcebcd76135f9c1a122..51ca6a3fa75f3aef715d786a21327452390dde94 100644
--- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
+++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
@@ -542,7 +542,7 @@ public class EnderDragon extends Mob implements Enemy {
BlockPos blockPos = new BlockPos(i, i1, i2);
BlockState blockState = level.getBlockState(blockPos);
if (!blockState.isAir() && !blockState.is(BlockTags.DRAGON_TRANSPARENT)) {
- if (level.getGameRules().get(GameRules.MOB_GRIEFING) && !blockState.is(BlockTags.DRAGON_IMMUNE)) {
+ if (level.getGameRules().get(GameRules.MOB_GRIEFING, level.purpurConfig.enderDragonMobGriefingOverride) && !blockState.is(BlockTags.DRAGON_IMMUNE)) { // Purpur - Add mobGriefing override to everything affected
@@ -541,7 +541,7 @@ public class EnderDragon extends Mob implements Enemy {
BlockPos blockPos = new BlockPos(x, y, z);
BlockState state = level.getBlockState(blockPos);
if (!state.isAir() && !state.is(BlockTags.DRAGON_TRANSPARENT)) {
- if (level.getGameRules().get(GameRules.MOB_GRIEFING) && !state.is(BlockTags.DRAGON_IMMUNE)) {
+ if (level.getGameRules().get(GameRules.MOB_GRIEFING, level.purpurConfig.enderDragonMobGriefingOverride) && !state.is(BlockTags.DRAGON_IMMUNE)) { // Purpur - Add mobGriefing override to everything affected
// CraftBukkit start - Add blocks to list rather than destroying them
//flag1 = level.removeBlock(blockPos, false) || flag1;
flag1 = true;
destroyedBlock = true;
diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java
index 1f777f69e37291c9367969f52aef11fe270541b7..df608186f3e9ab5b56a209be67cd02717d3f9734 100644
index 141b64eb1f320d2bc773e99826fc97cc10f39bcd..3e934aee6f651843d861cc87cc1f01a87742edf3 100644
--- a/net/minecraft/world/entity/boss/wither/WitherBoss.java
+++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java
@@ -494,7 +494,7 @@ public class WitherBoss extends Monster implements RangedAttackMob {
@@ -493,7 +493,7 @@ public class WitherBoss extends Monster implements RangedAttackMob {
if (this.destroyBlocksTick > 0) {
this.destroyBlocksTick--;
- if (this.destroyBlocksTick == 0 && level.getGameRules().get(GameRules.MOB_GRIEFING)) {
+ if (this.destroyBlocksTick == 0 && level.getGameRules().get(GameRules.MOB_GRIEFING, level.purpurConfig.witherMobGriefingOverride)) { // Purpur - Add mobGriefing override to everything affected
boolean flag = false;
int alternativeTarget = Mth.floor(this.getBbWidth() / 2.0F + 1.0F);
int floor = Mth.floor(this.getBbHeight());
boolean destroyed = false;
int width = Mth.floor(this.getBbWidth() / 2.0F + 1.0F);
int height = Mth.floor(this.getBbHeight());
diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java
index 29570047bfc78a8993b0bbd7168cb4fe318a6be6..79a1d8f67a22a8fa4a6c3b657e44bb9503687c27 100644
index 30450300bdf9e4b5ef4293e9c371484ba6aabebc..46a60e17837411e46a543d6f0254d7280d30a94c 100644
--- a/net/minecraft/world/entity/monster/EnderMan.java
+++ b/net/minecraft/world/entity/monster/EnderMan.java
@@ -509,7 +509,7 @@ public class EnderMan extends Monster implements NeutralMob {
@@ -505,7 +505,7 @@ public class EnderMan extends Monster implements NeutralMob {
public boolean canUse() {
if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur - Add enderman and creeper griefing controls
return this.enderman.getCarriedBlock() != null
@@ -169,7 +169,7 @@ index 29570047bfc78a8993b0bbd7168cb4fe318a6be6..79a1d8f67a22a8fa4a6c3b657e44bb95
&& this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0;
}
@@ -658,7 +658,7 @@ public class EnderMan extends Monster implements NeutralMob {
@@ -649,7 +649,7 @@ public class EnderMan extends Monster implements NeutralMob {
public boolean canUse() {
if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur - Add enderman and creeper griefing controls
return this.enderman.getCarriedBlock() == null
@@ -179,20 +179,20 @@ index 29570047bfc78a8993b0bbd7168cb4fe318a6be6..79a1d8f67a22a8fa4a6c3b657e44bb95
}
diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java
index 86c55955ff6c0a411cde34999c7bd6ad07be5d4e..7c69423eee05992b9c70321d528cc9d73b3e63ea 100644
index 878fee0c45a34c334d30239711231f2ef990e926..e0ffded3500b221d5c65cff9377120e8c6c7d8c6 100644
--- a/net/minecraft/world/entity/monster/Ravager.java
+++ b/net/minecraft/world/entity/monster/Ravager.java
@@ -179,7 +179,7 @@ public class Ravager extends Raider {
this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(Mth.lerp(0.1, baseValue, d));
@@ -177,7 +177,7 @@ public class Ravager extends Raider {
this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(Mth.lerp(0.1, baseValue, maxSpeed));
}
- if (this.level() instanceof ServerLevel serverLevel && this.horizontalCollision && serverLevel.getGameRules().get(GameRules.MOB_GRIEFING)) {
+ if (this.level() instanceof ServerLevel serverLevel && this.horizontalCollision && serverLevel.getGameRules().get(GameRules.MOB_GRIEFING, serverLevel.purpurConfig.ravagerMobGriefingOverride)) { // Purpur - Add mobGriefing override to everything affected
boolean flag = false;
AABB aabb = this.getBoundingBox().inflate(0.2);
boolean destroyedBlock = false;
AABB bb = this.getBoundingBox().inflate(0.2);
diff --git a/net/minecraft/world/entity/monster/Silverfish.java b/net/minecraft/world/entity/monster/Silverfish.java
index 6f708c041679c0926282241c637162b141d06f64..7f94e9749283f1e51b449b0ef84ca08e246a1cc9 100644
index 355475b12c6f3fcc9fe88ca63ab88cabac9d6fb1..e5a0a199685366f082904eb5e7550f0160f9c706 100644
--- a/net/minecraft/world/entity/monster/Silverfish.java
+++ b/net/minecraft/world/entity/monster/Silverfish.java
@@ -168,7 +168,7 @@ public class Silverfish extends Monster {
@@ -202,90 +202,90 @@ index 6f708c041679c0926282241c637162b141d06f64..7f94e9749283f1e51b449b0ef84ca08e
- if (getServerLevel(this.mob).getGameRules().get(GameRules.MOB_GRIEFING) && random.nextInt(reducedTickDelay(10)) == 0) {
+ if (getServerLevel(this.mob).getGameRules().get(GameRules.MOB_GRIEFING, getServerLevel(this.mob).purpurConfig.silverfishMobGriefingOverride) && random.nextInt(reducedTickDelay(10)) == 0) { // Purpur - Add mobGriefing override to everything affected
this.selectedDirection = Direction.getRandom(random);
BlockPos blockPos = BlockPos.containing(this.mob.getX(), this.mob.getY() + 0.5, this.mob.getZ()).relative(this.selectedDirection);
BlockState blockState = this.mob.level().getBlockState(blockPos);
BlockPos pos = BlockPos.containing(this.mob.getX(), this.mob.getY() + 0.5, this.mob.getZ()).relative(this.selectedDirection);
BlockState blockState = this.mob.level().getBlockState(pos);
@@ -245,7 +245,7 @@ public class Silverfish extends Monster {
Block block = blockState.getBlock();
if (block instanceof InfestedBlock) {
// CraftBukkit start
- BlockState afterState = getServerLevel(level).getGameRules().get(GameRules.MOB_GRIEFING) ? blockState.getFluidState().createLegacyBlock() : ((InfestedBlock) block).hostStateByInfested(level.getBlockState(blockPos1)); // Paper - fix wrong block state
+ BlockState afterState = getServerLevel(level).getGameRules().get(GameRules.MOB_GRIEFING, getServerLevel(level).purpurConfig.silverfishMobGriefingOverride) ? blockState.getFluidState().createLegacyBlock() : ((InfestedBlock) block).hostStateByInfested(level.getBlockState(blockPos1)); // Paper - fix wrong block state // Purpur - Add mobGriefing override to everything affected
if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.silverfish, blockPos1, afterState)) { // Paper - fix wrong block state
- BlockState afterState = getServerLevel(level).getGameRules().get(GameRules.MOB_GRIEFING) ? blockState.getFluidState().createLegacyBlock() : ((InfestedBlock) block).hostStateByInfested(level.getBlockState(testPos)); // Paper - fix wrong block state
+ BlockState afterState = getServerLevel(level).getGameRules().get(GameRules.MOB_GRIEFING, getServerLevel(level).purpurConfig.silverfishMobGriefingOverride) ? blockState.getFluidState().createLegacyBlock() : ((InfestedBlock) block).hostStateByInfested(level.getBlockState(testPos)); // Paper - fix wrong block state // Purpur - Add mobGriefing override to everything affected
if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.silverfish, testPos, afterState)) { // Paper - fix wrong block state
continue;
}
diff --git a/net/minecraft/world/entity/monster/illager/Evoker.java b/net/minecraft/world/entity/monster/illager/Evoker.java
index 46f79ed345ec51125364b49b244d6d005a3e64ae..334786b2c358c41058f2ac4b1fa4b185833cbd84 100644
index 4de0c340b1fb8baa9ed379ea010ca6d314530268..d091a12ed1df31f945a04f50af1cbb89a16ca0cd 100644
--- a/net/minecraft/world/entity/monster/illager/Evoker.java
+++ b/net/minecraft/world/entity/monster/illager/Evoker.java
@@ -306,7 +306,7 @@ public class Evoker extends SpellcasterIllager {
@@ -334,7 +334,7 @@ public class Evoker extends SpellcasterIllager {
return false;
} else {
ServerLevel serverLevel = getServerLevel(Evoker.this.level());
- if (!serverLevel.getGameRules().get(GameRules.MOB_GRIEFING)) {
+ if (!serverLevel.getGameRules().get(GameRules.MOB_GRIEFING, serverLevel.purpurConfig.evokerMobGriefingOverride)) { // Purpur - Add mobGriefing override to everything affected
ServerLevel level = getServerLevel(Evoker.this.level());
- if (!level.getGameRules().get(GameRules.MOB_GRIEFING)) {
+ if (!level.getGameRules().get(GameRules.MOB_GRIEFING, level.purpurConfig.evokerMobGriefingOverride)) { // Purpur - Add mobGriefing override to everything affected
return false;
} else {
List<Sheep> nearbyEntities = serverLevel.getNearbyEntities(
List<Sheep> entities = level.getNearbyEntities(
diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java
index 98241af88cc961470e07df47d128d8912338bd44..4fccd122a227e5fe80965c37afaa031c4a673978 100644
index 0d0a86b5c485a60d0e85b3acc6f0cc01ce6c0bfe..356fc7507b58cc38cdf5ee11618ad3551fb3c6a2 100644
--- a/net/minecraft/world/entity/monster/piglin/Piglin.java
+++ b/net/minecraft/world/entity/monster/piglin/Piglin.java
@@ -448,7 +448,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
@@ -416,7 +416,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
@Override
public boolean wantsToPickUp(ServerLevel level, ItemStack stack) {
- return level.getGameRules().get(GameRules.MOB_GRIEFING) && this.canPickUpLoot() && PiglinAi.wantsToPickup(this, stack);
+ return level.getGameRules().get(GameRules.MOB_GRIEFING, level.purpurConfig.piglinMobGriefingOverride) && this.canPickUpLoot() && PiglinAi.wantsToPickup(this, stack); // Purpur - Add mobGriefing override to everything affected
public boolean wantsToPickUp(final ServerLevel level, final ItemStack itemStack) {
- return level.getGameRules().get(GameRules.MOB_GRIEFING) && this.canPickUpLoot() && PiglinAi.wantsToPickup(this, itemStack);
+ return level.getGameRules().get(GameRules.MOB_GRIEFING, level.purpurConfig.piglinMobGriefingOverride) && this.canPickUpLoot() && PiglinAi.wantsToPickup(this, itemStack); // Purpur - Add mobGriefing override to everything affected
}
protected boolean canReplaceCurrentItem(ItemStack candidate) {
protected boolean canReplaceCurrentItem(final ItemStack newItemStack) {
diff --git a/net/minecraft/world/entity/projectile/Projectile.java b/net/minecraft/world/entity/projectile/Projectile.java
index 6298e6de25f1dd9ff880a9ad2882dc7ccb2f100c..36479ed544ce812113c9a9c982a74a950cb9b26a 100644
index 289fe996f5663f82c488d1c861389b83da787ff9..34df1e7ec42ecfb9ec4ef87e9f6a619298668d35 100644
--- a/net/minecraft/world/entity/projectile/Projectile.java
+++ b/net/minecraft/world/entity/projectile/Projectile.java
@@ -434,7 +434,7 @@ public abstract class Projectile extends Entity implements TraceableEntity {
@@ -473,7 +473,7 @@ public abstract class Projectile extends Entity implements TraceableEntity {
@Override
public boolean mayInteract(ServerLevel level, BlockPos pos) {
public boolean mayInteract(final ServerLevel level, final BlockPos pos) {
Entity owner = this.getOwner();
- return owner instanceof Player ? owner.mayInteract(level, pos) : owner == null || level.getGameRules().get(GameRules.MOB_GRIEFING);
+ return owner instanceof Player ? owner.mayInteract(level, pos) : owner == null || level.getGameRules().get(GameRules.MOB_GRIEFING, level.purpurConfig.projectilesMobGriefingOverride); // Purpur - Add mobGriefing override to everything affected
}
public boolean mayBreak(ServerLevel level) {
public boolean mayBreak(final ServerLevel level) {
diff --git a/net/minecraft/world/entity/projectile/hurtingprojectile/LargeFireball.java b/net/minecraft/world/entity/projectile/hurtingprojectile/LargeFireball.java
index de0f086da9fe4afa14d2b77f6b0a2c0910745b94..775aa79a0d503217dbe42268f4feccbc2d3e1edb 100644
index 711b97aa9e49b7edee34c91d77b1005be4fa96bd..bcda871c7db7a13f85e04e8fb91be13da15992bc 100644
--- a/net/minecraft/world/entity/projectile/hurtingprojectile/LargeFireball.java
+++ b/net/minecraft/world/entity/projectile/hurtingprojectile/LargeFireball.java
@@ -20,20 +20,20 @@ public class LargeFireball extends Fireball {
public LargeFireball(EntityType<? extends LargeFireball> type, Level level) {
public LargeFireball(final EntityType<? extends LargeFireball> type, final Level level) {
super(type, level);
- this.isIncendiary = (level instanceof ServerLevel serverLevel) && serverLevel.getGameRules().get(GameRules.MOB_GRIEFING); // CraftBukkit
+ this.isIncendiary = (level instanceof ServerLevel serverLevel) && serverLevel.getGameRules().get(GameRules.MOB_GRIEFING, serverLevel.purpurConfig.fireballsMobGriefingOverride); // CraftBukkit // Purpur - Add mobGriefing override to everything affected
}
public LargeFireball(Level level, LivingEntity owner, Vec3 movement, int explosionPower) {
super(EntityType.FIREBALL, owner, movement, level);
public LargeFireball(final Level level, final LivingEntity mob, final Vec3 direction, final int explosionPower) {
super(EntityType.FIREBALL, mob, direction, level);
this.explosionPower = explosionPower;
- this.isIncendiary = (level instanceof ServerLevel serverLevel) && serverLevel.getGameRules().get(GameRules.MOB_GRIEFING); // CraftBukkit
+ this.isIncendiary = (level instanceof ServerLevel serverLevel) && serverLevel.getGameRules().get(GameRules.MOB_GRIEFING, serverLevel.purpurConfig.fireballsMobGriefingOverride); // CraftBukkit // Purpur - Add mobGriefing override to everything affected
}
@Override
protected void onHit(HitResult result) {
super.onHit(result);
protected void onHit(final HitResult hitResult) {
super.onHit(hitResult);
if (this.level() instanceof ServerLevel serverLevel) {
- // boolean flag = serverLevel.getGameRules().get(GameRules.MOB_GRIEFING); // CraftBukkit - baked into fields (see constructor)
+ // boolean flag = serverLevel.getGameRules().get(GameRules.MOB_GRIEFING, serverLevel.purpurConfig.fireballsMobGriefingOverride); // CraftBukkit - baked into fields (see constructor) // Purpur - Add mobGriefing override to everything affected
- // boolean grief = serverLevel.getGameRules().get(GameRules.MOB_GRIEFING); // CraftBukkit - baked into fields (see constructor)
+ // boolean grief = serverLevel.getGameRules().get(GameRules.MOB_GRIEFING, serverLevel.purpurConfig.fireballsMobGriefingOverride); // CraftBukkit - baked into fields (see constructor) // Purpur - Add mobGriefing override to everything affected
// CraftBukkit start - fire ExplosionPrimeEvent
org.bukkit.event.entity.ExplosionPrimeEvent event = new org.bukkit.event.entity.ExplosionPrimeEvent((org.bukkit.entity.Explosive) this.getBukkitEntity());
if (event.callEvent()) {
diff --git a/net/minecraft/world/entity/projectile/hurtingprojectile/SmallFireball.java b/net/minecraft/world/entity/projectile/hurtingprojectile/SmallFireball.java
index 043ddaa0e8718f50881d16892eab188aed70f67f..a10617c29098f28c5b5586a43071a47ef17e5744 100644
index 55000ce5010321323bf79007ef8de637a492657f..b7f5f434b8b3abbaab7f65fc591ddf18308b5a2f 100644
--- a/net/minecraft/world/entity/projectile/hurtingprojectile/SmallFireball.java
+++ b/net/minecraft/world/entity/projectile/hurtingprojectile/SmallFireball.java
@@ -25,7 +25,7 @@ public class SmallFireball extends Fireball {
super(EntityType.SMALL_FIREBALL, owner, movement, level);
super(EntityType.SMALL_FIREBALL, mob, direction, level);
// CraftBukkit start
if (this.getOwner() != null && this.getOwner() instanceof Mob) {
- this.isIncendiary = (level instanceof ServerLevel serverLevel) && serverLevel.getGameRules().get(GameRules.MOB_GRIEFING);
@@ -294,10 +294,10 @@ index 043ddaa0e8718f50881d16892eab188aed70f67f..a10617c29098f28c5b5586a43071a47e
// CraftBukkit end
}
diff --git a/net/minecraft/world/entity/raid/Raider.java b/net/minecraft/world/entity/raid/Raider.java
index ab94809c5cedc8ea7db6db45394bc9c65516da63..40984af1fc912a7b0367c530c68ee00d51173b64 100644
index d09855134cef0651258db34ea29c443388fd5183..d0a9088a18e6717209f037ae48ce54db13702234 100644
--- a/net/minecraft/world/entity/raid/Raider.java
+++ b/net/minecraft/world/entity/raid/Raider.java
@@ -396,7 +396,7 @@ public abstract class Raider extends PatrollingMonster {
@@ -399,7 +399,7 @@ public abstract class Raider extends PatrollingMonster {
}
private boolean cannotPickUpBanner() {
@@ -307,49 +307,49 @@ index ab94809c5cedc8ea7db6db45394bc9c65516da63..40984af1fc912a7b0367c530c68ee00d
return true;
} else if (this.mob.getCurrentRaid().isOver()) {
diff --git a/net/minecraft/world/level/block/CropBlock.java b/net/minecraft/world/level/block/CropBlock.java
index 3983a5fa08f748ed26caa1d16e194676baa8028e..372559399ce8a4ce551f4403975879e365e1ad75 100644
index a47e5e38ef5c13da3827174121c1ec4b9ffbbce2..0dfb632b339b24564744b1f5c0d52d7fed66d265 100644
--- a/net/minecraft/world/level/block/CropBlock.java
+++ b/net/minecraft/world/level/block/CropBlock.java
@@ -169,7 +169,7 @@ public class CropBlock extends VegetationBlock implements BonemealableBlock {
@Override
protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier, boolean pastEdges) {
@@ -177,7 +177,7 @@ public class CropBlock extends VegetationBlock implements BonemealableBlock {
final boolean isPrecise
) {
if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(level, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent
- if (level instanceof ServerLevel serverLevel && entity instanceof Ravager && serverLevel.purpurConfig.ravagerGriefableBlocks.contains(serverLevel.getBlockState(pos).getBlock()) && org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !serverLevel.getGameRules().get(GameRules.MOB_GRIEFING))) { // CraftBukkit // Purpur - Configurable ravager griefable blocks list
+ if (level instanceof ServerLevel serverLevel && entity instanceof Ravager && serverLevel.purpurConfig.ravagerGriefableBlocks.contains(serverLevel.getBlockState(pos).getBlock()) && org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !serverLevel.getGameRules().get(GameRules.MOB_GRIEFING, serverLevel.purpurConfig.ravagerMobGriefingOverride))) { // CraftBukkit // Purpur - Configurable ravager griefable blocks list // Purpur - Add mobGriefing override to everything affected
serverLevel.destroyBlock(pos, true, entity);
}
diff --git a/net/minecraft/world/level/block/FarmBlock.java b/net/minecraft/world/level/block/FarmBlock.java
index 75b38812b538e0938bbbde62427fa9fd23d372a1..7ec5ef85dbface0ff194a7112d0c4b8e25cab6fe 100644
--- a/net/minecraft/world/level/block/FarmBlock.java
+++ b/net/minecraft/world/level/block/FarmBlock.java
@@ -114,7 +114,7 @@ public class FarmBlock extends Block {
diff --git a/net/minecraft/world/level/block/FarmlandBlock.java b/net/minecraft/world/level/block/FarmlandBlock.java
index 8bc58baa1542443235b57633d1e563f3487a2421..b51bb36da00bdfd25724579c0a4fb572abeefd81 100644
--- a/net/minecraft/world/level/block/FarmlandBlock.java
+++ b/net/minecraft/world/level/block/FarmlandBlock.java
@@ -113,7 +113,7 @@ public class FarmlandBlock extends Block {
if (level instanceof ServerLevel serverLevel
&& (serverLevel.purpurConfig.farmlandTrampleHeight >= 0D ? fallDistance >= serverLevel.purpurConfig.farmlandTrampleHeight : level.random.nextFloat() < fallDistance - 0.5) // Purpur - Configurable farmland trample height
&& (serverLevel.purpurConfig.farmlandTrampleHeight >= 0D ? fallDistance >= serverLevel.purpurConfig.farmlandTrampleHeight : level.getRandom().nextFloat() < fallDistance - 0.5) // Purpur - Configurable farmland trample height
&& entity instanceof LivingEntity
- && (entity instanceof Player || serverLevel.getGameRules().get(GameRules.MOB_GRIEFING))
+ && (entity instanceof Player || serverLevel.getGameRules().get(GameRules.MOB_GRIEFING, serverLevel.purpurConfig.farmlandMobGriefingOverride)) // Purpur - Add mobGriefing override to everything affected
&& entity.getBbWidth() * entity.getBbWidth() * entity.getBbHeight() > 0.512F) {
// CraftBukkit start - Interact soil
org.bukkit.event.Cancellable cancellable;
// CraftBukkit start - Interact soil
org.bukkit.event.Cancellable cancellable;
diff --git a/net/minecraft/world/level/block/PowderSnowBlock.java b/net/minecraft/world/level/block/PowderSnowBlock.java
index f3a9117bd066861a1b447e8a13108ad212cc499f..b0165c839b145e82af38fe8f61bbd0161015d867 100644
index 648262547aadff8e0615a93a9834ca654e581b3a..022daf760a649720c46e6e31591f2c1ad8a8f3ea 100644
--- a/net/minecraft/world/level/block/PowderSnowBlock.java
+++ b/net/minecraft/world/level/block/PowderSnowBlock.java
@@ -96,7 +96,7 @@ public class PowderSnowBlock extends Block implements BucketPickup {
@@ -103,7 +103,7 @@ public class PowderSnowBlock extends Block implements BucketPickup {
// CraftBukkit - move down
&& entity1.mayInteract(serverLevel, blockPos)) {
&& e.mayInteract(serverLevel, position)) {
// CraftBukkit start
- if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity1, pos, Blocks.AIR.defaultBlockState(), !(serverLevel.getGameRules().get(GameRules.MOB_GRIEFING) || entity1 instanceof Player))) {
+ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity1, pos, Blocks.AIR.defaultBlockState(), !(serverLevel.getGameRules().get(GameRules.MOB_GRIEFING, serverLevel.purpurConfig.powderSnowMobGriefingOverride) || entity1 instanceof Player))) { // Purpur - Add mobGriefing override to everything affected
- if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(e, pos, Blocks.AIR.defaultBlockState(), !(serverLevel.getGameRules().get(GameRules.MOB_GRIEFING) || e instanceof Player))) {
+ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(e, pos, Blocks.AIR.defaultBlockState(), !(serverLevel.getGameRules().get(GameRules.MOB_GRIEFING, serverLevel.purpurConfig.powderSnowMobGriefingOverride) || e instanceof Player))) { // Purpur - Add mobGriefing override to everything affected
return;
}
// CraftBukkit end
diff --git a/net/minecraft/world/level/block/TurtleEggBlock.java b/net/minecraft/world/level/block/TurtleEggBlock.java
index 912c36c2e814cf763b4fa01d149979be9ef460de..733c6ed0ce655d9ff9e03fc1a87131aa8e72eca0 100644
index 9293faf988be7013dbeddc9f98beb69a2dac9928..4f1e08c0e3f8ea89a55e02e8f0197fe4336ae0e2 100644
--- a/net/minecraft/world/level/block/TurtleEggBlock.java
+++ b/net/minecraft/world/level/block/TurtleEggBlock.java
@@ -214,7 +214,7 @@ public class TurtleEggBlock extends Block {
@@ -221,7 +221,7 @@ public class TurtleEggBlock extends Block {
// Purpur end - Option to disable turtle egg trampling with feather falling
if (entity instanceof Player) return true;
@@ -359,10 +359,10 @@ index 912c36c2e814cf763b4fa01d149979be9ef460de..733c6ed0ce655d9ff9e03fc1a87131aa
}
}
diff --git a/net/minecraft/world/level/gamerules/GameRules.java b/net/minecraft/world/level/gamerules/GameRules.java
index e71a9ffdb6c081baa79113f34b179671c179152d..746bc21fc09644366caa8bfd309f596c3cac59ec 100644
index 0d0a4008a84defbf1ea962b4e2f73776878956ec..e2fc5dc10c6ab84cb28e2adff2f87c24c8801309 100644
--- a/net/minecraft/world/level/gamerules/GameRules.java
+++ b/net/minecraft/world/level/gamerules/GameRules.java
@@ -113,6 +113,13 @@ public class GameRules {
@@ -128,6 +128,13 @@ public class GameRules {
return this.rules.keySet().stream();
}
@@ -373,6 +373,6 @@ index e71a9ffdb6c081baa79113f34b179671c179152d..746bc21fc09644366caa8bfd309f596c
+ return (Boolean) this.get(rule);
+ }
+
public <T> T get(GameRule<T> rule) {
T object = this.rules.get(rule);
if (object == null) {
public <T> T get(final GameRule<T> gameRule) {
T value = this.rules.get(gameRule);
if (value == null) {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Toggle for water sensitive mob damage
diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java
index a09b5035e91d50e12f613a7a1211c6869fbbf4df..e83900f8d6adbe8a48294f250bd6cc6e3fad8160 100644
index f40892bbe424408e3d11c887d5bd0fef179aaced..15bb425ed1569cbf445e81aa296039df8abc4746 100644
--- a/net/minecraft/world/entity/ambient/Bat.java
+++ b/net/minecraft/world/entity/ambient/Bat.java
@@ -109,6 +109,13 @@ public class Bat extends AmbientCreature {
@@ -23,10 +23,10 @@ index a09b5035e91d50e12f613a7a1211c6869fbbf4df..e83900f8d6adbe8a48294f250bd6cc6e
public boolean isFlapping() {
return !this.isResting() && this.tickCount % 10.0F == 0.0F;
diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java
index 79dfebbd72424d5a3a13d4ba89a555fdf782e703..947160c4dfc4e50bb75a1a797cb2f22602b22643 100644
index d4178d85b74a41a0d2808681008f1686578db98d..a3a98df8ffeb33d86330b5561252eda596642da8 100644
--- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java
+++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java
@@ -153,6 +153,13 @@ public class Axolotl extends Animal implements Bucketable {
@@ -150,6 +150,13 @@ public class Axolotl extends Animal implements Bucketable {
}
// Purpur end - Make entity breeding times configurable
@@ -38,22 +38,22 @@ index 79dfebbd72424d5a3a13d4ba89a555fdf782e703..947160c4dfc4e50bb75a1a797cb2f226
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
public float getWalkTargetValue(BlockPos pos, LevelReader level) {
public float getWalkTargetValue(final BlockPos pos, final LevelReader level) {
return 0.0F;
diff --git a/net/minecraft/world/entity/animal/bee/Bee.java b/net/minecraft/world/entity/animal/bee/Bee.java
index 473aa29e3075fcab44a14c2bc14d3f222b55cbad..e57200d6560a38cbecd681a30b75409412fce170 100644
index 36c5c555faa9a29ec742c97ea8a6fcf720e6d9a1..4fba5ce59065ac024a0108726623dab894ae45c5 100644
--- a/net/minecraft/world/entity/animal/bee/Bee.java
+++ b/net/minecraft/world/entity/animal/bee/Bee.java
@@ -185,7 +185,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -186,7 +186,7 @@ public class Bee extends Animal implements FlyingAnimal, NeutralMob {
// Paper end - Fix MC-167279
this.lookControl = new Bee.BeeLookControl(this);
this.setPathfindingMalus(PathType.DANGER_FIRE, -1.0F);
this.setPathfindingMalus(PathType.FIRE_IN_NEIGHBOR, -1.0F);
- if (this.level().purpurConfig.beeCanInstantlyStartDrowning) this.setPathfindingMalus(PathType.WATER, -1.0F); // Purpur - bee can instantly start drowning in water option
+ if (this.level().purpurConfig.beeCanInstantlyStartDrowning || isSensitiveToWater()) this.setPathfindingMalus(PathType.WATER, -1.0F); // Purpur - bee can instantly start drowning in water option // Purpur - Toggle for water sensitive mob damage
this.setPathfindingMalus(PathType.WATER_BORDER, 16.0F);
this.setPathfindingMalus(PathType.COCOA, -1.0F);
this.setPathfindingMalus(PathType.FENCE, -1.0F);
@@ -492,6 +492,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -495,6 +495,13 @@ public class Bee extends Animal implements FlyingAnimal, NeutralMob {
}
// Purpur end - Make entity breeding times configurable
@@ -68,10 +68,10 @@ index 473aa29e3075fcab44a14c2bc14d3f222b55cbad..e57200d6560a38cbecd681a30b754094
public long getPersistentAngerEndTime() {
return this.entityData.get(DATA_ANGER_END_TIME);
diff --git a/net/minecraft/world/entity/animal/chicken/Chicken.java b/net/minecraft/world/entity/animal/chicken/Chicken.java
index 029fe4ac952d9f56824de346d98b341bd0b9b65f..6308bb606b34d781e315f56a55e6544b3c156d85 100644
index ccf7c4630e08d9be54a4634c642a4cd1cd542a82..4a59e133fc6c68f3b3d495c62bb965718643f6b8 100644
--- a/net/minecraft/world/entity/animal/chicken/Chicken.java
+++ b/net/minecraft/world/entity/animal/chicken/Chicken.java
@@ -110,6 +110,13 @@ public class Chicken extends Animal {
@@ -113,6 +113,13 @@ public class Chicken extends Animal {
}
// Purpur end - Make entity breeding times configurable
@@ -86,10 +86,10 @@ index 029fe4ac952d9f56824de346d98b341bd0b9b65f..6308bb606b34d781e315f56a55e6544b
protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this));
diff --git a/net/minecraft/world/entity/animal/cow/Cow.java b/net/minecraft/world/entity/animal/cow/Cow.java
index 400b0a0a99590e3590cb66724acdc5ba9170f2c4..bb8c75d20e6a1300d68ae75233962bdc26736c77 100644
index 7981f60f10c44ab2459933cb15ee961103922364..7d3853d693a87e5225a16285631e0e2057685c1b 100644
--- a/net/minecraft/world/entity/animal/cow/Cow.java
+++ b/net/minecraft/world/entity/animal/cow/Cow.java
@@ -61,6 +61,13 @@ public class Cow extends AbstractCow {
@@ -66,6 +66,13 @@ public class Cow extends AbstractCow {
}
// Purpur end - Make entity breeding times configurable
@@ -101,10 +101,10 @@ index 400b0a0a99590e3590cb66724acdc5ba9170f2c4..bb8c75d20e6a1300d68ae75233962bdc
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder);
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
super.defineSynchedData(entityData);
diff --git a/net/minecraft/world/entity/animal/cow/MushroomCow.java b/net/minecraft/world/entity/animal/cow/MushroomCow.java
index e2aa027dc7a39fa8a8868a7d153e838113fcf97b..a8e6e703a51130066547724dd08bdfe5e11c99e5 100644
index 68a4edef68c9db6b2b0716fc6283e2c7345d4cda..d3e5e12c4e3c168a3a15d611f8ae5845ee365080 100644
--- a/net/minecraft/world/entity/animal/cow/MushroomCow.java
+++ b/net/minecraft/world/entity/animal/cow/MushroomCow.java
@@ -92,6 +92,13 @@ public class MushroomCow extends AbstractCow implements Shearable {
@@ -119,13 +119,13 @@ index e2aa027dc7a39fa8a8868a7d153e838113fcf97b..a8e6e703a51130066547724dd08bdfe5
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
public float getWalkTargetValue(BlockPos pos, LevelReader level) {
public float getWalkTargetValue(final BlockPos pos, final LevelReader level) {
return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos);
diff --git a/net/minecraft/world/entity/animal/dolphin/Dolphin.java b/net/minecraft/world/entity/animal/dolphin/Dolphin.java
index a5305e057d7f557bedca71962ebf19b0d7344abf..e3646a05c6cb973fad36297cc18cf48587a6f5cd 100644
index 857bafb865b78d83716d2d5f491c0928ae6951ca..c372a2cc7ec9ac03629a73a45bfc58f77894d63b 100644
--- a/net/minecraft/world/entity/animal/dolphin/Dolphin.java
+++ b/net/minecraft/world/entity/animal/dolphin/Dolphin.java
@@ -160,6 +160,13 @@ public class Dolphin extends AgeableWaterCreature {
@@ -162,6 +162,13 @@ public class Dolphin extends AgeableWaterCreature {
}
// Purpur end - Configurable entity base attributes
@@ -138,9 +138,9 @@ index a5305e057d7f557bedca71962ebf19b0d7344abf..e3646a05c6cb973fad36297cc18cf485
+
@Override
public @Nullable SpawnGroupData finalizeSpawn(
ServerLevelAccessor level, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData spawnGroupData
final ServerLevelAccessor level, final DifficultyInstance difficulty, final EntitySpawnReason spawnReason, final @Nullable SpawnGroupData groupData
diff --git a/net/minecraft/world/entity/animal/equine/Donkey.java b/net/minecraft/world/entity/animal/equine/Donkey.java
index d74a5cc2a43ef41fd00676bbd17fe4df9edb67ff..6cf6853c244b7589d2a57e7ae77933d4a1503ccd 100644
index 8c3d3f0f24e6f5a9b8aa9bf58f3c8b679896017d..5e0846fcaccfab5edbeb90bc61c2360cecf7a0c4 100644
--- a/net/minecraft/world/entity/animal/equine/Donkey.java
+++ b/net/minecraft/world/entity/animal/equine/Donkey.java
@@ -47,6 +47,13 @@ public class Donkey extends AbstractChestedHorse {
@@ -158,10 +158,10 @@ index d74a5cc2a43ef41fd00676bbd17fe4df9edb67ff..6cf6853c244b7589d2a57e7ae77933d4
public SoundEvent getAmbientSound() {
return SoundEvents.DONKEY_AMBIENT;
diff --git a/net/minecraft/world/entity/animal/equine/Horse.java b/net/minecraft/world/entity/animal/equine/Horse.java
index ba9df659ed019f9e58991059fe99c1471bfc94d8..1c17ab94901ce1c6370670c06bf0801ee6b5b393 100644
index dbb586058f38b6c4f81e2f6567b7ae8ebbaff5a2..64603ad973bdb697ca75642e8e42e7052efd4191 100644
--- a/net/minecraft/world/entity/animal/equine/Horse.java
+++ b/net/minecraft/world/entity/animal/equine/Horse.java
@@ -81,6 +81,13 @@ public class Horse extends AbstractHorse {
@@ -79,6 +79,13 @@ public class Horse extends AbstractHorse {
}
// Purpur end - Make entity breeding times configurable
@@ -173,13 +173,13 @@ index ba9df659ed019f9e58991059fe99c1471bfc94d8..1c17ab94901ce1c6370670c06bf0801e
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected void randomizeAttributes(RandomSource random) {
protected void randomizeAttributes(final RandomSource random) {
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt));
diff --git a/net/minecraft/world/entity/animal/equine/Llama.java b/net/minecraft/world/entity/animal/equine/Llama.java
index 960e48f5ae63d8c86758d2573510bf481ca4bca0..eb2fc0e6d497241f1b4f3971155b10d14f5427f8 100644
index b3c8ccbb3f79043427dcb6f383c4b02d35124689..e277a58a1c761198f59b987c95567b6e4d9c440b 100644
--- a/net/minecraft/world/entity/animal/equine/Llama.java
+++ b/net/minecraft/world/entity/animal/equine/Llama.java
@@ -159,6 +159,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
@@ -158,6 +158,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
}
// Purpur end - Make entity breeding times configurable
@@ -194,7 +194,7 @@ index 960e48f5ae63d8c86758d2573510bf481ca4bca0..eb2fc0e6d497241f1b4f3971155b10d1
return false;
}
diff --git a/net/minecraft/world/entity/animal/equine/Mule.java b/net/minecraft/world/entity/animal/equine/Mule.java
index 180a807026437e949e3f7c3d59864ea328f6f03f..9bafe3e204b3e4624a95b130552c8230c0835a30 100644
index cf0f3c9d5f8ff348e6fb76db823da4cadce4fc5b..291176b409097d15c2afff7fe8deb17ba07dbc12 100644
--- a/net/minecraft/world/entity/animal/equine/Mule.java
+++ b/net/minecraft/world/entity/animal/equine/Mule.java
@@ -46,6 +46,13 @@ public class Mule extends AbstractChestedHorse {
@@ -212,7 +212,7 @@ index 180a807026437e949e3f7c3d59864ea328f6f03f..9bafe3e204b3e4624a95b130552c8230
public SoundEvent getAmbientSound() {
return SoundEvents.MULE_AMBIENT;
diff --git a/net/minecraft/world/entity/animal/equine/SkeletonHorse.java b/net/minecraft/world/entity/animal/equine/SkeletonHorse.java
index af0e326f5ff8fcb82353bac3143103928a6a08e6..3865937e4a56636cde44f7d8f16873ae16512323 100644
index a4a878791be034140a50b901d5daf2533d299756..9365609fad67377ffe18e11c7959e0d92367852a 100644
--- a/net/minecraft/world/entity/animal/equine/SkeletonHorse.java
+++ b/net/minecraft/world/entity/animal/equine/SkeletonHorse.java
@@ -74,6 +74,13 @@ public class SkeletonHorse extends AbstractHorse {
@@ -230,7 +230,7 @@ index af0e326f5ff8fcb82353bac3143103928a6a08e6..3865937e4a56636cde44f7d8f16873ae
return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F);
}
diff --git a/net/minecraft/world/entity/animal/equine/TraderLlama.java b/net/minecraft/world/entity/animal/equine/TraderLlama.java
index 65ac46335d642d5dd8c01623721257a4fd53441d..4c07cd57aa3518adb4bc9b1213cc572a5b81f935 100644
index 7c41aecd2699725211babbac0350cb241f31ca41..a9fcf7827e6a6b061c2a861d1e59bca80117699b 100644
--- a/net/minecraft/world/entity/animal/equine/TraderLlama.java
+++ b/net/minecraft/world/entity/animal/equine/TraderLlama.java
@@ -77,6 +77,13 @@ public class TraderLlama extends Llama {
@@ -248,10 +248,10 @@ index 65ac46335d642d5dd8c01623721257a4fd53441d..4c07cd57aa3518adb4bc9b1213cc572a
public boolean isTraderLlama() {
return true;
diff --git a/net/minecraft/world/entity/animal/equine/ZombieHorse.java b/net/minecraft/world/entity/animal/equine/ZombieHorse.java
index fa2f18470123f98e336ab5c94bc791e9333356cb..b770d3118452b0b7a362b1f541bb602f4d3cbcec 100644
index 4be11663154a870a21832ddba05764a897ce90bd..586151b916a5e21c36578aa04cab9d71994dcf43 100644
--- a/net/minecraft/world/entity/animal/equine/ZombieHorse.java
+++ b/net/minecraft/world/entity/animal/equine/ZombieHorse.java
@@ -88,6 +88,13 @@ public class ZombieHorse extends AbstractHorse {
@@ -85,6 +85,13 @@ public class ZombieHorse extends AbstractHorse {
}
// Purpur end - Make entity breeding times configurable
@@ -266,7 +266,7 @@ index fa2f18470123f98e336ab5c94bc791e9333356cb..b770d3118452b0b7a362b1f541bb602f
return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 25.0);
}
diff --git a/net/minecraft/world/entity/animal/feline/Cat.java b/net/minecraft/world/entity/animal/feline/Cat.java
index d0aa698ef99cf3b1926018314b4067cc1cd8ac2a..92b67565485b2fade3e80fb4b944edfc12d9e0a2 100644
index 5c235149eca10c216f0f8d6e645a439d7dbcfbc3..0493926c7918059d82bafd20fed0883bb331bd55 100644
--- a/net/minecraft/world/entity/animal/feline/Cat.java
+++ b/net/minecraft/world/entity/animal/feline/Cat.java
@@ -135,6 +135,13 @@ public class Cat extends TamableAnimal {
@@ -282,9 +282,9 @@ index d0aa698ef99cf3b1926018314b4067cc1cd8ac2a..92b67565485b2fade3e80fb4b944edfc
+
@Override
protected void registerGoals() {
this.temptGoal = new Cat.CatTemptGoal(this, 0.6, stack -> stack.is(ItemTags.CAT_FOOD), true);
this.temptGoal = new Cat.CatTemptGoal(this, 0.6, i -> i.is(ItemTags.CAT_FOOD), true);
diff --git a/net/minecraft/world/entity/animal/feline/Ocelot.java b/net/minecraft/world/entity/animal/feline/Ocelot.java
index bf281fd4c050b87fd277ab68e812ab2dcd3d06aa..13272516003f763d2c69dc599c8ff7696bec718b 100644
index 2accf49e8dd907c8a482e5317d07b28fc5492a1e..9a582b789d3b3037c510c063a07f99f92ac58a1c 100644
--- a/net/minecraft/world/entity/animal/feline/Ocelot.java
+++ b/net/minecraft/world/entity/animal/feline/Ocelot.java
@@ -98,6 +98,13 @@ public class Ocelot extends Animal {
@@ -302,7 +302,7 @@ index bf281fd4c050b87fd277ab68e812ab2dcd3d06aa..13272516003f763d2c69dc599c8ff769
return this.entityData.get(DATA_TRUSTING);
}
diff --git a/net/minecraft/world/entity/animal/fish/Cod.java b/net/minecraft/world/entity/animal/fish/Cod.java
index e00e623d7df9e179d8bb5ee4812538578c5f4c08..8655aae805f239cbd049065232293854b18c73cf 100644
index 948d6a8e3465fd5985e91ca7eaa5f02258ad9625..f44214eaa47c2021f7ca9c84a7b89be15fecb5bc 100644
--- a/net/minecraft/world/entity/animal/fish/Cod.java
+++ b/net/minecraft/world/entity/animal/fish/Cod.java
@@ -32,6 +32,13 @@ public class Cod extends AbstractSchoolingFish {
@@ -320,7 +320,7 @@ index e00e623d7df9e179d8bb5ee4812538578c5f4c08..8655aae805f239cbd049065232293854
public ItemStack getBucketItemStack() {
return new ItemStack(Items.COD_BUCKET);
diff --git a/net/minecraft/world/entity/animal/fish/Pufferfish.java b/net/minecraft/world/entity/animal/fish/Pufferfish.java
index 8bd92b3a28ffe70cb9753050c2128c2e744fb1ee..414d79f9d1fbd9857c8baeb2888017d45f34f02b 100644
index 3ed54f746305a284177b609f410e2b7e9a6e6796..17dba2f70251c2d5f75cc116b300f328f117cecb 100644
--- a/net/minecraft/world/entity/animal/fish/Pufferfish.java
+++ b/net/minecraft/world/entity/animal/fish/Pufferfish.java
@@ -66,6 +66,13 @@ public class Pufferfish extends AbstractFish {
@@ -335,13 +335,13 @@ index 8bd92b3a28ffe70cb9753050c2128c2e744fb1ee..414d79f9d1fbd9857c8baeb2888017d4
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder);
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
super.defineSynchedData(entityData);
diff --git a/net/minecraft/world/entity/animal/fish/Salmon.java b/net/minecraft/world/entity/animal/fish/Salmon.java
index 97194d5c844bf96ba431c12ccc1a82cb8944c52b..424bd56ec9df8bd0a80d2fa79bc4f482eae2ab5c 100644
index d9276ab9af526f1714d3241bbf6f9c7906adec70..ba75ba1130c4fe5f4d7b29c624a17becd2a71c99 100644
--- a/net/minecraft/world/entity/animal/fish/Salmon.java
+++ b/net/minecraft/world/entity/animal/fish/Salmon.java
@@ -59,6 +59,13 @@ public class Salmon extends AbstractSchoolingFish {
@@ -60,6 +60,13 @@ public class Salmon extends AbstractSchoolingFish {
}
// Purpur end - Configurable entity base attributes
@@ -356,7 +356,7 @@ index 97194d5c844bf96ba431c12ccc1a82cb8944c52b..424bd56ec9df8bd0a80d2fa79bc4f482
public int getMaxSchoolSize() {
return 5;
diff --git a/net/minecraft/world/entity/animal/fish/TropicalFish.java b/net/minecraft/world/entity/animal/fish/TropicalFish.java
index 8ffb253c114d882c9459f74a27bd8a086ae82f01..04c30c60c76122018fa69cf1f3f64cae8ed62fad 100644
index fbe7b76aac06bb0dce7ae53dea85e947a53d1b64..17bc569bf97026e2c072633f1ad6e9e0102c137a 100644
--- a/net/minecraft/world/entity/animal/fish/TropicalFish.java
+++ b/net/minecraft/world/entity/animal/fish/TropicalFish.java
@@ -96,6 +96,13 @@ public class TropicalFish extends AbstractSchoolingFish {
@@ -370,14 +370,14 @@ index 8ffb253c114d882c9459f74a27bd8a086ae82f01..04c30c60c76122018fa69cf1f3f64cae
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
public static String getPredefinedName(int variantId) {
return "entity.minecraft.tropical_fish.predefined." + variantId;
public static String getPredefinedName(final int index) {
return "entity.minecraft.tropical_fish.predefined." + index;
}
diff --git a/net/minecraft/world/entity/animal/fox/Fox.java b/net/minecraft/world/entity/animal/fox/Fox.java
index a0ed30e8ccd41729de8e0ff977a61fa607386640..bc119c2f61adb6c6122119fda1df437bab40f9b4 100644
index f781d02d10317bf7cf9b5fe50706bbefb62820d3..aa419e7cb456f664c1eca1286777caca6bd10e7a 100644
--- a/net/minecraft/world/entity/animal/fox/Fox.java
+++ b/net/minecraft/world/entity/animal/fox/Fox.java
@@ -204,6 +204,13 @@ public class Fox extends Animal {
@@ -208,6 +208,13 @@ public class Fox extends Animal {
}
// Purpur end - Make entity breeding times configurable
@@ -389,13 +389,13 @@ index a0ed30e8ccd41729de8e0ff977a61fa607386640..bc119c2f61adb6c6122119fda1df437b
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder);
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
super.defineSynchedData(entityData);
diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java
index 07ba57ae845024e0f2fa03a68e126ec79bfc6b15..e5f5bc2c4b4f36e0e911b2c5ef67ef6e0d4cd0b1 100644
index da763ba40fdc52d6f6fec97e5e288fbef343ead6..0d40bbd8c42178c712f23300364138389ecde548 100644
--- a/net/minecraft/world/entity/animal/goat/Goat.java
+++ b/net/minecraft/world/entity/animal/goat/Goat.java
@@ -139,6 +139,13 @@ public class Goat extends Animal {
@@ -124,6 +124,13 @@ public class Goat extends Animal {
}
// Purpur end - Make entity breeding times configurable
@@ -407,13 +407,13 @@ index 07ba57ae845024e0f2fa03a68e126ec79bfc6b15..e5f5bc2c4b4f36e0e911b2c5ef67ef6e
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected Brain.Provider<Goat> brainProvider() {
return Brain.provider(MEMORY_TYPES, SENSOR_TYPES);
protected Brain<Goat> makeBrain(final Brain.Packed packedBrain) {
return BRAIN_PROVIDER.makeBrain(this, packedBrain);
diff --git a/net/minecraft/world/entity/animal/golem/CopperGolem.java b/net/minecraft/world/entity/animal/golem/CopperGolem.java
index b32932f1d7c9c0bbd4814eb145339a9a183ff9b9..e143db15040f8d5be5d07e04a41b7afaf42b4331 100644
index bc66450f8d1be97f11f8380755a9973e8ef4befa..078cb2f09e9aaf05bb965a27b90f34c7c3a4147d 100644
--- a/net/minecraft/world/entity/animal/golem/CopperGolem.java
+++ b/net/minecraft/world/entity/animal/golem/CopperGolem.java
@@ -140,6 +140,13 @@ public class CopperGolem extends AbstractGolem implements ContainerUser, Shearab
@@ -144,6 +144,13 @@ public class CopperGolem extends AbstractGolem implements ContainerUser, Shearab
}
// Purpur end - Configurable entity base attributes
@@ -428,7 +428,7 @@ index b32932f1d7c9c0bbd4814eb145339a9a183ff9b9..e143db15040f8d5be5d07e04a41b7afa
return Mob.createMobAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F).add(Attributes.STEP_HEIGHT, 1.0).add(Attributes.MAX_HEALTH, 12.0);
}
diff --git a/net/minecraft/world/entity/animal/golem/IronGolem.java b/net/minecraft/world/entity/animal/golem/IronGolem.java
index 677f584b38aeb6805db0bb867f62d5617e309f5e..d31c1f1b681922ca8f1657ffa333e8a6794e619f 100644
index ec08c9c2ac32863807061d93ec8894bd094f7ab4..77996312597da9a2bbcf89f798c10a0be0abcd39 100644
--- a/net/minecraft/world/entity/animal/golem/IronGolem.java
+++ b/net/minecraft/world/entity/animal/golem/IronGolem.java
@@ -99,6 +99,13 @@ public class IronGolem extends AbstractGolem implements NeutralMob {
@@ -446,10 +446,10 @@ index 677f584b38aeb6805db0bb867f62d5617e309f5e..d31c1f1b681922ca8f1657ffa333e8a6
protected void registerGoals() {
if (this.level().purpurConfig.ironGolemPoppyCalm) this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.ReceiveFlower(this)); // Purpur - Iron golem calm anger options
diff --git a/net/minecraft/world/entity/animal/golem/SnowGolem.java b/net/minecraft/world/entity/animal/golem/SnowGolem.java
index fa941ba3151da7b965678be7e4c6a4194863cd0a..94d319a8fba3a437fb55aa7daaaba0c5c9acbb3b 100644
index 7091f5bc2ecb9d4b86162fe364447df65d8e9348..2d3127f6846ff9eda1a0b89764dc837da6e7e0c7 100644
--- a/net/minecraft/world/entity/animal/golem/SnowGolem.java
+++ b/net/minecraft/world/entity/animal/golem/SnowGolem.java
@@ -124,7 +124,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
@@ -124,7 +124,7 @@ public class SnowGolem extends AbstractGolem implements RangedAttackMob, Shearab
@Override
public boolean isSensitiveToWater() {
@@ -459,10 +459,10 @@ index fa941ba3151da7b965678be7e4c6a4194863cd0a..94d319a8fba3a437fb55aa7daaaba0c5
@Override
diff --git a/net/minecraft/world/entity/animal/happyghast/HappyGhast.java b/net/minecraft/world/entity/animal/happyghast/HappyGhast.java
index 30204224ed83f6d3cfd64640b332b23cb74d379f..828793aaa2992fd1077040309154f814b302476a 100644
index 75a32b65da7080391d0c37622db9cb98c5e092b6..d3367430da307e2c0748874cbe77f265860152a0 100644
--- a/net/minecraft/world/entity/animal/happyghast/HappyGhast.java
+++ b/net/minecraft/world/entity/animal/happyghast/HappyGhast.java
@@ -153,6 +153,13 @@ public class HappyGhast extends Animal {
@@ -161,6 +161,13 @@ public class HappyGhast extends Animal {
}
// Purpur end - Make entity breeding times configurable
@@ -477,10 +477,10 @@ index 30204224ed83f6d3cfd64640b332b23cb74d379f..828793aaa2992fd1077040309154f814
protected void ageBoundaryReached() {
if (this.isBaby()) {
diff --git a/net/minecraft/world/entity/animal/panda/Panda.java b/net/minecraft/world/entity/animal/panda/Panda.java
index 163fe697f57459b36885fa3a18f41370347cab38..e9aa07dea0515f53a08a7066fa9e23e0ee69d69e 100644
index 02d5949fb91bbee84fa067dac14d20f53f4a029b..f97b8feaedb84baf479998cef7257231f85412d6 100644
--- a/net/minecraft/world/entity/animal/panda/Panda.java
+++ b/net/minecraft/world/entity/animal/panda/Panda.java
@@ -150,6 +150,13 @@ public class Panda extends Animal {
@@ -153,6 +153,13 @@ public class Panda extends Animal {
}
// Purpur end - Make entity breeding times configurable
@@ -492,10 +492,10 @@ index 163fe697f57459b36885fa3a18f41370347cab38..e9aa07dea0515f53a08a7066fa9e23e0
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected boolean canDispenserEquipIntoSlot(EquipmentSlot slot) {
protected boolean canDispenserEquipIntoSlot(final EquipmentSlot slot) {
return slot == EquipmentSlot.MAINHAND && this.canPickUpLoot();
diff --git a/net/minecraft/world/entity/animal/parrot/Parrot.java b/net/minecraft/world/entity/animal/parrot/Parrot.java
index 0d62046cb33ed750ab27229fe4f0b43c3a1dd5f4..e97782bc8232120d4e7d1feeb8ca87fd37a1fcf9 100644
index af3d3b90f2e4d433b3b842dbc37d8c507a73dc1f..d756d6931dbf560fef5cb9641ace6f091fbcfff9 100644
--- a/net/minecraft/world/entity/animal/parrot/Parrot.java
+++ b/net/minecraft/world/entity/animal/parrot/Parrot.java
@@ -214,6 +214,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal {
@@ -511,12 +511,12 @@ index 0d62046cb33ed750ab27229fe4f0b43c3a1dd5f4..e97782bc8232120d4e7d1feeb8ca87fd
+
@Override
public @Nullable SpawnGroupData finalizeSpawn(
ServerLevelAccessor level, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData spawnGroupData
final ServerLevelAccessor level, final DifficultyInstance difficulty, final EntitySpawnReason spawnReason, @Nullable SpawnGroupData groupData
diff --git a/net/minecraft/world/entity/animal/pig/Pig.java b/net/minecraft/world/entity/animal/pig/Pig.java
index 0cb09a058c2d21b10677482792b230464ed9f951..020932539727739b54ed2f7899cbf11ad940f4df 100644
index 514f13a6965b5f53890ddd2e47ea89e0c1a515c1..05141bc41dc5181a8f0526528147e7a6c015a707 100644
--- a/net/minecraft/world/entity/animal/pig/Pig.java
+++ b/net/minecraft/world/entity/animal/pig/Pig.java
@@ -95,6 +95,13 @@ public class Pig extends Animal implements ItemSteerable {
@@ -100,6 +100,13 @@ public class Pig extends Animal implements ItemSteerable {
}
// Purpur end - Make entity breeding times configurable
@@ -531,10 +531,10 @@ index 0cb09a058c2d21b10677482792b230464ed9f951..020932539727739b54ed2f7899cbf11a
protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this));
diff --git a/net/minecraft/world/entity/animal/polarbear/PolarBear.java b/net/minecraft/world/entity/animal/polarbear/PolarBear.java
index 97edd950e2142e73ad947590c99d6d5529cbd44c..13d26a6981d6907f35f1f2bde93934c7c1fe8120 100644
index 6d4713663c94e91da7d809e65fa205aff2782f38..2a28c9ef361909aa0c3946ed6857f7d340c8cfc0 100644
--- a/net/minecraft/world/entity/animal/polarbear/PolarBear.java
+++ b/net/minecraft/world/entity/animal/polarbear/PolarBear.java
@@ -133,6 +133,13 @@ public class PolarBear extends Animal implements NeutralMob {
@@ -134,6 +134,13 @@ public class PolarBear extends Animal implements NeutralMob {
}
// Purpur end - Make entity breeding times configurable
@@ -546,13 +546,13 @@ index 97edd950e2142e73ad947590c99d6d5529cbd44c..13d26a6981d6907f35f1f2bde93934c7
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
public @Nullable AgeableMob getBreedOffspring(ServerLevel level, AgeableMob partner) {
public @Nullable AgeableMob getBreedOffspring(final ServerLevel level, final AgeableMob partner) {
return EntityType.POLAR_BEAR.create(level, EntitySpawnReason.BREEDING);
diff --git a/net/minecraft/world/entity/animal/rabbit/Rabbit.java b/net/minecraft/world/entity/animal/rabbit/Rabbit.java
index 66fda64006c0a70ab4502f088637bb6871c3bb37..b1c72047f7aa63f62b0ad0274811b587b1d3486b 100644
index 4d79ce89c21ba0b973bbda01bf53665e3b7a1902..7dade80db9430e4db587ed23df992d70c6b7ee04 100644
--- a/net/minecraft/world/entity/animal/rabbit/Rabbit.java
+++ b/net/minecraft/world/entity/animal/rabbit/Rabbit.java
@@ -163,6 +163,13 @@ public class Rabbit extends Animal {
@@ -177,6 +177,13 @@ public class Rabbit extends Animal {
}
// Purpur end - Make entity breeding times configurable
@@ -567,7 +567,7 @@ index 66fda64006c0a70ab4502f088637bb6871c3bb37..b1c72047f7aa63f62b0ad0274811b587
public void registerGoals() {
this.goalSelector.addGoal(1, new FloatGoal(this));
diff --git a/net/minecraft/world/entity/animal/sheep/Sheep.java b/net/minecraft/world/entity/animal/sheep/Sheep.java
index 0e4505474a50d57338c16648cb6049d35455fdc6..7eca49c9237c61ab12f60ff16085aa8fd10c99ac 100644
index 9cc59891521963204399b7f67d94bb78c7e75fb6..0ceaa6dd493d0258c419d8b5c4394b35c0808704 100644
--- a/net/minecraft/world/entity/animal/sheep/Sheep.java
+++ b/net/minecraft/world/entity/animal/sheep/Sheep.java
@@ -95,6 +95,13 @@ public class Sheep extends Animal implements Shearable {
@@ -585,7 +585,7 @@ index 0e4505474a50d57338c16648cb6049d35455fdc6..7eca49c9237c61ab12f60ff16085aa8f
protected void registerGoals() {
this.eatBlockGoal = new EatBlockGoal(this);
diff --git a/net/minecraft/world/entity/animal/squid/GlowSquid.java b/net/minecraft/world/entity/animal/squid/GlowSquid.java
index 7d41aaa0546a9ca02e46ce46e61ecc57120bfca9..2aa2a84a7ada369c45a85119a933eb92297af4dc 100644
index cb3d0bd838473af87af74c7d1bab38593a6c8f6d..1fa3d614dd1c45ec42caffbe92e3f8db02b399b1 100644
--- a/net/minecraft/world/entity/animal/squid/GlowSquid.java
+++ b/net/minecraft/world/entity/animal/squid/GlowSquid.java
@@ -57,6 +57,13 @@ public class GlowSquid extends Squid {
@@ -603,10 +603,10 @@ index 7d41aaa0546a9ca02e46ce46e61ecc57120bfca9..2aa2a84a7ada369c45a85119a933eb92
protected ParticleOptions getInkParticle() {
return ParticleTypes.GLOW_SQUID_INK;
diff --git a/net/minecraft/world/entity/animal/squid/Squid.java b/net/minecraft/world/entity/animal/squid/Squid.java
index 5e4181f95711c6b0299f28de14d95da421dda373..e307ebfb8b2781b6175b520e148e6bd58d2b9dc4 100644
index cc0a1aaa6aa710c0f0b4df0e46e8ad7931f26b2f..e350763a3a22d825a25f02b60bd4c9223aa81f62 100644
--- a/net/minecraft/world/entity/animal/squid/Squid.java
+++ b/net/minecraft/world/entity/animal/squid/Squid.java
@@ -101,6 +101,13 @@ public class Squid extends AgeableWaterCreature {
@@ -104,6 +104,13 @@ public class Squid extends AgeableWaterCreature {
}
// Purpur end - Configurable entity base attributes
@@ -621,7 +621,7 @@ index 5e4181f95711c6b0299f28de14d95da421dda373..e307ebfb8b2781b6175b520e148e6bd5
protected void registerGoals() {
this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this));
diff --git a/net/minecraft/world/entity/animal/turtle/Turtle.java b/net/minecraft/world/entity/animal/turtle/Turtle.java
index fce1b1a22e091a1c05650c72e1ceb83e1a1d1ed1..7d5987fe641646ecbf8e389d57a0a9a04e9c0959 100644
index 62d9fce83cc44165c5356049a12bf6081c925857..6d09c0de38f2c91d2a0ab6dd0b694ab42b48a981 100644
--- a/net/minecraft/world/entity/animal/turtle/Turtle.java
+++ b/net/minecraft/world/entity/animal/turtle/Turtle.java
@@ -119,6 +119,13 @@ public class Turtle extends Animal {
@@ -635,14 +635,14 @@ index fce1b1a22e091a1c05650c72e1ceb83e1a1d1ed1..7d5987fe641646ecbf8e389d57a0a9a0
+ }
+ // Purpur end - Toggle for water sensitive mob damage
+
public void setHomePos(BlockPos homePos) {
this.homePos = homePos;
public void setHomePos(final BlockPos pos) {
this.homePos = pos;
}
diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java
index 08a1bafa0e45dbdbf8bdc4d5cb654d080590707d..20f945ee06bcdb4736e6d3a8b20a5cbd3d79df0f 100644
index 0561b38982c205edc848b1650152491698a80e29..781cac493f909b02483e5c4064cc2cc791b1dabd 100644
--- a/net/minecraft/world/entity/animal/wolf/Wolf.java
+++ b/net/minecraft/world/entity/animal/wolf/Wolf.java
@@ -223,6 +223,13 @@ public class Wolf extends TamableAnimal implements NeutralMob {
@@ -220,6 +220,13 @@ public class Wolf extends TamableAnimal implements NeutralMob {
}
// Purpur end - Make entity breeding times configurable
@@ -657,7 +657,7 @@ index 08a1bafa0e45dbdbf8bdc4d5cb654d080590707d..20f945ee06bcdb4736e6d3a8b20a5cbd
protected void registerGoals() {
this.goalSelector.addGoal(1, new FloatGoal(this));
diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
index ecfd9f7b56aee3b701821339f41b60bd7bef0e97..335bff0b9537ea4ea9717e76e824b07642d7dd8e 100644
index 51ca6a3fa75f3aef715d786a21327452390dde94..d7b909d65c8ef716ad652c97425148b7fbcd8f2e 100644
--- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
+++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
@@ -170,6 +170,13 @@ public class EnderDragon extends Mob implements Enemy {
@@ -675,10 +675,10 @@ index ecfd9f7b56aee3b701821339f41b60bd7bef0e97..335bff0b9537ea4ea9717e76e824b076
return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0).add(Attributes.CAMERA_DISTANCE, 16.0);
}
diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java
index df608186f3e9ab5b56a209be67cd02717d3f9734..4afa484099c7f813d5ae8c7cc8721a0d033c8e6e 100644
index 3e934aee6f651843d861cc87cc1f01a87742edf3..10818999c4e796a4dfd5a7dd21772c9eb8ca2579 100644
--- a/net/minecraft/world/entity/boss/wither/WitherBoss.java
+++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java
@@ -220,6 +220,13 @@ public class WitherBoss extends Monster implements RangedAttackMob {
@@ -222,6 +222,13 @@ public class WitherBoss extends Monster implements RangedAttackMob {
}
// Purpur end - Configurable entity base attributes
@@ -690,21 +690,21 @@ index df608186f3e9ab5b56a209be67cd02717d3f9734..4afa484099c7f813d5ae8c7cc8721a0d
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected PathNavigation createNavigation(Level level) {
protected PathNavigation createNavigation(final Level level) {
FlyingPathNavigation flyingPathNavigation = new FlyingPathNavigation(this, level);
diff --git a/net/minecraft/world/entity/monster/Blaze.java b/net/minecraft/world/entity/monster/Blaze.java
index 4cd7975a8e9e55d6b6ded0b7e13d8da436e49c6c..e2afd7677986c70dd924017e8822fd6abd808f48 100644
index b553c6dd60bd23fba7ee3df9886561fc7640f104..7f0e76437798f1bab7956722382e1517f8f71121 100644
--- a/net/minecraft/world/entity/monster/Blaze.java
+++ b/net/minecraft/world/entity/monster/Blaze.java
@@ -35,7 +35,7 @@ public class Blaze extends Monster {
public Blaze(EntityType<? extends Blaze> type, Level level) {
super(type, level);
public Blaze(final EntityType<? extends Blaze> blaze, final Level level) {
super(blaze, level);
this.moveControl = new org.purpurmc.purpur.controller.FlyingWithSpacebarMoveControllerWASD(this, 0.3F); // Purpur - Ridables
- this.setPathfindingMalus(PathType.WATER, -1.0F);
+ if (isSensitiveToWater()) this.setPathfindingMalus(PathType.WATER, -1.0F); // Purpur - Toggle for water sensitive mob damage
this.setPathfindingMalus(PathType.LAVA, 8.0F);
this.setPathfindingMalus(PathType.DANGER_FIRE, 0.0F);
this.setPathfindingMalus(PathType.DAMAGE_FIRE, 0.0F);
this.setPathfindingMalus(PathType.FIRE_IN_NEIGHBOR, 0.0F);
this.setPathfindingMalus(PathType.FIRE, 0.0F);
@@ -158,7 +158,7 @@ public class Blaze extends Monster {
@Override
@@ -715,7 +715,7 @@ index 4cd7975a8e9e55d6b6ded0b7e13d8da436e49c6c..e2afd7677986c70dd924017e8822fd6a
@Override
diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java
index ed1ccd712a2fe00740beeee4fe615976258f5c6c..b0ed96c243f9abb3868d92bb513ad1620aa8e269 100644
index 73b0efd692205f56862c7287d7222efebe3faf73..80327a6ba1da0145f087a7946c7a4dfb6d947ce7 100644
--- a/net/minecraft/world/entity/monster/Creeper.java
+++ b/net/minecraft/world/entity/monster/Creeper.java
@@ -266,6 +266,13 @@ public class Creeper extends Monster {
@@ -730,10 +730,10 @@ index ed1ccd712a2fe00740beeee4fe615976258f5c6c..b0ed96c243f9abb3868d92bb513ad162
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
public SoundEvent getHurtSound(DamageSource damageSource) {
public SoundEvent getHurtSound(final DamageSource source) {
return SoundEvents.CREEPER_HURT;
diff --git a/net/minecraft/world/entity/monster/ElderGuardian.java b/net/minecraft/world/entity/monster/ElderGuardian.java
index 57fb334f670d35aa181b13e12fa2c5f36da1dda6..1ea323a17440abbe36c9528e80e169816267005b 100644
index ffcfe02c51f6df1bd238c821a8d6535f4ccf019c..a98967c7a76d8e25da9e31eaa8f2ae0bf0704c9d 100644
--- a/net/minecraft/world/entity/monster/ElderGuardian.java
+++ b/net/minecraft/world/entity/monster/ElderGuardian.java
@@ -51,6 +51,13 @@ public class ElderGuardian extends Guardian {
@@ -751,12 +751,12 @@ index 57fb334f670d35aa181b13e12fa2c5f36da1dda6..1ea323a17440abbe36c9528e80e16981
return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.3F).add(Attributes.ATTACK_DAMAGE, 8.0).add(Attributes.MAX_HEALTH, 80.0);
}
diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java
index 79a1d8f67a22a8fa4a6c3b657e44bb9503687c27..47c621f01658f3392b58f3f5c1f31bd539f63dd6 100644
index 46a60e17837411e46a543d6f0254d7280d30a94c..8862ad857a4c99defe7621c59d8f3ef77ab7aff4 100644
--- a/net/minecraft/world/entity/monster/EnderMan.java
+++ b/net/minecraft/world/entity/monster/EnderMan.java
@@ -86,7 +86,7 @@ public class EnderMan extends Monster implements NeutralMob {
public EnderMan(EntityType<? extends EnderMan> type, Level level) {
public EnderMan(final EntityType<? extends EnderMan> type, final Level level) {
super(type, level);
- this.setPathfindingMalus(PathType.WATER, -1.0F);
+ if (isSensitiveToWater()) this.setPathfindingMalus(PathType.WATER, -1.0F); // Purpur - Toggle for water sensitive mob damage
@@ -773,7 +773,7 @@ index 79a1d8f67a22a8fa4a6c3b657e44bb9503687c27..47c621f01658f3392b58f3f5c1f31bd5
@Override
diff --git a/net/minecraft/world/entity/monster/Endermite.java b/net/minecraft/world/entity/monster/Endermite.java
index f92dfcf9e296714f3802264406d8ab627c9bf067..b5e620d62702e3330f5ced19f1baeb82bdc801ec 100644
index 040f0b59d93b1b94495253f3286bdba123c22ef4..859d490dd3be2843dde3a811bcc0d51e3eae76f0 100644
--- a/net/minecraft/world/entity/monster/Endermite.java
+++ b/net/minecraft/world/entity/monster/Endermite.java
@@ -72,6 +72,13 @@ public class Endermite extends Monster {
@@ -791,7 +791,7 @@ index f92dfcf9e296714f3802264406d8ab627c9bf067..b5e620d62702e3330f5ced19f1baeb82
protected void registerGoals() {
this.goalSelector.addGoal(1, new FloatGoal(this));
diff --git a/net/minecraft/world/entity/monster/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java
index 7d97c00ae49629b97104631317aa6174741cdd5e..443eb9f12d6df950c59c9d4db4853087fd23d24e 100644
index 254548dd024e4963bbcb1b1fce99194461d3f54d..89a2097c2c26dae7f12ddbac10bc091ec7f228d7 100644
--- a/net/minecraft/world/entity/monster/Ghast.java
+++ b/net/minecraft/world/entity/monster/Ghast.java
@@ -83,6 +83,13 @@ public class Ghast extends Mob implements Enemy {
@@ -809,7 +809,7 @@ index 7d97c00ae49629b97104631317aa6174741cdd5e..443eb9f12d6df950c59c9d4db4853087
protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
diff --git a/net/minecraft/world/entity/monster/Giant.java b/net/minecraft/world/entity/monster/Giant.java
index 40cf8f44a6b01d45306dab4ba4f9a7ea7c6590a9..f1176f73d4468b2f39e48fe5454c5f5bf481afd9 100644
index c39031e8fdfb0dff7867d9525dbddde110242647..43ebfe06ce2a8c15787d72a8ef54cd6c7cac2bfc 100644
--- a/net/minecraft/world/entity/monster/Giant.java
+++ b/net/minecraft/world/entity/monster/Giant.java
@@ -62,6 +62,13 @@ public class Giant extends Monster {
@@ -827,7 +827,7 @@ index 40cf8f44a6b01d45306dab4ba4f9a7ea7c6590a9..f1176f73d4468b2f39e48fe5454c5f5b
return Monster.createMonsterAttributes()
.add(Attributes.MAX_HEALTH, 100.0)
diff --git a/net/minecraft/world/entity/monster/Guardian.java b/net/minecraft/world/entity/monster/Guardian.java
index 1eaa4f255b01eddc93ddbc5615ad05e7d8273581..9948511659de9222a19f6b9f660e4441ea98a4a9 100644
index 12f6b4bf9fa011db34617e2115206202d7f2d32e..9ca62d9663fc2e8eb49780ceb7ff38e0363a09a6 100644
--- a/net/minecraft/world/entity/monster/Guardian.java
+++ b/net/minecraft/world/entity/monster/Guardian.java
@@ -97,6 +97,13 @@ public class Guardian extends Monster {
@@ -843,9 +843,9 @@ index 1eaa4f255b01eddc93ddbc5615ad05e7d8273581..9948511659de9222a19f6b9f660e4441
+
@Override
protected void registerGoals() {
MoveTowardsRestrictionGoal moveTowardsRestrictionGoal = new MoveTowardsRestrictionGoal(this, 1.0);
MoveTowardsRestrictionGoal goal = new MoveTowardsRestrictionGoal(this, 1.0);
diff --git a/net/minecraft/world/entity/monster/MagmaCube.java b/net/minecraft/world/entity/monster/MagmaCube.java
index e0fda9a975e00c49ba09db65d7b3fba8fa434757..1bf9d04e5e44272b02753290995795f194cbdae1 100644
index d40a4daeec1500f2d9865022ee6e3c386ad7533e..fba41f261e57a050d4e24d2611cc27edcbb84ddf 100644
--- a/net/minecraft/world/entity/monster/MagmaCube.java
+++ b/net/minecraft/world/entity/monster/MagmaCube.java
@@ -68,6 +68,13 @@ public class MagmaCube extends Slime {
@@ -863,10 +863,10 @@ index e0fda9a975e00c49ba09db65d7b3fba8fa434757..1bf9d04e5e44272b02753290995795f1
return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F);
}
diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java
index 6e8fe1b694ade45ffbf0b9bb39b954deffeb2402..2fa22088ac507eceb36f3c77f24a733076641d8f 100644
index da014eae20abb320ecb897517810e4ab53783a89..20096d8305bbfc29195834b87245c94096986ec8 100644
--- a/net/minecraft/world/entity/monster/Phantom.java
+++ b/net/minecraft/world/entity/monster/Phantom.java
@@ -128,6 +128,13 @@ public class Phantom extends Mob implements Enemy {
@@ -129,6 +129,13 @@ public class Phantom extends Mob implements Enemy {
}
// Purpur end - Phantoms attracted to crystals and crystals shoot phantoms
@@ -881,10 +881,10 @@ index 6e8fe1b694ade45ffbf0b9bb39b954deffeb2402..2fa22088ac507eceb36f3c77f24a7330
public boolean isFlapping() {
return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0;
diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java
index 7c69423eee05992b9c70321d528cc9d73b3e63ea..ad2913b02ded9b5087c69ba279cebfd81d9ef75e 100644
index e0ffded3500b221d5c65cff9377120e8c6c7d8c6..bb19e3f2e6522e8b7db32061c0ae2b2a37679369 100644
--- a/net/minecraft/world/entity/monster/Ravager.java
+++ b/net/minecraft/world/entity/monster/Ravager.java
@@ -103,6 +103,13 @@ public class Ravager extends Raider {
@@ -101,6 +101,13 @@ public class Ravager extends Raider {
}
// Purpur end - Configurable entity base attributes
@@ -899,10 +899,10 @@ index 7c69423eee05992b9c70321d528cc9d73b3e63ea..ad2913b02ded9b5087c69ba279cebfd8
protected void registerGoals() {
super.registerGoals();
diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java
index 30f2503ebd045b05f5594cef28389a694338d13a..0a5a6f23cd8e4317db4e7c0ba8883e99f3aff148 100644
index 84e27edf490fbe4ed0142b9bb90aab37151acf3d..cf49a580c8dacb895b7a8ec2531d3afee2ffc30c 100644
--- a/net/minecraft/world/entity/monster/Shulker.java
+++ b/net/minecraft/world/entity/monster/Shulker.java
@@ -133,6 +133,13 @@ public class Shulker extends AbstractGolem implements Enemy {
@@ -135,6 +135,13 @@ public class Shulker extends AbstractGolem implements Enemy {
}
// Purpur end - Configurable entity base attributes
@@ -917,7 +917,7 @@ index 30f2503ebd045b05f5594cef28389a694338d13a..0a5a6f23cd8e4317db4e7c0ba8883e99
protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
diff --git a/net/minecraft/world/entity/monster/Silverfish.java b/net/minecraft/world/entity/monster/Silverfish.java
index 7f94e9749283f1e51b449b0ef84ca08e246a1cc9..c64509a5027de1369bde610feba7a39aa5b404fd 100644
index e5a0a199685366f082904eb5e7550f0160f9c706..205c05f46d70d37e11a0e35c97128e0c20b94e23 100644
--- a/net/minecraft/world/entity/monster/Silverfish.java
+++ b/net/minecraft/world/entity/monster/Silverfish.java
@@ -65,6 +65,13 @@ public class Silverfish extends Monster {
@@ -935,7 +935,7 @@ index 7f94e9749283f1e51b449b0ef84ca08e246a1cc9..c64509a5027de1369bde610feba7a39a
protected void registerGoals() {
this.friendsGoal = new Silverfish.SilverfishWakeUpFriendsGoal(this);
diff --git a/net/minecraft/world/entity/monster/Slime.java b/net/minecraft/world/entity/monster/Slime.java
index f93a2c58b5835e9ce8318d28e944533ef69df8ef..c4222e17d9a1f4cba6a74099a167cff13856f3e3 100644
index 0713239089bac454b3228d80aaabfd1fca4bd08b..556930ac4d06b4f46a87d237857006729fea5ef5 100644
--- a/net/minecraft/world/entity/monster/Slime.java
+++ b/net/minecraft/world/entity/monster/Slime.java
@@ -135,6 +135,13 @@ public class Slime extends Mob implements Enemy {
@@ -953,19 +953,19 @@ index f93a2c58b5835e9ce8318d28e944533ef69df8ef..c4222e17d9a1f4cba6a74099a167cff1
protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java
index ad6515c2dcde0079095c6777f56319e9901850f8..758887f3fcec2bf0946cddb184e19a1c9b64eee3 100644
index 38a17c219bce1a8a8a67b136e0eaf5cf15ec94fd..1b6137674d807ed29d56e3f3120abe60254274e1 100644
--- a/net/minecraft/world/entity/monster/Strider.java
+++ b/net/minecraft/world/entity/monster/Strider.java
@@ -86,7 +86,7 @@ public class Strider extends Animal implements ItemSteerable {
public Strider(EntityType<? extends Strider> type, Level level) {
super(type, level);
@@ -87,7 +87,7 @@ public class Strider extends Animal implements ItemSteerable {
public Strider(final EntityType<? extends Strider> strider, final Level level) {
super(strider, level);
this.blocksBuilding = true;
- this.setPathfindingMalus(PathType.WATER, -1.0F);
+ if (isSensitiveToWater()) this.setPathfindingMalus(PathType.WATER, -1.0F); // Purpur - Toggle for water sensitive mob damage
this.setPathfindingMalus(PathType.LAVA, 0.0F);
this.setPathfindingMalus(PathType.DANGER_FIRE, 0.0F);
this.setPathfindingMalus(PathType.DAMAGE_FIRE, 0.0F);
@@ -388,7 +388,7 @@ public class Strider extends Animal implements ItemSteerable {
this.setPathfindingMalus(PathType.FIRE_IN_NEIGHBOR, 0.0F);
this.setPathfindingMalus(PathType.FIRE, 0.0F);
@@ -398,7 +398,7 @@ public class Strider extends Animal implements ItemSteerable {
@Override
public boolean isSensitiveToWater() {
@@ -975,10 +975,10 @@ index ad6515c2dcde0079095c6777f56319e9901850f8..758887f3fcec2bf0946cddb184e19a1c
@Override
diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java
index 32759864a8ff0c4e28ce80ae8906cbcf1927094e..6ead673c44891c6b1c1688f80bf299527d7bc777 100644
index 62fe1bb1632fbe8edf901c22c7972e729a5f6100..c7700ff6b7faf06116626ad95e11cd4604751eda 100644
--- a/net/minecraft/world/entity/monster/Vex.java
+++ b/net/minecraft/world/entity/monster/Vex.java
@@ -110,6 +110,13 @@ public class Vex extends Monster implements TraceableEntity {
@@ -111,6 +111,13 @@ public class Vex extends Monster implements TraceableEntity {
}
// Purpur end - Configurable entity base attributes
@@ -993,7 +993,7 @@ index 32759864a8ff0c4e28ce80ae8906cbcf1927094e..6ead673c44891c6b1c1688f80bf29952
public boolean isFlapping() {
return this.tickCount % TICKS_PER_FLAP == 0;
diff --git a/net/minecraft/world/entity/monster/Witch.java b/net/minecraft/world/entity/monster/Witch.java
index 3c3c258d4cc7cf7376d0d3ad0794ec3611ab81ce..86d9952ed0f692e8f229b0c0bcb6cacf53a00c8b 100644
index 6b17c2135397f349670a7180e88db4794d3902a8..bfa222c9b61bc2d20927fdf08e8baa5fda4fdbdc 100644
--- a/net/minecraft/world/entity/monster/Witch.java
+++ b/net/minecraft/world/entity/monster/Witch.java
@@ -82,6 +82,13 @@ public class Witch extends Raider implements RangedAttackMob {
@@ -1011,10 +1011,10 @@ index 3c3c258d4cc7cf7376d0d3ad0794ec3611ab81ce..86d9952ed0f692e8f229b0c0bcb6cacf
protected void registerGoals() {
super.registerGoals();
diff --git a/net/minecraft/world/entity/monster/Zoglin.java b/net/minecraft/world/entity/monster/Zoglin.java
index e0192a13b8d7131024471569bf34329ba0f28287..e2708eb836d60588c1bedb75c520e5007185034a 100644
index 4d4593f89e20e8e72a979cc2dee54566ef380462..15e5e3c63ec9bddaf19636e27dd21d12df9318ce 100644
--- a/net/minecraft/world/entity/monster/Zoglin.java
+++ b/net/minecraft/world/entity/monster/Zoglin.java
@@ -112,6 +112,13 @@ public class Zoglin extends Monster implements HoglinBase {
@@ -101,6 +101,13 @@ public class Zoglin extends Monster implements HoglinBase {
}
// Purpur end - Configurable entity base attributes
@@ -1026,13 +1026,13 @@ index e0192a13b8d7131024471569bf34329ba0f28287..e2708eb836d60588c1bedb75c520e500
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected Brain.Provider<Zoglin> brainProvider() {
return Brain.provider(MEMORY_TYPES, SENSOR_TYPES);
protected Brain<Zoglin> makeBrain(final Brain.Packed packedBrain) {
return BRAIN_PROVIDER.makeBrain(this, packedBrain);
diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java
index 4498fe26dff2cdec8e90d6559a66ebe7859195bb..5e3f7005a7167c786038823a8437ad2e90a41d2c 100644
index d158807f22a0a08614b2d7054663ef2782a519e3..d001cf955dba66435079eb2cc30e05aec963d2c6 100644
--- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java
+++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java
@@ -129,6 +129,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
@@ -105,6 +105,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
}
// Purpur end - Make entity breeding times configurable
@@ -1044,13 +1044,13 @@ index 4498fe26dff2cdec8e90d6559a66ebe7859195bb..5e3f7005a7167c786038823a8437ad2e
+ // Purpur end - Toggle for water sensitive mob damage
+
@VisibleForTesting
public void setTimeInOverworld(int timeInOverworld) {
public void setTimeInOverworld(final int timeInOverworld) {
this.timeInOverworld = timeInOverworld;
diff --git a/net/minecraft/world/entity/monster/illager/Evoker.java b/net/minecraft/world/entity/monster/illager/Evoker.java
index 334786b2c358c41058f2ac4b1fa4b185833cbd84..c4f45f6303a46ad54991c9013608a4e5ba8b9fee 100644
index d091a12ed1df31f945a04f50af1cbb89a16ca0cd..75276deb3208437fce669f9e483ff6c7a99d69a3 100644
--- a/net/minecraft/world/entity/monster/illager/Evoker.java
+++ b/net/minecraft/world/entity/monster/illager/Evoker.java
@@ -74,6 +74,13 @@ public class Evoker extends SpellcasterIllager {
@@ -75,6 +75,13 @@ public class Evoker extends SpellcasterIllager {
}
// Purpur end - Configurable entity base attributes
@@ -1065,10 +1065,10 @@ index 334786b2c358c41058f2ac4b1fa4b185833cbd84..c4f45f6303a46ad54991c9013608a4e5
protected void registerGoals() {
super.registerGoals();
diff --git a/net/minecraft/world/entity/monster/illager/Illusioner.java b/net/minecraft/world/entity/monster/illager/Illusioner.java
index 8fa53cccb73b2d8c599c898f298681735007d2a0..32278f51f4973d1294e52f0775697e9f5b295ee0 100644
index bc19b4c293a4101abd559c61c59021e076420b32..32b8f638ea26494cae648f4bb48a664ce2a5021e 100644
--- a/net/minecraft/world/entity/monster/illager/Illusioner.java
+++ b/net/minecraft/world/entity/monster/illager/Illusioner.java
@@ -86,6 +86,13 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob {
@@ -87,6 +87,13 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob {
}
// Purpur end - Configurable entity base attributes
@@ -1083,7 +1083,7 @@ index 8fa53cccb73b2d8c599c898f298681735007d2a0..32278f51f4973d1294e52f0775697e9f
protected void registerGoals() {
super.registerGoals();
diff --git a/net/minecraft/world/entity/monster/illager/Pillager.java b/net/minecraft/world/entity/monster/illager/Pillager.java
index 1e43c69366287c7a191a6f8e3a7d5459743f07a2..6190286ab2f454382d497b4fce47632e6f771215 100644
index 134650a5866459881c1dca4b77b47110fd67420a..bd9092a0fecef475bde06d94bc2f6726f21404fd 100644
--- a/net/minecraft/world/entity/monster/illager/Pillager.java
+++ b/net/minecraft/world/entity/monster/illager/Pillager.java
@@ -90,6 +90,13 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve
@@ -1101,7 +1101,7 @@ index 1e43c69366287c7a191a6f8e3a7d5459743f07a2..6190286ab2f454382d497b4fce47632e
protected void registerGoals() {
super.registerGoals();
diff --git a/net/minecraft/world/entity/monster/illager/Vindicator.java b/net/minecraft/world/entity/monster/illager/Vindicator.java
index 5f3857186e86e27fe237c62cec4af13ebf58debe..86b463a16e8630af4918ea43a2546995aa00244f 100644
index 865395b9ceddfaac4fc88701878a1cf349556fe1..aab0bd86da31ca73efc4988fa34c906886139ec3 100644
--- a/net/minecraft/world/entity/monster/illager/Vindicator.java
+++ b/net/minecraft/world/entity/monster/illager/Vindicator.java
@@ -82,6 +82,13 @@ public class Vindicator extends AbstractIllager {
@@ -1119,10 +1119,10 @@ index 5f3857186e86e27fe237c62cec4af13ebf58debe..86b463a16e8630af4918ea43a2546995
protected void registerGoals() {
super.registerGoals();
diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java
index 4fccd122a227e5fe80965c37afaa031c4a673978..d6c834914ddea76280466bf0f7d001a76af34f08 100644
index 356fc7507b58cc38cdf5ee11618ad3551fb3c6a2..de86e23b377ca0727d5f5234f2bc63180ddbbad2 100644
--- a/net/minecraft/world/entity/monster/piglin/Piglin.java
+++ b/net/minecraft/world/entity/monster/piglin/Piglin.java
@@ -166,6 +166,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
@@ -133,6 +133,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
}
// Purpur end - Configurable entity base attributes
@@ -1134,13 +1134,13 @@ index 4fccd122a227e5fe80965c37afaa031c4a673978..d6c834914ddea76280466bf0f7d001a7
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected void addAdditionalSaveData(ValueOutput output) {
protected void addAdditionalSaveData(final ValueOutput output) {
super.addAdditionalSaveData(output);
diff --git a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java
index 3d34bef7ffe9e66e77e3fc10b2c5869d98a4a5c9..4bf2038fea712e65f420ade915a18470b79318fc 100644
index 4d82bf4283cb3ff26d5a9c367a28b4debed6cb0d..79e084304cec441966a22f0028e021d19e49bfd3 100644
--- a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java
+++ b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java
@@ -90,6 +90,13 @@ public class PiglinBrute extends AbstractPiglin {
@@ -75,6 +75,13 @@ public class PiglinBrute extends AbstractPiglin {
}
// Purpur end - Configurable entity base attributes
@@ -1155,7 +1155,7 @@ index 3d34bef7ffe9e66e77e3fc10b2c5869d98a4a5c9..4bf2038fea712e65f420ade915a18470
return Monster.createMonsterAttributes()
.add(Attributes.MAX_HEALTH, 50.0)
diff --git a/net/minecraft/world/entity/monster/skeleton/Skeleton.java b/net/minecraft/world/entity/monster/skeleton/Skeleton.java
index 96d989cffc6ff72954ed92e2535c72992d489372..30d79be765118a50e2e2c5bfde6bf6bbc957cf40 100644
index 76b16400085d237194ed646b04210c8eca8398d3..a2fc1cf5fa77c1cc78610ce0b4bbd35a371878a0 100644
--- a/net/minecraft/world/entity/monster/skeleton/Skeleton.java
+++ b/net/minecraft/world/entity/monster/skeleton/Skeleton.java
@@ -50,6 +50,13 @@ public class Skeleton extends AbstractSkeleton {
@@ -1170,10 +1170,10 @@ index 96d989cffc6ff72954ed92e2535c72992d489372..30d79be765118a50e2e2c5bfde6bf6bb
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder);
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
super.defineSynchedData(entityData);
diff --git a/net/minecraft/world/entity/monster/skeleton/Stray.java b/net/minecraft/world/entity/monster/skeleton/Stray.java
index 575f30cc9a6166a4e0733cc33e8b5814acb92660..ec19c49d195daff5839c991cce63b1ffc15a7e0b 100644
index ce9364040d6e856fd1fa42baa75b403098e6813f..64dc2a04bb2ae4dc63083a24c48f671bfc8ff8ea 100644
--- a/net/minecraft/world/entity/monster/skeleton/Stray.java
+++ b/net/minecraft/world/entity/monster/skeleton/Stray.java
@@ -47,6 +47,13 @@ public class Stray extends AbstractSkeleton {
@@ -1188,10 +1188,10 @@ index 575f30cc9a6166a4e0733cc33e8b5814acb92660..ec19c49d195daff5839c991cce63b1ff
+ // Purpur end - Toggle for water sensitive mob damage
+
public static boolean checkStraySpawnRules(
EntityType<Stray> entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random
final EntityType<Stray> type, final ServerLevelAccessor level, final EntitySpawnReason spawnReason, final BlockPos pos, final RandomSource random
) {
diff --git a/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java b/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java
index f38bb54c0f5d7797179e5e75eb8092baea7b9dcb..3e8cc658b333f1259784e1426896ac8b8c1537fa 100644
index 024b6d01eaf36ec6c9a85da669cc6bd0a4a6fc90..f1cf1d01a497fc46d201ad403b459f9886059d0f 100644
--- a/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java
+++ b/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java
@@ -59,6 +59,13 @@ public class WitherSkeleton extends AbstractSkeleton {
@@ -1209,7 +1209,7 @@ index f38bb54c0f5d7797179e5e75eb8092baea7b9dcb..3e8cc658b333f1259784e1426896ac8b
protected void registerGoals() {
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true));
diff --git a/net/minecraft/world/entity/monster/spider/CaveSpider.java b/net/minecraft/world/entity/monster/spider/CaveSpider.java
index a1391173cc4997df723c59f176726dde88491978..fad3e951e443f04f5bf0423cde42c0ae299a4236 100644
index beba154f2a76d3d8f7d9b44c1b45b83c9dc3b86c..cbbfdd2dde1437955f1007618244eeb72768b8fd 100644
--- a/net/minecraft/world/entity/monster/spider/CaveSpider.java
+++ b/net/minecraft/world/entity/monster/spider/CaveSpider.java
@@ -51,6 +51,13 @@ public class CaveSpider extends Spider {
@@ -1224,10 +1224,10 @@ index a1391173cc4997df723c59f176726dde88491978..fad3e951e443f04f5bf0423cde42c0ae
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
public boolean doHurtTarget(ServerLevel level, Entity target) {
public boolean doHurtTarget(final ServerLevel level, final Entity target) {
if (super.doHurtTarget(level, target)) {
diff --git a/net/minecraft/world/entity/monster/spider/Spider.java b/net/minecraft/world/entity/monster/spider/Spider.java
index 6a9c807ed50dab4b65787d9f7269385103fa5f26..81c500de41b11d4aa6c52dc290f132ad2c23f009 100644
index 696d7fa001de544fd2124b4e1135725547a15a94..43c50e6808eaab4bb31ffbbc633a66bab49b9574 100644
--- a/net/minecraft/world/entity/monster/spider/Spider.java
+++ b/net/minecraft/world/entity/monster/spider/Spider.java
@@ -77,6 +77,13 @@ public class Spider extends Monster {
@@ -1245,10 +1245,10 @@ index 6a9c807ed50dab4b65787d9f7269385103fa5f26..81c500de41b11d4aa6c52dc290f132ad
protected void registerGoals() {
this.goalSelector.addGoal(1, new FloatGoal(this));
diff --git a/net/minecraft/world/entity/monster/zombie/Drowned.java b/net/minecraft/world/entity/monster/zombie/Drowned.java
index 327086c972423e4f73402ea2e64519a355fa7b5a..ec36b854dccae7cef905aeb2fcd4ec177828139c 100644
index 0f64fe7e15655c63f996106d504ab4d18dac4a1c..e4769eeacc3ac97f90acb5ed0127990466c8d886 100644
--- a/net/minecraft/world/entity/monster/zombie/Drowned.java
+++ b/net/minecraft/world/entity/monster/zombie/Drowned.java
@@ -126,6 +126,13 @@ public class Drowned extends Zombie implements RangedAttackMob {
@@ -133,6 +133,13 @@ public class Drowned extends Zombie implements RangedAttackMob {
}
// Purpur end - Configurable jockey options
@@ -1263,10 +1263,10 @@ index 327086c972423e4f73402ea2e64519a355fa7b5a..ec36b854dccae7cef905aeb2fcd4ec17
protected void addBehaviourGoals() {
this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0));
diff --git a/net/minecraft/world/entity/monster/zombie/Husk.java b/net/minecraft/world/entity/monster/zombie/Husk.java
index 583a1c5bc0add01419f8eb90c65b612db972844d..d2c205f88d3d4e722ab407903ea019f51a3dcdb7 100644
index c3f2d9ab49eb501f26939387624f326227908b81..8d6262e99fb3ad98d3142ee069f07d2370ca0778 100644
--- a/net/minecraft/world/entity/monster/zombie/Husk.java
+++ b/net/minecraft/world/entity/monster/zombie/Husk.java
@@ -75,6 +75,13 @@ public class Husk extends Zombie {
@@ -83,6 +83,13 @@ public class Husk extends Zombie {
}
// Purpur end - Configurable jockey options
@@ -1281,10 +1281,10 @@ index 583a1c5bc0add01419f8eb90c65b612db972844d..d2c205f88d3d4e722ab407903ea019f5
public boolean isSunSensitive() {
return false;
diff --git a/net/minecraft/world/entity/monster/zombie/Zombie.java b/net/minecraft/world/entity/monster/zombie/Zombie.java
index 88143183167de665216c73b5e19064d7023778b0..b3c62374719e2a0461a587f1311b2e8d90cb892b 100644
index 5bf9970b93e27004dd832c8465dc95a681583ef6..0777e4e0c3aa932699f124c83a571ce913327740 100644
--- a/net/minecraft/world/entity/monster/zombie/Zombie.java
+++ b/net/minecraft/world/entity/monster/zombie/Zombie.java
@@ -142,6 +142,13 @@ public class Zombie extends Monster {
@@ -152,6 +152,13 @@ public class Zombie extends Monster {
}
// Purpur end - Configurable jockey options
@@ -1299,7 +1299,7 @@ index 88143183167de665216c73b5e19064d7023778b0..b3c62374719e2a0461a587f1311b2e8d
protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
diff --git a/net/minecraft/world/entity/monster/zombie/ZombieVillager.java b/net/minecraft/world/entity/monster/zombie/ZombieVillager.java
index 020a15431cca2186fef3f7f6101cef77dabad393..df9682cacc2913aaf51b3afbd86bbc080ab8bde0 100644
index 8a5634d2204b9abae560d34a7b0616b3ebdc68ab..ecbac0d55dbe921ac2e185e0acab5691579be512 100644
--- a/net/minecraft/world/entity/monster/zombie/ZombieVillager.java
+++ b/net/minecraft/world/entity/monster/zombie/ZombieVillager.java
@@ -131,6 +131,13 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
@@ -1314,13 +1314,13 @@ index 020a15431cca2186fef3f7f6101cef77dabad393..df9682cacc2913aaf51b3afbd86bbc08
+ // Purpur end - Toggle for water sensitive mob damage
+
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder);
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
super.defineSynchedData(entityData);
diff --git a/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java
index ec39ad6740361774f9ecfda7186cab9d8fac90f2..9a1da88752b0dd708365dd41a074cc0e90f36e1c 100644
index d1edf1f44de1fc6d23bcd8044f8bf4165821790e..6cc4d4729520c60b98d45d5e7dd674e599616505 100644
--- a/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java
+++ b/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java
@@ -106,6 +106,13 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
@@ -110,6 +110,13 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
}
// Purpur end - Configurable jockey options
@@ -1335,10 +1335,10 @@ index ec39ad6740361774f9ecfda7186cab9d8fac90f2..9a1da88752b0dd708365dd41a074cc0e
protected void addBehaviourGoals() {
this.goalSelector.addGoal(1, new SpearUseGoal<>(this, 1.0, 1.0, 10.0F, 2.0F));
diff --git a/net/minecraft/world/entity/npc/villager/Villager.java b/net/minecraft/world/entity/npc/villager/Villager.java
index ed6642023fccbc8f825d7c5c206d73ffd666f0f9..b6bfe06a2ad8e4219d99de050b30ce1ad15b8b34 100644
index fffc71d2f0cd0d4c4f5d8fad38130208cdbe5e67..fe93e373ea46970af5ca117e80a7d5a2497afeca 100644
--- a/net/minecraft/world/entity/npc/villager/Villager.java
+++ b/net/minecraft/world/entity/npc/villager/Villager.java
@@ -282,6 +282,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -284,6 +284,13 @@ public class Villager extends AbstractVillager implements VillagerDataHolder, Re
}
// Purpur end - Configurable entity base attributes
@@ -1351,9 +1351,9 @@ index ed6642023fccbc8f825d7c5c206d73ffd666f0f9..b6bfe06a2ad8e4219d99de050b30ce1a
+
@Override
public Brain<Villager> getBrain() {
return (Brain<Villager>)super.getBrain();
return (Brain<Villager>) super.getBrain();
diff --git a/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java b/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
index c6c4f4f2a970db7e782181eaca312931b192b0d5..cabebbc25788a8c41912f97dac85af41c9433b68 100644
index ea74d8ac0b5de890124361e65aeb9a08ad09fa1b..cbbfa09d53ada7c39e9504d28770867989eaa5c1 100644
--- a/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
+++ b/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
@@ -99,6 +99,13 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over

View File

@@ -6,23 +6,20 @@ Subject: [PATCH] API for any mob to burn daylight
Co-authored by: Encode42 <me@encode42.dev>
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index c8bc831c49df48c3f2ea2ea2d22a0aec5d37923c..41506648031e9c7a1acf12f56ba02b4aadec344c 100644
index afcdf4aa479e27c858afab01191344e14a1f4ecc..5d581af745468f61048448c8a845990538662e3f 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -544,6 +544,24 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
@@ -452,6 +452,21 @@ public abstract class Entity
}
// Purpur end - Add canSaveToDisk to Entity
+ // Purpur start - copied from Mob - API for any mob to burn daylight
+ public boolean isSunBurnTick() {
+ if (!this.level().isClientSide() && this.level().environmentAttributes().getValue(EnvironmentAttributes.MONSTERS_BURN, this.position())) {
+ float lightLevelDependentMagicValue = this.getLightLevelDependentMagicValue();
+ BlockPos blockPos = BlockPos.containing(this.getX(), this.getEyeY(), this.getZ());
+ boolean flag = this.isInWater() || this.isInPowderSnow || this.wasInPowderSnow;
+ if (lightLevelDependentMagicValue > 0.5F
+ && this.random.nextFloat() * 30.0F < (lightLevelDependentMagicValue - 0.4F) * 2.0F
+ && !flag
+ && this.level().canSeeSky(blockPos)) {
+ float br = this.getLightLevelDependentMagicValue();
+ BlockPos roundedPos = BlockPos.containing(this.getX(), this.getEyeY(), this.getZ());
+ boolean isInNonBurnableBlock = this.isInWaterOrRain() || this.isInPowderSnow || this.wasInPowderSnow;
+ if (br > 0.5F && this.random.nextFloat() * 30.0F < (br - 0.4F) * 2.0F && !isInNonBurnableBlock && this.level().canSeeSky(roundedPos)) {
+ return true;
+ }
+ }
@@ -31,38 +28,38 @@ index c8bc831c49df48c3f2ea2ea2d22a0aec5d37923c..41506648031e9c7a1acf12f56ba02b4a
+ }
+ // Purpur end - copied from Mob - API for any mob to burn daylight
+
public Entity(EntityType<?> type, Level level) {
public Entity(final EntityType<?> type, final Level level) {
this.type = type;
this.level = level;
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
index 717e42ed210408c30f3fa2b6d786a2a51abfecc6..3fc775aa326701f4f491d487d587dfa39ed1db47 100644
index 7146381e06ed1b946ce43dca293f52da05b46314..08324c0a0e87eb0ed8ea111389a3a9111031e034 100644
--- a/net/minecraft/world/entity/LivingEntity.java
+++ b/net/minecraft/world/entity/LivingEntity.java
@@ -290,6 +290,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
@@ -291,6 +291,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
public boolean silentDeath = false; // Paper - mark entity as dying silently for cancellable death event
public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper - Friction API
public int invulnerableDuration = LivingEntity.INVULNERABLE_DURATION; // Paper - configurable invulnerable duration
+ protected boolean shouldBurnInDay = false; public boolean shouldBurnInDay() { return this.shouldBurnInDay; } public void setShouldBurnInDay(boolean shouldBurnInDay) { this.shouldBurnInDay = shouldBurnInDay; } // Purpur - API for any mob to burn daylight
// CraftBukkit end
protected LivingEntity(EntityType<? extends LivingEntity> type, Level level) {
@@ -793,6 +794,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
this.getSleepingPos().ifPresent(blockPos -> output.store("sleeping_pos", BlockPos.CODEC, blockPos));
DataResult<Dynamic<?>> dataResult = this.brain.serializeStart(NbtOps.INSTANCE).map(tag -> new Dynamic<>(NbtOps.INSTANCE, tag));
dataResult.resultOrPartial(LOGGER::error).ifPresent(dynamic -> output.store("Brain", Codec.PASSTHROUGH, (Dynamic<?>)dynamic));
protected LivingEntity(final EntityType<? extends LivingEntity> type, final Level level) {
@@ -788,6 +789,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
output.putBoolean("FallFlying", this.isFallFlying());
this.getSleepingPos().ifPresent(sleepingPos -> output.store("sleeping_pos", BlockPos.CODEC, sleepingPos));
output.store("Brain", Brain.Packed.CODEC, this.brain.pack());
+ output.putBoolean("Purpur.ShouldBurnInDay", this.shouldBurnInDay); // Purpur - API for any mob to burn daylight
if (this.lastHurtByPlayer != null) {
this.lastHurtByPlayer.store(output, "last_hurt_by_player");
output.putInt("last_hurt_by_player_memory_time", this.lastHurtByPlayerMemoryTime);
@@ -917,6 +919,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
@@ -912,6 +914,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
} // Paper - The sleeping pos will always also set the actual pos, so a desync suggests something is wrong
}, this::clearSleepingPos);
input.read("Brain", Codec.PASSTHROUGH).ifPresent(dynamic -> this.brain = this.makeBrain((Dynamic<?>)dynamic));
input.read("Brain", Brain.Packed.CODEC).ifPresent(packedBrain -> this.brain = this.makeBrain(packedBrain));
+ this.shouldBurnInDay = input.getBooleanOr("Purpur.ShouldBurnInDay", this.shouldBurnInDay); // Purpur - API for any mob to burn daylight
this.lastHurtByPlayer = EntityReference.read(input, "last_hurt_by_player");
this.lastHurtByPlayerMemoryTime = input.getIntOr("last_hurt_by_player_memory_time", 0);
this.lastHurtByMob = EntityReference.read(input, "last_hurt_by_mob");
@@ -3862,6 +3865,37 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
@@ -3915,6 +3918,37 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
if (this.level() instanceof ServerLevel serverLevel && this.isSensitiveToWater() && this.isInWaterOrRain()) {
this.hurtServer(serverLevel, this.damageSources().drown(), 1.0F);
}
@@ -101,33 +98,30 @@ index 717e42ed210408c30f3fa2b6d786a2a51abfecc6..3fc775aa326701f4f491d487d587dfa3
protected void applyInput() {
diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java
index 01667b8d45653aa6b0f77d65599f7dc68979f9f1..9cf790b9293788857e3ca6ec23f22e6e1dea57ae 100644
index 43f1a9287d2a3010d35a88d58df3e950f1011eec..44e3e723d6a796917e73012dbd03d4b36cb11a0e 100644
--- a/net/minecraft/world/entity/Mob.java
+++ b/net/minecraft/world/entity/Mob.java
@@ -544,9 +544,9 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
@@ -550,9 +550,9 @@ public abstract class Mob extends LivingEntity implements Targeting, EquipmentUs
@Override
public void aiStep() {
super.aiStep();
- if (this.getType().is(EntityTypeTags.BURN_IN_DAYLIGHT)) {
+ /*if (this.getType().is(EntityTypeTags.BURN_IN_DAYLIGHT)) { // Purpur start - implemented in LivingEntity - API for any mob to burn daylight
- if (this.is(EntityTypeTags.BURN_IN_DAYLIGHT)) {
+ /*if (this.is(EntityTypeTags.BURN_IN_DAYLIGHT)) { // Purpur start - implemented in LivingEntity - API for any mob to burn daylight
this.burnUndead();
- }
+ }*/ // Purpur end - implemented in LivingEntity - API for any mob to burn daylight
ProfilerFiller profilerFiller = Profiler.get();
profilerFiller.push("looting");
@@ -601,19 +601,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
ProfilerFiller profiler = Profiler.get();
profiler.push("looting");
@@ -604,16 +604,8 @@ public abstract class Mob extends LivingEntity implements Targeting, EquipmentUs
}
public boolean isSunBurnTick() {
- if (!this.level().isClientSide() && this.level().environmentAttributes().getValue(EnvironmentAttributes.MONSTERS_BURN, this.position())) {
- float lightLevelDependentMagicValue = this.getLightLevelDependentMagicValue();
- BlockPos blockPos = BlockPos.containing(this.getX(), this.getEyeY(), this.getZ());
- boolean flag = this.isInWaterOrRain() || this.isInPowderSnow || this.wasInPowderSnow;
- if (lightLevelDependentMagicValue > 0.5F
- && this.random.nextFloat() * 30.0F < (lightLevelDependentMagicValue - 0.4F) * 2.0F
- && !flag
- && this.level().canSeeSky(blockPos)) {
- float br = this.getLightLevelDependentMagicValue();
- BlockPos roundedPos = BlockPos.containing(this.getX(), this.getEyeY(), this.getZ());
- boolean isInNonBurnableBlock = this.isInWaterOrRain() || this.isInPowderSnow || this.wasInPowderSnow;
- if (br > 0.5F && this.random.nextFloat() * 30.0F < (br - 0.4F) * 2.0F && !isInNonBurnableBlock && this.level().canSeeSky(roundedPos)) {
- return true;
- }
- }
@@ -139,34 +133,34 @@ index 01667b8d45653aa6b0f77d65599f7dc68979f9f1..9cf790b9293788857e3ca6ec23f22e6e
protected Vec3i getPickupReach() {
diff --git a/net/minecraft/world/entity/animal/equine/ZombieHorse.java b/net/minecraft/world/entity/animal/equine/ZombieHorse.java
index b770d3118452b0b7a362b1f541bb602f4d3cbcec..45bb4df25015568f0758095d9a309633bed520f3 100644
index 586151b916a5e21c36578aa04cab9d71994dcf43..426b468ee821a7441d15dae3634032535cb60725 100644
--- a/net/minecraft/world/entity/animal/equine/ZombieHorse.java
+++ b/net/minecraft/world/entity/animal/equine/ZombieHorse.java
@@ -50,6 +50,7 @@ public class ZombieHorse extends AbstractHorse {
@@ -47,6 +47,7 @@ public class ZombieHorse extends AbstractHorse {
public ZombieHorse(final EntityType<? extends ZombieHorse> type, final Level level) {
super(type, level);
this.setPathfindingMalus(PathType.DANGER_OTHER, -1.0F);
this.setPathfindingMalus(PathType.DAMAGE_OTHER, -1.0F);
+ this.setShouldBurnInDay(true); // Purpur - API for any mob to burn daylight
}
// Purpur start - Ridables
diff --git a/net/minecraft/world/entity/animal/nautilus/ZombieNautilus.java b/net/minecraft/world/entity/animal/nautilus/ZombieNautilus.java
index 94383c5020b6631203ddc4e0a58a222729ffe9a2..7dd933dd38fc50e870bc74e5a54e2b50a85fa6f3 100644
index 18bfb321e3728d3fa0596da0b86e4b76ced2178a..ab97449bfa5e8b5615e0f2b6b16be2fe7e4233fd 100644
--- a/net/minecraft/world/entity/animal/nautilus/ZombieNautilus.java
+++ b/net/minecraft/world/entity/animal/nautilus/ZombieNautilus.java
@@ -41,6 +41,7 @@ public class ZombieNautilus extends AbstractNautilus {
@@ -46,6 +46,7 @@ public class ZombieNautilus extends AbstractNautilus {
public ZombieNautilus(EntityType<? extends ZombieNautilus> type, Level level) {
public ZombieNautilus(final EntityType<? extends ZombieNautilus> type, final Level level) {
super(type, level);
+ this.setShouldBurnInDay(true); // Purpur - API for any mob to burn daylight
}
// Purpur start - Configurable entity base attributes
diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java
index 2fa22088ac507eceb36f3c77f24a733076641d8f..ff944ad57d4e9e4a910cd63282e5e7594626365e 100644
index 20096d8305bbfc29195834b87245c94096986ec8..6b6eed1c636f2ca65d0cbcd71e96bdd1b2063267 100644
--- a/net/minecraft/world/entity/monster/Phantom.java
+++ b/net/minecraft/world/entity/monster/Phantom.java
@@ -52,7 +52,7 @@ public class Phantom extends Mob implements Enemy {
@@ -53,7 +53,7 @@ public class Phantom extends Mob implements Enemy {
Vec3 crystalPosition; // Purpur - Phantoms attracted to crystals and crystals shoot phantoms
// Paper start
public java.util.@Nullable UUID spawningEntity;
@@ -175,7 +169,7 @@ index 2fa22088ac507eceb36f3c77f24a733076641d8f..ff944ad57d4e9e4a910cd63282e5e759
// Paper end
private static final net.minecraft.world.item.crafting.Ingredient TORCH = net.minecraft.world.item.crafting.Ingredient.of(net.minecraft.world.item.Items.TORCH, net.minecraft.world.item.Items.SOUL_TORCH); // Purpur - Phantoms burn in light
@@ -61,6 +61,7 @@ public class Phantom extends Mob implements Enemy {
@@ -62,6 +62,7 @@ public class Phantom extends Mob implements Enemy {
this.xpReward = 5;
this.moveControl = new Phantom.PhantomMoveControl(this);
this.lookControl = new Phantom.PhantomLookControl(this);
@@ -183,7 +177,7 @@ index 2fa22088ac507eceb36f3c77f24a733076641d8f..ff944ad57d4e9e4a910cd63282e5e759
}
// Purpur start - Ridables
@@ -297,7 +298,7 @@ public class Phantom extends Mob implements Enemy {
@@ -298,7 +299,7 @@ public class Phantom extends Mob implements Enemy {
this.setPhantomSize(input.getIntOr("size", 0));
// Paper start
this.spawningEntity = input.read("Paper.SpawningEntity", net.minecraft.core.UUIDUtil.CODEC).orElse(null);
@@ -192,7 +186,7 @@ index 2fa22088ac507eceb36f3c77f24a733076641d8f..ff944ad57d4e9e4a910cd63282e5e759
// Paper end
}
@@ -308,7 +309,7 @@ public class Phantom extends Mob implements Enemy {
@@ -309,7 +310,7 @@ public class Phantom extends Mob implements Enemy {
output.putInt("size", this.getPhantomSize());
// Paper start
output.storeNullable("Paper.SpawningEntity", net.minecraft.core.UUIDUtil.CODEC, this.spawningEntity);
@@ -202,32 +196,33 @@ index 2fa22088ac507eceb36f3c77f24a733076641d8f..ff944ad57d4e9e4a910cd63282e5e759
}
diff --git a/net/minecraft/world/entity/monster/skeleton/AbstractSkeleton.java b/net/minecraft/world/entity/monster/skeleton/AbstractSkeleton.java
index 1ab860be69bcc1ab5cc07418c2d7e733afdc482b..60afd81d3bf671889fbff5d4a3fabb38a8e2d461 100644
index 32da5212c85c829eeedc9d0f7904bbcaa3ce5ed3..062c7f20e73b882ef0550d90e3da47ac39a1b3a7 100644
--- a/net/minecraft/world/entity/monster/skeleton/AbstractSkeleton.java
+++ b/net/minecraft/world/entity/monster/skeleton/AbstractSkeleton.java
@@ -66,11 +66,12 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
@@ -71,11 +71,12 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
AbstractSkeleton.this.setAggressive(true);
}
};
- private boolean shouldBurnInDay = true; // Paper - shouldBurnInDay API
+ //private boolean shouldBurnInDay = true; // Paper - shouldBurnInDay API // Purpur - moved to LivingEntity; keep methods for ABI compatibility - API for any mob to burn daylight
protected AbstractSkeleton(EntityType<? extends AbstractSkeleton> type, Level level) {
protected AbstractSkeleton(final EntityType<? extends AbstractSkeleton> type, final Level level) {
super(type, level);
this.reassessWeaponGoal();
+ this.setShouldBurnInDay(true); // Purpur - API for any mob to burn daylight
}
@Override
@@ -223,14 +224,14 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
protected void readAdditionalSaveData(ValueInput input) {
@@ -228,7 +229,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
protected void readAdditionalSaveData(final ValueInput input) {
super.readAdditionalSaveData(input);
this.reassessWeaponGoal();
- this.shouldBurnInDay = input.getBooleanOr("Paper.ShouldBurnInDay", true); // Paper - shouldBurnInDay API
+ //this.shouldBurnInDay = input.getBooleanOr("Paper.ShouldBurnInDay", true); // Paper - shouldBurnInDay API // Purpur - implemented in LivingEntity - API for any mob to burn daylight
}
// Paper start - shouldBurnInDay API
// Paper start - silent equipping
@@ -254,7 +255,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
@Override
protected void addAdditionalSaveData(final net.minecraft.world.level.storage.ValueOutput output) {
super.addAdditionalSaveData(output);
@@ -235,32 +230,32 @@ index 1ab860be69bcc1ab5cc07418c2d7e733afdc482b..60afd81d3bf671889fbff5d4a3fabb38
+ //output.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); // Purpur - implemented in LivingEntity - API for any mob to burn daylight
}
// Paper end - shouldBurnInDay API
}
diff --git a/net/minecraft/world/entity/monster/skeleton/Parched.java b/net/minecraft/world/entity/monster/skeleton/Parched.java
index 0920999cdea48a2bc94d98c2ccb23584182a1e45..7f80b66df5c1d68c894475b088154d0790ddd94f 100644
index 36348e59c278e8842330e685340820c2ac9205eb..b14ea9e0f3de832fb73ae51728607486e399120b 100644
--- a/net/minecraft/world/entity/monster/skeleton/Parched.java
+++ b/net/minecraft/world/entity/monster/skeleton/Parched.java
@@ -17,6 +17,7 @@ import org.jspecify.annotations.Nullable;
public class Parched extends AbstractSkeleton {
public Parched(EntityType<? extends AbstractSkeleton> type, Level level) {
public Parched(final EntityType<? extends AbstractSkeleton> type, final Level level) {
super(type, level);
+ this.setShouldBurnInDay(false); // Purpur - API for any mob to burn daylight
}
@Override
diff --git a/net/minecraft/world/entity/monster/zombie/Husk.java b/net/minecraft/world/entity/monster/zombie/Husk.java
index 928e2c95146bc3fc9b8c41c5b6c3970fc919bb15..31b91dbc3f3e1875fbe6750bb815514686d14f7f 100644
index 8d6262e99fb3ad98d3142ee069f07d2370ca0778..02e935edd7a6cabbf2e6fcc6c96a9601bee71acc 100644
--- a/net/minecraft/world/entity/monster/zombie/Husk.java
+++ b/net/minecraft/world/entity/monster/zombie/Husk.java
@@ -27,6 +27,7 @@ import org.jspecify.annotations.Nullable;
public class Husk extends Zombie {
public Husk(EntityType<? extends Husk> type, Level level) {
@@ -35,6 +35,7 @@ public class Husk extends Zombie {
public Husk(final EntityType<? extends Husk> type, final Level level) {
super(type, level);
+ this.setShouldBurnInDay(false); // Purpur - API for any mob to burn daylight
}
// Purpur start - Ridables
@@ -84,7 +85,7 @@ public class Husk extends Zombie {
@@ -92,7 +93,7 @@ public class Husk extends Zombie {
@Override
public boolean isSunSensitive() {
@@ -270,24 +265,24 @@ index 928e2c95146bc3fc9b8c41c5b6c3970fc919bb15..31b91dbc3f3e1875fbe6750bb8155146
@Override
diff --git a/net/minecraft/world/entity/monster/zombie/Zombie.java b/net/minecraft/world/entity/monster/zombie/Zombie.java
index 35f2607d3fdfcef11218e4b96477c8f8c798361e..7a26b05c15d23eb84e34d02905b3d5c12958c034 100644
index 0777e4e0c3aa932699f124c83a571ce913327740..dffb152543d06380618c36cf89374b7d11336039 100644
--- a/net/minecraft/world/entity/monster/zombie/Zombie.java
+++ b/net/minecraft/world/entity/monster/zombie/Zombie.java
@@ -92,11 +92,12 @@ public class Zombie extends Monster {
@@ -102,11 +102,12 @@ public class Zombie extends Monster {
private boolean canBreakDoors = false;
private int inWaterTime = 0;
public int conversionTime;
- private boolean shouldBurnInDay = true; // Paper - Add more Zombie API
+ //private boolean shouldBurnInDay = true; // Paper - Add more Zombie API // Purpur - implemented in LivingEntity - API for any mob to burn daylight
public Zombie(EntityType<? extends Zombie> type, Level level) {
public Zombie(final EntityType<? extends Zombie> type, final Level level) {
super(type, level);
this.breakDoorGoal = new BreakDoorGoal(this, com.google.common.base.Predicates.in(level.paperConfig().entities.behavior.doorBreakingDifficulty.getOrDefault(type, level.paperConfig().entities.behavior.doorBreakingDifficulty.get(EntityType.ZOMBIE)))); // Paper - Configurable door breaking difficulty
+ this.setShouldBurnInDay(true); // Purpur - API for any mob to burn daylight
}
public Zombie(Level level) {
@@ -347,6 +348,7 @@ public class Zombie extends Monster {
public Zombie(final Level level) {
@@ -364,6 +365,7 @@ public class Zombie extends Monster {
// CraftBukkit end
}
@@ -295,7 +290,7 @@ index 35f2607d3fdfcef11218e4b96477c8f8c798361e..7a26b05c15d23eb84e34d02905b3d5c1
public boolean isSunSensitive() {
return this.shouldBurnInDay; // Paper - Add more Zombie API
}
@@ -486,7 +488,7 @@ public class Zombie extends Monster {
@@ -505,7 +507,7 @@ public class Zombie extends Monster {
output.putBoolean("CanBreakDoors", this.canBreakDoors());
output.putInt("InWaterTime", this.isInWater() ? this.inWaterTime : -1);
output.putInt("DrownedConversionTime", this.isUnderWaterConverting() ? this.conversionTime : -1);
@@ -304,7 +299,7 @@ index 35f2607d3fdfcef11218e4b96477c8f8c798361e..7a26b05c15d23eb84e34d02905b3d5c1
}
@Override
@@ -501,7 +503,7 @@ public class Zombie extends Monster {
@@ -520,7 +522,7 @@ public class Zombie extends Monster {
} else {
this.getEntityData().set(DATA_DROWNED_CONVERSION_ID, false);
}

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Cows naturally aggressive to players chance
diff --git a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java
index ccdd439a89b7e7e10ee960cfe1e5e119d5367799..49292ae53f2b4554064daa4953a8cec00aa1fa98 100644
index 34d2394006a006ea0773a52bb43b5cb3617470e5..7cd25e2b5e2e50b50fff00ca9e5c3a48ee2a3375 100644
--- a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java
+++ b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java
@@ -135,7 +135,7 @@ public class DefaultAttributes {
@@ -18,19 +18,19 @@ index ccdd439a89b7e7e10ee960cfe1e5e119d5367799..49292ae53f2b4554064daa4953a8cec0
.put(EntityType.NAUTILUS, Nautilus.createAttributes().build())
.put(EntityType.OCELOT, Ocelot.createAttributes().build())
diff --git a/net/minecraft/world/entity/animal/cow/Cow.java b/net/minecraft/world/entity/animal/cow/Cow.java
index bb8c75d20e6a1300d68ae75233962bdc26736c77..9fa18b190091bbfcb9a65d8d35f68fc7375f504f 100644
index 7d3853d693a87e5225a16285631e0e2057685c1b..cdd404f64e196629dd61035675aac984619f1e1c 100644
--- a/net/minecraft/world/entity/animal/cow/Cow.java
+++ b/net/minecraft/world/entity/animal/cow/Cow.java
@@ -23,6 +23,8 @@ import net.minecraft.world.level.storage.ValueOutput;
@@ -25,6 +25,8 @@ import net.minecraft.world.level.storage.ValueOutput;
import org.jspecify.annotations.Nullable;
public class Cow extends AbstractCow {
+ private boolean isNaturallyAggressiveToPlayers; // Purpur - Cows naturally aggressive to players chance
+
private static final EntityDataAccessor<Holder<CowVariant>> DATA_VARIANT_ID = SynchedEntityData.defineId(Cow.class, EntityDataSerializers.COW_VARIANT);
public Cow(EntityType<? extends Cow> type, Level level) {
@@ -49,8 +51,9 @@ public class Cow extends AbstractCow {
private static final EntityDataAccessor<Holder<CowSoundVariant>> DATA_SOUND_VARIANT_ID = SynchedEntityData.defineId(
Cow.class, EntityDataSerializers.COW_SOUND_VARIANT
@@ -54,8 +56,9 @@ public class Cow extends AbstractCow {
// Purpur start - Configurable entity base attributes
@Override
public void initAttributes() {
@@ -42,7 +42,7 @@ index bb8c75d20e6a1300d68ae75233962bdc26736c77..9fa18b190091bbfcb9a65d8d35f68fc7
}
// Purpur end - Configurable entity base attributes
@@ -68,6 +71,13 @@ public class Cow extends AbstractCow {
@@ -73,6 +76,13 @@ public class Cow extends AbstractCow {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -54,10 +54,10 @@ index bb8c75d20e6a1300d68ae75233962bdc26736c77..9fa18b190091bbfcb9a65d8d35f68fc7
+ }
+
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder);
@@ -80,6 +90,12 @@ public class Cow extends AbstractCow {
VariantUtils.writeVariant(output, this.getVariant());
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
super.defineSynchedData(entityData);
@@ -93,6 +103,12 @@ public class Cow extends AbstractCow {
);
}
+ // Purpur start - Cows naturally aggressive to players chance
@@ -67,13 +67,13 @@ index bb8c75d20e6a1300d68ae75233962bdc26736c77..9fa18b190091bbfcb9a65d8d35f68fc7
+ // Purpur end - Cows naturally aggressive to players chance
+
@Override
protected void readAdditionalSaveData(ValueInput input) {
protected void readAdditionalSaveData(final ValueInput input) {
super.readAdditionalSaveData(input);
@@ -100,6 +116,7 @@ public class Cow extends AbstractCow {
@@ -116,6 +132,7 @@ public class Cow extends AbstractCow {
public SpawnGroupData finalizeSpawn(
ServerLevelAccessor level, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData spawnGroupData
final ServerLevelAccessor level, final DifficultyInstance difficulty, final EntitySpawnReason spawnReason, final @Nullable SpawnGroupData groupData
) {
+ this.isNaturallyAggressiveToPlayers = level.getLevel().purpurConfig.cowNaturallyAggressiveToPlayersChance > 0.0D && random.nextDouble() <= level.getLevel().purpurConfig.cowNaturallyAggressiveToPlayersChance; // Purpur - Cows naturally aggressive to players chance
VariantUtils.selectVariantToSpawn(SpawnContext.create(level, this.blockPosition()), Registries.COW_VARIANT).ifPresent(this::setVariant);
return super.finalizeSpawn(level, difficulty, spawnReason, spawnGroupData);
}
this.setSoundVariant(CowSoundVariants.pickRandomSoundVariant(this.registryAccess(), level.getRandom()));
return super.finalizeSpawn(level, difficulty, spawnReason, groupData);

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Mobs always drop experience
diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java
index e83900f8d6adbe8a48294f250bd6cc6e3fad8160..b642f71d282773afb9fe273cbe65765afa2d5868 100644
index 15bb425ed1569cbf445e81aa296039df8abc4746..1dfc4f04169b60c917d9df58b4217adcb80470f8 100644
--- a/net/minecraft/world/entity/ambient/Bat.java
+++ b/net/minecraft/world/entity/ambient/Bat.java
@@ -116,6 +116,13 @@ public class Bat extends AmbientCreature {
@@ -23,10 +23,10 @@ index e83900f8d6adbe8a48294f250bd6cc6e3fad8160..b642f71d282773afb9fe273cbe65765a
public boolean isFlapping() {
return !this.isResting() && this.tickCount % 10.0F == 0.0F;
diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java
index 947160c4dfc4e50bb75a1a797cb2f22602b22643..e5ac43bf5631254c31d91abb1c5de408807429dd 100644
index a3a98df8ffeb33d86330b5561252eda596642da8..85986d2dc0c12a34f990e4262f79f813c9ff4cdf 100644
--- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java
+++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java
@@ -160,6 +160,13 @@ public class Axolotl extends Animal implements Bucketable {
@@ -157,6 +157,13 @@ public class Axolotl extends Animal implements Bucketable {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -38,13 +38,13 @@ index 947160c4dfc4e50bb75a1a797cb2f22602b22643..e5ac43bf5631254c31d91abb1c5de408
+ // Purpur end - Mobs always drop experience
+
@Override
public float getWalkTargetValue(BlockPos pos, LevelReader level) {
public float getWalkTargetValue(final BlockPos pos, final LevelReader level) {
return 0.0F;
diff --git a/net/minecraft/world/entity/animal/bee/Bee.java b/net/minecraft/world/entity/animal/bee/Bee.java
index e57200d6560a38cbecd681a30b75409412fce170..10dfa28ec46727e60f8a9c90d7e8914aa8b96ea1 100644
index 4fba5ce59065ac024a0108726623dab894ae45c5..17ec9642772d02092768da5d5a1396d357199268 100644
--- a/net/minecraft/world/entity/animal/bee/Bee.java
+++ b/net/minecraft/world/entity/animal/bee/Bee.java
@@ -499,6 +499,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -502,6 +502,13 @@ public class Bee extends Animal implements FlyingAnimal, NeutralMob {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -59,10 +59,10 @@ index e57200d6560a38cbecd681a30b75409412fce170..10dfa28ec46727e60f8a9c90d7e8914a
public long getPersistentAngerEndTime() {
return this.entityData.get(DATA_ANGER_END_TIME);
diff --git a/net/minecraft/world/entity/animal/chicken/Chicken.java b/net/minecraft/world/entity/animal/chicken/Chicken.java
index 6308bb606b34d781e315f56a55e6544b3c156d85..341d6ecefb126be61b5f43a73638847e2bf9f125 100644
index 4a59e133fc6c68f3b3d495c62bb965718643f6b8..c75abd1befdbcf1ace817cf243a50945cf706e95 100644
--- a/net/minecraft/world/entity/animal/chicken/Chicken.java
+++ b/net/minecraft/world/entity/animal/chicken/Chicken.java
@@ -117,6 +117,13 @@ public class Chicken extends Animal {
@@ -120,6 +120,13 @@ public class Chicken extends Animal {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -77,10 +77,10 @@ index 6308bb606b34d781e315f56a55e6544b3c156d85..341d6ecefb126be61b5f43a73638847e
protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this));
diff --git a/net/minecraft/world/entity/animal/cow/Cow.java b/net/minecraft/world/entity/animal/cow/Cow.java
index 9fa18b190091bbfcb9a65d8d35f68fc7375f504f..1463e94d3851614caee216b50e90d1980de75298 100644
index cdd404f64e196629dd61035675aac984619f1e1c..8e90f9163bcd93691bb40d1db02e06381ebe0182 100644
--- a/net/minecraft/world/entity/animal/cow/Cow.java
+++ b/net/minecraft/world/entity/animal/cow/Cow.java
@@ -71,6 +71,13 @@ public class Cow extends AbstractCow {
@@ -76,6 +76,13 @@ public class Cow extends AbstractCow {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -95,7 +95,7 @@ index 9fa18b190091bbfcb9a65d8d35f68fc7375f504f..1463e94d3851614caee216b50e90d198
protected void registerGoals() {
super.registerGoals();
diff --git a/net/minecraft/world/entity/animal/cow/MushroomCow.java b/net/minecraft/world/entity/animal/cow/MushroomCow.java
index a8e6e703a51130066547724dd08bdfe5e11c99e5..3327b93f095b6b6b6d5620bffd03232d4fb47d20 100644
index d3e5e12c4e3c168a3a15d611f8ae5845ee365080..07a1df530fcd5d684cbba4414ea0fa2010cbdb5b 100644
--- a/net/minecraft/world/entity/animal/cow/MushroomCow.java
+++ b/net/minecraft/world/entity/animal/cow/MushroomCow.java
@@ -99,6 +99,13 @@ public class MushroomCow extends AbstractCow implements Shearable {
@@ -110,13 +110,13 @@ index a8e6e703a51130066547724dd08bdfe5e11c99e5..3327b93f095b6b6b6d5620bffd03232d
+ // Purpur end - Mobs always drop experience
+
@Override
public float getWalkTargetValue(BlockPos pos, LevelReader level) {
public float getWalkTargetValue(final BlockPos pos, final LevelReader level) {
return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos);
diff --git a/net/minecraft/world/entity/animal/dolphin/Dolphin.java b/net/minecraft/world/entity/animal/dolphin/Dolphin.java
index e3646a05c6cb973fad36297cc18cf48587a6f5cd..ea3ccc1f39f70c8ce407ed94ab19a3caa3b90dc4 100644
index c372a2cc7ec9ac03629a73a45bfc58f77894d63b..4f39f0213f4af3589ed53c7238c91b4300a3b174 100644
--- a/net/minecraft/world/entity/animal/dolphin/Dolphin.java
+++ b/net/minecraft/world/entity/animal/dolphin/Dolphin.java
@@ -167,6 +167,13 @@ public class Dolphin extends AgeableWaterCreature {
@@ -169,6 +169,13 @@ public class Dolphin extends AgeableWaterCreature {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -129,9 +129,9 @@ index e3646a05c6cb973fad36297cc18cf48587a6f5cd..ea3ccc1f39f70c8ce407ed94ab19a3ca
+
@Override
public @Nullable SpawnGroupData finalizeSpawn(
ServerLevelAccessor level, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData spawnGroupData
final ServerLevelAccessor level, final DifficultyInstance difficulty, final EntitySpawnReason spawnReason, final @Nullable SpawnGroupData groupData
diff --git a/net/minecraft/world/entity/animal/equine/Donkey.java b/net/minecraft/world/entity/animal/equine/Donkey.java
index 6cf6853c244b7589d2a57e7ae77933d4a1503ccd..ca02355276286a88d618467d9191d648a3cf7b12 100644
index 5e0846fcaccfab5edbeb90bc61c2360cecf7a0c4..d58d70173bc475dd22d9d4f36a9cae8d0942e050 100644
--- a/net/minecraft/world/entity/animal/equine/Donkey.java
+++ b/net/minecraft/world/entity/animal/equine/Donkey.java
@@ -54,6 +54,13 @@ public class Donkey extends AbstractChestedHorse {
@@ -149,10 +149,10 @@ index 6cf6853c244b7589d2a57e7ae77933d4a1503ccd..ca02355276286a88d618467d9191d648
public SoundEvent getAmbientSound() {
return SoundEvents.DONKEY_AMBIENT;
diff --git a/net/minecraft/world/entity/animal/equine/Horse.java b/net/minecraft/world/entity/animal/equine/Horse.java
index 1c17ab94901ce1c6370670c06bf0801ee6b5b393..bb7ae0bc176fc873b0e1c760b62c5c4e0ee05ae8 100644
index 64603ad973bdb697ca75642e8e42e7052efd4191..5d643be94db358e4093cbb00659a4e9066dddd4a 100644
--- a/net/minecraft/world/entity/animal/equine/Horse.java
+++ b/net/minecraft/world/entity/animal/equine/Horse.java
@@ -88,6 +88,13 @@ public class Horse extends AbstractHorse {
@@ -86,6 +86,13 @@ public class Horse extends AbstractHorse {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -164,13 +164,13 @@ index 1c17ab94901ce1c6370670c06bf0801ee6b5b393..bb7ae0bc176fc873b0e1c760b62c5c4e
+ // Purpur end - Mobs always drop experience
+
@Override
protected void randomizeAttributes(RandomSource random) {
protected void randomizeAttributes(final RandomSource random) {
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt));
diff --git a/net/minecraft/world/entity/animal/equine/Llama.java b/net/minecraft/world/entity/animal/equine/Llama.java
index eb2fc0e6d497241f1b4f3971155b10d14f5427f8..eef4b602bd03df53823da6f576246c330e46d0d4 100644
index e277a58a1c761198f59b987c95567b6e4d9c440b..fe9d0b7bc5ad62a5455a78ffb6cd04a1b8115932 100644
--- a/net/minecraft/world/entity/animal/equine/Llama.java
+++ b/net/minecraft/world/entity/animal/equine/Llama.java
@@ -166,6 +166,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
@@ -165,6 +165,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -185,7 +185,7 @@ index eb2fc0e6d497241f1b4f3971155b10d14f5427f8..eef4b602bd03df53823da6f576246c33
return false;
}
diff --git a/net/minecraft/world/entity/animal/equine/Mule.java b/net/minecraft/world/entity/animal/equine/Mule.java
index 9bafe3e204b3e4624a95b130552c8230c0835a30..8514c0b7657366a1c40217b950c74c95631c328a 100644
index 291176b409097d15c2afff7fe8deb17ba07dbc12..8425956ded89a1ffe5a56f410f155092250ac78c 100644
--- a/net/minecraft/world/entity/animal/equine/Mule.java
+++ b/net/minecraft/world/entity/animal/equine/Mule.java
@@ -53,6 +53,13 @@ public class Mule extends AbstractChestedHorse {
@@ -203,7 +203,7 @@ index 9bafe3e204b3e4624a95b130552c8230c0835a30..8514c0b7657366a1c40217b950c74c95
public SoundEvent getAmbientSound() {
return SoundEvents.MULE_AMBIENT;
diff --git a/net/minecraft/world/entity/animal/equine/SkeletonHorse.java b/net/minecraft/world/entity/animal/equine/SkeletonHorse.java
index 3865937e4a56636cde44f7d8f16873ae16512323..2502716b8efe4584fba9d9f9989ba9cba67568bc 100644
index 9365609fad67377ffe18e11c7959e0d92367852a..16b26b4c19681b48fef9110e050145c736097adb 100644
--- a/net/minecraft/world/entity/animal/equine/SkeletonHorse.java
+++ b/net/minecraft/world/entity/animal/equine/SkeletonHorse.java
@@ -81,6 +81,13 @@ public class SkeletonHorse extends AbstractHorse {
@@ -221,7 +221,7 @@ index 3865937e4a56636cde44f7d8f16873ae16512323..2502716b8efe4584fba9d9f9989ba9cb
return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F);
}
diff --git a/net/minecraft/world/entity/animal/equine/TraderLlama.java b/net/minecraft/world/entity/animal/equine/TraderLlama.java
index 4c07cd57aa3518adb4bc9b1213cc572a5b81f935..0515d1071324d82c14be4b9e97c8a583dd45a721 100644
index a9fcf7827e6a6b061c2a861d1e59bca80117699b..78a22fb382da7623bd05f5ff097fe06fc0dfec1c 100644
--- a/net/minecraft/world/entity/animal/equine/TraderLlama.java
+++ b/net/minecraft/world/entity/animal/equine/TraderLlama.java
@@ -84,6 +84,13 @@ public class TraderLlama extends Llama {
@@ -239,10 +239,10 @@ index 4c07cd57aa3518adb4bc9b1213cc572a5b81f935..0515d1071324d82c14be4b9e97c8a583
public boolean isTraderLlama() {
return true;
diff --git a/net/minecraft/world/entity/animal/equine/ZombieHorse.java b/net/minecraft/world/entity/animal/equine/ZombieHorse.java
index 45bb4df25015568f0758095d9a309633bed520f3..63557a6c2b87e1ee4348cab61df5d900c2c1c48e 100644
index 426b468ee821a7441d15dae3634032535cb60725..54cbd5136997bdec34df0f822e21ffe5046936d6 100644
--- a/net/minecraft/world/entity/animal/equine/ZombieHorse.java
+++ b/net/minecraft/world/entity/animal/equine/ZombieHorse.java
@@ -96,6 +96,13 @@ public class ZombieHorse extends AbstractHorse {
@@ -93,6 +93,13 @@ public class ZombieHorse extends AbstractHorse {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -257,7 +257,7 @@ index 45bb4df25015568f0758095d9a309633bed520f3..63557a6c2b87e1ee4348cab61df5d900
return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 25.0);
}
diff --git a/net/minecraft/world/entity/animal/feline/Cat.java b/net/minecraft/world/entity/animal/feline/Cat.java
index 92b67565485b2fade3e80fb4b944edfc12d9e0a2..4422cc2f0ed1b603348f3f5c0d6650f871190ffd 100644
index 0493926c7918059d82bafd20fed0883bb331bd55..74acd2066aa05eb732645912eba7b24252a57f7e 100644
--- a/net/minecraft/world/entity/animal/feline/Cat.java
+++ b/net/minecraft/world/entity/animal/feline/Cat.java
@@ -142,6 +142,13 @@ public class Cat extends TamableAnimal {
@@ -273,9 +273,9 @@ index 92b67565485b2fade3e80fb4b944edfc12d9e0a2..4422cc2f0ed1b603348f3f5c0d6650f8
+
@Override
protected void registerGoals() {
this.temptGoal = new Cat.CatTemptGoal(this, 0.6, stack -> stack.is(ItemTags.CAT_FOOD), true);
this.temptGoal = new Cat.CatTemptGoal(this, 0.6, i -> i.is(ItemTags.CAT_FOOD), true);
diff --git a/net/minecraft/world/entity/animal/feline/Ocelot.java b/net/minecraft/world/entity/animal/feline/Ocelot.java
index 13272516003f763d2c69dc599c8ff7696bec718b..8583fefcb37dc043293bf622b5a25adbbcc8128e 100644
index 9a582b789d3b3037c510c063a07f99f92ac58a1c..2fbb1668448ca7f1d2e08293a0a3e81c6a0d13a4 100644
--- a/net/minecraft/world/entity/animal/feline/Ocelot.java
+++ b/net/minecraft/world/entity/animal/feline/Ocelot.java
@@ -105,6 +105,13 @@ public class Ocelot extends Animal {
@@ -293,7 +293,7 @@ index 13272516003f763d2c69dc599c8ff7696bec718b..8583fefcb37dc043293bf622b5a25adb
return this.entityData.get(DATA_TRUSTING);
}
diff --git a/net/minecraft/world/entity/animal/fish/Cod.java b/net/minecraft/world/entity/animal/fish/Cod.java
index 8655aae805f239cbd049065232293854b18c73cf..05de579a16726454034dc4a913161676b5c73552 100644
index f44214eaa47c2021f7ca9c84a7b89be15fecb5bc..7d4bfca8b2608c18fc96e14f1ef9121230e27a53 100644
--- a/net/minecraft/world/entity/animal/fish/Cod.java
+++ b/net/minecraft/world/entity/animal/fish/Cod.java
@@ -39,6 +39,13 @@ public class Cod extends AbstractSchoolingFish {
@@ -311,7 +311,7 @@ index 8655aae805f239cbd049065232293854b18c73cf..05de579a16726454034dc4a913161676
public ItemStack getBucketItemStack() {
return new ItemStack(Items.COD_BUCKET);
diff --git a/net/minecraft/world/entity/animal/fish/Pufferfish.java b/net/minecraft/world/entity/animal/fish/Pufferfish.java
index 414d79f9d1fbd9857c8baeb2888017d45f34f02b..681eb25e45cec76f21cea9f77efe71290bdb547a 100644
index 17dba2f70251c2d5f75cc116b300f328f117cecb..3d84c136fa944beed72ee2fb8f441bcb4031e233 100644
--- a/net/minecraft/world/entity/animal/fish/Pufferfish.java
+++ b/net/minecraft/world/entity/animal/fish/Pufferfish.java
@@ -73,6 +73,13 @@ public class Pufferfish extends AbstractFish {
@@ -326,13 +326,13 @@ index 414d79f9d1fbd9857c8baeb2888017d45f34f02b..681eb25e45cec76f21cea9f77efe7129
+ // Purpur end - Mobs always drop experience
+
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder);
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
super.defineSynchedData(entityData);
diff --git a/net/minecraft/world/entity/animal/fish/Salmon.java b/net/minecraft/world/entity/animal/fish/Salmon.java
index 424bd56ec9df8bd0a80d2fa79bc4f482eae2ab5c..b76b2c1e7ac93fe01bdf9ee6e3c811f448babcbb 100644
index ba75ba1130c4fe5f4d7b29c624a17becd2a71c99..ca5cc7569205b450e53d6e8feb87ecaa2169a67f 100644
--- a/net/minecraft/world/entity/animal/fish/Salmon.java
+++ b/net/minecraft/world/entity/animal/fish/Salmon.java
@@ -66,6 +66,13 @@ public class Salmon extends AbstractSchoolingFish {
@@ -67,6 +67,13 @@ public class Salmon extends AbstractSchoolingFish {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -347,7 +347,7 @@ index 424bd56ec9df8bd0a80d2fa79bc4f482eae2ab5c..b76b2c1e7ac93fe01bdf9ee6e3c811f4
public int getMaxSchoolSize() {
return 5;
diff --git a/net/minecraft/world/entity/animal/fish/TropicalFish.java b/net/minecraft/world/entity/animal/fish/TropicalFish.java
index 04c30c60c76122018fa69cf1f3f64cae8ed62fad..c7742f06cf2bed3496c28b541e45948e609c1999 100644
index 17bc569bf97026e2c072633f1ad6e9e0102c137a..fc500f1ca1d4280519f418cac21688c3632d251b 100644
--- a/net/minecraft/world/entity/animal/fish/TropicalFish.java
+++ b/net/minecraft/world/entity/animal/fish/TropicalFish.java
@@ -103,6 +103,13 @@ public class TropicalFish extends AbstractSchoolingFish {
@@ -361,14 +361,14 @@ index 04c30c60c76122018fa69cf1f3f64cae8ed62fad..c7742f06cf2bed3496c28b541e45948e
+ }
+ // Purpur end - Mobs always drop experience
+
public static String getPredefinedName(int variantId) {
return "entity.minecraft.tropical_fish.predefined." + variantId;
public static String getPredefinedName(final int index) {
return "entity.minecraft.tropical_fish.predefined." + index;
}
diff --git a/net/minecraft/world/entity/animal/fox/Fox.java b/net/minecraft/world/entity/animal/fox/Fox.java
index bc119c2f61adb6c6122119fda1df437bab40f9b4..f35f845e3e18c0bb0e4a076298c30be2ae479792 100644
index aa419e7cb456f664c1eca1286777caca6bd10e7a..335da522a9b96ebc852b4ed5f22f9fd71aec23a8 100644
--- a/net/minecraft/world/entity/animal/fox/Fox.java
+++ b/net/minecraft/world/entity/animal/fox/Fox.java
@@ -211,6 +211,13 @@ public class Fox extends Animal {
@@ -215,6 +215,13 @@ public class Fox extends Animal {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -380,13 +380,13 @@ index bc119c2f61adb6c6122119fda1df437bab40f9b4..f35f845e3e18c0bb0e4a076298c30be2
+ // Purpur end - Mobs always drop experience
+
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder);
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
super.defineSynchedData(entityData);
diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java
index e5f5bc2c4b4f36e0e911b2c5ef67ef6e0d4cd0b1..64916356de4b9981e04c5befef15b067914f6d75 100644
index 0d40bbd8c42178c712f23300364138389ecde548..afc1119a6b562013a09a607ecc430d7bd46e6c82 100644
--- a/net/minecraft/world/entity/animal/goat/Goat.java
+++ b/net/minecraft/world/entity/animal/goat/Goat.java
@@ -146,6 +146,13 @@ public class Goat extends Animal {
@@ -131,6 +131,13 @@ public class Goat extends Animal {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -398,13 +398,13 @@ index e5f5bc2c4b4f36e0e911b2c5ef67ef6e0d4cd0b1..64916356de4b9981e04c5befef15b067
+ // Purpur end - Mobs always drop experience
+
@Override
protected Brain.Provider<Goat> brainProvider() {
return Brain.provider(MEMORY_TYPES, SENSOR_TYPES);
protected Brain<Goat> makeBrain(final Brain.Packed packedBrain) {
return BRAIN_PROVIDER.makeBrain(this, packedBrain);
diff --git a/net/minecraft/world/entity/animal/golem/CopperGolem.java b/net/minecraft/world/entity/animal/golem/CopperGolem.java
index e143db15040f8d5be5d07e04a41b7afaf42b4331..493d1678592bce78a15adeb4c9435fdc8e9dab8a 100644
index 078cb2f09e9aaf05bb965a27b90f34c7c3a4147d..019aec1465be095edff6952a1f36041f030f7cb0 100644
--- a/net/minecraft/world/entity/animal/golem/CopperGolem.java
+++ b/net/minecraft/world/entity/animal/golem/CopperGolem.java
@@ -147,6 +147,13 @@ public class CopperGolem extends AbstractGolem implements ContainerUser, Shearab
@@ -151,6 +151,13 @@ public class CopperGolem extends AbstractGolem implements ContainerUser, Shearab
}
// Purpur end - Toggle for water sensitive mob damage
@@ -419,7 +419,7 @@ index e143db15040f8d5be5d07e04a41b7afaf42b4331..493d1678592bce78a15adeb4c9435fdc
return Mob.createMobAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F).add(Attributes.STEP_HEIGHT, 1.0).add(Attributes.MAX_HEALTH, 12.0);
}
diff --git a/net/minecraft/world/entity/animal/golem/IronGolem.java b/net/minecraft/world/entity/animal/golem/IronGolem.java
index d31c1f1b681922ca8f1657ffa333e8a6794e619f..ddde4297b77d174034300165b591a224c0401743 100644
index 77996312597da9a2bbcf89f798c10a0be0abcd39..880a53a2f023f5bd4a112a964aceee6dcac109b1 100644
--- a/net/minecraft/world/entity/animal/golem/IronGolem.java
+++ b/net/minecraft/world/entity/animal/golem/IronGolem.java
@@ -106,6 +106,13 @@ public class IronGolem extends AbstractGolem implements NeutralMob {
@@ -437,10 +437,10 @@ index d31c1f1b681922ca8f1657ffa333e8a6794e619f..ddde4297b77d174034300165b591a224
protected void registerGoals() {
if (this.level().purpurConfig.ironGolemPoppyCalm) this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.ReceiveFlower(this)); // Purpur - Iron golem calm anger options
diff --git a/net/minecraft/world/entity/animal/golem/SnowGolem.java b/net/minecraft/world/entity/animal/golem/SnowGolem.java
index 94d319a8fba3a437fb55aa7daaaba0c5c9acbb3b..c37c999671955eeaff0b145a890a512c78d642a8 100644
index 2d3127f6846ff9eda1a0b89764dc837da6e7e0c7..ffb0e9cc4f8604fd03cb3a2412001182fb47bce8 100644
--- a/net/minecraft/world/entity/animal/golem/SnowGolem.java
+++ b/net/minecraft/world/entity/animal/golem/SnowGolem.java
@@ -87,6 +87,13 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
@@ -87,6 +87,13 @@ public class SnowGolem extends AbstractGolem implements RangedAttackMob, Shearab
}
// Purpur end - Configurable entity base attributes
@@ -455,10 +455,10 @@ index 94d319a8fba3a437fb55aa7daaaba0c5c9acbb3b..c37c999671955eeaff0b145a890a512c
protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
diff --git a/net/minecraft/world/entity/animal/happyghast/HappyGhast.java b/net/minecraft/world/entity/animal/happyghast/HappyGhast.java
index 828793aaa2992fd1077040309154f814b302476a..8034ce67266b6baab35c72eaebf5ad67fc1a29c6 100644
index d3367430da307e2c0748874cbe77f265860152a0..908e26a3aeb843585d9938f588d33b5bb5326ebe 100644
--- a/net/minecraft/world/entity/animal/happyghast/HappyGhast.java
+++ b/net/minecraft/world/entity/animal/happyghast/HappyGhast.java
@@ -160,6 +160,13 @@ public class HappyGhast extends Animal {
@@ -168,6 +168,13 @@ public class HappyGhast extends Animal {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -473,10 +473,10 @@ index 828793aaa2992fd1077040309154f814b302476a..8034ce67266b6baab35c72eaebf5ad67
protected void ageBoundaryReached() {
if (this.isBaby()) {
diff --git a/net/minecraft/world/entity/animal/nautilus/Nautilus.java b/net/minecraft/world/entity/animal/nautilus/Nautilus.java
index 98199869b70c7c0f2b744ac74961c77d473617ca..7c4467933061f097425d6c82188a65fd5e4c4d3b 100644
index e89c0638f7b6d1a463a895dbab5994c15aa4add3..e4c7f1aa39443b26758caac252fe90b2b766b707 100644
--- a/net/minecraft/world/entity/animal/nautilus/Nautilus.java
+++ b/net/minecraft/world/entity/animal/nautilus/Nautilus.java
@@ -39,6 +39,13 @@ public class Nautilus extends AbstractNautilus {
@@ -46,6 +46,13 @@ public class Nautilus extends AbstractNautilus {
}
// Purpur end - Make entity breeding times configurable
@@ -488,13 +488,13 @@ index 98199869b70c7c0f2b744ac74961c77d473617ca..7c4467933061f097425d6c82188a65fd
+ // Purpur end - Mobs always drop experience
+
@Override
protected Brain.Provider<Nautilus> brainProvider() {
return NautilusAi.brainProvider();
protected Brain<Nautilus> makeBrain(final Brain.Packed packedBrain) {
return BRAIN_PROVIDER.makeBrain(this, packedBrain);
diff --git a/net/minecraft/world/entity/animal/nautilus/ZombieNautilus.java b/net/minecraft/world/entity/animal/nautilus/ZombieNautilus.java
index 7dd933dd38fc50e870bc74e5a54e2b50a85fa6f3..51d3a5f0aec8794cfd1ccefffea9947b0e49e693 100644
index ab97449bfa5e8b5615e0f2b6b16be2fe7e4233fd..869cec108d33626362400e9aa4890a92e49151e4 100644
--- a/net/minecraft/world/entity/animal/nautilus/ZombieNautilus.java
+++ b/net/minecraft/world/entity/animal/nautilus/ZombieNautilus.java
@@ -62,6 +62,13 @@ public class ZombieNautilus extends AbstractNautilus {
@@ -67,6 +67,13 @@ public class ZombieNautilus extends AbstractNautilus {
}
// Purpur end - Make entity breeding times configurable
@@ -509,10 +509,10 @@ index 7dd933dd38fc50e870bc74e5a54e2b50a85fa6f3..51d3a5f0aec8794cfd1ccefffea9947b
return AbstractNautilus.createAttributes().add(Attributes.MOVEMENT_SPEED, 1.1F);
}
diff --git a/net/minecraft/world/entity/animal/panda/Panda.java b/net/minecraft/world/entity/animal/panda/Panda.java
index e9aa07dea0515f53a08a7066fa9e23e0ee69d69e..5116e9e16070e23d13b526d21facb7b5ad0988ba 100644
index f97b8feaedb84baf479998cef7257231f85412d6..72ced157956c6a809d8d9f21027f21c0465b8677 100644
--- a/net/minecraft/world/entity/animal/panda/Panda.java
+++ b/net/minecraft/world/entity/animal/panda/Panda.java
@@ -157,6 +157,13 @@ public class Panda extends Animal {
@@ -160,6 +160,13 @@ public class Panda extends Animal {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -524,10 +524,10 @@ index e9aa07dea0515f53a08a7066fa9e23e0ee69d69e..5116e9e16070e23d13b526d21facb7b5
+ // Purpur end - Mobs always drop experience
+
@Override
protected boolean canDispenserEquipIntoSlot(EquipmentSlot slot) {
protected boolean canDispenserEquipIntoSlot(final EquipmentSlot slot) {
return slot == EquipmentSlot.MAINHAND && this.canPickUpLoot();
diff --git a/net/minecraft/world/entity/animal/parrot/Parrot.java b/net/minecraft/world/entity/animal/parrot/Parrot.java
index e97782bc8232120d4e7d1feeb8ca87fd37a1fcf9..bbe3977939004b7d77e38b14d48c9c26e596d123 100644
index d756d6931dbf560fef5cb9641ace6f091fbcfff9..5abbc7ef864dde0ae05ae0520518997520e8bcf6 100644
--- a/net/minecraft/world/entity/animal/parrot/Parrot.java
+++ b/net/minecraft/world/entity/animal/parrot/Parrot.java
@@ -221,6 +221,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal {
@@ -543,12 +543,12 @@ index e97782bc8232120d4e7d1feeb8ca87fd37a1fcf9..bbe3977939004b7d77e38b14d48c9c26
+
@Override
public @Nullable SpawnGroupData finalizeSpawn(
ServerLevelAccessor level, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData spawnGroupData
final ServerLevelAccessor level, final DifficultyInstance difficulty, final EntitySpawnReason spawnReason, @Nullable SpawnGroupData groupData
diff --git a/net/minecraft/world/entity/animal/pig/Pig.java b/net/minecraft/world/entity/animal/pig/Pig.java
index 020932539727739b54ed2f7899cbf11ad940f4df..45142ce558ef28455f9b74ca81d51b3ecdb7a458 100644
index 05141bc41dc5181a8f0526528147e7a6c015a707..d699b79ffc603555213434fecc389b1882c1eef0 100644
--- a/net/minecraft/world/entity/animal/pig/Pig.java
+++ b/net/minecraft/world/entity/animal/pig/Pig.java
@@ -102,6 +102,13 @@ public class Pig extends Animal implements ItemSteerable {
@@ -107,6 +107,13 @@ public class Pig extends Animal implements ItemSteerable {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -563,10 +563,10 @@ index 020932539727739b54ed2f7899cbf11ad940f4df..45142ce558ef28455f9b74ca81d51b3e
protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this));
diff --git a/net/minecraft/world/entity/animal/polarbear/PolarBear.java b/net/minecraft/world/entity/animal/polarbear/PolarBear.java
index 13d26a6981d6907f35f1f2bde93934c7c1fe8120..592711e205ee959cc66de80933ad5a2dcec3092f 100644
index 2a28c9ef361909aa0c3946ed6857f7d340c8cfc0..5e218adce80f2d8d64cca54894abffaf6eb0baa0 100644
--- a/net/minecraft/world/entity/animal/polarbear/PolarBear.java
+++ b/net/minecraft/world/entity/animal/polarbear/PolarBear.java
@@ -140,6 +140,13 @@ public class PolarBear extends Animal implements NeutralMob {
@@ -141,6 +141,13 @@ public class PolarBear extends Animal implements NeutralMob {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -578,13 +578,13 @@ index 13d26a6981d6907f35f1f2bde93934c7c1fe8120..592711e205ee959cc66de80933ad5a2d
+ // Purpur end - Mobs always drop experience
+
@Override
public @Nullable AgeableMob getBreedOffspring(ServerLevel level, AgeableMob partner) {
public @Nullable AgeableMob getBreedOffspring(final ServerLevel level, final AgeableMob partner) {
return EntityType.POLAR_BEAR.create(level, EntitySpawnReason.BREEDING);
diff --git a/net/minecraft/world/entity/animal/rabbit/Rabbit.java b/net/minecraft/world/entity/animal/rabbit/Rabbit.java
index b1c72047f7aa63f62b0ad0274811b587b1d3486b..c39004a546c28c9f8af26e727c67dbff85ba1212 100644
index 7dade80db9430e4db587ed23df992d70c6b7ee04..937ce47e45698392fad3fdc6eeb85e7869b679de 100644
--- a/net/minecraft/world/entity/animal/rabbit/Rabbit.java
+++ b/net/minecraft/world/entity/animal/rabbit/Rabbit.java
@@ -170,6 +170,13 @@ public class Rabbit extends Animal {
@@ -184,6 +184,13 @@ public class Rabbit extends Animal {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -599,7 +599,7 @@ index b1c72047f7aa63f62b0ad0274811b587b1d3486b..c39004a546c28c9f8af26e727c67dbff
public void registerGoals() {
this.goalSelector.addGoal(1, new FloatGoal(this));
diff --git a/net/minecraft/world/entity/animal/sheep/Sheep.java b/net/minecraft/world/entity/animal/sheep/Sheep.java
index 7eca49c9237c61ab12f60ff16085aa8fd10c99ac..d712673d237f4e4d99a714ddf09c4582387f0e3c 100644
index 0ceaa6dd493d0258c419d8b5c4394b35c0808704..55cc6040e606918042c76a7bc6cbe1a1b965c407 100644
--- a/net/minecraft/world/entity/animal/sheep/Sheep.java
+++ b/net/minecraft/world/entity/animal/sheep/Sheep.java
@@ -102,6 +102,13 @@ public class Sheep extends Animal implements Shearable {
@@ -617,7 +617,7 @@ index 7eca49c9237c61ab12f60ff16085aa8fd10c99ac..d712673d237f4e4d99a714ddf09c4582
protected void registerGoals() {
this.eatBlockGoal = new EatBlockGoal(this);
diff --git a/net/minecraft/world/entity/animal/squid/GlowSquid.java b/net/minecraft/world/entity/animal/squid/GlowSquid.java
index 2aa2a84a7ada369c45a85119a933eb92297af4dc..dd1bd8b1a348a0cc398b123a77d3cb28dd1273ae 100644
index 1fa3d614dd1c45ec42caffbe92e3f8db02b399b1..0f4587df333a68627d6db18c0583ae1e7b936b15 100644
--- a/net/minecraft/world/entity/animal/squid/GlowSquid.java
+++ b/net/minecraft/world/entity/animal/squid/GlowSquid.java
@@ -64,6 +64,13 @@ public class GlowSquid extends Squid {
@@ -635,10 +635,10 @@ index 2aa2a84a7ada369c45a85119a933eb92297af4dc..dd1bd8b1a348a0cc398b123a77d3cb28
protected ParticleOptions getInkParticle() {
return ParticleTypes.GLOW_SQUID_INK;
diff --git a/net/minecraft/world/entity/animal/squid/Squid.java b/net/minecraft/world/entity/animal/squid/Squid.java
index e307ebfb8b2781b6175b520e148e6bd58d2b9dc4..6b5be8e58aa7e3acd14ff3cb1ba25d15f8d37410 100644
index e350763a3a22d825a25f02b60bd4c9223aa81f62..0a3327e22f5a2e30c70248ab46078e50281bd429 100644
--- a/net/minecraft/world/entity/animal/squid/Squid.java
+++ b/net/minecraft/world/entity/animal/squid/Squid.java
@@ -108,6 +108,13 @@ public class Squid extends AgeableWaterCreature {
@@ -111,6 +111,13 @@ public class Squid extends AgeableWaterCreature {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -653,7 +653,7 @@ index e307ebfb8b2781b6175b520e148e6bd58d2b9dc4..6b5be8e58aa7e3acd14ff3cb1ba25d15
protected void registerGoals() {
this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this));
diff --git a/net/minecraft/world/entity/animal/turtle/Turtle.java b/net/minecraft/world/entity/animal/turtle/Turtle.java
index 7d5987fe641646ecbf8e389d57a0a9a04e9c0959..a3f2076e6f0e51ac51a8af94cae91baf82c247a1 100644
index 6d09c0de38f2c91d2a0ab6dd0b694ab42b48a981..37345edf599a43ac48274e30f5d7aa340051c649 100644
--- a/net/minecraft/world/entity/animal/turtle/Turtle.java
+++ b/net/minecraft/world/entity/animal/turtle/Turtle.java
@@ -126,6 +126,13 @@ public class Turtle extends Animal {
@@ -667,14 +667,14 @@ index 7d5987fe641646ecbf8e389d57a0a9a04e9c0959..a3f2076e6f0e51ac51a8af94cae91baf
+ }
+ // Purpur end - Mobs always drop experience
+
public void setHomePos(BlockPos homePos) {
this.homePos = homePos;
public void setHomePos(final BlockPos pos) {
this.homePos = pos;
}
diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java
index 20f945ee06bcdb4736e6d3a8b20a5cbd3d79df0f..7fbe841818d08fd930f7ce405e84e5ed4badb614 100644
index 781cac493f909b02483e5c4064cc2cc791b1dabd..fed2456921421eb6c95a4d713a4bd0ed64c1415a 100644
--- a/net/minecraft/world/entity/animal/wolf/Wolf.java
+++ b/net/minecraft/world/entity/animal/wolf/Wolf.java
@@ -230,6 +230,13 @@ public class Wolf extends TamableAnimal implements NeutralMob {
@@ -227,6 +227,13 @@ public class Wolf extends TamableAnimal implements NeutralMob {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -689,10 +689,10 @@ index 20f945ee06bcdb4736e6d3a8b20a5cbd3d79df0f..7fbe841818d08fd930f7ce405e84e5ed
protected void registerGoals() {
this.goalSelector.addGoal(1, new FloatGoal(this));
diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java
index 4afa484099c7f813d5ae8c7cc8721a0d033c8e6e..c25ed738b088fb517d76c038a1ad47cae3f7ecbc 100644
index 10818999c4e796a4dfd5a7dd21772c9eb8ca2579..4677996d778fbd1ffa7c1278bf4ebd8ce1097eb9 100644
--- a/net/minecraft/world/entity/boss/wither/WitherBoss.java
+++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java
@@ -227,6 +227,13 @@ public class WitherBoss extends Monster implements RangedAttackMob {
@@ -229,6 +229,13 @@ public class WitherBoss extends Monster implements RangedAttackMob {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -704,10 +704,10 @@ index 4afa484099c7f813d5ae8c7cc8721a0d033c8e6e..c25ed738b088fb517d76c038a1ad47ca
+ // Purpur end - Mobs always drop experience
+
@Override
protected PathNavigation createNavigation(Level level) {
protected PathNavigation createNavigation(final Level level) {
FlyingPathNavigation flyingPathNavigation = new FlyingPathNavigation(this, level);
diff --git a/net/minecraft/world/entity/monster/Blaze.java b/net/minecraft/world/entity/monster/Blaze.java
index e2afd7677986c70dd924017e8822fd6abd808f48..187da2d55cdb039b62abe708dadd6c05e13ac64f 100644
index 7f0e76437798f1bab7956722382e1517f8f71121..257563b578762837cbea855fa42831f34fa4e7ba 100644
--- a/net/minecraft/world/entity/monster/Blaze.java
+++ b/net/minecraft/world/entity/monster/Blaze.java
@@ -84,6 +84,13 @@ public class Blaze extends Monster {
@@ -725,7 +725,7 @@ index e2afd7677986c70dd924017e8822fd6abd808f48..187da2d55cdb039b62abe708dadd6c05
protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java
index b0ed96c243f9abb3868d92bb513ad1620aa8e269..608d787b73dce1726ccece9e0372acf995f261d4 100644
index 80327a6ba1da0145f087a7946c7a4dfb6d947ce7..46a769f2960fd4a35305231b84c56ff36d622d8f 100644
--- a/net/minecraft/world/entity/monster/Creeper.java
+++ b/net/minecraft/world/entity/monster/Creeper.java
@@ -273,6 +273,13 @@ public class Creeper extends Monster {
@@ -740,10 +740,10 @@ index b0ed96c243f9abb3868d92bb513ad1620aa8e269..608d787b73dce1726ccece9e0372acf9
+ // Purpur end - Mobs always drop experience
+
@Override
public SoundEvent getHurtSound(DamageSource damageSource) {
public SoundEvent getHurtSound(final DamageSource source) {
return SoundEvents.CREEPER_HURT;
diff --git a/net/minecraft/world/entity/monster/ElderGuardian.java b/net/minecraft/world/entity/monster/ElderGuardian.java
index 1ea323a17440abbe36c9528e80e169816267005b..abb7496c293175828fde54ae2b4991aa3ff6b30f 100644
index a98967c7a76d8e25da9e31eaa8f2ae0bf0704c9d..54d3ab3cb7521f4f75bdd05b7fcf35e7195aa83d 100644
--- a/net/minecraft/world/entity/monster/ElderGuardian.java
+++ b/net/minecraft/world/entity/monster/ElderGuardian.java
@@ -58,6 +58,13 @@ public class ElderGuardian extends Guardian {
@@ -761,7 +761,7 @@ index 1ea323a17440abbe36c9528e80e169816267005b..abb7496c293175828fde54ae2b4991aa
return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.3F).add(Attributes.ATTACK_DAMAGE, 8.0).add(Attributes.MAX_HEALTH, 80.0);
}
diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java
index 47c621f01658f3392b58f3f5c1f31bd539f63dd6..c90a955b14ae10037f31c7e9b8a86df3323602cc 100644
index 8862ad857a4c99defe7621c59d8f3ef77ab7aff4..8979340756abaec961b2263146c1e1e79d144117 100644
--- a/net/minecraft/world/entity/monster/EnderMan.java
+++ b/net/minecraft/world/entity/monster/EnderMan.java
@@ -114,6 +114,13 @@ public class EnderMan extends Monster implements NeutralMob {
@@ -779,7 +779,7 @@ index 47c621f01658f3392b58f3f5c1f31bd539f63dd6..c90a955b14ae10037f31c7e9b8a86df3
protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this));
diff --git a/net/minecraft/world/entity/monster/Endermite.java b/net/minecraft/world/entity/monster/Endermite.java
index b5e620d62702e3330f5ced19f1baeb82bdc801ec..972006a17c887f9380b1549de8a47e4d265e6e69 100644
index 859d490dd3be2843dde3a811bcc0d51e3eae76f0..b93a5d46ccf7b2dad6afbd15884f8d8ae60cdb5a 100644
--- a/net/minecraft/world/entity/monster/Endermite.java
+++ b/net/minecraft/world/entity/monster/Endermite.java
@@ -79,6 +79,13 @@ public class Endermite extends Monster {
@@ -797,7 +797,7 @@ index b5e620d62702e3330f5ced19f1baeb82bdc801ec..972006a17c887f9380b1549de8a47e4d
protected void registerGoals() {
this.goalSelector.addGoal(1, new FloatGoal(this));
diff --git a/net/minecraft/world/entity/monster/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java
index 443eb9f12d6df950c59c9d4db4853087fd23d24e..673d4e06d6dc4c94ddaafcdc86cbdbd686964ddd 100644
index 89a2097c2c26dae7f12ddbac10bc091ec7f228d7..753ba768318b2ecda5efdbd00b408aa7e1b2c56b 100644
--- a/net/minecraft/world/entity/monster/Ghast.java
+++ b/net/minecraft/world/entity/monster/Ghast.java
@@ -90,6 +90,13 @@ public class Ghast extends Mob implements Enemy {
@@ -815,7 +815,7 @@ index 443eb9f12d6df950c59c9d4db4853087fd23d24e..673d4e06d6dc4c94ddaafcdc86cbdbd6
protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
diff --git a/net/minecraft/world/entity/monster/Giant.java b/net/minecraft/world/entity/monster/Giant.java
index f1176f73d4468b2f39e48fe5454c5f5bf481afd9..9a081135025f114d473c50e68a778e034f33ab82 100644
index 43ebfe06ce2a8c15787d72a8ef54cd6c7cac2bfc..07dfe0e6fd431b8417fc7f823962e4d4ad13cac5 100644
--- a/net/minecraft/world/entity/monster/Giant.java
+++ b/net/minecraft/world/entity/monster/Giant.java
@@ -69,6 +69,13 @@ public class Giant extends Monster {
@@ -833,7 +833,7 @@ index f1176f73d4468b2f39e48fe5454c5f5bf481afd9..9a081135025f114d473c50e68a778e03
return Monster.createMonsterAttributes()
.add(Attributes.MAX_HEALTH, 100.0)
diff --git a/net/minecraft/world/entity/monster/Guardian.java b/net/minecraft/world/entity/monster/Guardian.java
index 9948511659de9222a19f6b9f660e4441ea98a4a9..60490d0611a352ba0546b39fd41259713a7f18b5 100644
index 9ca62d9663fc2e8eb49780ceb7ff38e0363a09a6..ef66a8e8973e0af6a3826b7b6819b9bf89af86dd 100644
--- a/net/minecraft/world/entity/monster/Guardian.java
+++ b/net/minecraft/world/entity/monster/Guardian.java
@@ -104,6 +104,13 @@ public class Guardian extends Monster {
@@ -849,9 +849,9 @@ index 9948511659de9222a19f6b9f660e4441ea98a4a9..60490d0611a352ba0546b39fd4125971
+
@Override
protected void registerGoals() {
MoveTowardsRestrictionGoal moveTowardsRestrictionGoal = new MoveTowardsRestrictionGoal(this, 1.0);
MoveTowardsRestrictionGoal goal = new MoveTowardsRestrictionGoal(this, 1.0);
diff --git a/net/minecraft/world/entity/monster/MagmaCube.java b/net/minecraft/world/entity/monster/MagmaCube.java
index 1bf9d04e5e44272b02753290995795f194cbdae1..765a0d0376e344d2f108a5abe97e654bd972c80b 100644
index fba41f261e57a050d4e24d2611cc27edcbb84ddf..4e757fc7d49c22f79eceafc02ff05da5ea4a04e9 100644
--- a/net/minecraft/world/entity/monster/MagmaCube.java
+++ b/net/minecraft/world/entity/monster/MagmaCube.java
@@ -75,6 +75,13 @@ public class MagmaCube extends Slime {
@@ -869,10 +869,10 @@ index 1bf9d04e5e44272b02753290995795f194cbdae1..765a0d0376e344d2f108a5abe97e654b
return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F);
}
diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java
index ff944ad57d4e9e4a910cd63282e5e7594626365e..1f3389185ccf997165dc2caf9f78ec560cfd68bd 100644
index 6b6eed1c636f2ca65d0cbcd71e96bdd1b2063267..2b799c73bb384bdb778edda66bbb00c4ba70a2bf 100644
--- a/net/minecraft/world/entity/monster/Phantom.java
+++ b/net/minecraft/world/entity/monster/Phantom.java
@@ -136,6 +136,13 @@ public class Phantom extends Mob implements Enemy {
@@ -137,6 +137,13 @@ public class Phantom extends Mob implements Enemy {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -887,10 +887,10 @@ index ff944ad57d4e9e4a910cd63282e5e7594626365e..1f3389185ccf997165dc2caf9f78ec56
public boolean isFlapping() {
return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0;
diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java
index ad2913b02ded9b5087c69ba279cebfd81d9ef75e..5e6fd02985eef337f2ff8e48fbd904a064c0560a 100644
index bb19e3f2e6522e8b7db32061c0ae2b2a37679369..8dc443aa7847789117f6cb86415d6dd082a93e2f 100644
--- a/net/minecraft/world/entity/monster/Ravager.java
+++ b/net/minecraft/world/entity/monster/Ravager.java
@@ -110,6 +110,13 @@ public class Ravager extends Raider {
@@ -108,6 +108,13 @@ public class Ravager extends Raider {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -905,10 +905,10 @@ index ad2913b02ded9b5087c69ba279cebfd81d9ef75e..5e6fd02985eef337f2ff8e48fbd904a0
protected void registerGoals() {
super.registerGoals();
diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java
index 0a5a6f23cd8e4317db4e7c0ba8883e99f3aff148..2b73382e5bcf47da483ea88e2eae480ebb48e8f9 100644
index cf49a580c8dacb895b7a8ec2531d3afee2ffc30c..62bf636b9fb0f13ef7d5787001df0902719bcadf 100644
--- a/net/minecraft/world/entity/monster/Shulker.java
+++ b/net/minecraft/world/entity/monster/Shulker.java
@@ -140,6 +140,13 @@ public class Shulker extends AbstractGolem implements Enemy {
@@ -142,6 +142,13 @@ public class Shulker extends AbstractGolem implements Enemy {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -923,7 +923,7 @@ index 0a5a6f23cd8e4317db4e7c0ba8883e99f3aff148..2b73382e5bcf47da483ea88e2eae480e
protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
diff --git a/net/minecraft/world/entity/monster/Silverfish.java b/net/minecraft/world/entity/monster/Silverfish.java
index c64509a5027de1369bde610feba7a39aa5b404fd..ba80f86980b6789bf944a4350b6f89d644cc283d 100644
index 205c05f46d70d37e11a0e35c97128e0c20b94e23..b45f8eb2bd1d9b3c91716bf329febe92620e315f 100644
--- a/net/minecraft/world/entity/monster/Silverfish.java
+++ b/net/minecraft/world/entity/monster/Silverfish.java
@@ -72,6 +72,13 @@ public class Silverfish extends Monster {
@@ -941,7 +941,7 @@ index c64509a5027de1369bde610feba7a39aa5b404fd..ba80f86980b6789bf944a4350b6f89d6
protected void registerGoals() {
this.friendsGoal = new Silverfish.SilverfishWakeUpFriendsGoal(this);
diff --git a/net/minecraft/world/entity/monster/Slime.java b/net/minecraft/world/entity/monster/Slime.java
index c4222e17d9a1f4cba6a74099a167cff13856f3e3..29d6d0c9687b835d24fe51c3824deeb67af1ba4f 100644
index 556930ac4d06b4f46a87d237857006729fea5ef5..dd21ca5047d16af2d7ed28c97976d845eab1b470 100644
--- a/net/minecraft/world/entity/monster/Slime.java
+++ b/net/minecraft/world/entity/monster/Slime.java
@@ -142,6 +142,13 @@ public class Slime extends Mob implements Enemy {
@@ -959,10 +959,10 @@ index c4222e17d9a1f4cba6a74099a167cff13856f3e3..29d6d0c9687b835d24fe51c3824deeb6
protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java
index 758887f3fcec2bf0946cddb184e19a1c9b64eee3..37b0c8f55ed4ac4feac6a35bd4377007a19ea2ce 100644
index 1b6137674d807ed29d56e3f3120abe60254274e1..7c05c394138699c199e2044325d294826796217c 100644
--- a/net/minecraft/world/entity/monster/Strider.java
+++ b/net/minecraft/world/entity/monster/Strider.java
@@ -124,6 +124,13 @@ public class Strider extends Animal implements ItemSteerable {
@@ -125,6 +125,13 @@ public class Strider extends Animal implements ItemSteerable {
}
// Purpur end - Make entity breeding times configurable
@@ -974,13 +974,13 @@ index 758887f3fcec2bf0946cddb184e19a1c9b64eee3..37b0c8f55ed4ac4feac6a35bd4377007
+ // Purpur end - Mobs always drop experience
+
public static boolean checkStriderSpawnRules(
EntityType<Strider> entityType, LevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random
) {
final EntityType<Strider> ignoredType,
final LevelAccessor level,
diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java
index 6ead673c44891c6b1c1688f80bf299527d7bc777..acd196d435758a8730569ba4e772bb954c4f85b6 100644
index c7700ff6b7faf06116626ad95e11cd4604751eda..97177c9f1982e348e4987f254a9daeeac5da1cbe 100644
--- a/net/minecraft/world/entity/monster/Vex.java
+++ b/net/minecraft/world/entity/monster/Vex.java
@@ -117,6 +117,13 @@ public class Vex extends Monster implements TraceableEntity {
@@ -118,6 +118,13 @@ public class Vex extends Monster implements TraceableEntity {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -995,7 +995,7 @@ index 6ead673c44891c6b1c1688f80bf299527d7bc777..acd196d435758a8730569ba4e772bb95
public boolean isFlapping() {
return this.tickCount % TICKS_PER_FLAP == 0;
diff --git a/net/minecraft/world/entity/monster/Witch.java b/net/minecraft/world/entity/monster/Witch.java
index 86d9952ed0f692e8f229b0c0bcb6cacf53a00c8b..97a427faa37ce9b0c558da40d582b16ac1e96da2 100644
index bfa222c9b61bc2d20927fdf08e8baa5fda4fdbdc..f05beafdbc3f1dcf0413bb2b9f8dbcdd35532867 100644
--- a/net/minecraft/world/entity/monster/Witch.java
+++ b/net/minecraft/world/entity/monster/Witch.java
@@ -89,6 +89,13 @@ public class Witch extends Raider implements RangedAttackMob {
@@ -1013,10 +1013,10 @@ index 86d9952ed0f692e8f229b0c0bcb6cacf53a00c8b..97a427faa37ce9b0c558da40d582b16a
protected void registerGoals() {
super.registerGoals();
diff --git a/net/minecraft/world/entity/monster/Zoglin.java b/net/minecraft/world/entity/monster/Zoglin.java
index e2708eb836d60588c1bedb75c520e5007185034a..d6de61ed4415cd00858375406567ea9407030e1e 100644
index 15e5e3c63ec9bddaf19636e27dd21d12df9318ce..547e9a61779b653c9f59fb04c03d8c2b4ee16e8e 100644
--- a/net/minecraft/world/entity/monster/Zoglin.java
+++ b/net/minecraft/world/entity/monster/Zoglin.java
@@ -119,6 +119,13 @@ public class Zoglin extends Monster implements HoglinBase {
@@ -108,6 +108,13 @@ public class Zoglin extends Monster implements HoglinBase {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -1028,13 +1028,13 @@ index e2708eb836d60588c1bedb75c520e5007185034a..d6de61ed4415cd00858375406567ea94
+ // Purpur end - Mobs always drop experience
+
@Override
protected Brain.Provider<Zoglin> brainProvider() {
return Brain.provider(MEMORY_TYPES, SENSOR_TYPES);
protected Brain<Zoglin> makeBrain(final Brain.Packed packedBrain) {
return BRAIN_PROVIDER.makeBrain(this, packedBrain);
diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java
index 5e3f7005a7167c786038823a8437ad2e90a41d2c..460640f5512be6553f1ec69e20e27c7cc797068b 100644
index d001cf955dba66435079eb2cc30e05aec963d2c6..b8c764cc274f43073a460a4c8643e0cb87d808ad 100644
--- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java
+++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java
@@ -136,6 +136,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
@@ -112,6 +112,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -1046,13 +1046,13 @@ index 5e3f7005a7167c786038823a8437ad2e90a41d2c..460640f5512be6553f1ec69e20e27c7c
+ // Purpur end - Mobs always drop experience
+
@VisibleForTesting
public void setTimeInOverworld(int timeInOverworld) {
public void setTimeInOverworld(final int timeInOverworld) {
this.timeInOverworld = timeInOverworld;
diff --git a/net/minecraft/world/entity/monster/illager/Evoker.java b/net/minecraft/world/entity/monster/illager/Evoker.java
index c4f45f6303a46ad54991c9013608a4e5ba8b9fee..1572f7653045902fa05f0499d920eb2b2ff46931 100644
index 75276deb3208437fce669f9e483ff6c7a99d69a3..452ed8d77c84c26c711531f36f47e84b7379361f 100644
--- a/net/minecraft/world/entity/monster/illager/Evoker.java
+++ b/net/minecraft/world/entity/monster/illager/Evoker.java
@@ -81,6 +81,13 @@ public class Evoker extends SpellcasterIllager {
@@ -82,6 +82,13 @@ public class Evoker extends SpellcasterIllager {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -1067,10 +1067,10 @@ index c4f45f6303a46ad54991c9013608a4e5ba8b9fee..1572f7653045902fa05f0499d920eb2b
protected void registerGoals() {
super.registerGoals();
diff --git a/net/minecraft/world/entity/monster/illager/Illusioner.java b/net/minecraft/world/entity/monster/illager/Illusioner.java
index 32278f51f4973d1294e52f0775697e9f5b295ee0..ea9b61b6f8463edf3497d240b010f8da3e04f62f 100644
index 32b8f638ea26494cae648f4bb48a664ce2a5021e..fefb7927cb9b906e00b68f43e947504dec97f52e 100644
--- a/net/minecraft/world/entity/monster/illager/Illusioner.java
+++ b/net/minecraft/world/entity/monster/illager/Illusioner.java
@@ -93,6 +93,13 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob {
@@ -94,6 +94,13 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -1085,7 +1085,7 @@ index 32278f51f4973d1294e52f0775697e9f5b295ee0..ea9b61b6f8463edf3497d240b010f8da
protected void registerGoals() {
super.registerGoals();
diff --git a/net/minecraft/world/entity/monster/illager/Pillager.java b/net/minecraft/world/entity/monster/illager/Pillager.java
index 6190286ab2f454382d497b4fce47632e6f771215..68fe150d0da04084690670f29a0a4ea035e8c921 100644
index bd9092a0fecef475bde06d94bc2f6726f21404fd..e69514bf39e2acfc909cb55b1704ca3f56f704e2 100644
--- a/net/minecraft/world/entity/monster/illager/Pillager.java
+++ b/net/minecraft/world/entity/monster/illager/Pillager.java
@@ -97,6 +97,13 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve
@@ -1103,7 +1103,7 @@ index 6190286ab2f454382d497b4fce47632e6f771215..68fe150d0da04084690670f29a0a4ea0
protected void registerGoals() {
super.registerGoals();
diff --git a/net/minecraft/world/entity/monster/illager/Vindicator.java b/net/minecraft/world/entity/monster/illager/Vindicator.java
index 86b463a16e8630af4918ea43a2546995aa00244f..367c74123ee9d07795527eec6ba2f83a9e953081 100644
index aab0bd86da31ca73efc4988fa34c906886139ec3..c29a1aea5c09ade40e36f4cb00a677b31ad91069 100644
--- a/net/minecraft/world/entity/monster/illager/Vindicator.java
+++ b/net/minecraft/world/entity/monster/illager/Vindicator.java
@@ -89,6 +89,13 @@ public class Vindicator extends AbstractIllager {
@@ -1121,10 +1121,10 @@ index 86b463a16e8630af4918ea43a2546995aa00244f..367c74123ee9d07795527eec6ba2f83a
protected void registerGoals() {
super.registerGoals();
diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java
index d6c834914ddea76280466bf0f7d001a76af34f08..49ed463ae7ef65b2630a5b914689e04fa729a40c 100644
index de86e23b377ca0727d5f5234f2bc63180ddbbad2..47bcb895bf4c6f438bb0bb82f84331487fd28c0c 100644
--- a/net/minecraft/world/entity/monster/piglin/Piglin.java
+++ b/net/minecraft/world/entity/monster/piglin/Piglin.java
@@ -173,6 +173,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
@@ -140,6 +140,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
}
// Purpur end - Toggle for water sensitive mob damage
@@ -1136,13 +1136,13 @@ index d6c834914ddea76280466bf0f7d001a76af34f08..49ed463ae7ef65b2630a5b914689e04f
+ // Purpur end - Mobs always drop experience
+
@Override
protected void addAdditionalSaveData(ValueOutput output) {
protected void addAdditionalSaveData(final ValueOutput output) {
super.addAdditionalSaveData(output);
diff --git a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java
index 4bf2038fea712e65f420ade915a18470b79318fc..7baccc23f868ac9b8720bfd77b2af6b7dd368820 100644
index 79e084304cec441966a22f0028e021d19e49bfd3..0755e3ed3b940609f0211d123c0c664905af56b5 100644
--- a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java
+++ b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java
@@ -97,6 +97,13 @@ public class PiglinBrute extends AbstractPiglin {
@@ -82,6 +82,13 @@ public class PiglinBrute extends AbstractPiglin {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -1157,7 +1157,7 @@ index 4bf2038fea712e65f420ade915a18470b79318fc..7baccc23f868ac9b8720bfd77b2af6b7
return Monster.createMonsterAttributes()
.add(Attributes.MAX_HEALTH, 50.0)
diff --git a/net/minecraft/world/entity/monster/skeleton/Skeleton.java b/net/minecraft/world/entity/monster/skeleton/Skeleton.java
index 30d79be765118a50e2e2c5bfde6bf6bbc957cf40..03e441e7e9033961dbcf60e574fae48621513c87 100644
index a2fc1cf5fa77c1cc78610ce0b4bbd35a371878a0..7d0c6fe7290e8ad44c451b431778e1b7fe37c6e5 100644
--- a/net/minecraft/world/entity/monster/skeleton/Skeleton.java
+++ b/net/minecraft/world/entity/monster/skeleton/Skeleton.java
@@ -57,6 +57,13 @@ public class Skeleton extends AbstractSkeleton {
@@ -1172,10 +1172,10 @@ index 30d79be765118a50e2e2c5bfde6bf6bbc957cf40..03e441e7e9033961dbcf60e574fae486
+ // Purpur end - Mobs always drop experience
+
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder);
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
super.defineSynchedData(entityData);
diff --git a/net/minecraft/world/entity/monster/skeleton/Stray.java b/net/minecraft/world/entity/monster/skeleton/Stray.java
index ec19c49d195daff5839c991cce63b1ffc15a7e0b..5cea4ff662c7136d2778b84c21f368cb5ac1c81a 100644
index 64dc2a04bb2ae4dc63083a24c48f671bfc8ff8ea..76f28568aecf019ce7432ff89593b2ed4eaff8a2 100644
--- a/net/minecraft/world/entity/monster/skeleton/Stray.java
+++ b/net/minecraft/world/entity/monster/skeleton/Stray.java
@@ -54,6 +54,13 @@ public class Stray extends AbstractSkeleton {
@@ -1190,10 +1190,10 @@ index ec19c49d195daff5839c991cce63b1ffc15a7e0b..5cea4ff662c7136d2778b84c21f368cb
+ // Purpur end - Mobs always drop experience
+
public static boolean checkStraySpawnRules(
EntityType<Stray> entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random
final EntityType<Stray> type, final ServerLevelAccessor level, final EntitySpawnReason spawnReason, final BlockPos pos, final RandomSource random
) {
diff --git a/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java b/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java
index 3e8cc658b333f1259784e1426896ac8b8c1537fa..40134013e3254c6c6ed370150adb4bda7c0f2d9a 100644
index f1cf1d01a497fc46d201ad403b459f9886059d0f..3c3c53de82856033aab31c6b03e90ba647223fa7 100644
--- a/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java
+++ b/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java
@@ -66,6 +66,13 @@ public class WitherSkeleton extends AbstractSkeleton {
@@ -1211,7 +1211,7 @@ index 3e8cc658b333f1259784e1426896ac8b8c1537fa..40134013e3254c6c6ed370150adb4bda
protected void registerGoals() {
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true));
diff --git a/net/minecraft/world/entity/monster/spider/CaveSpider.java b/net/minecraft/world/entity/monster/spider/CaveSpider.java
index fad3e951e443f04f5bf0423cde42c0ae299a4236..fb4caabbbe5bd0befdaba49ee3cfe70c326b50a7 100644
index cbbfdd2dde1437955f1007618244eeb72768b8fd..24b5ba31c92923545d5b7cab758c2e30ac77d23b 100644
--- a/net/minecraft/world/entity/monster/spider/CaveSpider.java
+++ b/net/minecraft/world/entity/monster/spider/CaveSpider.java
@@ -58,6 +58,13 @@ public class CaveSpider extends Spider {
@@ -1226,10 +1226,10 @@ index fad3e951e443f04f5bf0423cde42c0ae299a4236..fb4caabbbe5bd0befdaba49ee3cfe70c
+ // Purpur end - Mobs always drop experience
+
@Override
public boolean doHurtTarget(ServerLevel level, Entity target) {
public boolean doHurtTarget(final ServerLevel level, final Entity target) {
if (super.doHurtTarget(level, target)) {
diff --git a/net/minecraft/world/entity/monster/spider/Spider.java b/net/minecraft/world/entity/monster/spider/Spider.java
index 81c500de41b11d4aa6c52dc290f132ad2c23f009..7993ea937772cabe848726c942b6df0ae52e74e2 100644
index 43c50e6808eaab4bb31ffbbc633a66bab49b9574..408bfd276b7a70103ede33f3b87d4dc1b10d34f5 100644
--- a/net/minecraft/world/entity/monster/spider/Spider.java
+++ b/net/minecraft/world/entity/monster/spider/Spider.java
@@ -84,6 +84,13 @@ public class Spider extends Monster {
@@ -1247,10 +1247,10 @@ index 81c500de41b11d4aa6c52dc290f132ad2c23f009..7993ea937772cabe848726c942b6df0a
protected void registerGoals() {
this.goalSelector.addGoal(1, new FloatGoal(this));
diff --git a/net/minecraft/world/entity/monster/zombie/Drowned.java b/net/minecraft/world/entity/monster/zombie/Drowned.java
index ec36b854dccae7cef905aeb2fcd4ec177828139c..abafb96df26b3d987ce3ec3e1e96e8fc20cb5b6b 100644
index e4769eeacc3ac97f90acb5ed0127990466c8d886..07242b2e6ab055122360035f058c39d54dbb8dc7 100644
--- a/net/minecraft/world/entity/monster/zombie/Drowned.java
+++ b/net/minecraft/world/entity/monster/zombie/Drowned.java
@@ -133,6 +133,13 @@ public class Drowned extends Zombie implements RangedAttackMob {
@@ -140,6 +140,13 @@ public class Drowned extends Zombie implements RangedAttackMob {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -1265,10 +1265,10 @@ index ec36b854dccae7cef905aeb2fcd4ec177828139c..abafb96df26b3d987ce3ec3e1e96e8fc
protected void addBehaviourGoals() {
this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0));
diff --git a/net/minecraft/world/entity/monster/zombie/Husk.java b/net/minecraft/world/entity/monster/zombie/Husk.java
index 6ee9369701b370fad3431c39e59dff1beb5752ea..44583271813ed98a591284d16767cc3411341084 100644
index 02e935edd7a6cabbf2e6fcc6c96a9601bee71acc..5d60b230eeaec9d37e286019b8d4276cfa85a9ea 100644
--- a/net/minecraft/world/entity/monster/zombie/Husk.java
+++ b/net/minecraft/world/entity/monster/zombie/Husk.java
@@ -83,6 +83,13 @@ public class Husk extends Zombie {
@@ -91,6 +91,13 @@ public class Husk extends Zombie {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -1283,10 +1283,10 @@ index 6ee9369701b370fad3431c39e59dff1beb5752ea..44583271813ed98a591284d16767cc34
public boolean isSunSensitive() {
return this.shouldBurnInDay; // Purpur - moved to LivingEntity; keep methods for ABI compatibility - API for any mob to burn daylight
diff --git a/net/minecraft/world/entity/monster/zombie/Zombie.java b/net/minecraft/world/entity/monster/zombie/Zombie.java
index 2d00d951d0baf3e2b66b237ac3327effea589932..2df9517011560cc730376e99eb0f1be78f431a0e 100644
index dffb152543d06380618c36cf89374b7d11336039..68070943966aac17e1878f6730781cf2b603be7a 100644
--- a/net/minecraft/world/entity/monster/zombie/Zombie.java
+++ b/net/minecraft/world/entity/monster/zombie/Zombie.java
@@ -150,6 +150,13 @@ public class Zombie extends Monster {
@@ -160,6 +160,13 @@ public class Zombie extends Monster {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -1301,7 +1301,7 @@ index 2d00d951d0baf3e2b66b237ac3327effea589932..2df9517011560cc730376e99eb0f1be7
protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
diff --git a/net/minecraft/world/entity/monster/zombie/ZombieVillager.java b/net/minecraft/world/entity/monster/zombie/ZombieVillager.java
index df9682cacc2913aaf51b3afbd86bbc080ab8bde0..04e1401b5a1edfe7370fa31fee67f5ad8819e41f 100644
index ecbac0d55dbe921ac2e185e0acab5691579be512..3e96d18ed2fb67c08e77b17ec7f6418fbb5caf8f 100644
--- a/net/minecraft/world/entity/monster/zombie/ZombieVillager.java
+++ b/net/minecraft/world/entity/monster/zombie/ZombieVillager.java
@@ -138,6 +138,13 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
@@ -1316,13 +1316,13 @@ index df9682cacc2913aaf51b3afbd86bbc080ab8bde0..04e1401b5a1edfe7370fa31fee67f5ad
+ // Purpur end - Mobs always drop experience
+
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder);
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
super.defineSynchedData(entityData);
diff --git a/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java
index 9a1da88752b0dd708365dd41a074cc0e90f36e1c..528baf4ca71725d4af6876d195b6d75fdab5ca58 100644
index 6cc4d4729520c60b98d45d5e7dd674e599616505..9e893c0c033dcc2273275b92048d9b1a941d93f2 100644
--- a/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java
+++ b/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java
@@ -113,6 +113,13 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
@@ -117,6 +117,13 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
}
// Purpur end - Toggle for water sensitive mob damage
@@ -1337,10 +1337,10 @@ index 9a1da88752b0dd708365dd41a074cc0e90f36e1c..528baf4ca71725d4af6876d195b6d75f
protected void addBehaviourGoals() {
this.goalSelector.addGoal(1, new SpearUseGoal<>(this, 1.0, 1.0, 10.0F, 2.0F));
diff --git a/net/minecraft/world/entity/npc/villager/Villager.java b/net/minecraft/world/entity/npc/villager/Villager.java
index b6bfe06a2ad8e4219d99de050b30ce1ad15b8b34..996468c21a79d698a8d842189ffd4f2dc86a4302 100644
index fe93e373ea46970af5ca117e80a7d5a2497afeca..297eba0bcf340f83c5d12ced343ccbfc738d4d35 100644
--- a/net/minecraft/world/entity/npc/villager/Villager.java
+++ b/net/minecraft/world/entity/npc/villager/Villager.java
@@ -289,6 +289,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -291,6 +291,13 @@ public class Villager extends AbstractVillager implements VillagerDataHolder, Re
}
// Purpur end - Toggle for water sensitive mob damage
@@ -1353,9 +1353,9 @@ index b6bfe06a2ad8e4219d99de050b30ce1ad15b8b34..996468c21a79d698a8d842189ffd4f2d
+
@Override
public Brain<Villager> getBrain() {
return (Brain<Villager>)super.getBrain();
return (Brain<Villager>) super.getBrain();
diff --git a/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java b/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
index cabebbc25788a8c41912f97dac85af41c9433b68..9502fe0c4f125f5802fde032954c447b14435da2 100644
index cbbfa09d53ada7c39e9504d28770867989eaa5c1..47ee1521e25c987fce6da0bd981371a7e835d565 100644
--- a/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
+++ b/net/minecraft/world/entity/npc/wanderingtrader/WanderingTrader.java
@@ -106,6 +106,13 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Setting to reintroduce end void rings
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 9f3aec24bd8aa75ea116375c1cf0a54bcc229fa2..4af19f9f5152e9f6386e375a1ac5280ce00f48ea 100644
index 0d5558444e9b775c015148d79eb4b04355671cf9..ffc75fc2b04088573877b95c948f457ee2458bd7 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1313,6 +1313,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1205,6 +1205,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
}
// Purpur end - config for startup commands
@@ -25,13 +25,13 @@ index 9f3aec24bd8aa75ea116375c1cf0a54bcc229fa2..4af19f9f5152e9f6386e375a1ac5280c
while (this.running) {
final long tickStart = System.nanoTime(); // Paper - improve tick loop
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
index 6a0ccd6eb3e355348c68db3de980f4eddea1aaea..19a25ee84a4211256a1dbb614db9ebf2ce53182f 100644
index f27135d85936cae01823d8ae00134c4f8c6230d6..67a4038be124192eb70122e657d090bba7ec5bba 100644
--- a/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
@@ -258,6 +258,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -279,6 +279,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
org.spigotmc.SpigotConfig.init((java.io.File) this.options.valueOf("spigot-settings"));
org.spigotmc.SpigotConfig.registerCommands();
// Spigot end
io.papermc.paper.util.ObfHelper.INSTANCE.getClass(); // Paper - load mappings for stacktrace deobf and etc.
+ // Purpur start - Migrate Setting to reintroduce end void rings
+ try {
+ org.purpurmc.purpur.PurpurConfig.init((java.io.File) options.valueOf("purpur-settings"));
@@ -44,7 +44,7 @@ index 6a0ccd6eb3e355348c68db3de980f4eddea1aaea..19a25ee84a4211256a1dbb614db9ebf2
// Paper start - initialize global and world-defaults configuration
this.paperConfigurations.initializeGlobalConfiguration(this.registryAccess());
this.paperConfigurations.initializeWorldDefaultsConfiguration(this.registryAccess());
@@ -274,7 +283,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -295,7 +304,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
io.papermc.paper.command.PaperCommands.registerCommands(this); // Paper - setup /paper command
this.server.spark.registerCommandBeforePlugins(this.server); // Paper - spark
com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics
@@ -53,7 +53,7 @@ index 6a0ccd6eb3e355348c68db3de980f4eddea1aaea..19a25ee84a4211256a1dbb614db9ebf2
try {
org.purpurmc.purpur.PurpurConfig.init((java.io.File) options.valueOf("purpur-settings"));
} catch (Exception e) {
@@ -282,7 +291,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -303,7 +312,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
return false;
}
org.purpurmc.purpur.PurpurConfig.registerCommands();

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Per mob mob_griefing loot pickup override
diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java
index 327982be3748e82a36c7a24ede989dacebfb04db..1b173556470d0f66b1c4a06384f268a910da50ad 100644
index 44e3e723d6a796917e73012dbd03d4b36cb11a0e..34ce53202f0b1baaaaf2e5ae1bb9aede9f70aa62 100644
--- a/net/minecraft/world/entity/Mob.java
+++ b/net/minecraft/world/entity/Mob.java
@@ -554,7 +554,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
@@ -560,7 +560,7 @@ public abstract class Mob extends LivingEntity implements Targeting, EquipmentUs
&& this.canPickUpLoot()
&& this.isAlive()
&& !this.dead
@@ -16,9 +16,9 @@ index 327982be3748e82a36c7a24ede989dacebfb04db..1b173556470d0f66b1c4a06384f268a9
+ && serverLevel.getGameRules().get(GameRules.MOB_GRIEFING, checkEntityPickUpLootOverride())) { // Purpur - Check mobGriefing Overrides
Vec3i pickupReach = this.getPickupReach();
for (ItemEntity itemEntity : this.level()
@@ -576,6 +576,12 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab
profilerFiller.pop();
for (ItemEntity entity : this.level()
@@ -579,6 +579,12 @@ public abstract class Mob extends LivingEntity implements Targeting, EquipmentUs
profiler.pop();
}
+ // Purpur start - Check mobGriefing Overrides
@@ -31,10 +31,10 @@ index 327982be3748e82a36c7a24ede989dacebfb04db..1b173556470d0f66b1c4a06384f268a9
return EquipmentSlot.HEAD;
}
diff --git a/net/minecraft/world/entity/animal/allay/Allay.java b/net/minecraft/world/entity/animal/allay/Allay.java
index ea7666cc10aee49e13dbdd6e3367fabaa0dcbc17..8635ecfa49e2504c981dd48acbfbca5303a37611 100644
index 3a78175273efa24a6bf98ee44fe24a4df71e63ed..86129786c9927fc5aa941207971e28ff4b20023f 100644
--- a/net/minecraft/world/entity/animal/allay/Allay.java
+++ b/net/minecraft/world/entity/animal/allay/Allay.java
@@ -175,6 +175,13 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
@@ -162,6 +162,13 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS
}
// Purpur end - Configurable entity base attributes
@@ -46,13 +46,13 @@ index ea7666cc10aee49e13dbdd6e3367fabaa0dcbc17..8635ecfa49e2504c981dd48acbfbca53
+ // Purpur end - Check mobGriefing Overrides
+
@Override
protected Brain.Provider<Allay> brainProvider() {
return Brain.provider(MEMORY_TYPES, SENSOR_TYPES);
protected Brain<Allay> makeBrain(final Brain.Packed packedBrain) {
return BRAIN_PROVIDER.makeBrain(this, packedBrain);
diff --git a/net/minecraft/world/entity/animal/fox/Fox.java b/net/minecraft/world/entity/animal/fox/Fox.java
index f35f845e3e18c0bb0e4a076298c30be2ae479792..98937a998f55ee462421a7477cc3e2fbf4e75ba3 100644
index 335da522a9b96ebc852b4ed5f22f9fd71aec23a8..ba48b114282939c806523052b2ad82e5041f5d45 100644
--- a/net/minecraft/world/entity/animal/fox/Fox.java
+++ b/net/minecraft/world/entity/animal/fox/Fox.java
@@ -808,6 +808,13 @@ public class Fox extends Animal {
@@ -815,6 +815,13 @@ public class Fox extends Animal {
}
// Purpur end - Tulips change fox type
@@ -65,9 +65,9 @@ index f35f845e3e18c0bb0e4a076298c30be2ae479792..98937a998f55ee462421a7477cc3e2fb
+
@Override
// Paper start - Cancellable death event
protected org.bukkit.event.entity.EntityDeathEvent dropAllDeathLoot(ServerLevel level, DamageSource damageSource) {
protected org.bukkit.event.entity.EntityDeathEvent dropAllDeathLoot(final ServerLevel level, final DamageSource source) {
diff --git a/net/minecraft/world/entity/monster/illager/Pillager.java b/net/minecraft/world/entity/monster/illager/Pillager.java
index 68fe150d0da04084690670f29a0a4ea035e8c921..1a283185ac03ba44bae531f9b234703fa213df1a 100644
index e69514bf39e2acfc909cb55b1704ca3f56f704e2..20c0b12b56416bc532de4de827c88850bfd1f0f3 100644
--- a/net/minecraft/world/entity/monster/illager/Pillager.java
+++ b/net/minecraft/world/entity/monster/illager/Pillager.java
@@ -104,6 +104,13 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve
@@ -85,7 +85,7 @@ index 68fe150d0da04084690670f29a0a4ea035e8c921..1a283185ac03ba44bae531f9b234703f
protected void registerGoals() {
super.registerGoals();
diff --git a/net/minecraft/world/entity/monster/illager/Vindicator.java b/net/minecraft/world/entity/monster/illager/Vindicator.java
index 367c74123ee9d07795527eec6ba2f83a9e953081..97bf22925df40a2f757b50f3fc7cbefc951443bb 100644
index c29a1aea5c09ade40e36f4cb00a677b31ad91069..d4e298ecf79ff7ebdea71b710e6df7ba72f9a0f5 100644
--- a/net/minecraft/world/entity/monster/illager/Vindicator.java
+++ b/net/minecraft/world/entity/monster/illager/Vindicator.java
@@ -96,6 +96,13 @@ public class Vindicator extends AbstractIllager {
@@ -103,10 +103,10 @@ index 367c74123ee9d07795527eec6ba2f83a9e953081..97bf22925df40a2f757b50f3fc7cbefc
protected void registerGoals() {
super.registerGoals();
diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java
index 49ed463ae7ef65b2630a5b914689e04fa729a40c..6f1c3d423b7a37aa261c78a0c8f5e1cb02eee320 100644
index 47bcb895bf4c6f438bb0bb82f84331487fd28c0c..93c5fa7b63548c6b1d24847f1f363c7c9e0ea0ec 100644
--- a/net/minecraft/world/entity/monster/piglin/Piglin.java
+++ b/net/minecraft/world/entity/monster/piglin/Piglin.java
@@ -180,6 +180,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
@@ -147,6 +147,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
}
// Purpur end - Mobs always drop experience
@@ -118,22 +118,22 @@ index 49ed463ae7ef65b2630a5b914689e04fa729a40c..6f1c3d423b7a37aa261c78a0c8f5e1cb
+ // Purpur end - Check mobGriefing Overrides
+
@Override
protected void addAdditionalSaveData(ValueOutput output) {
protected void addAdditionalSaveData(final ValueOutput output) {
super.addAdditionalSaveData(output);
@@ -462,7 +469,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
@@ -430,7 +437,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
@Override
public boolean wantsToPickUp(ServerLevel level, ItemStack stack) {
- return level.getGameRules().get(GameRules.MOB_GRIEFING, level.purpurConfig.piglinMobGriefingOverride) && this.canPickUpLoot() && PiglinAi.wantsToPickup(this, stack); // Purpur - Add mobGriefing override to everything affected
+ return level.getGameRules().get(GameRules.MOB_GRIEFING, level.purpurConfig.piglinCanPickUpLoot) && this.canPickUpLoot() && PiglinAi.wantsToPickup(this, stack); // Purpur - Check mobGriefing Overrides
public boolean wantsToPickUp(final ServerLevel level, final ItemStack itemStack) {
- return level.getGameRules().get(GameRules.MOB_GRIEFING, level.purpurConfig.piglinMobGriefingOverride) && this.canPickUpLoot() && PiglinAi.wantsToPickup(this, itemStack); // Purpur - Add mobGriefing override to everything affected
+ return level.getGameRules().get(GameRules.MOB_GRIEFING, level.purpurConfig.piglinCanPickUpLoot) && this.canPickUpLoot() && PiglinAi.wantsToPickup(this, itemStack); // Purpur - Check mobGriefing Overrides
}
protected boolean canReplaceCurrentItem(ItemStack candidate) {
protected boolean canReplaceCurrentItem(final ItemStack newItemStack) {
diff --git a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java
index 7baccc23f868ac9b8720bfd77b2af6b7dd368820..91f1e6b1c916b06914c32b268b8b8c2eb3c49ce2 100644
index 0755e3ed3b940609f0211d123c0c664905af56b5..3a33976a667d9d9b446b6b27b5938aff8f5d9ab6 100644
--- a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java
+++ b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java
@@ -104,6 +104,13 @@ public class PiglinBrute extends AbstractPiglin {
@@ -89,6 +89,13 @@ public class PiglinBrute extends AbstractPiglin {
}
// Purpur end - Mobs always drop experience
@@ -148,7 +148,7 @@ index 7baccc23f868ac9b8720bfd77b2af6b7dd368820..91f1e6b1c916b06914c32b268b8b8c2e
return Monster.createMonsterAttributes()
.add(Attributes.MAX_HEALTH, 50.0)
diff --git a/net/minecraft/world/entity/monster/skeleton/Bogged.java b/net/minecraft/world/entity/monster/skeleton/Bogged.java
index f1e9cec85ce911a50bb83eff9228d6b98aa00d44..59c986a28a5546a9070ec9bcf3f1994317b47fff 100644
index 50dd01a2092f87fd9015c982f728f14965be5b81..410c5f8e1571970e8043eb5d976cd6d8b95689eb 100644
--- a/net/minecraft/world/entity/monster/skeleton/Bogged.java
+++ b/net/minecraft/world/entity/monster/skeleton/Bogged.java
@@ -66,6 +66,13 @@ public class Bogged extends AbstractSkeleton implements Shearable {
@@ -163,10 +163,10 @@ index f1e9cec85ce911a50bb83eff9228d6b98aa00d44..59c986a28a5546a9070ec9bcf3f19943
+ // Purpur end - Check mobGriefing Overrides
+
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder);
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
super.defineSynchedData(entityData);
diff --git a/net/minecraft/world/entity/monster/skeleton/Skeleton.java b/net/minecraft/world/entity/monster/skeleton/Skeleton.java
index 03e441e7e9033961dbcf60e574fae48621513c87..304e6e23a616ddc3312ef27ae5d94c927a52fb80 100644
index 7d0c6fe7290e8ad44c451b431778e1b7fe37c6e5..c5b261f36f6042a395b8e1a7d54b20339e81b4b8 100644
--- a/net/minecraft/world/entity/monster/skeleton/Skeleton.java
+++ b/net/minecraft/world/entity/monster/skeleton/Skeleton.java
@@ -64,6 +64,13 @@ public class Skeleton extends AbstractSkeleton {
@@ -181,10 +181,10 @@ index 03e441e7e9033961dbcf60e574fae48621513c87..304e6e23a616ddc3312ef27ae5d94c92
+ // Purpur end - Check mobGriefing Overrides
+
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder);
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
super.defineSynchedData(entityData);
diff --git a/net/minecraft/world/entity/monster/skeleton/Stray.java b/net/minecraft/world/entity/monster/skeleton/Stray.java
index 5cea4ff662c7136d2778b84c21f368cb5ac1c81a..262bea9ca0daba064d2e74223b47eb1fbb761479 100644
index 76f28568aecf019ce7432ff89593b2ed4eaff8a2..e761c97212e380b6978e5fbd1d808f4ddbb89bb5 100644
--- a/net/minecraft/world/entity/monster/skeleton/Stray.java
+++ b/net/minecraft/world/entity/monster/skeleton/Stray.java
@@ -61,6 +61,13 @@ public class Stray extends AbstractSkeleton {
@@ -199,10 +199,10 @@ index 5cea4ff662c7136d2778b84c21f368cb5ac1c81a..262bea9ca0daba064d2e74223b47eb1f
+ // Purpur end - Check mobGriefing Overrides
+
public static boolean checkStraySpawnRules(
EntityType<Stray> entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random
final EntityType<Stray> type, final ServerLevelAccessor level, final EntitySpawnReason spawnReason, final BlockPos pos, final RandomSource random
) {
diff --git a/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java b/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java
index 40134013e3254c6c6ed370150adb4bda7c0f2d9a..c01f182e65b7891dfdd7b92ff2c6e2cf3a8a0374 100644
index 3c3c53de82856033aab31c6b03e90ba647223fa7..afc6272905cf6ab464cca03b37b5e6c868094796 100644
--- a/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java
+++ b/net/minecraft/world/entity/monster/skeleton/WitherSkeleton.java
@@ -73,6 +73,13 @@ public class WitherSkeleton extends AbstractSkeleton {
@@ -220,10 +220,10 @@ index 40134013e3254c6c6ed370150adb4bda7c0f2d9a..c01f182e65b7891dfdd7b92ff2c6e2cf
protected void registerGoals() {
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true));
diff --git a/net/minecraft/world/entity/monster/zombie/Drowned.java b/net/minecraft/world/entity/monster/zombie/Drowned.java
index abafb96df26b3d987ce3ec3e1e96e8fc20cb5b6b..51e9c23436b620c32c4e5a5448fac8ae67c1dcc0 100644
index 07242b2e6ab055122360035f058c39d54dbb8dc7..3a1152e07b2cc0ee4cf84651ada3c987dc704e91 100644
--- a/net/minecraft/world/entity/monster/zombie/Drowned.java
+++ b/net/minecraft/world/entity/monster/zombie/Drowned.java
@@ -140,6 +140,13 @@ public class Drowned extends Zombie implements RangedAttackMob {
@@ -147,6 +147,13 @@ public class Drowned extends Zombie implements RangedAttackMob {
}
// Purpur end - Mobs always drop experience
@@ -238,10 +238,10 @@ index abafb96df26b3d987ce3ec3e1e96e8fc20cb5b6b..51e9c23436b620c32c4e5a5448fac8ae
protected void addBehaviourGoals() {
this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0));
diff --git a/net/minecraft/world/entity/monster/zombie/Husk.java b/net/minecraft/world/entity/monster/zombie/Husk.java
index ef289dd3fe0be980c200affb0b84a1066fe52232..d1390e0a88de89b3dc381449ef98a89b327eb4c9 100644
index 5d60b230eeaec9d37e286019b8d4276cfa85a9ea..55b2bd676f2e9633fc8250bcd984424e8c37e2ee 100644
--- a/net/minecraft/world/entity/monster/zombie/Husk.java
+++ b/net/minecraft/world/entity/monster/zombie/Husk.java
@@ -90,6 +90,13 @@ public class Husk extends Zombie {
@@ -98,6 +98,13 @@ public class Husk extends Zombie {
}
// Purpur end - Mobs always drop experience
@@ -256,10 +256,10 @@ index ef289dd3fe0be980c200affb0b84a1066fe52232..d1390e0a88de89b3dc381449ef98a89b
public boolean isSunSensitive() {
return this.shouldBurnInDay; // Purpur - moved to LivingEntity; keep methods for ABI compatibility - API for any mob to burn daylight
diff --git a/net/minecraft/world/entity/monster/zombie/Zombie.java b/net/minecraft/world/entity/monster/zombie/Zombie.java
index f14fc03577a94dc6bd6e536e819a32c2d6144f02..5223f68d2e20909e4df716fa86f7ad92c987a062 100644
index 68070943966aac17e1878f6730781cf2b603be7a..88552e60c0b6b4bd68c3b82e84f2a7493803e6ec 100644
--- a/net/minecraft/world/entity/monster/zombie/Zombie.java
+++ b/net/minecraft/world/entity/monster/zombie/Zombie.java
@@ -157,6 +157,13 @@ public class Zombie extends Monster {
@@ -167,6 +167,13 @@ public class Zombie extends Monster {
}
// Purpur end - Mobs always drop experience
@@ -274,7 +274,7 @@ index f14fc03577a94dc6bd6e536e819a32c2d6144f02..5223f68d2e20909e4df716fa86f7ad92
protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables
diff --git a/net/minecraft/world/entity/monster/zombie/ZombieVillager.java b/net/minecraft/world/entity/monster/zombie/ZombieVillager.java
index a9a04a4c9cedf33b68c99b2aec12289e63fa156b..9797e206a3038c3af23495b8bfd70424e4bbd4a5 100644
index 3e96d18ed2fb67c08e77b17ec7f6418fbb5caf8f..e5eb30d3620937af3cd294bdd6b985fbb61df534 100644
--- a/net/minecraft/world/entity/monster/zombie/ZombieVillager.java
+++ b/net/minecraft/world/entity/monster/zombie/ZombieVillager.java
@@ -145,6 +145,13 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
@@ -289,13 +289,13 @@ index a9a04a4c9cedf33b68c99b2aec12289e63fa156b..9797e206a3038c3af23495b8bfd70424
+ // Purpur end - Check mobGriefing Overrides
+
@Override
protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(builder);
protected void defineSynchedData(final SynchedEntityData.Builder entityData) {
super.defineSynchedData(entityData);
diff --git a/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java
index 528baf4ca71725d4af6876d195b6d75fdab5ca58..2d6b6bbd06d0a0443e4c32e3c9aecfe8716e1a55 100644
index 9e893c0c033dcc2273275b92048d9b1a941d93f2..54ba4d2e8305e2d9ba0c9e71bae67bfd7b7d34b9 100644
--- a/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java
+++ b/net/minecraft/world/entity/monster/zombie/ZombifiedPiglin.java
@@ -120,6 +120,13 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
@@ -124,6 +124,13 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
}
// Purpur end - Mobs always drop experience
@@ -310,10 +310,10 @@ index 528baf4ca71725d4af6876d195b6d75fdab5ca58..2d6b6bbd06d0a0443e4c32e3c9aecfe8
protected void addBehaviourGoals() {
this.goalSelector.addGoal(1, new SpearUseGoal<>(this, 1.0, 1.0, 10.0F, 2.0F));
diff --git a/net/minecraft/world/entity/npc/villager/Villager.java b/net/minecraft/world/entity/npc/villager/Villager.java
index 996468c21a79d698a8d842189ffd4f2dc86a4302..0c110421074d57e7283168c1133cd4ee314b57f6 100644
index 297eba0bcf340f83c5d12ced343ccbfc738d4d35..dab982eed3c702486c1daaa480d795723102e164 100644
--- a/net/minecraft/world/entity/npc/villager/Villager.java
+++ b/net/minecraft/world/entity/npc/villager/Villager.java
@@ -296,6 +296,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -298,6 +298,13 @@ public class Villager extends AbstractVillager implements VillagerDataHolder, Re
}
// Purpur end - Mobs always drop experience
@@ -326,12 +326,12 @@ index 996468c21a79d698a8d842189ffd4f2dc86a4302..0c110421074d57e7283168c1133cd4ee
+
@Override
public Brain<Villager> getBrain() {
return (Brain<Villager>)super.getBrain();
return (Brain<Villager>) super.getBrain();
diff --git a/net/minecraft/world/entity/raid/Raider.java b/net/minecraft/world/entity/raid/Raider.java
index b03faa7600f182a12c3a739deefc38028cf45615..60e9511bd17b6fe08009163814500ec682847fc5 100644
index d0a9088a18e6717209f037ae48ce54db13702234..5e5c5a8362537c6ff205eed7223a3bbdbf05da4a 100644
--- a/net/minecraft/world/entity/raid/Raider.java
+++ b/net/minecraft/world/entity/raid/Raider.java
@@ -396,7 +396,7 @@ public abstract class Raider extends PatrollingMonster {
@@ -399,7 +399,7 @@ public abstract class Raider extends PatrollingMonster {
}
private boolean cannotPickUpBanner() {