This commit is contained in:
granny
2024-04-28 01:42:40 -07:00
parent cb09d0959d
commit 2ff8e3c3a5
49 changed files with 511 additions and 608 deletions

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Conduit behavior configuration
diff --git a/src/main/java/net/minecraft/world/level/block/entity/ConduitBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/ConduitBlockEntity.java diff --git a/src/main/java/net/minecraft/world/level/block/entity/ConduitBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/ConduitBlockEntity.java
index 37e0b762b86e74f607a4541ecb7b24ad7a591d0e..7e3edd41f3a39ef14382e18b20af21e63ce0677b 100644 index 73e532dc998e5701c1a73da846da3d3a79871b81..da36058e52330aaf483d506f3d26ff345d1b8b0c 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/ConduitBlockEntity.java --- a/src/main/java/net/minecraft/world/level/block/entity/ConduitBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/ConduitBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/ConduitBlockEntity.java
@@ -167,7 +167,7 @@ public class ConduitBlockEntity extends BlockEntity { @@ -168,7 +168,7 @@ public class ConduitBlockEntity extends BlockEntity {
if ((l > 1 || i1 > 1 || j1 > 1) && (i == 0 && (i1 == 2 || j1 == 2) || j == 0 && (l == 2 || j1 == 2) || k == 0 && (l == 2 || i1 == 2))) { if ((l > 1 || i1 > 1 || j1 > 1) && (i == 0 && (i1 == 2 || j1 == 2) || j == 0 && (l == 2 || j1 == 2) || k == 0 && (l == 2 || i1 == 2))) {
BlockPos blockposition2 = pos.offset(i, j, k); BlockPos blockposition2 = pos.offset(i, j, k);
BlockState iblockdata = world.getBlockState(blockposition2); BlockState iblockdata = world.getBlockState(blockposition2);
@@ -17,43 +17,43 @@ index 37e0b762b86e74f607a4541ecb7b24ad7a591d0e..7e3edd41f3a39ef14382e18b20af21e6
int k1 = ablock.length; int k1 = ablock.length;
for (int l1 = 0; l1 < k1; ++l1) { for (int l1 = 0; l1 < k1; ++l1) {
@@ -187,7 +187,7 @@ public class ConduitBlockEntity extends BlockEntity { @@ -194,7 +194,7 @@ public class ConduitBlockEntity extends BlockEntity {
public static int getRange(List<BlockPos> list) {
private static void applyEffects(Level world, BlockPos pos, List<BlockPos> activatingBlocks) { // CraftBukkit end
int i = activatingBlocks.size(); int i = list.size();
- int j = i / 7 * 16; // Paper - Conduit API; diff on change - int j = i / 7 * 16;
+ int j = i / 7 * world.purpurConfig.conduitDistance; // Paper - Conduit API; diff on change // Purpur + int j = i / 7 * world.purpurConfig.conduitDistance; // Purpur
int k = pos.getX(); // CraftBukkit start
int l = pos.getY(); return j;
int i1 = pos.getZ(); }
@@ -218,20 +218,20 @@ public class ConduitBlockEntity extends BlockEntity { @@ -237,20 +237,20 @@ public class ConduitBlockEntity extends BlockEntity {
blockEntity.destroyTarget = ConduitBlockEntity.findDestroyTarget(world, pos, blockEntity.destroyTargetUUID); tileentityconduit.destroyTarget = ConduitBlockEntity.findDestroyTarget(world, blockposition, tileentityconduit.destroyTargetUUID);
blockEntity.destroyTargetUUID = null; tileentityconduit.destroyTargetUUID = null;
} else if (blockEntity.destroyTarget == null) { } else if (tileentityconduit.destroyTarget == null) {
- List<LivingEntity> list1 = world.getEntitiesOfClass(LivingEntity.class, ConduitBlockEntity.getDestroyRangeAABB(pos), (entityliving1) -> { - List<LivingEntity> list1 = world.getEntitiesOfClass(LivingEntity.class, ConduitBlockEntity.getDestroyRangeAABB(blockposition), (entityliving1) -> {
+ List<LivingEntity> list1 = world.getEntitiesOfClass(LivingEntity.class, ConduitBlockEntity.getDestroyRangeAABB(pos, world), (entityliving1) -> { // Purpur + List<LivingEntity> list1 = world.getEntitiesOfClass(LivingEntity.class, ConduitBlockEntity.getDestroyRangeAABB(blockposition, world), (entityliving1) -> { // Purpur
return entityliving1 instanceof Enemy && entityliving1.isInWaterOrRain(); return entityliving1 instanceof Enemy && entityliving1.isInWaterOrRain();
}); });
if (!list1.isEmpty()) { if (!list1.isEmpty()) {
blockEntity.destroyTarget = (LivingEntity) list1.get(world.random.nextInt(list1.size())); tileentityconduit.destroyTarget = (LivingEntity) list1.get(world.random.nextInt(list1.size()));
} }
- } else if (!blockEntity.destroyTarget.isAlive() || !pos.closerThan(blockEntity.destroyTarget.blockPosition(), 8.0D)) { - } else if (!tileentityconduit.destroyTarget.isAlive() || !blockposition.closerThan(tileentityconduit.destroyTarget.blockPosition(), 8.0D)) {
+ } else if (!blockEntity.destroyTarget.isAlive() || !pos.closerThan(blockEntity.destroyTarget.blockPosition(), world.purpurConfig.conduitDamageDistance)) { // Purpur + } else if (!tileentityconduit.destroyTarget.isAlive() || !blockposition.closerThan(tileentityconduit.destroyTarget.blockPosition(), world.purpurConfig.conduitDamageDistance)) { // Purpur
blockEntity.destroyTarget = null; tileentityconduit.destroyTarget = null;
} }
if (blockEntity.destroyTarget != null) { // CraftBukkit start
// CraftBukkit start if (damageTarget && tileentityconduit.destroyTarget != null) {
- if (blockEntity.destroyTarget.hurt(world.damageSources().magic().directBlock(world, pos), 4.0F)) { // CraftBukkit - if (tileentityconduit.destroyTarget.hurt(world.damageSources().magic().directBlock(world, blockposition), 4.0F)) {
+ if (blockEntity.destroyTarget.hurt(world.damageSources().magic().directBlock(world, pos), world.purpurConfig.conduitDamageAmount)) { // CraftBukkit // Purpur + if (tileentityconduit.destroyTarget.hurt(world.damageSources().magic().directBlock(world, blockposition), world.purpurConfig.conduitDamageAmount)) { // Purpur
world.playSound(null, blockEntity.destroyTarget.getX(), blockEntity.destroyTarget.getY(), blockEntity.destroyTarget.getZ(), SoundEvents.CONDUIT_ATTACK_TARGET, SoundSource.BLOCKS, 1.0F, 1.0F); world.playSound(null, tileentityconduit.destroyTarget.getX(), tileentityconduit.destroyTarget.getY(), tileentityconduit.destroyTarget.getZ(), SoundEvents.CONDUIT_ATTACK_TARGET, SoundSource.BLOCKS, 1.0F, 1.0F);
} }
// CraftBukkit end // CraftBukkit end
@@ -256,16 +256,22 @@ public class ConduitBlockEntity extends BlockEntity { @@ -275,16 +275,22 @@ public class ConduitBlockEntity extends BlockEntity {
} }
private static AABB getDestroyRangeAABB(BlockPos pos) { public static AABB getDestroyRangeAABB(BlockPos pos) {
+ // Purpur start + // Purpur start
+ return getDestroyRangeAABB(pos, null); + return getDestroyRangeAABB(pos, null);
+ } + }
@@ -75,19 +75,6 @@ index 37e0b762b86e74f607a4541ecb7b24ad7a591d0e..7e3edd41f3a39ef14382e18b20af21e6
return entityliving.getUUID().equals(uuid); return entityliving.getUUID().equals(uuid);
}); });
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java b/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java
index f0b0348e105fb27c829ec29e638433c57bfd5f64..57ce4b7c5fcfe7a88928cd4124f29af39e117ed9 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java
@@ -29,7 +29,7 @@ public class CraftConduit extends CraftBlockEntityState<ConduitBlockEntity> impl
@Override
public int getRange() {
requirePlaced();
- return this.getTileEntity().effectBlocks.size() / 7 * 16;
+ return this.getTileEntity().effectBlocks.size() / 7 * this.world.getHandle().purpurConfig.conduitDistance; // Purpur
}
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 6cb425d017cc8b12aece5bc1982d85056fc58431..60b511bd94288badd8b6390b5f66d5c79478a71b 100644 index 6cb425d017cc8b12aece5bc1982d85056fc58431..60b511bd94288badd8b6390b5f66d5c79478a71b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Cauldron fill chances
diff --git a/src/main/java/net/minecraft/world/level/block/CauldronBlock.java b/src/main/java/net/minecraft/world/level/block/CauldronBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/CauldronBlock.java b/src/main/java/net/minecraft/world/level/block/CauldronBlock.java
index 47b6b83842201620bd6620f5acf11bb14334e35d..b4d2499ae39fd3f14b2600a9663ea8a823bdfbe4 100644 index c9968934f4ecaa8d81e545f279b3001c7b1ce545..03e4fce6f8226451365fc2831b5bf1e5e6091730 100644
--- a/src/main/java/net/minecraft/world/level/block/CauldronBlock.java --- a/src/main/java/net/minecraft/world/level/block/CauldronBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/CauldronBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CauldronBlock.java
@@ -36,7 +36,7 @@ public class CauldronBlock extends AbstractCauldronBlock { @@ -37,7 +37,7 @@ public class CauldronBlock extends AbstractCauldronBlock {
} }
protected static boolean shouldHandlePrecipitation(Level world, Biome.Precipitation precipitation) { protected static boolean shouldHandlePrecipitation(Level world, Biome.Precipitation precipitation) {
@@ -18,10 +18,10 @@ index 47b6b83842201620bd6620f5acf11bb14334e35d..b4d2499ae39fd3f14b2600a9663ea8a8
@Override @Override
diff --git a/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java b/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java b/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java
index 5835872df922b859a31b44e3723c67097f21a641..ecb595ddf21b593175c27d59fd9587e7f2d56517 100644 index a2bd54dae4b0460d200f6d5300194a7ef5a28830..bf189a171530abfc9bba5db5a305feb391f2cbee 100644
--- a/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java --- a/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java +++ b/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java
@@ -189,7 +189,7 @@ public class PointedDripstoneBlock extends Block implements Fallable, SimpleWate @@ -190,7 +190,7 @@ public class PointedDripstoneBlock extends Block implements Fallable, SimpleWate
@VisibleForTesting @VisibleForTesting
public static void maybeTransferFluid(BlockState state, ServerLevel world, BlockPos pos, float dripChance) { public static void maybeTransferFluid(BlockState state, ServerLevel world, BlockPos pos, float dripChance) {
@@ -30,7 +30,7 @@ index 5835872df922b859a31b44e3723c67097f21a641..ecb595ddf21b593175c27d59fd9587e7
if (PointedDripstoneBlock.isStalactiteStartPos(state, world, pos)) { if (PointedDripstoneBlock.isStalactiteStartPos(state, world, pos)) {
Optional<PointedDripstoneBlock.FluidInfo> optional = PointedDripstoneBlock.getFluidAboveStalactite(world, pos, state); Optional<PointedDripstoneBlock.FluidInfo> optional = PointedDripstoneBlock.getFluidAboveStalactite(world, pos, state);
@@ -198,13 +198,13 @@ public class PointedDripstoneBlock extends Block implements Fallable, SimpleWate @@ -199,13 +199,13 @@ public class PointedDripstoneBlock extends Block implements Fallable, SimpleWate
float f1; float f1;
if (fluidtype == Fluids.WATER) { if (fluidtype == Fluids.WATER) {

View File

@@ -5,18 +5,18 @@ Subject: [PATCH] Config to allow mobs to pathfind over rails
diff --git a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java diff --git a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java
index 7e62873eea85e33f81c943e70292ccb71a3dd276..b7f9793900d365f91d6e30dd22881a30e4250ac8 100644 index d5004290e40a1ff5e0fcfe75f8da34ae15962359..31ae0f466ae522d767907ec5066b26695f327b96 100644
--- a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java --- a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java
+++ b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java +++ b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java
@@ -259,7 +259,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { @@ -240,7 +240,7 @@ public class WalkNodeEvaluator extends NodeEvaluator {
if ((node == null || node.costMalus < 0.0F) if ((node == null || node.costMalus < 0.0F)
&& maxYStep > 0 && maxYStep > 0
&& (blockPathTypes != BlockPathTypes.FENCE || this.canWalkOverFences()) && (pathType != PathType.FENCE || this.canWalkOverFences())
- && blockPathTypes != BlockPathTypes.UNPASSABLE_RAIL - && pathType != PathType.UNPASSABLE_RAIL
+ && (this.mob.level().purpurConfig.mobsIgnoreRails || blockPathTypes != BlockPathTypes.UNPASSABLE_RAIL) // Purpur + && (this.mob.level().purpurConfig.mobsIgnoreRails || pathType != PathType.UNPASSABLE_RAIL) // Purpur
&& blockPathTypes != BlockPathTypes.TRAPDOOR && pathType != PathType.TRAPDOOR
&& blockPathTypes != BlockPathTypes.POWDER_SNOW) { && pathType != PathType.POWDER_SNOW) {
node = this.findAcceptedNode(x, y + 1, z, maxYStep - 1, prevFeetY, direction, nodeType); node = this.tryJumpOn(x, y, z, maxYStep, prevFeetY, direction, nodeType, mutableBlockPos);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 0893e133393e35a6b0a66c09cb800265426ec427..7f0b09f7e7e1f294bd7d4b384c587789dd8ffb12 100644 index 0893e133393e35a6b0a66c09cb800265426ec427..7f0b09f7e7e1f294bd7d4b384c587789dd8ffb12 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Shulker change color with dye
diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java
index df944e733ca589d407af3709e0ff025f568600b7..25b9f131f9d0fdb0a53ddcc685d8ae250cb3abd6 100644 index 73063abbd051f1d044a8b2c0530cc8d2a96a6331..687fadf1ef64c5ae7e00c5da15b82245e07d3a39 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java
@@ -22,6 +22,8 @@ import net.minecraft.tags.DamageTypeTags; @@ -23,6 +23,8 @@ import net.minecraft.tags.DamageTypeTags;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraft.world.Difficulty; import net.minecraft.world.Difficulty;
import net.minecraft.world.DifficultyInstance; import net.minecraft.world.DifficultyInstance;
@@ -16,8 +16,8 @@ index df944e733ca589d407af3709e0ff025f568600b7..25b9f131f9d0fdb0a53ddcc685d8ae25
+import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionResult;
import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityDimensions; import net.minecraft.world.entity.EntitySelector;
@@ -49,6 +51,8 @@ import net.minecraft.world.entity.player.Player; @@ -48,6 +50,8 @@ import net.minecraft.world.entity.player.Player;
import net.minecraft.world.entity.projectile.AbstractArrow; import net.minecraft.world.entity.projectile.AbstractArrow;
import net.minecraft.world.entity.projectile.ShulkerBullet; import net.minecraft.world.entity.projectile.ShulkerBullet;
import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.DyeColor;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Extended OfflinePlayer API
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
index 4a875bce9563f3b9351ebecde9b0eb1287beb50e..42d83cfd9318d6ebe9a5392edef3b667c9e4dac0 100644 index 9d93130f23addb18b97d7f5ec013faef17a74529..29d2fb87a65778926aea2cfc7a5b486cad596515 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java
@@ -335,14 +335,26 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa @@ -335,14 +335,26 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa
@@ -243,10 +243,10 @@ index 4a875bce9563f3b9351ebecde9b0eb1287beb50e..42d83cfd9318d6ebe9a5392edef3b667
+ // Purpur end - OfflinePlayer API + // Purpur end - OfflinePlayer API
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 4e999cec1a004529a4bcd2f0ae63b3731bcac8f2..4a04c56371a2d9772fb542ffac5b9b98cbf1e86a 100644 index 485c742874defe0a8cf1e7db09406b03ec40871b..0b278aaf675693e4babac5d551087285b59f8f5c 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2670,6 +2670,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -2736,6 +2736,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return this.getHandle().getAbilities().walkingSpeed * 2f; return this.getHandle().getAbilities().walkingSpeed * 2f;
} }

View File

@@ -24,11 +24,11 @@ index 1af7e1548f0648890a1ef2fc0ff4e4c3a56c947c..decea1697c075e7549ccc7501c8e5935
} else if (this.isFuel(itemstack1)) { } else if (this.isFuel(itemstack1)) {
if (!this.moveItemStackTo(itemstack1, 1, 2, false)) { if (!this.moveItemStackTo(itemstack1, 1, 2, false)) {
diff --git a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java diff --git a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
index c5bbb83f54d942d438ce8cf3a060ef2184069b88..5a3a619c4b936a4d186c0593f5af7b2493b85825 100644 index ce2c424068001eec16032361baa206f6a5aa5332..72f4c1bbdfbb3e0710af33cee419b4ce8b023102 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java --- a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
@@ -209,6 +209,22 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit @@ -214,6 +214,22 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
// Paper end - cache burn durations }
} }
+ // Purpur start + // Purpur start
@@ -51,7 +51,7 @@ index c5bbb83f54d942d438ce8cf3a060ef2184069b88..5a3a619c4b936a4d186c0593f5af7b24
private int maxStack = MAX_STACK; private int maxStack = MAX_STACK;
public List<HumanEntity> transaction = new java.util.ArrayList<HumanEntity>(); public List<HumanEntity> transaction = new java.util.ArrayList<HumanEntity>();
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index a6affd4d7ecbe57a79fa18f4473c60662053d663..14e60675d23f9696fd8f64eb026fcd0b82b498f0 100644 index 6a61d03ca1e88f4d8fe66bfa6c29e1550b88a103..b113e54cbe8262b7d0d8bae156d00baf04486b32 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1589,6 +1589,19 @@ public final class CraftServer implements Server { @@ -1589,6 +1589,19 @@ public final class CraftServer implements Server {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Option for if rain and thunder should stop on sleep
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 4a08c804c3e31a80ee9b663a44fd60142709c9c6..39a6ff48d820b56728398ac287f9a4db108f3bad 100644 index 83ec2e31d81d6209953252a3780552c3cf110c68..42db3e64b120b753e98a0fd7e3f56c7d28256fd2 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java --- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -1401,6 +1401,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -1391,6 +1391,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@VisibleForTesting @VisibleForTesting
public void resetWeatherCycle() { public void resetWeatherCycle() {
// CraftBukkit start // CraftBukkit start
@@ -16,7 +16,7 @@ index 4a08c804c3e31a80ee9b663a44fd60142709c9c6..39a6ff48d820b56728398ac287f9a4db
this.serverLevelData.setRaining(false, org.bukkit.event.weather.WeatherChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents this.serverLevelData.setRaining(false, org.bukkit.event.weather.WeatherChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents
// If we stop due to everyone sleeping we should reset the weather duration to some other random value. // If we stop due to everyone sleeping we should reset the weather duration to some other random value.
// Not that everyone ever manages to get the whole server to sleep at the same time.... // Not that everyone ever manages to get the whole server to sleep at the same time....
@@ -1408,6 +1409,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -1398,6 +1399,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.serverLevelData.setRainTime(0); this.serverLevelData.setRainTime(0);
} }
// CraftBukkit end // CraftBukkit end

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Chance for azalea blocks to grow into trees naturally
diff --git a/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java b/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java b/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java
index c4d05b061a206df197996fdd0c29e2a4f8820bd1..08e32ae2fc4b02c526bf49617a8010c1bf2f2d95 100644 index fad69dfc20574ab23634b14252b50929cca75b21..7082486f6b760bed2a61938f493d5124722b58e2 100644
--- a/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java --- a/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java +++ b/src/main/java/net/minecraft/world/level/block/AzaleaBlock.java
@@ -49,6 +49,20 @@ public class AzaleaBlock extends BushBlock implements BonemealableBlock { @@ -49,6 +49,20 @@ public class AzaleaBlock extends BushBlock implements BonemealableBlock {
@@ -30,10 +30,10 @@ index c4d05b061a206df197996fdd0c29e2a4f8820bd1..08e32ae2fc4b02c526bf49617a8010c1
} }
diff --git a/src/main/java/net/minecraft/world/level/block/Blocks.java b/src/main/java/net/minecraft/world/level/block/Blocks.java diff --git a/src/main/java/net/minecraft/world/level/block/Blocks.java b/src/main/java/net/minecraft/world/level/block/Blocks.java
index e7c8313cafc25858ac002e3c45e63db9e8cefee9..04eace0873f1133ccca9696282948dc7ebc6f398 100644 index 260906f493416d98ab574a7262fce5e9b7e40c64..ce639e4a2d87202a10ef4fc73274c4b2c4e95720 100644
--- a/src/main/java/net/minecraft/world/level/block/Blocks.java --- a/src/main/java/net/minecraft/world/level/block/Blocks.java
+++ b/src/main/java/net/minecraft/world/level/block/Blocks.java +++ b/src/main/java/net/minecraft/world/level/block/Blocks.java
@@ -7380,6 +7380,7 @@ public class Blocks { @@ -7389,6 +7389,7 @@ public class Blocks {
BlockBehaviour.Properties.of() BlockBehaviour.Properties.of()
.mapColor(MapColor.PLANT) .mapColor(MapColor.PLANT)
.forceSolidOff() .forceSolidOff()
@@ -41,7 +41,7 @@ index e7c8313cafc25858ac002e3c45e63db9e8cefee9..04eace0873f1133ccca9696282948dc7
.instabreak() .instabreak()
.sound(SoundType.AZALEA) .sound(SoundType.AZALEA)
.noOcclusion() .noOcclusion()
@@ -7392,6 +7393,7 @@ public class Blocks { @@ -7401,6 +7402,7 @@ public class Blocks {
BlockBehaviour.Properties.of() BlockBehaviour.Properties.of()
.mapColor(MapColor.PLANT) .mapColor(MapColor.PLANT)
.forceSolidOff() .forceSolidOff()

View File

@@ -5,18 +5,18 @@ Subject: [PATCH] Shift right click to use exp for mending
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
index 1aa98f8ff062a906035c62875c454aeb0bc6f179..f8edb6b0d119582cf404b9931adc09484465fc9d 100644 index a810eaa7dc319f5ea69b239190ae91838bfad4ec..6d194797d8fe2cd6e5652d596f4bc66ffc3b6375 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
@@ -517,6 +517,7 @@ public class ServerPlayerGameMode { @@ -513,6 +513,7 @@ public class ServerPlayerGameMode {
public InteractionHand interactHand; public InteractionHand interactHand;
public ItemStack interactItemStack; public ItemStack interactItemStack;
public InteractionResult useItemOn(ServerPlayer player, Level world, ItemStack stack, InteractionHand hand, BlockHitResult hitResult) { public InteractionResult useItemOn(ServerPlayer player, Level world, ItemStack stack, InteractionHand hand, BlockHitResult hitResult) {
+ if (shiftClickMended(stack)) return InteractionResult.SUCCESS; // Purpur + if (shiftClickMended(stack)) return InteractionResult.SUCCESS; // Purpur
BlockPos blockposition = hitResult.getBlockPos(); BlockPos blockposition = hitResult.getBlockPos();
BlockState iblockdata = world.getBlockState(blockposition); BlockState iblockdata = world.getBlockState(blockposition);
InteractionResult enuminteractionresult = InteractionResult.PASS; boolean cancelledBlock = false;
@@ -619,4 +620,18 @@ public class ServerPlayerGameMode { @@ -622,4 +623,18 @@ public class ServerPlayerGameMode {
public void setLevel(ServerLevel world) { public void setLevel(ServerLevel world) {
this.level = world; this.level = world;
} }
@@ -36,10 +36,10 @@ index 1aa98f8ff062a906035c62875c454aeb0bc6f179..f8edb6b0d119582cf404b9931adc0948
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index ccd830286153405206110334cf58323315c02b7e..1cefa3b6bdd62ae7bf30da872012fc150905f5ae 100644 index fea36f5e4f64281459d62f4a6a4a7dd129706150..7c96644ee70ea061a5eb29809c2c5cc1bf55e194 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2051,6 +2051,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -2034,6 +2034,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
boolean cancelled; boolean cancelled;
if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Dolphins naturally aggressive to players chance
diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
index 21e804d391478c613f4f89076fd268a9eb2e2ecf..9c35059d390c94f6d641c0fe8d37777fcf1b29f3 100644 index 38112239035b0c66c429c0762199867e70e0a67a..e539eefb6e6d3172611d1f9185a1138001481885 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
@@ -83,6 +83,7 @@ public class Dolphin extends WaterAnimal { @@ -81,6 +81,7 @@ public class Dolphin extends WaterAnimal {
public static final Predicate<ItemEntity> ALLOWED_ITEMS = (entityitem) -> { public static final Predicate<ItemEntity> ALLOWED_ITEMS = (entityitem) -> {
return !entityitem.hasPickUpDelay() && entityitem.isAlive() && entityitem.isInWater(); return !entityitem.hasPickUpDelay() && entityitem.isAlive() && entityitem.isInWater();
}; };
@@ -16,15 +16,15 @@ index 21e804d391478c613f4f89076fd268a9eb2e2ecf..9c35059d390c94f6d641c0fe8d37777f
private int spitCooldown; // Purpur private int spitCooldown; // Purpur
public Dolphin(EntityType<? extends Dolphin> type, Level world) { public Dolphin(EntityType<? extends Dolphin> type, Level world) {
@@ -174,6 +175,7 @@ public class Dolphin extends WaterAnimal { @@ -172,6 +173,7 @@ public class Dolphin extends WaterAnimal {
public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData) {
this.setAirSupply(this.getMaxAirSupply()); this.setAirSupply(this.getMaxAirSupply());
this.setXRot(0.0F); this.setXRot(0.0F);
+ this.isNaturallyAggressiveToPlayers = world.getLevel().purpurConfig.dolphinNaturallyAggressiveToPlayersChance > 0.0D && random.nextDouble() <= world.getLevel().purpurConfig.dolphinNaturallyAggressiveToPlayersChance; // Purpur + this.isNaturallyAggressiveToPlayers = world.getLevel().purpurConfig.dolphinNaturallyAggressiveToPlayersChance > 0.0D && random.nextDouble() <= world.getLevel().purpurConfig.dolphinNaturallyAggressiveToPlayersChance; // Purpur
return super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt); return super.finalizeSpawn(world, difficulty, spawnReason, entityData);
} }
@@ -238,6 +240,7 @@ public class Dolphin extends WaterAnimal { @@ -236,6 +238,7 @@ public class Dolphin extends WaterAnimal {
protected void registerGoals() { protected void registerGoals() {
this.goalSelector.addGoal(0, new BreathAirGoal(this)); this.goalSelector.addGoal(0, new BreathAirGoal(this));
this.goalSelector.addGoal(0, new TryFindWaterGoal(this)); this.goalSelector.addGoal(0, new TryFindWaterGoal(this));
@@ -32,7 +32,7 @@ index 21e804d391478c613f4f89076fd268a9eb2e2ecf..9c35059d390c94f6d641c0fe8d37777f
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
this.goalSelector.addGoal(1, new Dolphin.DolphinSwimToTreasureGoal(this)); this.goalSelector.addGoal(1, new Dolphin.DolphinSwimToTreasureGoal(this));
this.goalSelector.addGoal(2, new Dolphin.DolphinSwimWithPlayerGoal(this, 4.0D)); this.goalSelector.addGoal(2, new Dolphin.DolphinSwimWithPlayerGoal(this, 4.0D));
@@ -245,12 +248,13 @@ public class Dolphin extends WaterAnimal { @@ -243,12 +246,13 @@ public class Dolphin extends WaterAnimal {
this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this));
this.goalSelector.addGoal(5, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(5, new LookAtPlayerGoal(this, Player.class, 6.0F));
this.goalSelector.addGoal(5, new DolphinJumpGoal(this, 10)); this.goalSelector.addGoal(5, new DolphinJumpGoal(this, 10));

View File

@@ -5,18 +5,18 @@ Subject: [PATCH] Cows naturally aggressive to players chance
diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java
index 4c2cc5ba3c8f15c26f01361e786d25b399747974..da3dfa10e08750e7ad84ff32a0c0136e055ee3a7 100644 index 8c908891c6c683332d8877ab3fa084a0849b17a9..106d2d692e2393517793c2bac8bebf401f717bea 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Cow.java --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java
@@ -42,6 +42,7 @@ import org.bukkit.event.player.PlayerBucketFillEvent; @@ -39,6 +39,7 @@ import org.bukkit.event.player.PlayerBucketFillEvent;
// CraftBukkit end // CraftBukkit end
public class Cow extends Animal { public class Cow extends Animal {
+ private boolean isNaturallyAggressiveToPlayers; // Purpur + private boolean isNaturallyAggressiveToPlayers; // Purpur
public Cow(EntityType<? extends Cow> type, Level world) { private static final EntityDimensions BABY_DIMENSIONS = EntityType.COW.getDimensions().scale(0.5F).withEyeHeight(0.665F);
super(type, world);
@@ -67,6 +68,7 @@ public class Cow extends Animal { @@ -66,6 +67,7 @@ public class Cow extends Animal {
@Override @Override
public void initAttributes() { public void initAttributes() {
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.cowMaxHealth); this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.cowMaxHealth);
@@ -24,7 +24,7 @@ index 4c2cc5ba3c8f15c26f01361e786d25b399747974..da3dfa10e08750e7ad84ff32a0c0136e
} }
@Override @Override
@@ -79,11 +81,18 @@ public class Cow extends Animal { @@ -78,11 +80,18 @@ public class Cow extends Animal {
return this.level().purpurConfig.cowTakeDamageFromWater; return this.level().purpurConfig.cowTakeDamageFromWater;
} }
@@ -41,15 +41,19 @@ index 4c2cc5ba3c8f15c26f01361e786d25b399747974..da3dfa10e08750e7ad84ff32a0c0136e
this.goalSelector.addGoal(1, new PanicGoal(this, 2.0D)); this.goalSelector.addGoal(1, new PanicGoal(this, 2.0D));
+ this.goalSelector.addGoal(1, new net.minecraft.world.entity.ai.goal.MeleeAttackGoal(this, 1.2000000476837158D, true)); // Purpur + this.goalSelector.addGoal(1, new net.minecraft.world.entity.ai.goal.MeleeAttackGoal(this, 1.2000000476837158D, true)); // Purpur
this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D));
if (level().purpurConfig.cowFeedMushrooms > 0) this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT, Blocks.RED_MUSHROOM.asItem(), Blocks.BROWN_MUSHROOM.asItem()), false)); else // Purpur this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, (itemstack) -> {
this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT), false)); return level().purpurConfig.cowFeedMushrooms > 0 && (itemstack.is(Blocks.RED_MUSHROOM.asItem()) || itemstack.is(Blocks.BROWN_MUSHROOM.asItem())) || itemstack.is(ItemTags.COW_FOOD); // Purpur
@@ -91,10 +100,11 @@ public class Cow extends Animal { @@ -91,6 +100,7 @@ public class Cow extends Animal {
this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 1.0D)); this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 1.0D));
this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F));
this.goalSelector.addGoal(7, new RandomLookAroundGoal(this)); this.goalSelector.addGoal(7, new RandomLookAroundGoal(this));
+ this.targetSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, target -> isNaturallyAggressiveToPlayers)); // Purpur + this.targetSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, target -> isNaturallyAggressiveToPlayers)); // Purpur
} }
@Override
@@ -99,7 +109,7 @@ public class Cow extends Animal {
}
public static AttributeSupplier.Builder createAttributes() { public static AttributeSupplier.Builder createAttributes() {
- return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 10.0D).add(Attributes.MOVEMENT_SPEED, 0.20000000298023224D); - return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 10.0D).add(Attributes.MOVEMENT_SPEED, 0.20000000298023224D);
+ return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 10.0D).add(Attributes.MOVEMENT_SPEED, 0.20000000298023224D).add(Attributes.ATTACK_DAMAGE, 0.0D); // Purpur + return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 10.0D).add(Attributes.MOVEMENT_SPEED, 0.20000000298023224D).add(Attributes.ATTACK_DAMAGE, 0.0D); // Purpur

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Option for beds to explode on villager sleep
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
index ee509b5eea71c17ff466fb93fe63168710065add..d2b6d094c4b93055a4e6622372c6a0a83bd992a3 100644 index a7c85c9efd13145cc061a3a0076b44a7af9812b9..1bace0d549ea4a4b45ac4cd1409524989ecac4ca 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -1111,6 +1111,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -1101,6 +1101,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@Override @Override
public void startSleeping(BlockPos pos) { public void startSleeping(BlockPos pos) {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Halloween options and optimizations
diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
index 3c7db09c5fbcb9d57febc937158b50634d68a082..08190c45b0807079b77c41203502e355ecaf2e14 100644 index 76b858d0ab2da7b4cdf39aa6692e2a005958fee2..f7ac3a5b0a7c93240f948394649ad6dba5a1e4b5 100644
--- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java
+++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
@@ -304,7 +304,7 @@ public class Bat extends AmbientCreature { @@ -301,7 +301,7 @@ public class Bat extends AmbientCreature {
int i = world.getMaxLocalRawBrightness(pos); int i = world.getMaxLocalRawBrightness(pos);
byte b0 = 4; byte b0 = 4;
@@ -17,19 +17,19 @@ index 3c7db09c5fbcb9d57febc937158b50634d68a082..08190c45b0807079b77c41203502e355
b0 = 7; b0 = 7;
} else if (random.nextBoolean()) { } else if (random.nextBoolean()) {
return false; return false;
@@ -318,6 +318,7 @@ public class Bat extends AmbientCreature { @@ -311,6 +311,7 @@ public class Bat extends AmbientCreature {
private static boolean isSpookySeason = false; }
private static final int ONE_HOUR = 20 * 60 * 60; }
private static int lastSpookyCheck = -ONE_HOUR;
+ public static boolean isHalloweenSeason(Level level) { return level.purpurConfig.forceHalloweenSeason || isHalloween(); } // Purpur + public static boolean isHalloweenSeason(Level level) { return level.purpurConfig.forceHalloweenSeason || isHalloween(); } // Purpur
private static boolean isHalloween() { private static boolean isHalloween() {
if (net.minecraft.server.MinecraftServer.currentTick - lastSpookyCheck > ONE_HOUR) {
LocalDate localdate = LocalDate.now(); LocalDate localdate = LocalDate.now();
int i = localdate.get(ChronoField.DAY_OF_MONTH);
diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
index 3f9e81c0bdd85bec24a1209ad3fd3dc43d988a4f..cb378b343f721c16868a6673aba59856574c7133 100644 index 919767affe2ede755cf83398436fbf1581ad508f..8515e6360c1630385884a60f652f65fdefeaf540 100644
--- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
+++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
@@ -143,11 +143,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @@ -135,11 +135,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
this.reassessWeaponGoal(); this.reassessWeaponGoal();
this.setCanPickUpLoot(this.level().paperConfig().entities.behavior.mobsCanAlwaysPickUpLoot.skeletons || randomsource.nextFloat() < 0.55F * difficulty.getSpecialMultiplier()); // Paper - Add world settings for mobs picking up loot this.setCanPickUpLoot(this.level().paperConfig().entities.behavior.mobsCanAlwaysPickUpLoot.skeletons || randomsource.nextFloat() < 0.55F * difficulty.getSpecialMultiplier()); // Paper - Add world settings for mobs picking up loot
if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) { if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) {
@@ -43,10 +43,10 @@ index 3f9e81c0bdd85bec24a1209ad3fd3dc43d988a4f..cb378b343f721c16868a6673aba59856
this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F;
} }
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
index e568d014f577ab705645152446156dc04895b3bf..9e373fa5eba63ed061e666510e01a6d8cdd6997b 100644 index 53f7659aed2378b36f1923a0208c7f86048eb85b..d5a5e51e23328deac09d6990539d8207b1567912 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
@@ -586,11 +586,7 @@ public class Zombie extends Monster { @@ -575,11 +575,7 @@ public class Zombie extends Monster {
} }
if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) { if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) {

View File

@@ -5,40 +5,41 @@ Subject: [PATCH] Config for grindstones
diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java
index 23462de504932bd351b8dfacde514fe361343912..2a2bcd0fc2b7653d9087b88e9a01034b51f017b9 100644 index db9444dda248260372d96ce239a590e88a4c1142..f7948de0180836f5bcf6818fe3a1362445a5befe 100644
--- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java --- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java +++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java
@@ -130,7 +130,7 @@ public class GrindstoneMenu extends AbstractContainerMenu { @@ -130,7 +130,7 @@ public class GrindstoneMenu extends AbstractContainerMenu {
Enchantment enchantment = (Enchantment) entry.getKey(); Enchantment enchantment = (Enchantment) ((Holder) entry.getKey()).value();
Integer integer = (Integer) entry.getValue(); int k = entry.getIntValue();
- if (!enchantment.isCurse()) { - if (!enchantment.isCurse()) {
+ if (!org.purpurmc.purpur.PurpurConfig.grindstoneIgnoredEnchants.contains(enchantment)) { // Purpur + if (!org.purpurmc.purpur.PurpurConfig.grindstoneIgnoredEnchants.contains(enchantment)) { // Purpur
j += enchantment.getMinCost(integer); j += enchantment.getMinCost(k);
} }
} }
@@ -230,7 +230,7 @@ public class GrindstoneMenu extends AbstractContainerMenu { @@ -229,7 +229,7 @@ public class GrindstoneMenu extends AbstractContainerMenu {
Entry<Enchantment, Integer> entry = (Entry) iterator.next(); Entry<Holder<Enchantment>> entry = (Entry) iterator.next();
Enchantment enchantment = (Enchantment) entry.getKey(); Enchantment enchantment = (Enchantment) ((Holder) entry.getKey()).value();
- if (!enchantment.isCurse() || EnchantmentHelper.getItemEnchantmentLevel(enchantment, itemstack2) == 0) { - if (!enchantment.isCurse() || itemenchantments_a.getLevel(enchantment) == 0) {
+ if (!org.purpurmc.purpur.PurpurConfig.grindstoneIgnoredEnchants.contains(enchantment) || EnchantmentHelper.getItemEnchantmentLevel(enchantment, itemstack2) == 0) { // Purpur + if (!org.purpurmc.purpur.PurpurConfig.grindstoneIgnoredEnchants.contains(enchantment) || itemenchantments_a.getLevel(enchantment) == 0) { // Purpur
itemstack2.enchant(enchantment, (Integer) entry.getValue()); itemenchantments_a.upgrade(enchantment, entry.getIntValue());
}
} }
} @@ -240,7 +240,7 @@ public class GrindstoneMenu extends AbstractContainerMenu {
@@ -250,7 +250,7 @@ public class GrindstoneMenu extends AbstractContainerMenu { private ItemStack removeNonCursesFrom(ItemStack item) {
} ItemEnchantments itemenchantments = EnchantmentHelper.updateEnchantments(item, (itemenchantments_a) -> {
itemenchantments_a.removeIf((holder) -> {
Map<Enchantment, Integer> map = (Map) EnchantmentHelper.getEnchantments(item).entrySet().stream().filter((entry) -> { - return !((Enchantment) holder.value()).isCurse();
- return ((Enchantment) entry.getKey()).isCurse(); + return !org.purpurmc.purpur.PurpurConfig.grindstoneIgnoredEnchants.contains(holder.value());
+ return org.purpurmc.purpur.PurpurConfig.grindstoneIgnoredEnchants.contains((Enchantment) entry.getKey()); // Purpur });
}).collect(Collectors.toMap(Entry::getKey, Entry::getValue)); });
EnchantmentHelper.setEnchantments(map, itemstack1); @@ -255,6 +255,21 @@ public class GrindstoneMenu extends AbstractContainerMenu {
@@ -266,6 +266,20 @@ public class GrindstoneMenu extends AbstractContainerMenu {
itemstack1.setRepairCost(AnvilMenu.calculateIncreasedRepairCost(itemstack1.getBaseRepairCost()));
} }
item.set(DataComponents.REPAIR_COST, i);
+
+ // Purpur start + // Purpur start
+ if (org.purpurmc.purpur.PurpurConfig.grindstoneRemoveAttributes && itemstack1.getTag() != null) { + if (org.purpurmc.purpur.PurpurConfig.grindstoneRemoveAttributes && itemstack1.getTag() != null) {
+ for (String key : itemstack1.getTag().getAllKeys()) { + for (String key : itemstack1.getTag().getAllKeys()) {
@@ -53,11 +54,11 @@ index 23462de504932bd351b8dfacde514fe361343912..2a2bcd0fc2b7653d9087b88e9a01034b
+ } + }
+ // Purpur end + // Purpur end
+ +
return itemstack1; return item;
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 477639dddb7c5ae0c9cc45a6eca73d82e486409b..7161b449b20b6fb39a16df7a2da652168ccced97 100644 index 042fd443c98258240042d3ce1650f36e601d72e3..6653162444df443ca990a25fc8b9f3c336841efb 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -309,6 +309,9 @@ public class PurpurConfig { @@ -309,6 +309,9 @@ public class PurpurConfig {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] UPnP Port Forwarding
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 0e9cf9f9ad81363cdeacd3da3a776aaad39045f9..ae8025a1c4280cde6b0503e0bcaf468f694a188c 100644 index 6d84eb68e3160f772d6832513df2bc4db87b594e..0f4fde2097b9db59b6c29935462f305f34747b3b 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -310,6 +310,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -317,6 +317,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
public static long currentTickLong = 0L; // Paper - track current tick as a long public static long currentTickLong = 0L; // Paper - track current tick as a long
public boolean isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked public boolean isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked
public boolean lagging = false; // Purpur public boolean lagging = false; // Purpur
@@ -16,7 +16,7 @@ index 0e9cf9f9ad81363cdeacd3da3a776aaad39045f9..ae8025a1c4280cde6b0503e0bcaf468f
public volatile Thread shutdownThread; // Paper public volatile Thread shutdownThread; // Paper
public volatile boolean abnormalExit = false; // Paper public volatile boolean abnormalExit = false; // Paper
@@ -972,6 +973,14 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -979,6 +980,14 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
MinecraftServer.LOGGER.info("Stopping server"); MinecraftServer.LOGGER.info("Stopping server");
Commands.COMMAND_SENDING_POOL.shutdownNow(); // Paper - Perf: Async command map building; Shutdown and don't bother finishing Commands.COMMAND_SENDING_POOL.shutdownNow(); // Paper - Perf: Async command map building; Shutdown and don't bother finishing
MinecraftTimings.stopServer(); // Paper MinecraftTimings.stopServer(); // Paper
@@ -32,10 +32,10 @@ index 0e9cf9f9ad81363cdeacd3da3a776aaad39045f9..ae8025a1c4280cde6b0503e0bcaf468f
if (this.server != null) { if (this.server != null) {
this.server.disablePlugins(); this.server.disablePlugins();
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index d66fc3f1b8d960782a7a2e08dd72831025f9c8fd..0d70fe71651c8f9d75a604ed2d5c480b41df1dd6 100644 index 8a132fcdeb620d2e7f1c0c8b9e592ff233cd0568..29af03b8690e4d402d1e4e4516e4dc731b7b4323 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -279,6 +279,30 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -290,6 +290,30 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
if (true) throw new IllegalStateException("Failed to bind to port", ioexception); // Paper - Propagate failed to bind to port error if (true) throw new IllegalStateException("Failed to bind to port", ioexception); // Paper - Propagate failed to bind to port error
return false; return false;
} }
@@ -67,7 +67,7 @@ index d66fc3f1b8d960782a7a2e08dd72831025f9c8fd..0d70fe71651c8f9d75a604ed2d5c480b
// CraftBukkit start // CraftBukkit start
// this.setPlayerList(new DedicatedPlayerList(this, this.registries(), this.playerDataStorage)); // Spigot - moved up // this.setPlayerList(new DedicatedPlayerList(this, this.registries(), this.playerDataStorage)); // Spigot - moved up
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 7161b449b20b6fb39a16df7a2da652168ccced97..43be29d14cd79542358009d7e2cf2d1d56b6fb5d 100644 index 6653162444df443ca990a25fc8b9f3c336841efb..64c62e4abefb7e95e881fa1d8918e43ae48eb1dd 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -419,4 +419,9 @@ public class PurpurConfig { @@ -419,4 +419,9 @@ public class PurpurConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Campfire option for lit when placed
diff --git a/src/main/java/net/minecraft/world/level/block/CampfireBlock.java b/src/main/java/net/minecraft/world/level/block/CampfireBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/CampfireBlock.java b/src/main/java/net/minecraft/world/level/block/CampfireBlock.java
index 9c7ee02d3aa3c33b45db4dc5c079495a69d60b15..5eed401d3d722c6553240aba4a8e2337ee32b263 100644 index d6fffb0953494e8667cc456137cac0f5deebfbb6..f7a2244b998aebe354d38eec7aa22fd94ce404c9 100644
--- a/src/main/java/net/minecraft/world/level/block/CampfireBlock.java --- a/src/main/java/net/minecraft/world/level/block/CampfireBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/CampfireBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CampfireBlock.java
@@ -133,7 +133,7 @@ public class CampfireBlock extends BaseEntityBlock implements SimpleWaterloggedB @@ -133,7 +133,7 @@ public class CampfireBlock extends BaseEntityBlock implements SimpleWaterloggedB

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] options to extinguish fire blocks with snowballs
diff --git a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java diff --git a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java
index 8d1591c3b29e02794f6f66b742ec6a121920ad71..bb61e1132c28274175215a679befdcfa2496b099 100644 index f59a2903bfb8ae591a638ea5bb387caaa93ce664..1b9d0e28e518c501b4b93ae385ddd64aeade97d5 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java --- a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java
@@ -63,6 +63,36 @@ public class Snowball extends ThrowableItemProjectile { @@ -63,6 +63,36 @@ public class Snowball extends ThrowableItemProjectile {

View File

@@ -5,18 +5,18 @@ Subject: [PATCH] Add option to disable zombie villagers cure
diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
index 40465fbe6f78da6176d5fad8a3687cefd93dcf43..f902814a23ef8a7d3893fc0349d1a0b3c203a123 100644 index d909138942212ee090ff513b1817414c93457425..fe43c744cccdc07d5e449ce3ede85f4c7d898018 100644
--- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
+++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
@@ -215,7 +215,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -219,7 +219,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
ItemStack itemstack = player.getItemInHand(hand); ItemStack itemstack = player.getItemInHand(hand);
if (itemstack.is(Items.GOLDEN_APPLE)) { if (itemstack.is(Items.GOLDEN_APPLE)) {
- if (this.hasEffect(MobEffects.WEAKNESS)) { - if (this.hasEffect(MobEffects.WEAKNESS)) {
+ if (this.hasEffect(MobEffects.WEAKNESS) && level().purpurConfig.zombieVillagerCureEnabled) { // Purpur + if (this.hasEffect(MobEffects.WEAKNESS) && level().purpurConfig.zombieVillagerCureEnabled) { // Purpur
if (!player.getAbilities().instabuild) { itemstack.consume(1, player);
itemstack.shrink(1); if (!this.level().isClientSide) {
} this.startConverting(player.getUUID(), this.random.nextInt(level().purpurConfig.zombieVillagerCuringTimeMax - level().purpurConfig.zombieVillagerCuringTimeMin + 1) + level().purpurConfig.zombieVillagerCuringTimeMin); // Purpur
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 00593e16024af69699d1b5ad7c5acb84d756a25c..1c77929516d70407a281a0899c6722cc4210eb79 100644 index 00593e16024af69699d1b5ad7c5acb84d756a25c..1c77929516d70407a281a0899c6722cc4210eb79 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java

View File

@@ -7,10 +7,10 @@ Makes it so that when a BlockEntity is placed in the world and then broken,
the dropped ItemStack retains any original custom display name/lore. the dropped ItemStack retains any original custom display name/lore.
diff --git a/src/main/java/net/minecraft/world/item/BlockItem.java b/src/main/java/net/minecraft/world/item/BlockItem.java diff --git a/src/main/java/net/minecraft/world/item/BlockItem.java b/src/main/java/net/minecraft/world/item/BlockItem.java
index b1779e3cf4b01afc15aa367cfadb999366e46d19..f33fcd7bca6f315c4b4cf1f5063f4772790ad20d 100644 index f713734efaad4312be270d808e79f0e562c84466..887fca2931763ca4572ab89473a5303addc6f795 100644
--- a/src/main/java/net/minecraft/world/item/BlockItem.java --- a/src/main/java/net/minecraft/world/item/BlockItem.java
+++ b/src/main/java/net/minecraft/world/item/BlockItem.java +++ b/src/main/java/net/minecraft/world/item/BlockItem.java
@@ -152,7 +152,24 @@ public class BlockItem extends Item { @@ -158,7 +158,24 @@ public class BlockItem extends Item {
} }
protected boolean updateCustomBlockEntityTag(BlockPos pos, Level world, @Nullable Player player, ItemStack stack, BlockState state) { protected boolean updateCustomBlockEntityTag(BlockPos pos, Level world, @Nullable Player player, ItemStack stack, BlockState state) {
@@ -37,7 +37,7 @@ index b1779e3cf4b01afc15aa367cfadb999366e46d19..f33fcd7bca6f315c4b4cf1f5063f4772
@Nullable @Nullable
diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java
index 3dc71c4ee8fc9846e49e659c6b5e7b55ea084f14..34b4c19220e73efad9ff22f3798ee7fbbd5a1968 100644 index 6f7e90d406b088fee0eb254f8042bd404d8f36fa..49dad044ac21bbfe2e60be76757ada4750b607b4 100644
--- a/src/main/java/net/minecraft/world/level/block/Block.java --- a/src/main/java/net/minecraft/world/level/block/Block.java
+++ b/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java
@@ -63,6 +63,13 @@ import net.minecraft.world.phys.shapes.Shapes; @@ -63,6 +63,13 @@ import net.minecraft.world.phys.shapes.Shapes;
@@ -54,7 +54,7 @@ index 3dc71c4ee8fc9846e49e659c6b5e7b55ea084f14..34b4c19220e73efad9ff22f3798ee7fb
public class Block extends BlockBehaviour implements ItemLike { public class Block extends BlockBehaviour implements ItemLike {
public static final MapCodec<Block> CODEC = simpleCodec(Block::new); public static final MapCodec<Block> CODEC = simpleCodec(Block::new);
@@ -320,7 +327,7 @@ public class Block extends BlockBehaviour implements ItemLike { @@ -312,7 +319,7 @@ public class Block extends BlockBehaviour implements ItemLike {
public static void dropResources(BlockState state, LevelAccessor world, BlockPos pos, @Nullable BlockEntity blockEntity) { public static void dropResources(BlockState state, LevelAccessor world, BlockPos pos, @Nullable BlockEntity blockEntity) {
if (world instanceof ServerLevel) { if (world instanceof ServerLevel) {
Block.getDrops(state, (ServerLevel) world, pos, blockEntity).forEach((itemstack) -> { Block.getDrops(state, (ServerLevel) world, pos, blockEntity).forEach((itemstack) -> {
@@ -63,7 +63,7 @@ index 3dc71c4ee8fc9846e49e659c6b5e7b55ea084f14..34b4c19220e73efad9ff22f3798ee7fb
}); });
state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY, true); state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY, true);
} }
@@ -339,7 +346,7 @@ public class Block extends BlockBehaviour implements ItemLike { @@ -331,7 +338,7 @@ public class Block extends BlockBehaviour implements ItemLike {
event.setExpToDrop(block.getExpDrop(state, serverLevel, pos, net.minecraft.world.item.ItemStack.EMPTY, true)); // Paper - Properly handle xp dropping event.setExpToDrop(block.getExpDrop(state, serverLevel, pos, net.minecraft.world.item.ItemStack.EMPTY, true)); // Paper - Properly handle xp dropping
event.callEvent(); event.callEvent();
for (org.bukkit.inventory.ItemStack drop : event.getDrops()) { for (org.bukkit.inventory.ItemStack drop : event.getDrops()) {
@@ -72,7 +72,7 @@ index 3dc71c4ee8fc9846e49e659c6b5e7b55ea084f14..34b4c19220e73efad9ff22f3798ee7fb
} }
state.spawnAfterBreak(serverLevel, pos, ItemStack.EMPTY, false); // Paper - Properly handle xp dropping state.spawnAfterBreak(serverLevel, pos, ItemStack.EMPTY, false); // Paper - Properly handle xp dropping
block.popExperience(serverLevel, pos, event.getExpToDrop()); // Paper - Properly handle xp dropping block.popExperience(serverLevel, pos, event.getExpToDrop()); // Paper - Properly handle xp dropping
@@ -356,13 +363,53 @@ public class Block extends BlockBehaviour implements ItemLike { @@ -348,13 +355,53 @@ public class Block extends BlockBehaviour implements ItemLike {
// Paper end - Properly handle xp dropping // Paper end - Properly handle xp dropping
if (world instanceof ServerLevel) { if (world instanceof ServerLevel) {
Block.getDrops(state, (ServerLevel) world, pos, blockEntity, entity, tool).forEach((itemstack1) -> { Block.getDrops(state, (ServerLevel) world, pos, blockEntity, entity, tool).forEach((itemstack1) -> {
@@ -128,19 +128,19 @@ index 3dc71c4ee8fc9846e49e659c6b5e7b55ea084f14..34b4c19220e73efad9ff22f3798ee7fb
double d0 = (double) EntityType.ITEM.getHeight() / 2.0D; double d0 = (double) EntityType.ITEM.getHeight() / 2.0D;
double d1 = (double) pos.getX() + 0.5D + Mth.nextDouble(world.random, -0.25D, 0.25D); double d1 = (double) pos.getX() + 0.5D + Mth.nextDouble(world.random, -0.25D, 0.25D);
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
index 9ea74d37cd951e0dc76d20ed8234b5871035566c..8e1afae66742fc69d5aab1074ba94a3999cbf9b8 100644 index b0421823684ff6b9474b81675742d2ee3b17edf7..4ea15e17a1393864422edb6d5c57962651abf69a 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java --- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
@@ -6,6 +6,8 @@ import net.minecraft.CrashReportCategory; @@ -17,6 +17,8 @@ import net.minecraft.core.component.PatchedDataComponentMap;
import net.minecraft.core.BlockPos;
import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtOps;
+import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.ListTag;
+import net.minecraft.nbt.StringTag; +import net.minecraft.nbt.StringTag;
import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.Packet;
import net.minecraft.network.protocol.game.ClientGamePacketListener; import net.minecraft.network.protocol.game.ClientGamePacketListener;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@@ -73,10 +75,27 @@ public abstract class BlockEntity { @@ -86,6 +88,14 @@ public abstract class BlockEntity {
if (persistentDataTag instanceof CompoundTag) { if (persistentDataTag instanceof CompoundTag) {
this.persistentDataContainer.putAll((CompoundTag) persistentDataTag); this.persistentDataContainer.putAll((CompoundTag) persistentDataTag);
} }
@@ -155,24 +155,28 @@ index 9ea74d37cd951e0dc76d20ed8234b5871035566c..8e1afae66742fc69d5aab1074ba94a39
} }
// CraftBukkit end // CraftBukkit end
- protected void saveAdditional(CompoundTag nbt) {} @@ -102,6 +112,17 @@ public abstract class BlockEntity {
this.loadAdditional(nbt, registryLookup);
}
+ // Purpur start
+ protected void saveAdditional(CompoundTag nbt) { + protected void saveAdditional(CompoundTag nbt) {
+ // Purpur start
+ if (this.persistentDisplayName != null) { + if (this.persistentDisplayName != null) {
+ nbt.put("Purpur.persistentDisplayName", StringTag.valueOf(this.persistentDisplayName)); + nbt.put("Purpur.persistentDisplayName", StringTag.valueOf(this.persistentDisplayName));
+ } + }
+ if (this.persistentLore != null) { + if (this.persistentLore != null) {
+ nbt.put("Purpur.persistentLore", this.persistentLore); + nbt.put("Purpur.persistentLore", this.persistentLore);
+ } + }
+ // Purpur end
+ } + }
+ // Purpur end
+
protected void saveAdditional(CompoundTag nbt, HolderLookup.Provider registryLookup) {}
public final CompoundTag saveWithFullMetadata() { public final CompoundTag saveWithFullMetadata(HolderLookup.Provider registryLookup) {
CompoundTag nbttagcompound = this.saveWithoutMetadata(); @@ -381,4 +402,24 @@ public abstract class BlockEntity {
@@ -262,4 +281,24 @@ public abstract class BlockEntity {
return tag; <T> T getOrDefault(DataComponentType<? extends T> type, T fallback);
} }
// Paper end - Sanitize sent data
+ // Purpur start + // Purpur start
+ private String persistentDisplayName = null; + private String persistentDisplayName = null;
+ private ListTag persistentLore = null; + private ListTag persistentLore = null;

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Signs allow color codes
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 0ba6ecf578e731a9705a384944aed482f829b58d..c0c9265e8acda3cbf0b4f2c3dca3838265a312d3 100644 index 670aa56c1b7c9e5fabda45b6a048a6cf6084a7d0..85f58f5449ee63a7f592971769b497e521921fcc 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1589,6 +1589,7 @@ public class ServerPlayer extends Player { @@ -1684,6 +1684,7 @@ public class ServerPlayer extends Player {
@Override @Override
public void openTextEdit(SignBlockEntity sign, boolean front) { public void openTextEdit(SignBlockEntity sign, boolean front) {
@@ -17,10 +17,10 @@ index 0ba6ecf578e731a9705a384944aed482f829b58d..c0c9265e8acda3cbf0b4f2c3dca38382
this.connection.send(new ClientboundOpenSignEditorPacket(sign.getBlockPos(), front)); this.connection.send(new ClientboundOpenSignEditorPacket(sign.getBlockPos(), front));
} }
diff --git a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java diff --git a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java
index 927c7ea03560be0c86884cec70ee8e408e66cb07..93764bf849ad8e427bf119f6ff3dbcbcc4c2415e 100644 index a28be7a332659be655f419d969e0c64e659b6c21..2f5367fbca7b682eb0ffeab4171b66223f7e5dc6 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java --- a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java
@@ -200,16 +200,31 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C @@ -201,16 +201,31 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C
return this.setText((SignText) textChanger.apply(signtext), front); return this.setText((SignText) textChanger.apply(signtext), front);
} }
@@ -46,15 +46,15 @@ index 927c7ea03560be0c86884cec70ee8e408e66cb07..93764bf849ad8e427bf119f6ff3dbcbc
+ org.bukkit.entity.Player player = (org.bukkit.craftbukkit.entity.CraftPlayer) entityhuman.getBukkitEntity(); // Purpur + org.bukkit.entity.Player player = (org.bukkit.craftbukkit.entity.CraftPlayer) entityhuman.getBukkitEntity(); // Purpur
if (entityhuman.isTextFilteringEnabled()) { if (entityhuman.isTextFilteringEnabled()) {
- signtext = signtext.setMessage(i, Component.literal(net.minecraft.SharedConstants.filterText(filteredtext.filteredOrEmpty())).setStyle(chatmodifier)); // Paper - filter sign text to chat only - signtext = signtext.setMessage(i, Component.literal(net.minecraft.util.StringUtil.filterText(filteredtext.filteredOrEmpty())).setStyle(chatmodifier)); // Paper - filter sign text to chat only
+ signtext = signtext.setMessage(i, translateColors(player, net.minecraft.SharedConstants.filterText(filteredtext.filteredOrEmpty()), chatmodifier)); // Paper - filter sign text to chat only // Purpur + signtext = signtext.setMessage(i, translateColors(player, net.minecraft.util.StringUtil.filterText(filteredtext.filteredOrEmpty()), chatmodifier)); // Paper - filter sign text to chat only // Purpur
} else { } else {
- signtext = signtext.setMessage(i, Component.literal(net.minecraft.SharedConstants.filterText(filteredtext.raw())).setStyle(chatmodifier), Component.literal(net.minecraft.SharedConstants.filterText(filteredtext.filteredOrEmpty())).setStyle(chatmodifier)); // Paper - filter sign text to chat only - signtext = signtext.setMessage(i, Component.literal(net.minecraft.util.StringUtil.filterText(filteredtext.raw())).setStyle(chatmodifier), Component.literal(net.minecraft.util.StringUtil.filterText(filteredtext.filteredOrEmpty())).setStyle(chatmodifier)); // Paper - filter sign text to chat only
+ signtext = signtext.setMessage(i, translateColors(player, net.minecraft.SharedConstants.filterText(filteredtext.raw()), chatmodifier), translateColors(player, net.minecraft.SharedConstants.filterText(filteredtext.filteredOrEmpty()), chatmodifier)); // Paper - filter sign text to chat only // Purpur + signtext = signtext.setMessage(i, translateColors(player, net.minecraft.util.StringUtil.filterText(filteredtext.raw()), chatmodifier), translateColors(player, net.minecraft.util.StringUtil.filterText(filteredtext.filteredOrEmpty()), chatmodifier)); // Paper - filter sign text to chat only // Purpur
} }
} }
@@ -349,6 +364,28 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C @@ -350,6 +365,28 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C
return ClientboundBlockEntityDataPacket.create(this); return ClientboundBlockEntityDataPacket.create(this);
} }
@@ -81,8 +81,8 @@ index 927c7ea03560be0c86884cec70ee8e408e66cb07..93764bf849ad8e427bf119f6ff3dbcbc
+ // Purpur end + // Purpur end
+ +
@Override @Override
public CompoundTag getUpdateTag() { public CompoundTag getUpdateTag(HolderLookup.Provider registryLookup) {
return this.saveWithoutMetadata(); return this.saveCustomOnly(registryLookup);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index b4d5ae4025d315cfe0e19fa1b077d1c5956523ba..d807da2719c5677c200e5f017e4cf5a1c7fa0ce9 100644 index b4d5ae4025d315cfe0e19fa1b077d1c5956523ba..d807da2719c5677c200e5f017e4cf5a1c7fa0ce9 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Kelp, cave, weeping, and twisting vines configurable max
diff --git a/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java b/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java b/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java
index bdd9f38dcb16b74c5916b75713dbe5082b32497d..65bae6630a11aa1d8d1b08d1f8e2519545ad850c 100644 index 635fc086d832c641f840cf36d18cdc0fcc3beef3..e3ff7b8059da499cfde1106f6d51156931b292dc 100644
--- a/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java --- a/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CaveVinesBlock.java
@@ -95,4 +95,11 @@ public class CaveVinesBlock extends GrowingPlantHeadBlock implements Bonemealabl @@ -94,4 +94,11 @@ public class CaveVinesBlock extends GrowingPlantHeadBlock implements Bonemealabl
public void performBonemeal(ServerLevel world, RandomSource random, BlockPos pos, BlockState state) { public void performBonemeal(ServerLevel world, RandomSource random, BlockPos pos, BlockState state) {
world.setBlock(pos, state.setValue(BERRIES, Boolean.valueOf(true)), 2); world.setBlock(pos, state.setValue(BERRIES, Boolean.valueOf(true)), 2);
} }
@@ -22,7 +22,7 @@ index bdd9f38dcb16b74c5916b75713dbe5082b32497d..65bae6630a11aa1d8d1b08d1f8e25195
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java b/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java b/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java
index 30300ef3ec839dfa944c992ab50db4d3859bb02e..0d64b19dbbca9d563d90cabf0e2d32f76bfc0c62 100644 index cf05da1c86e3018db11dc079bf50317b6639e5cc..8e9903899ac91e9431f00675c1f5ac4a18e61593 100644
--- a/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java --- a/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java +++ b/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java
@@ -34,12 +34,12 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements @@ -34,12 +34,12 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements
@@ -34,7 +34,7 @@ index 30300ef3ec839dfa944c992ab50db4d3859bb02e..0d64b19dbbca9d563d90cabf0e2d32f7
} }
@Override @Override
public boolean isRandomlyTicking(BlockState state) { protected boolean isRandomlyTicking(BlockState state) {
- return (Integer) state.getValue(GrowingPlantHeadBlock.AGE) < 25; - return (Integer) state.getValue(GrowingPlantHeadBlock.AGE) < 25;
+ return (Integer) state.getValue(GrowingPlantHeadBlock.AGE) < getMaxGrowthAge(); // Purpur + return (Integer) state.getValue(GrowingPlantHeadBlock.AGE) < getMaxGrowthAge(); // Purpur
} }
@@ -87,11 +87,11 @@ index 30300ef3ec839dfa944c992ab50db4d3859bb02e..0d64b19dbbca9d563d90cabf0e2d32f7
+ public abstract int getMaxGrowthAge(); // Purpur + public abstract int getMaxGrowthAge(); // Purpur
} }
diff --git a/src/main/java/net/minecraft/world/level/block/KelpBlock.java b/src/main/java/net/minecraft/world/level/block/KelpBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/KelpBlock.java b/src/main/java/net/minecraft/world/level/block/KelpBlock.java
index 1b83d44291029ce978187467832595b6dfd76dd5..69f2c6cae089aa7e1306c9dbe83d4ff582ec777c 100644 index 784b19bc78c8ad9476b6dac37b6778a409a7c675..d49dd8b20d3785cc9482ed2a34fbd7aed4c9e537 100644
--- a/src/main/java/net/minecraft/world/level/block/KelpBlock.java --- a/src/main/java/net/minecraft/world/level/block/KelpBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/KelpBlock.java +++ b/src/main/java/net/minecraft/world/level/block/KelpBlock.java
@@ -72,4 +72,11 @@ public class KelpBlock extends GrowingPlantHeadBlock implements LiquidBlockConta @@ -72,4 +72,11 @@ public class KelpBlock extends GrowingPlantHeadBlock implements LiquidBlockConta
public FluidState getFluidState(BlockState state) { protected FluidState getFluidState(BlockState state) {
return Fluids.WATER.getSource(false); return Fluids.WATER.getSource(false);
} }
+ +
@@ -135,7 +135,7 @@ index 3dec5a082606ee35a8c8d7f746480262d6a189c5..b2f6ccae9576c176263e51a232e17a08
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 43be29d14cd79542358009d7e2cf2d1d56b6fb5d..fe5a35568fdcd24c5020f003f85f3b4d3b4ac631 100644 index 64c62e4abefb7e95e881fa1d8918e43ae48eb1dd..a1fa16fca204098fd2211a4c206299356fc97724 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -312,6 +312,10 @@ public class PurpurConfig { @@ -312,6 +312,10 @@ public class PurpurConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Mobs always drop experience
diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java
index d5bcc6e678aec21da855eea805a58a965ef5edee..09181e9a0d4ceac30d20f4ff488a85b0ab5b1d04 100644 index 70e3d583f7a039a5c67428ce9e8beb1922574c7b..3e2ea26c23e88c395856b65001f2895db6a52bd4 100644
--- a/src/main/java/net/minecraft/world/entity/GlowSquid.java --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java
+++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java
@@ -51,6 +51,11 @@ public class GlowSquid extends Squid { @@ -51,6 +51,11 @@ public class GlowSquid extends Squid {
@@ -21,10 +21,10 @@ index d5bcc6e678aec21da855eea805a58a965ef5edee..09181e9a0d4ceac30d20f4ff488a85b0
protected ParticleOptions getInkParticle() { protected ParticleOptions getInkParticle() {
return ParticleTypes.GLOW_SQUID_INK; return ParticleTypes.GLOW_SQUID_INK;
diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
index 08190c45b0807079b77c41203502e355ecaf2e14..735445456bbfab8a64df488fed30f0be28d50159 100644 index f7ac3a5b0a7c93240f948394649ad6dba5a1e4b5..274db35be501d1dd0c5407d350a37b04bf4fbb7e 100644
--- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java
+++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
@@ -285,6 +285,11 @@ public class Bat extends AmbientCreature { @@ -282,6 +282,11 @@ public class Bat extends AmbientCreature {
return this.level().purpurConfig.batTakeDamageFromWater; return this.level().purpurConfig.batTakeDamageFromWater;
} }
@@ -37,10 +37,10 @@ index 08190c45b0807079b77c41203502e355ecaf2e14..735445456bbfab8a64df488fed30f0be
public void readAdditionalSaveData(CompoundTag nbt) { public void readAdditionalSaveData(CompoundTag nbt) {
super.readAdditionalSaveData(nbt); super.readAdditionalSaveData(nbt);
diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java
index 8d80055253008bb1b2ed77e91a1c51c995208dac..9fa937d2d6c3b23e390447e4d4fa24543e2679e5 100644 index 91c013f7ab58f570d0ebe2773932fcdb49344b3c..926c30db9b28a30fe5d6c8d20f3972dec0d7b4d0 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Bee.java --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java
@@ -493,6 +493,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -482,6 +482,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
return this.level().purpurConfig.beeTakeDamageFromWater; return this.level().purpurConfig.beeTakeDamageFromWater;
} }
@@ -53,26 +53,26 @@ index 8d80055253008bb1b2ed77e91a1c51c995208dac..9fa937d2d6c3b23e390447e4d4fa2454
public int getRemainingPersistentAngerTime() { public int getRemainingPersistentAngerTime() {
return (Integer) this.entityData.get(Bee.DATA_REMAINING_ANGER_TIME); return (Integer) this.entityData.get(Bee.DATA_REMAINING_ANGER_TIME);
diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java
index d9b19f74b377721ed78cd0ea24d25e412cef1398..6af5e1dfcfd739e0bc857f648c189151d5a795c8 100644 index 17aaeb734a5c1b16bd7771c909958f3acc956b7a..3e1345f1c534320e07820d573f5c8dba49746425 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Cat.java --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java
@@ -138,6 +138,11 @@ public class Cat extends TamableAnimal implements VariantHolder<CatVariant> { @@ -144,6 +144,11 @@ public class Cat extends TamableAnimal implements VariantHolder<Holder<CatVarian
public boolean isSensitiveToWater() {
return this.level().purpurConfig.catTakeDamageFromWater; return this.level().purpurConfig.catTakeDamageFromWater;
} }
+
+ @Override + @Override
+ protected boolean isAlwaysExperienceDropper() { + protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.catAlwaysDropExp; + return this.level().purpurConfig.catAlwaysDropExp;
+ } + }
+ // Purpur end
public ResourceLocation getResourceLocation() {
return this.getVariant().texture(); public ResourceLocation getTextureId() {
}
diff --git a/src/main/java/net/minecraft/world/entity/animal/Chicken.java b/src/main/java/net/minecraft/world/entity/animal/Chicken.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Chicken.java b/src/main/java/net/minecraft/world/entity/animal/Chicken.java
index 2dc2486e2b5e046ab8f23976b7bf0202f61756ec..0388ff9ce0ffe1029d977a65a528a0d9f228a3ee 100644 index 2c0fbc86a49213eedd92a62197c79633ff1c6cb2..d8fe8f86ccc9b26b2208b090bb6572b483d14bae 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java
@@ -90,6 +90,11 @@ public class Chicken extends Animal { @@ -89,6 +89,11 @@ public class Chicken extends Animal {
return this.level().purpurConfig.chickenTakeDamageFromWater; return this.level().purpurConfig.chickenTakeDamageFromWater;
} }
@@ -101,10 +101,10 @@ index 2343325fa9a771de7b9445cda24a2bcd7a7c1761..f0b6118a9995bb41836685bbf94d2e7f
public ItemStack getBucketItemStack() { public ItemStack getBucketItemStack() {
return new ItemStack(Items.COD_BUCKET); return new ItemStack(Items.COD_BUCKET);
diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java
index da3dfa10e08750e7ad84ff32a0c0136e055ee3a7..be4ccc42d6f598cbaaf39aafbd49b594ac7b06fe 100644 index 106d2d692e2393517793c2bac8bebf401f717bea..50d9ec304dacf904e1af8ede6572bb7a53923133 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Cow.java --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java
@@ -87,6 +87,11 @@ public class Cow extends Animal { @@ -86,6 +86,11 @@ public class Cow extends Animal {
return super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt); return super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt);
} }
@@ -117,10 +117,10 @@ index da3dfa10e08750e7ad84ff32a0c0136e055ee3a7..be4ccc42d6f598cbaaf39aafbd49b594
protected void registerGoals() { protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(0, new FloatGoal(this));
diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
index 9c35059d390c94f6d641c0fe8d37777fcf1b29f3..61bb29de8f1eaa833db95fcc38ab6e18c1a2243c 100644 index e539eefb6e6d3172611d1f9185a1138001481885..c1a9a87ef0fefc499c0e1edbe1031f47cc432b31 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
@@ -170,6 +170,11 @@ public class Dolphin extends WaterAnimal { @@ -168,6 +168,11 @@ public class Dolphin extends WaterAnimal {
return this.level().purpurConfig.dolphinTakeDamageFromWater; return this.level().purpurConfig.dolphinTakeDamageFromWater;
} }
@@ -131,12 +131,12 @@ index 9c35059d390c94f6d641c0fe8d37777fcf1b29f3..61bb29de8f1eaa833db95fcc38ab6e18
+ +
@Nullable @Nullable
@Override @Override
public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData) {
diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java
index 1e04205a1707e46a1f540f5c8f6ec1b81bf1b5d7..445c1993a18da93e89792b7953e5eb71777c7874 100644 index ee691437da9571900039f90c1700cd33e31c03bc..124839f22ed0499ca395a648e858469d81d31f93 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Fox.java --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java
@@ -202,6 +202,11 @@ public class Fox extends Animal implements VariantHolder<Fox.Type> { @@ -199,6 +199,11 @@ public class Fox extends Animal implements VariantHolder<Fox.Type> {
return this.level().purpurConfig.foxTakeDamageFromWater; return this.level().purpurConfig.foxTakeDamageFromWater;
} }
@@ -146,13 +146,13 @@ index 1e04205a1707e46a1f540f5c8f6ec1b81bf1b5d7..445c1993a18da93e89792b7953e5eb71
+ } + }
+ +
@Override @Override
protected void defineSynchedData() { protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(); super.defineSynchedData(builder);
diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java
index 02506902ca7e6f4e4c0fea47499cb8766e33960f..442eb602f5c82550a87e218e2013171b718abd62 100644 index 8b08476457a6ead1a3c3e2ab35d08a8e0625c43e..12bc57d36d76f49596df0004fda31a6a678be60c 100644
--- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java
+++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java
@@ -103,6 +103,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob { @@ -98,6 +98,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob {
this.summoner = summoner; this.summoner = summoner;
} }
@@ -165,7 +165,7 @@ index 02506902ca7e6f4e4c0fea47499cb8766e33960f..442eb602f5c82550a87e218e2013171b
protected void registerGoals() { protected void registerGoals() {
if (level().purpurConfig.ironGolemCanSwim) this.goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur if (level().purpurConfig.ironGolemCanSwim) this.goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur
diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java
index 5cf206bea6d2f3155c1da73d8337bbd8e2ee7bb3..48ee8c43a91efaadacfe8f37399ea1fb81f5f1ee 100644 index 6cb8d85986f4d891dfbb66b83163ed23bac694f6..06fac8dae42451f912c2db14d792461cee3dba83 100644
--- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java
+++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java
@@ -96,6 +96,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder<Mushroo @@ -96,6 +96,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder<Mushroo
@@ -181,10 +181,10 @@ index 5cf206bea6d2f3155c1da73d8337bbd8e2ee7bb3..48ee8c43a91efaadacfe8f37399ea1fb
public float getWalkTargetValue(BlockPos pos, LevelReader world) { public float getWalkTargetValue(BlockPos pos, LevelReader world) {
return world.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : world.getPathfindingCostFromLightLevels(pos); return world.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : world.getPathfindingCostFromLightLevels(pos);
diff --git a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java
index c91ade7f4b1f04f12e38cf2c5fda1a92b129bec8..af275fc579d66bb098c08e88e4186846a1174c02 100644 index a1b7661ae0676007d59d202493efc5a0c795045f..5668aca08732e317c7bccacf1cfaae7d8666bce6 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java --- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java
@@ -102,6 +102,11 @@ public class Ocelot extends Animal { @@ -98,6 +98,11 @@ public class Ocelot extends Animal {
return this.level().purpurConfig.ocelotTakeDamageFromWater; return this.level().purpurConfig.ocelotTakeDamageFromWater;
} }
@@ -197,10 +197,10 @@ index c91ade7f4b1f04f12e38cf2c5fda1a92b129bec8..af275fc579d66bb098c08e88e4186846
return (Boolean) this.entityData.get(Ocelot.DATA_TRUSTING); return (Boolean) this.entityData.get(Ocelot.DATA_TRUSTING);
} }
diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java
index e52a685bd2142fe702fb5f212894e6ba6008913d..adfa18c941b5070692ed855d1d609993ca49a01d 100644 index 4895bd2566605ab3986f35d43345f29ce78e81e0..7bd81d073ce4a8d5981f256415d3e99e13da79ba 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Panda.java --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java
@@ -157,6 +157,11 @@ public class Panda extends Animal { @@ -162,6 +162,11 @@ public class Panda extends Animal {
return this.level().purpurConfig.pandaTakeDamageFromWater; return this.level().purpurConfig.pandaTakeDamageFromWater;
} }
@@ -213,10 +213,10 @@ index e52a685bd2142fe702fb5f212894e6ba6008913d..adfa18c941b5070692ed855d1d609993
public boolean canTakeItem(ItemStack stack) { public boolean canTakeItem(ItemStack stack) {
EquipmentSlot enumitemslot = Mob.getEquipmentSlotForItem(stack); EquipmentSlot enumitemslot = Mob.getEquipmentSlotForItem(stack);
diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java
index c69a096b6bd7700191f88a3c03c8d018ca9d4201..670cf5a74554b0b420706db2fbce3a8e5dca147b 100644 index ceee7594d983512c21c35077434a86d1c6fb9b0a..dc2117f2df803c6fe3b5cdd17cfffeaffcd80b38 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java
@@ -208,6 +208,11 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot @@ -201,6 +201,11 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot
return this.level().purpurConfig.parrotTakeDamageFromWater; return this.level().purpurConfig.parrotTakeDamageFromWater;
} }
@@ -227,12 +227,12 @@ index c69a096b6bd7700191f88a3c03c8d018ca9d4201..670cf5a74554b0b420706db2fbce3a8e
+ +
@Nullable @Nullable
@Override @Override
public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData) {
diff --git a/src/main/java/net/minecraft/world/entity/animal/Pig.java b/src/main/java/net/minecraft/world/entity/animal/Pig.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Pig.java b/src/main/java/net/minecraft/world/entity/animal/Pig.java
index f32cc2884696db956e10d350f97376025e32e673..10d6361077a74c5685eca72d12f99e33a458ec43 100644 index badee6aed2c07dbfc05fa31d74d53c4630295761..748ab1a1f578a1ba4c46834607235d9d5856f185 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Pig.java --- a/src/main/java/net/minecraft/world/entity/animal/Pig.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Pig.java +++ b/src/main/java/net/minecraft/world/entity/animal/Pig.java
@@ -100,6 +100,11 @@ public class Pig extends Animal implements ItemSteerable, Saddleable { @@ -96,6 +96,11 @@ public class Pig extends Animal implements ItemSteerable, Saddleable {
return this.level().purpurConfig.pigTakeDamageFromWater; return this.level().purpurConfig.pigTakeDamageFromWater;
} }
@@ -245,7 +245,7 @@ index f32cc2884696db956e10d350f97376025e32e673..10d6361077a74c5685eca72d12f99e33
protected void registerGoals() { protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(0, new FloatGoal(this));
diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java
index a3043a46b291b22c0e93ed680e4f455f47ae74be..2fecdd574b407eeb1d0cd4f1b34ff7931e620540 100644 index 3abab3b4d5409cf2f0374c038fa6c0241b89b8e5..9b6e07b0de7328b18c5e526b89cfd48fdbc79753 100644
--- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java
+++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java
@@ -129,6 +129,11 @@ public class PolarBear extends Animal implements NeutralMob { @@ -129,6 +129,11 @@ public class PolarBear extends Animal implements NeutralMob {
@@ -261,10 +261,10 @@ index a3043a46b291b22c0e93ed680e4f455f47ae74be..2fecdd574b407eeb1d0cd4f1b34ff793
@Override @Override
public AgeableMob getBreedOffspring(ServerLevel world, AgeableMob entity) { public AgeableMob getBreedOffspring(ServerLevel world, AgeableMob entity) {
diff --git a/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java b/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java b/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java
index ef3d0bbbeb6aa736f35c26066a1473c70ef028a2..54f5206b686c3cf4d2e5b470c07047a518f5dd00 100644 index 91fd38aeafb4354e845b579988c7c9a6b3f6f551..c758f759ccae81b7651bfcba254f54335f2c7cc8 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java --- a/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java +++ b/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java
@@ -67,6 +67,11 @@ public class Pufferfish extends AbstractFish { @@ -73,6 +73,11 @@ public class Pufferfish extends AbstractFish {
return this.level().purpurConfig.pufferfishTakeDamageFromWater; return this.level().purpurConfig.pufferfishTakeDamageFromWater;
} }
@@ -274,13 +274,13 @@ index ef3d0bbbeb6aa736f35c26066a1473c70ef028a2..54f5206b686c3cf4d2e5b470c07047a5
+ } + }
+ +
@Override @Override
protected void defineSynchedData() { protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(); super.defineSynchedData(builder);
diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
index b58d9fadccbf4cd74abfc2449a9399277c876f59..eae2488f2a46e543b496b7a2919aabbb55dcb825 100644 index c2510200507edd205bc3283bec98a0d6951f497f..02702390c0b336762ce8c0d38d804e6f24ebbfd4 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
@@ -153,6 +153,11 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> { @@ -152,6 +152,11 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
public boolean isSensitiveToWater() { public boolean isSensitiveToWater() {
return this.level().purpurConfig.rabbitTakeDamageFromWater; return this.level().purpurConfig.rabbitTakeDamageFromWater;
} }
@@ -309,10 +309,10 @@ index e101c3bf425902908c43ffa18867fb83a5e1f16e..382e47f26ee94506cb76463a677351b9
public int getMaxSchoolSize() { public int getMaxSchoolSize() {
return 5; return 5;
diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java
index d1a8b15de4f4aa20d6049135bcbef94f0d1fb388..ae2662a5cdc4e531e09876ff8664eaf66a63a960 100644 index afec39ba3b51b121fd7ae937e7bac060ef430dfd..9e617b3f1ec4eac5f83bdf19a3563cdc81b008d8 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java
@@ -151,6 +151,11 @@ public class Sheep extends Animal implements Shearable { @@ -149,6 +149,11 @@ public class Sheep extends Animal implements Shearable {
return this.level().purpurConfig.sheepTakeDamageFromWater; return this.level().purpurConfig.sheepTakeDamageFromWater;
} }
@@ -325,10 +325,10 @@ index d1a8b15de4f4aa20d6049135bcbef94f0d1fb388..ae2662a5cdc4e531e09876ff8664eaf6
protected void registerGoals() { protected void registerGoals() {
this.eatBlockGoal = new EatBlockGoal(this); this.eatBlockGoal = new EatBlockGoal(this);
diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
index 81a88d510d7f52ca6a1c9cca991c22c3bdaf6b0d..df8e19a3adfa7dcc065160e8305d0f12c7c37887 100644 index 8f2348a7fe830a85985ce2b19cb2a9159bca711f..69cdccca01fe7d10e6d958e16d91efe08f699505 100644
--- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
+++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
@@ -86,6 +86,11 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -84,6 +84,11 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
this.summoner = summoner; this.summoner = summoner;
} }
@@ -341,10 +341,10 @@ index 81a88d510d7f52ca6a1c9cca991c22c3bdaf6b0d..df8e19a3adfa7dcc065160e8305d0f12
protected void registerGoals() { protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java
index daa4931c934c792b3c4ff32b730506762c4cf481..fa15e43d19482125e1793e049d1a1380aced906c 100644 index 0d05879eadeff8731028d78d89d5d32142818ea2..b86676ebcd6c301e5dd857d8e84e1db2c1da416b 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Squid.java --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java
@@ -95,6 +95,11 @@ public class Squid extends WaterAnimal { @@ -93,6 +93,11 @@ public class Squid extends WaterAnimal {
return this.level().purpurConfig.squidTakeDamageFromWater; return this.level().purpurConfig.squidTakeDamageFromWater;
} }
@@ -357,10 +357,10 @@ index daa4931c934c792b3c4ff32b730506762c4cf481..fa15e43d19482125e1793e049d1a1380
protected void registerGoals() { protected void registerGoals() {
this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this));
diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java
index 1f83844da76ee6e158f1ba3656ba90d6eff1895c..98205d89aa0cca82863257abfad46ab834385a20 100644 index 4ac998e9d96aed3b0ea0ec3f9dcd5fdd74c45d24..2d04addd17d2c358fff598012b323cd7d8bf007e 100644
--- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java
+++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java
@@ -87,6 +87,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder @@ -89,6 +89,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder
return this.level().purpurConfig.tropicalFishTakeDamageFromWater; return this.level().purpurConfig.tropicalFishTakeDamageFromWater;
} }
@@ -373,10 +373,10 @@ index 1f83844da76ee6e158f1ba3656ba90d6eff1895c..98205d89aa0cca82863257abfad46ab8
return "entity.minecraft.tropical_fish.predefined." + variant; return "entity.minecraft.tropical_fish.predefined." + variant;
} }
diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java
index 315006bdb344bb52a077c49a96c7712a33fbb0eb..2153dac7c7c83ef3192d2b8370b8924ee67383a8 100644 index b146ac72584d998cee4279133b3b19051fbf14c9..01dc59695f295657b1cd7bb015558bfc2ce73b47 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java
@@ -118,6 +118,11 @@ public class Turtle extends Animal { @@ -119,6 +119,11 @@ public class Turtle extends Animal {
return this.level().purpurConfig.turtleTakeDamageFromWater; return this.level().purpurConfig.turtleTakeDamageFromWater;
} }
@@ -389,10 +389,10 @@ index 315006bdb344bb52a077c49a96c7712a33fbb0eb..2153dac7c7c83ef3192d2b8370b8924e
this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos...
} }
diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
index 69caba70009268f7af7299f8a1dd84dc43caddf8..a90055fe8819a32180754b6060a0f88e81d1a3b6 100644 index 5e9678ad46de7faf3136eec49e3b68b14cdfe4a4..ffe2e51cb59f72c878fb63c0c884c572b297f00d 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
@@ -217,6 +217,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -231,6 +231,11 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
return this.level().purpurConfig.wolfTakeDamageFromWater; return this.level().purpurConfig.wolfTakeDamageFromWater;
} }
@@ -405,10 +405,10 @@ index 69caba70009268f7af7299f8a1dd84dc43caddf8..a90055fe8819a32180754b6060a0f88e
protected void registerGoals() { protected void registerGoals() {
this.goalSelector.addGoal(1, new FloatGoal(this)); this.goalSelector.addGoal(1, new FloatGoal(this));
diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java
index dfc9b95b98d3811fd926c4747ec59a4a836ceb14..e73d7b47327da59dbf49c2160acd0b3ebb2a4232 100644 index ab3727c336cc7e268a2f7b2c04dac3e5d259b454..ea1515f189bf3bc4cfef4524fb40f0d826f68cc0 100644
--- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java
+++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java
@@ -130,6 +130,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder<Axolo @@ -128,6 +128,11 @@ public class Axolotl extends Animal implements LerpingModel, VariantHolder<Axolo
return this.level().purpurConfig.axolotlTakeDamageFromWater; return this.level().purpurConfig.axolotlTakeDamageFromWater;
} }
@@ -421,10 +421,10 @@ index dfc9b95b98d3811fd926c4747ec59a4a836ceb14..e73d7b47327da59dbf49c2160acd0b3e
public Map<String, Vector3f> getModelRotationValues() { public Map<String, Vector3f> getModelRotationValues() {
return this.modelRotationValues; return this.modelRotationValues;
diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
index 5b3126168e9406f6cbd0607b6b7cc2de4ab68b65..f7730ec3a6c8818baf2a7a738e5a49a56d17c0e8 100644 index 412b44ea2d33ef68721b91da9f550738c6c780ba..79c27b5717fec000ea94138ebc76dbabf5b2eeaf 100644
--- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
+++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
@@ -119,6 +119,11 @@ public class Goat extends Animal { @@ -118,6 +118,11 @@ public class Goat extends Animal {
return this.level().purpurConfig.goatTakeDamageFromWater; return this.level().purpurConfig.goatTakeDamageFromWater;
} }
@@ -437,7 +437,7 @@ index 5b3126168e9406f6cbd0607b6b7cc2de4ab68b65..f7730ec3a6c8818baf2a7a738e5a49a5
protected Brain.Provider<Goat> brainProvider() { protected Brain.Provider<Goat> brainProvider() {
return Brain.provider(Goat.MEMORY_TYPES, Goat.SENSOR_TYPES); return Brain.provider(Goat.MEMORY_TYPES, Goat.SENSOR_TYPES);
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java
index 92fccfde550f4a01f860e3bcfcf953d3e6ae02e3..42efd14b59a2b7da3409895bdff49e83b6cb2fa5 100644 index 891ea1cca8495c08a1817096c8c4277f5311d6c7..94021abe521aea4a70f5eaa78fb05f9f71b7c38c 100644
--- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java --- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java
@@ -47,6 +47,11 @@ public class Donkey extends AbstractChestedHorse { @@ -47,6 +47,11 @@ public class Donkey extends AbstractChestedHorse {
@@ -453,10 +453,10 @@ index 92fccfde550f4a01f860e3bcfcf953d3e6ae02e3..42efd14b59a2b7da3409895bdff49e83
protected SoundEvent getAmbientSound() { protected SoundEvent getAmbientSound() {
return SoundEvents.DONKEY_AMBIENT; return SoundEvents.DONKEY_AMBIENT;
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java
index 8e4c3c01613a8944095a099427eb12ced32987a1..eab6efcae632a393924d7245a71c40b57c6e316d 100644 index e623284b353831d1a540af40e139ac16091dcbf6..fdf9ec418b0fc567e286ac79dbdbeddac568ad67 100644
--- a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java --- a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java
@@ -72,6 +72,11 @@ public class Horse extends AbstractHorse implements VariantHolder<Variant> { @@ -76,6 +76,11 @@ public class Horse extends AbstractHorse implements VariantHolder<Variant> {
return this.level().purpurConfig.horseTakeDamageFromWater; return this.level().purpurConfig.horseTakeDamageFromWater;
} }
@@ -469,7 +469,7 @@ index 8e4c3c01613a8944095a099427eb12ced32987a1..eab6efcae632a393924d7245a71c40b5
protected void randomizeAttributes(RandomSource random) { protected void randomizeAttributes(RandomSource random) {
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt));
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
index 30493e675d6308d65a4d4fa3fea601b6d7e4fa76..22abcf70f51a6752ab6d3f421366adb196e50dfc 100644 index 12ff4091674f7efb3e324df0df2d798dcbc46027..7d2a5c806fd0f1228c45b8a8b56d7ba13b899a2d 100644
--- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
@@ -150,6 +150,11 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V @@ -150,6 +150,11 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
@@ -485,7 +485,7 @@ index 30493e675d6308d65a4d4fa3fea601b6d7e4fa76..22abcf70f51a6752ab6d3f421366adb1
return false; return false;
} }
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Mule.java b/src/main/java/net/minecraft/world/entity/animal/horse/Mule.java diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Mule.java b/src/main/java/net/minecraft/world/entity/animal/horse/Mule.java
index 53546e904948d03882e5f5b0a8d4256c72698afb..42dcdbec69b052679e590a1ff932c6192c68b20d 100644 index f2b909029672c17362b2acf0ea54aa19385cff8f..b260e8dececaa58376c7d8ada30d0b23c0909d81 100644
--- a/src/main/java/net/minecraft/world/entity/animal/horse/Mule.java --- a/src/main/java/net/minecraft/world/entity/animal/horse/Mule.java
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/Mule.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Mule.java
@@ -46,6 +46,11 @@ public class Mule extends AbstractChestedHorse { @@ -46,6 +46,11 @@ public class Mule extends AbstractChestedHorse {
@@ -501,7 +501,7 @@ index 53546e904948d03882e5f5b0a8d4256c72698afb..42dcdbec69b052679e590a1ff932c619
protected SoundEvent getAmbientSound() { protected SoundEvent getAmbientSound() {
return SoundEvents.MULE_AMBIENT; return SoundEvents.MULE_AMBIENT;
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java
index 15d9e6f795044983aa872160874386e422e77377..41c7e62dfb8cf40958bb98a244d8225690be7341 100644 index 7702af3c80ecc09318a25bb6c1acc5099fa10af4..46cb38c56073fe6c259a9ce3b5d8379e0d9a05c8 100644
--- a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java --- a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java
@@ -74,6 +74,11 @@ public class SkeletonHorse extends AbstractHorse { @@ -74,6 +74,11 @@ public class SkeletonHorse extends AbstractHorse {
@@ -517,7 +517,7 @@ index 15d9e6f795044983aa872160874386e422e77377..41c7e62dfb8cf40958bb98a244d82256
return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, 0.20000000298023224D); return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, 0.20000000298023224D);
} }
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java b/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java b/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java
index a3c80184abcc2d884b692b90d267ab33a5406349..c80324d79b74fc620568347289f4e39629162409 100644 index a7261719c4608bdfbc43072ea5948b950f1bea0d..2cdbf8dfb4b78027031e41445d4535f6d28e876a 100644
--- a/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java --- a/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java
@@ -77,6 +77,11 @@ public class TraderLlama extends Llama { @@ -77,6 +77,11 @@ public class TraderLlama extends Llama {
@@ -533,10 +533,10 @@ index a3c80184abcc2d884b692b90d267ab33a5406349..c80324d79b74fc620568347289f4e396
public boolean isTraderLlama() { public boolean isTraderLlama() {
return true; return true;
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java
index 78c6077f3909e29a7f51f22d4f6bdecd7144f598..9493fa681327aa42751955029e5acac846d9a2a8 100644 index 343632a030eb423367387750fabbdae53c4bb20b..201471473b7ecc7489c4303a0d37b99fb4a8740f 100644
--- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java --- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java
@@ -63,6 +63,11 @@ public class ZombieHorse extends AbstractHorse { @@ -70,6 +70,11 @@ public class ZombieHorse extends AbstractHorse {
return this.level().purpurConfig.zombieHorseTakeDamageFromWater; return this.level().purpurConfig.zombieHorseTakeDamageFromWater;
} }
@@ -549,10 +549,10 @@ index 78c6077f3909e29a7f51f22d4f6bdecd7144f598..9493fa681327aa42751955029e5acac8
return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F);
} }
diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
index 461247f3424b854032ccd45855c877aa85dd2e88..1d896c6c49705acd87416dc11a1d8ce205f7844e 100644 index a030fe21a88a9486cc8367710a96af67c761635c..4a98027a12c2535d1df3a9f6390eb85146398403 100644
--- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
+++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
@@ -133,6 +133,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -136,6 +136,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
this.summoner = summoner; this.summoner = summoner;
} }
@@ -565,7 +565,7 @@ index 461247f3424b854032ccd45855c877aa85dd2e88..1d896c6c49705acd87416dc11a1d8ce2
protected PathNavigation createNavigation(Level world) { protected PathNavigation createNavigation(Level world) {
FlyingPathNavigation navigationflying = new FlyingPathNavigation(this, world); FlyingPathNavigation navigationflying = new FlyingPathNavigation(this, world);
diff --git a/src/main/java/net/minecraft/world/entity/monster/Blaze.java b/src/main/java/net/minecraft/world/entity/monster/Blaze.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Blaze.java b/src/main/java/net/minecraft/world/entity/monster/Blaze.java
index 8c6f5dcd2135873da7d58066c63a2b8378f81d31..c31d2ab0ed3693cd8334b5bbde1f565fff7c9162 100644 index 1d7e37677d78695f94e8c9e0cae4d64498ffd7ee..27db17e19dd95e99f7bd67747eba3c3072b48ed5 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Blaze.java --- a/src/main/java/net/minecraft/world/entity/monster/Blaze.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Blaze.java +++ b/src/main/java/net/minecraft/world/entity/monster/Blaze.java
@@ -79,6 +79,11 @@ public class Blaze extends Monster { @@ -79,6 +79,11 @@ public class Blaze extends Monster {
@@ -581,10 +581,10 @@ index 8c6f5dcd2135873da7d58066c63a2b8378f81d31..c31d2ab0ed3693cd8334b5bbde1f565f
protected void registerGoals() { protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
diff --git a/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java b/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java diff --git a/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java b/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java
index 5dc0b3d04bfc01cd2cb004c18279840861dc4a57..c9bd400473166999479f5eef1edad529d3aafe01 100644 index 0604b7c68373ed071ac22cabd7a961161ad228f8..43b5a0e7993ae9daef1c1ea67722347f9851d3a9 100644
--- a/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java --- a/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java
+++ b/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java +++ b/src/main/java/net/minecraft/world/entity/monster/CaveSpider.java
@@ -56,6 +56,11 @@ public class CaveSpider extends Spider { @@ -53,6 +53,11 @@ public class CaveSpider extends Spider {
return this.level().purpurConfig.caveSpiderTakeDamageFromWater; return this.level().purpurConfig.caveSpiderTakeDamageFromWater;
} }
@@ -597,10 +597,10 @@ index 5dc0b3d04bfc01cd2cb004c18279840861dc4a57..c9bd400473166999479f5eef1edad529
public boolean doHurtTarget(Entity target) { public boolean doHurtTarget(Entity target) {
if (super.doHurtTarget(target)) { if (super.doHurtTarget(target)) {
diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
index a3cc2e3ae32984e11f4e91421d663f0fe7c7b236..54315fb84e3289f0ad8305c2c2cec980a5b2c627 100644 index 22407dbefc65dee4ac0396bdcf8904aec600fcf2..aafb88d4cbecda0f218e93ee17de6637fd3400b1 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
@@ -278,6 +278,11 @@ public class Creeper extends Monster implements PowerableMob { @@ -279,6 +279,11 @@ public class Creeper extends Monster implements PowerableMob {
return super.dropAllDeathLoot(damagesource); return super.dropAllDeathLoot(damagesource);
} }
@@ -613,10 +613,10 @@ index a3cc2e3ae32984e11f4e91421d663f0fe7c7b236..54315fb84e3289f0ad8305c2c2cec980
protected SoundEvent getHurtSound(DamageSource source) { protected SoundEvent getHurtSound(DamageSource source) {
return SoundEvents.CREEPER_HURT; return SoundEvents.CREEPER_HURT;
diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java
index 13427d23f1e614c0d83e9ccd68944ea4e1993c73..7600e747d91ae888eb801cfafcb09bffb76c8e62 100644 index 2547ac49721e2840da2845076d5e62a1465a4ea3..15afee3c4f6307557321424560d2340e23cd472b 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java
@@ -116,6 +116,11 @@ public class Drowned extends Zombie implements RangedAttackMob { @@ -119,6 +119,11 @@ public class Drowned extends Zombie implements RangedAttackMob {
return level().purpurConfig.drownedJockeyTryExistingChickens; return level().purpurConfig.drownedJockeyTryExistingChickens;
} }
@@ -629,10 +629,10 @@ index 13427d23f1e614c0d83e9ccd68944ea4e1993c73..7600e747d91ae888eb801cfafcb09bff
protected void addBehaviourGoals() { protected void addBehaviourGoals() {
this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0D)); this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0D));
diff --git a/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java b/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java diff --git a/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java b/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java
index 60787e45b605ce32b3b74ea23a6d9d9353f831a4..cb189457305916f509d624beb303feff35d0c358 100644 index 3651a720e4ae20686a91b4420fe4879f765935e4..7e8603ef5df722f19e85b9c5cdd4ebfdd6481e42 100644
--- a/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java --- a/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java
+++ b/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java +++ b/src/main/java/net/minecraft/world/entity/monster/ElderGuardian.java
@@ -58,6 +58,11 @@ public class ElderGuardian extends Guardian { @@ -55,6 +55,11 @@ public class ElderGuardian extends Guardian {
return this.level().purpurConfig.elderGuardianTakeDamageFromWater; return this.level().purpurConfig.elderGuardianTakeDamageFromWater;
} }
@@ -645,10 +645,10 @@ index 60787e45b605ce32b3b74ea23a6d9d9353f831a4..cb189457305916f509d624beb303feff
return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D); return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D);
} }
diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
index 19d7142d62339d01ce2d3936a95c829666cd4e27..13bc6389652f8868d7539676ee6d85f37ba78f67 100644 index 21a570d09ad3e19e6c709ff1152db7d204648122..5b49a6b1884c33bedafca5cff0214cdfccd87302 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
@@ -120,6 +120,11 @@ public class EnderMan extends Monster implements NeutralMob { @@ -115,6 +115,11 @@ public class EnderMan extends Monster implements NeutralMob {
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.endermanMaxHealth); this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.endermanMaxHealth);
} }
@@ -661,10 +661,10 @@ index 19d7142d62339d01ce2d3936a95c829666cd4e27..13bc6389652f8868d7539676ee6d85f3
protected void registerGoals() { protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(0, new FloatGoal(this));
diff --git a/src/main/java/net/minecraft/world/entity/monster/Endermite.java b/src/main/java/net/minecraft/world/entity/monster/Endermite.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Endermite.java b/src/main/java/net/minecraft/world/entity/monster/Endermite.java
index 67f3928f4a03a8d546c55e46a1f094a354ac412d..965362c281315c15fb70a83a6949d7825bebf15b 100644 index c5fcefc6810c2127d6a0a48f95c50c2e15a4dd52..14d6796a124a85b8cbf5f3b719d89d99e0cf8db5 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java --- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java +++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java
@@ -79,6 +79,11 @@ public class Endermite extends Monster { @@ -74,6 +74,11 @@ public class Endermite extends Monster {
this.isPlayerSpawned = playerSpawned; this.isPlayerSpawned = playerSpawned;
} }
@@ -677,10 +677,10 @@ index 67f3928f4a03a8d546c55e46a1f094a354ac412d..965362c281315c15fb70a83a6949d782
protected void registerGoals() { protected void registerGoals() {
this.goalSelector.addGoal(1, new FloatGoal(this)); this.goalSelector.addGoal(1, new FloatGoal(this));
diff --git a/src/main/java/net/minecraft/world/entity/monster/Evoker.java b/src/main/java/net/minecraft/world/entity/monster/Evoker.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Evoker.java b/src/main/java/net/minecraft/world/entity/monster/Evoker.java
index db3a49a979a9d84f29228ae975133c46216bfb75..daee6c4c0c2d43b65cdfd691bbbdc72465702dfe 100644 index a3e88c252b39a78a0759623f188dbdc8aa2fcc0b..f92f93c780f4c176d6c02c4b98ffe3a4ef3993f6 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java --- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java
@@ -78,6 +78,11 @@ public class Evoker extends SpellcasterIllager { @@ -79,6 +79,11 @@ public class Evoker extends SpellcasterIllager {
return this.level().purpurConfig.evokerTakeDamageFromWater; return this.level().purpurConfig.evokerTakeDamageFromWater;
} }
@@ -693,10 +693,10 @@ index db3a49a979a9d84f29228ae975133c46216bfb75..daee6c4c0c2d43b65cdfd691bbbdc724
protected void registerGoals() { protected void registerGoals() {
super.registerGoals(); super.registerGoals();
diff --git a/src/main/java/net/minecraft/world/entity/monster/Ghast.java b/src/main/java/net/minecraft/world/entity/monster/Ghast.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Ghast.java b/src/main/java/net/minecraft/world/entity/monster/Ghast.java
index fa74eb7ee34f3f9b0026778bc0d37e977fc41d70..640f0c378a18cf0a820ad544bb3b172b698c6bfc 100644 index 96f7c8fb4e49e7640aaa1adb466d67fc887a2dc5..a25c82be45e3db5143f6bf617fedc2fa85bd89ca 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Ghast.java --- a/src/main/java/net/minecraft/world/entity/monster/Ghast.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Ghast.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ghast.java
@@ -143,6 +143,11 @@ public class Ghast extends FlyingMob implements Enemy { @@ -141,6 +141,11 @@ public class Ghast extends FlyingMob implements Enemy {
return this.level().purpurConfig.ghastTakeDamageFromWater; return this.level().purpurConfig.ghastTakeDamageFromWater;
} }
@@ -706,29 +706,29 @@ index fa74eb7ee34f3f9b0026778bc0d37e977fc41d70..640f0c378a18cf0a820ad544bb3b172b
+ } + }
+ +
@Override @Override
protected void defineSynchedData() { protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(); super.defineSynchedData(builder);
diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java
index c54c364e5c680982a8c4c0285a7dd5289d2546fa..20d6fd08cc7b5964f74b7dd99ee117ac30273426 100644 index 47e403a5986f77dbb3833acb9a3ea59e5c3740c6..5c2881d0be519c52cbba74d7b7ca3ea9b4536463 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Giant.java --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java
@@ -80,6 +80,11 @@ public class Giant extends Monster { @@ -77,6 +77,11 @@ public class Giant extends Monster {
public boolean isSensitiveToWater() {
return this.level().purpurConfig.giantTakeDamageFromWater; return this.level().purpurConfig.giantTakeDamageFromWater;
} }
+
+ @Override + @Override
+ protected boolean isAlwaysExperienceDropper() { + protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.giantAlwaysDropExp; + return this.level().purpurConfig.giantAlwaysDropExp;
+ } + }
// Purpur end +
@Override @Override
protected void initAttributes() {
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.giantMaxHealth);
diff --git a/src/main/java/net/minecraft/world/entity/monster/Guardian.java b/src/main/java/net/minecraft/world/entity/monster/Guardian.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Guardian.java b/src/main/java/net/minecraft/world/entity/monster/Guardian.java
index c696ffd7f4454ca79933cef04bf2b89e2a65b8cf..01c558673f0bb5034bca9df0e473375e7b7e724e 100644 index 6b0ff4ded5e8b62572d5889f0be5e3148243ed7d..f9496126f75b4c1b89ec33617e577d83042e0290 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Guardian.java --- a/src/main/java/net/minecraft/world/entity/monster/Guardian.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Guardian.java +++ b/src/main/java/net/minecraft/world/entity/monster/Guardian.java
@@ -104,6 +104,11 @@ public class Guardian extends Monster { @@ -100,6 +100,11 @@ public class Guardian extends Monster {
return this.level().purpurConfig.guardianTakeDamageFromWater; return this.level().purpurConfig.guardianTakeDamageFromWater;
} }
@@ -741,10 +741,10 @@ index c696ffd7f4454ca79933cef04bf2b89e2a65b8cf..01c558673f0bb5034bca9df0e473375e
protected void registerGoals() { protected void registerGoals() {
MoveTowardsRestrictionGoal pathfindergoalmovetowardsrestriction = new MoveTowardsRestrictionGoal(this, 1.0D); MoveTowardsRestrictionGoal pathfindergoalmovetowardsrestriction = new MoveTowardsRestrictionGoal(this, 1.0D);
diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java
index 5ac87650e357f3ac48e37713b9b0b18ad4d6feb6..06a5106a94a44c1d21537410d801cdd945503d69 100644 index 440c90feeae3a55c98e2011ecb27c28d58f11e6e..95d3edc6c88d6ed0556c21c2623cdd5cfda35911 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Husk.java --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java
@@ -72,6 +72,11 @@ public class Husk extends Zombie { @@ -70,6 +70,11 @@ public class Husk extends Zombie {
return this.level().purpurConfig.huskTakeDamageFromWater; return this.level().purpurConfig.huskTakeDamageFromWater;
} }
@@ -757,10 +757,10 @@ index 5ac87650e357f3ac48e37713b9b0b18ad4d6feb6..06a5106a94a44c1d21537410d801cdd9
return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (MobSpawnType.isSpawner(spawnReason) || world.canSeeSky(pos)); return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (MobSpawnType.isSpawner(spawnReason) || world.canSeeSky(pos));
} }
diff --git a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java
index 43d4cea02ae94a8842cd4c1370d1b80e45d2b13c..a8b3431c67442c5440b063426a1adc423f5c0658 100644 index e2393be574475377fd401d55ab0be9b483e705e6..ae036a16e3677dfba451f4eb4505036d45e50cf3 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java --- a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java +++ b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java
@@ -88,6 +88,11 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { @@ -85,6 +85,11 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob {
return this.level().purpurConfig.illusionerTakeDamageFromWater; return this.level().purpurConfig.illusionerTakeDamageFromWater;
} }
@@ -773,10 +773,10 @@ index 43d4cea02ae94a8842cd4c1370d1b80e45d2b13c..a8b3431c67442c5440b063426a1adc42
protected void registerGoals() { protected void registerGoals() {
super.registerGoals(); super.registerGoals();
diff --git a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java diff --git a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java
index 607ca8389746062ffba29b25ddab4ac02685b506..1bfd5ef9ce8a07375ff215d092368c3f5104ab13 100644 index adacdbf9fac7d1504be73e2e5a7526e8258a126d..e7c79e8c72226285eb5a4763dcf8ddd27078539c 100644
--- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java
+++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java
@@ -72,6 +72,11 @@ public class MagmaCube extends Slime { @@ -71,6 +71,11 @@ public class MagmaCube extends Slime {
return this.level().purpurConfig.magmaCubeTakeDamageFromWater; return this.level().purpurConfig.magmaCubeTakeDamageFromWater;
} }
@@ -789,10 +789,10 @@ index 607ca8389746062ffba29b25ddab4ac02685b506..1bfd5ef9ce8a07375ff215d092368c3f
return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F);
} }
diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
index bcb1912ea218fbb4b849ab84a7025202100b82c3..8591fb95aa3079d7722f445ce1b1743c1f02b9bc 100644 index bebc6f9f7e49e9dd34fa295d9ce3e8397feb280c..0d81540d048cd4a08962bd24d3bdd49db708f83f 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
@@ -144,6 +144,11 @@ public class Phantom extends FlyingMob implements Enemy { @@ -142,6 +142,11 @@ public class Phantom extends FlyingMob implements Enemy {
return this.level().purpurConfig.phantomTakeDamageFromWater; return this.level().purpurConfig.phantomTakeDamageFromWater;
} }
@@ -805,10 +805,10 @@ index bcb1912ea218fbb4b849ab84a7025202100b82c3..8591fb95aa3079d7722f445ce1b1743c
public boolean isFlapping() { public boolean isFlapping() {
return (this.getUniqueFlapTickOffset() + this.tickCount) % Phantom.TICKS_PER_FLAP == 0; return (this.getUniqueFlapTickOffset() + this.tickCount) % Phantom.TICKS_PER_FLAP == 0;
diff --git a/src/main/java/net/minecraft/world/entity/monster/Pillager.java b/src/main/java/net/minecraft/world/entity/monster/Pillager.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Pillager.java b/src/main/java/net/minecraft/world/entity/monster/Pillager.java
index cff87c0790e3afe43e7817969a05e8d79a550bbb..d5becd13774f9a2ead77d58e777ffc9aea10cb60 100644 index a405764724d7f4b586d8510450a6258417495942..ae3eb87af8d3853be82c2002507141e43ab644de 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Pillager.java --- a/src/main/java/net/minecraft/world/entity/monster/Pillager.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Pillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Pillager.java
@@ -93,6 +93,11 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve @@ -85,6 +85,11 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve
return this.level().purpurConfig.pillagerTakeDamageFromWater; return this.level().purpurConfig.pillagerTakeDamageFromWater;
} }
@@ -821,10 +821,10 @@ index cff87c0790e3afe43e7817969a05e8d79a550bbb..d5becd13774f9a2ead77d58e777ffc9a
protected void registerGoals() { protected void registerGoals() {
super.registerGoals(); super.registerGoals();
diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
index 03ed7c56bb7f2d32722ebedb8eb07765ab39079a..2d834e57253f666f04f8e0b47c8b8a45458c0a75 100644 index ea9714b561d2cccad3ce012a118d200100ccd1e8..9551bd7c9bed37cf17910e7f71b82ed20fb2d759 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
@@ -104,6 +104,11 @@ public class Ravager extends Raider { @@ -101,6 +101,11 @@ public class Ravager extends Raider {
return this.level().purpurConfig.ravagerTakeDamageFromWater; return this.level().purpurConfig.ravagerTakeDamageFromWater;
} }
@@ -837,7 +837,7 @@ index 03ed7c56bb7f2d32722ebedb8eb07765ab39079a..2d834e57253f666f04f8e0b47c8b8a45
protected void registerGoals() { protected void registerGoals() {
super.registerGoals(); super.registerGoals();
diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java
index 25b9f131f9d0fdb0a53ddcc685d8ae250cb3abd6..ab21a44905a4154013cd65acdecbf55b741da086 100644 index 687fadf1ef64c5ae7e00c5da15b82245e07d3a39..1afa6dc4f2a6437cd4cc3e49694e79641fcc13ad 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java
@@ -141,6 +141,11 @@ public class Shulker extends AbstractGolem implements VariantHolder<Optional<Dye @@ -141,6 +141,11 @@ public class Shulker extends AbstractGolem implements VariantHolder<Optional<Dye
@@ -853,10 +853,10 @@ index 25b9f131f9d0fdb0a53ddcc685d8ae250cb3abd6..ab21a44905a4154013cd65acdecbf55b
protected void registerGoals() { protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
diff --git a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
index 524ac7bf0ee006bb79517a113c16e290b94e325a..931412a5ab315d4080a9f5209d3e85d78642f4c2 100644 index 18172d30a7a03d0bdef02878261639c0655f9475..c713e0b9b90784ad5f043f3a06ef50b5a1769ed1 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java --- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java +++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
@@ -75,6 +75,11 @@ public class Silverfish extends Monster { @@ -70,6 +70,11 @@ public class Silverfish extends Monster {
return this.level().purpurConfig.silverfishTakeDamageFromWater; return this.level().purpurConfig.silverfishTakeDamageFromWater;
} }
@@ -869,12 +869,12 @@ index 524ac7bf0ee006bb79517a113c16e290b94e325a..931412a5ab315d4080a9f5209d3e85d7
protected void registerGoals() { protected void registerGoals() {
this.friendsGoal = new Silverfish.SilverfishWakeUpFriendsGoal(this); this.friendsGoal = new Silverfish.SilverfishWakeUpFriendsGoal(this);
diff --git a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java
index eec2f8deb2675ed116939105dba60a68b05b7aac..2064d6177b3e43810d5962102fe914296e2627ff 100644 index a44896c87bb9f6f48cd9edeb31240692785b3a92..1aae461eed332fe31c1449c47d0928f655c740da 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java --- a/src/main/java/net/minecraft/world/entity/monster/Skeleton.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/Skeleton.java
@@ -53,6 +53,11 @@ public class Skeleton extends AbstractSkeleton { @@ -55,6 +55,11 @@ public class Skeleton extends AbstractSkeleton {
return this.level().purpurConfig.skeletonTakeDamageFromWater;
} }
// Purpur end
+ @Override + @Override
+ protected boolean isAlwaysExperienceDropper() { + protected boolean isAlwaysExperienceDropper() {
@@ -882,13 +882,13 @@ index eec2f8deb2675ed116939105dba60a68b05b7aac..2064d6177b3e43810d5962102fe91429
+ } + }
+ +
@Override @Override
protected void defineSynchedData() { protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(); super.defineSynchedData(builder);
diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java
index 380ea1b4ab8bf05ac5c039c77adaf73a57c4f1ee..0f77f00e9a02d1f982f285617604e7291b70a2a4 100644 index 0f79a99408e2d4c48c8a541f183b9201259f0b1f..ccf7fea215d3096e76db294daa5874fec00147ca 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Slime.java --- a/src/main/java/net/minecraft/world/entity/monster/Slime.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java +++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java
@@ -81,6 +81,11 @@ public class Slime extends Mob implements Enemy { @@ -80,6 +80,11 @@ public class Slime extends Mob implements Enemy {
return this.level().purpurConfig.slimeTakeDamageFromWater; return this.level().purpurConfig.slimeTakeDamageFromWater;
} }
@@ -901,10 +901,10 @@ index 380ea1b4ab8bf05ac5c039c77adaf73a57c4f1ee..0f77f00e9a02d1f982f285617604e729
public boolean dismountsUnderwater() { public boolean dismountsUnderwater() {
return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.slimeRidableInWater; return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.slimeRidableInWater;
diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java
index d3f1d7b2a5721933b0a8d697f1f6456d96ff7b76..b44ffeb4cc0ef63fdd25683f60c5a20fcdeb9135 100644 index f2ec092b1b26ccc5a2a7868bb8add64b8280dd70..159740069aba59bffff444d933af32aaf752ba48 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Spider.java --- a/src/main/java/net/minecraft/world/entity/monster/Spider.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java
@@ -80,6 +80,11 @@ public class Spider extends Monster { @@ -78,6 +78,11 @@ public class Spider extends Monster {
return this.level().purpurConfig.spiderTakeDamageFromWater; return this.level().purpurConfig.spiderTakeDamageFromWater;
} }
@@ -933,10 +933,10 @@ index 509c7d79340673e213910ea74a5237332792a3b4..18c0cf991c2e8418d7fdd4c8dbd7487a
BlockPos blockPos = pos; BlockPos blockPos = pos;
diff --git a/src/main/java/net/minecraft/world/entity/monster/Strider.java b/src/main/java/net/minecraft/world/entity/monster/Strider.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Strider.java b/src/main/java/net/minecraft/world/entity/monster/Strider.java
index f0d7174eae482cef9311fb646f340af59fa1c743..2f49b528601a1feb7246fe7a9b83ce828c2d78fc 100644 index 585614f7825700da28c7c832bdfc6a9eb0b78b5f..5ea5bf9c0e11b0e1f9fe50093899c6e35ee6cf4f 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Strider.java --- a/src/main/java/net/minecraft/world/entity/monster/Strider.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java
@@ -127,6 +127,11 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { @@ -124,6 +124,11 @@ public class Strider extends Animal implements ItemSteerable, Saddleable {
return this.level().purpurConfig.striderBreedingTicks; return this.level().purpurConfig.striderBreedingTicks;
} }
@@ -949,26 +949,26 @@ index f0d7174eae482cef9311fb646f340af59fa1c743..2f49b528601a1feb7246fe7a9b83ce82
BlockPos.MutableBlockPos blockposition_mutableblockposition = pos.mutable(); BlockPos.MutableBlockPos blockposition_mutableblockposition = pos.mutable();
diff --git a/src/main/java/net/minecraft/world/entity/monster/Vex.java b/src/main/java/net/minecraft/world/entity/monster/Vex.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Vex.java b/src/main/java/net/minecraft/world/entity/monster/Vex.java
index fae7e1e780d0429341adf21afd57ab230b06a0a7..834abf1160034543fe3e89fa1c8d4bb55ffc5dc1 100644 index d85e4baa892ebd987993bd39c895e5f1d310e30e..691f319719280f873140df7d93c821417e32e8f7 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Vex.java --- a/src/main/java/net/minecraft/world/entity/monster/Vex.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Vex.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vex.java
@@ -117,6 +117,11 @@ public class Vex extends Monster implements TraceableEntity { @@ -112,6 +112,11 @@ public class Vex extends Monster implements TraceableEntity {
public boolean isSensitiveToWater() {
return this.level().purpurConfig.vexTakeDamageFromWater; return this.level().purpurConfig.vexTakeDamageFromWater;
} }
+
+ @Override + @Override
+ protected boolean isAlwaysExperienceDropper() { + protected boolean isAlwaysExperienceDropper() {
+ return this.level().purpurConfig.vexAlwaysDropExp; + return this.level().purpurConfig.vexAlwaysDropExp;
+ } + }
+ // Purpur end
@Override @Override
protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) {
return dimensions.height - 0.28125F;
diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java
index 1042f0804ba1b89680d625354a2de184b91da437..960b5e2c290f82501384f79d4653f47bedf926fb 100644 index ded53c16dfd850c9c520878bc75414ebc188ea8a..e7703aa5467e7551bff06fab4c11d76237bda2e0 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java
@@ -83,6 +83,11 @@ public class Vindicator extends AbstractIllager { @@ -77,6 +77,11 @@ public class Vindicator extends AbstractIllager {
return this.level().purpurConfig.vindicatorTakeDamageFromWater; return this.level().purpurConfig.vindicatorTakeDamageFromWater;
} }
@@ -981,10 +981,10 @@ index 1042f0804ba1b89680d625354a2de184b91da437..960b5e2c290f82501384f79d4653f47b
protected void registerGoals() { protected void registerGoals() {
super.registerGoals(); super.registerGoals();
diff --git a/src/main/java/net/minecraft/world/entity/monster/Witch.java b/src/main/java/net/minecraft/world/entity/monster/Witch.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Witch.java b/src/main/java/net/minecraft/world/entity/monster/Witch.java
index d6b34988ee884c4636ebd7f40e3e6a3084525316..4af36f8d0647f881a842e248d02d747115e1cc70 100644 index 51d35e7f510c76d1fc18c67dbb56707207b39e4e..b4aab57b9aaab2ed1322ca41d4bf3c60f155902c 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Witch.java --- a/src/main/java/net/minecraft/world/entity/monster/Witch.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Witch.java +++ b/src/main/java/net/minecraft/world/entity/monster/Witch.java
@@ -86,6 +86,11 @@ public class Witch extends Raider implements RangedAttackMob { @@ -82,6 +82,11 @@ public class Witch extends Raider implements RangedAttackMob {
return this.level().purpurConfig.witchTakeDamageFromWater; return this.level().purpurConfig.witchTakeDamageFromWater;
} }
@@ -997,10 +997,10 @@ index d6b34988ee884c4636ebd7f40e3e6a3084525316..4af36f8d0647f881a842e248d02d7471
protected void registerGoals() { protected void registerGoals() {
super.registerGoals(); super.registerGoals();
diff --git a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java diff --git a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java
index 986183cab6c7d48a4716440dcc764bdd88373720..e97cb4e166c2e9ac6d93ed5b15350758326e7e74 100644 index 9865cc694e6ef02543a4b04cde37be3dc285475b..8c62d39c54acf274200667ae30c517cd4416b22f 100644
--- a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java --- a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java
+++ b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java
@@ -62,6 +62,11 @@ public class WitherSkeleton extends AbstractSkeleton { @@ -59,6 +59,11 @@ public class WitherSkeleton extends AbstractSkeleton {
return this.level().purpurConfig.witherSkeletonTakeDamageFromWater; return this.level().purpurConfig.witherSkeletonTakeDamageFromWater;
} }
@@ -1013,10 +1013,10 @@ index 986183cab6c7d48a4716440dcc764bdd88373720..e97cb4e166c2e9ac6d93ed5b15350758
protected void registerGoals() { protected void registerGoals() {
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true));
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java
index 763b28965418f2146a64c1ecde41ac536502936a..c1125279b80bad8d7b6b273e709c412a0a578318 100644 index 76d47ba17dd140572a0be40dfda18c24851198bb..451762b3cd023b8c5828f68e2778aada9c50ab85 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java
@@ -109,6 +109,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { @@ -107,6 +107,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase {
return this.level().purpurConfig.zoglinTakeDamageFromWater; return this.level().purpurConfig.zoglinTakeDamageFromWater;
} }
@@ -1029,10 +1029,10 @@ index 763b28965418f2146a64c1ecde41ac536502936a..c1125279b80bad8d7b6b273e709c412a
protected Brain.Provider<Zoglin> brainProvider() { protected Brain.Provider<Zoglin> brainProvider() {
return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); return Brain.provider(MEMORY_TYPES, SENSOR_TYPES);
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
index 9e373fa5eba63ed061e666510e01a6d8cdd6997b..c531d830f4d6b2d2213e160d7e1a5b50b80dbea5 100644 index d5a5e51e23328deac09d6990539d8207b1567912..d48d22157a89f98c1bbabc70b0bb31187038176d 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
@@ -147,6 +147,11 @@ public class Zombie extends Monster { @@ -144,6 +144,11 @@ public class Zombie extends Monster {
return this.level().purpurConfig.zombieTakeDamageFromWater; return this.level().purpurConfig.zombieTakeDamageFromWater;
} }
@@ -1045,10 +1045,10 @@ index 9e373fa5eba63ed061e666510e01a6d8cdd6997b..c531d830f4d6b2d2213e160d7e1a5b50
protected void registerGoals() { protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
index f902814a23ef8a7d3893fc0349d1a0b3c203a123..712f77d4ddad04c7cd89d51c6d0c79c2f3ab9347 100644 index fe43c744cccdc07d5e449ce3ede85f4c7d898018..091095d1690bdd4d0870910b19e5e4ee3a3f9e7c 100644
--- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
+++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
@@ -129,6 +129,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -127,6 +127,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
return level().purpurConfig.zombieVillagerJockeyTryExistingChickens; return level().purpurConfig.zombieVillagerJockeyTryExistingChickens;
} }
@@ -1058,13 +1058,13 @@ index f902814a23ef8a7d3893fc0349d1a0b3c203a123..712f77d4ddad04c7cd89d51c6d0c79c2
+ } + }
+ +
@Override @Override
protected void defineSynchedData() { protected void defineSynchedData(SynchedEntityData.Builder builder) {
super.defineSynchedData(); super.defineSynchedData(builder);
diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
index e6b653c75a4c3306e06bfcadb4c4b53bccd5aad2..feba8a264bae656244f60296d0511a8046297f73 100644 index bd2953448e568b1a20bcc6a889cef83b88418548..5bae3215ee0bf222c3bd77b3131f3d01ac6c9c41 100644
--- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
+++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
@@ -106,6 +106,11 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @@ -104,6 +104,11 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
return level().purpurConfig.zombifiedPiglinJockeyTryExistingChickens; return level().purpurConfig.zombifiedPiglinJockeyTryExistingChickens;
} }
@@ -1077,10 +1077,10 @@ index e6b653c75a4c3306e06bfcadb4c4b53bccd5aad2..feba8a264bae656244f60296d0511a80
public void setPersistentAngerTarget(@Nullable UUID angryAt) { public void setPersistentAngerTarget(@Nullable UUID angryAt) {
this.persistentAngerTarget = angryAt; this.persistentAngerTarget = angryAt;
diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java
index 5a42325d4acd32d1e8bd2f8dff1b43f3ef160535..4ba5cb5bf7d82ddfd888f5da9f0b111f9102bed8 100644 index 9ca294d5177ec7d541433d644d2fb90d937b011c..a69a4d860cf537322cdf96bfd42e55d3fc684dd1 100644
--- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java
+++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java
@@ -124,6 +124,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -122,6 +122,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
return this.level().purpurConfig.hoglinTakeDamageFromWater; return this.level().purpurConfig.hoglinTakeDamageFromWater;
} }
@@ -1093,10 +1093,10 @@ index 5a42325d4acd32d1e8bd2f8dff1b43f3ef160535..4ba5cb5bf7d82ddfd888f5da9f0b111f
public boolean canBeLeashed(Player player) { public boolean canBeLeashed(Player player) {
return !this.isLeashed(); return !this.isLeashed();
diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java
index 20ecfcbe948d02bb61b8f673f5330d2f9e60c387..141fa7d4e1b81e90f4d63a3459c9a72bc595d30b 100644 index e5b24bd8e31ca5748185181bb6741760c86a92a1..811b622945ecf67cff1992c3cdd4fcd84f33fb68 100644
--- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java
+++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java
@@ -123,6 +123,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -121,6 +121,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
return this.level().purpurConfig.piglinTakeDamageFromWater; return this.level().purpurConfig.piglinTakeDamageFromWater;
} }
@@ -1109,10 +1109,10 @@ index 20ecfcbe948d02bb61b8f673f5330d2f9e60c387..141fa7d4e1b81e90f4d63a3459c9a72b
public void addAdditionalSaveData(CompoundTag nbt) { public void addAdditionalSaveData(CompoundTag nbt) {
super.addAdditionalSaveData(nbt); super.addAdditionalSaveData(nbt);
diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java
index 532b14a6330a72e06b47ababee012762b8f76884..5ae1b1de412aeacbbc5e04299e94351d34631b4c 100644 index 6c7e0f177382cb6329002dcde270f6ce51f08f9f..71d2501e88a99819ef305fa8715418aad65ec81d 100644
--- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java
+++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java
@@ -90,6 +90,11 @@ public class PiglinBrute extends AbstractPiglin { @@ -89,6 +89,11 @@ public class PiglinBrute extends AbstractPiglin {
return this.level().purpurConfig.piglinBruteTakeDamageFromWater; return this.level().purpurConfig.piglinBruteTakeDamageFromWater;
} }
@@ -1125,10 +1125,10 @@ index 532b14a6330a72e06b47ababee012762b8f76884..5ae1b1de412aeacbbc5e04299e94351d
return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0).add(Attributes.MOVEMENT_SPEED, 0.35F).add(Attributes.ATTACK_DAMAGE, 7.0); return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0).add(Attributes.MOVEMENT_SPEED, 0.35F).add(Attributes.ATTACK_DAMAGE, 7.0);
} }
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
index d2b6d094c4b93055a4e6622372c6a0a83bd992a3..19a3e88ce5ccdd74b049246eb51eaa0783d03d5d 100644 index 1bace0d549ea4a4b45ac4cd1409524989ecac4ca..17a247455dd853ae98e2f82f64a99bccc4d27438 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -196,6 +196,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -194,6 +194,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
return this.level().purpurConfig.villagerTakeDamageFromWater; return this.level().purpurConfig.villagerTakeDamageFromWater;
} }
@@ -1141,7 +1141,7 @@ index d2b6d094c4b93055a4e6622372c6a0a83bd992a3..19a3e88ce5ccdd74b049246eb51eaa07
public Brain<Villager> getBrain() { public Brain<Villager> getBrain() {
return (Brain<Villager>) super.getBrain(); // CraftBukkit - decompile error return (Brain<Villager>) super.getBrain(); // CraftBukkit - decompile error
diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
index 657fdbabf18da7ab321e8e95a31d53362c605380..21a7cc86245d2440b8fc757d3664a29de293f7b0 100644 index 0d11200ab580cc306602c29c61f7619565d8261d..62f5e5cfe5745deced2811d14d0c7ebb2c2c6948 100644
--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
+++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
@@ -103,6 +103,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill @@ -103,6 +103,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill

View File

@@ -5,50 +5,52 @@ Subject: [PATCH] Potion NamespacedKey
diff --git a/src/main/java/net/minecraft/world/effect/MobEffectInstance.java b/src/main/java/net/minecraft/world/effect/MobEffectInstance.java diff --git a/src/main/java/net/minecraft/world/effect/MobEffectInstance.java b/src/main/java/net/minecraft/world/effect/MobEffectInstance.java
index 5d02e72a39af7b1b01bd894bdac3247ad00c243f..eaa5395d8f30d69745a892fe4e03cc45918b57c2 100644 index 32cf6ea96aaa2e6bd0cc28fa88492ceea3d34052..9787dd4fc6ca2ed8aba3db7674ad2dc26a529a7a 100644
--- a/src/main/java/net/minecraft/world/effect/MobEffectInstance.java --- a/src/main/java/net/minecraft/world/effect/MobEffectInstance.java
+++ b/src/main/java/net/minecraft/world/effect/MobEffectInstance.java +++ b/src/main/java/net/minecraft/world/effect/MobEffectInstance.java
@@ -36,6 +36,7 @@ public class MobEffectInstance implements Comparable<MobEffectInstance> { @@ -53,6 +53,7 @@ public class MobEffectInstance implements Comparable<MobEffectInstance> {
private boolean showIcon; private boolean showIcon;
@Nullable @Nullable
public MobEffectInstance hiddenEffect; public MobEffectInstance hiddenEffect;
+ private org.bukkit.NamespacedKey key; // Purpur - add key + private org.bukkit.NamespacedKey key; // Purpur - add key
private final Optional<MobEffectInstance.FactorData> factorData; private final MobEffectInstance.BlendState blendState = new MobEffectInstance.BlendState();
public MobEffectInstance(MobEffect type) { public MobEffectInstance(Holder<MobEffect> effect) {
@@ -54,8 +55,14 @@ public class MobEffectInstance implements Comparable<MobEffectInstance> { @@ -71,8 +72,14 @@ public class MobEffectInstance implements Comparable<MobEffectInstance> {
this(type, duration, amplifier, ambient, visible, visible); this(effect, duration, amplifier, ambient, visible, visible);
} }
+ // Purpur start + // Purpur start
+ public MobEffectInstance(MobEffect type, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon, @Nullable org.bukkit.NamespacedKey key) { + public MobEffectInstance(Holder<MobEffect> effect, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon, @Nullable org.bukkit.NamespacedKey key) {
+ this(type, duration, amplifier, ambient, showParticles, showIcon, null, key, type.createFactorData()); + this(effect, duration, amplifier, ambient, showParticles, showIcon, null, key);
+ }
+ // Purpur end + // Purpur end
+ }
+ +
public MobEffectInstance(MobEffect type, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon) { public MobEffectInstance(Holder<MobEffect> effect, int duration, int amplifier, boolean ambient, boolean showParticles, boolean showIcon) {
- this(type, duration, amplifier, ambient, showParticles, showIcon, null, type.createFactorData()); - this(effect, duration, amplifier, ambient, showParticles, showIcon, null);
+ this(type, duration, amplifier, ambient, showParticles, showIcon, null, null, type.createFactorData()); // Purpur + this(effect, duration, amplifier, ambient, showParticles, showIcon, null, null); // Purpur
} }
public MobEffectInstance( public MobEffectInstance(
@@ -66,6 +73,7 @@ public class MobEffectInstance implements Comparable<MobEffectInstance> { @@ -82,7 +89,8 @@ public class MobEffectInstance implements Comparable<MobEffectInstance> {
boolean ambient,
boolean showParticles, boolean showParticles,
boolean showIcon, boolean showIcon,
@Nullable MobEffectInstance hiddenEffect, - @Nullable MobEffectInstance hiddenEffect
+ @Nullable org.bukkit.NamespacedKey key, // Purpur + @Nullable MobEffectInstance hiddenEffect,
Optional<MobEffectInstance.FactorData> factorCalculationData + @Nullable org.bukkit.NamespacedKey key // Purpur
) { ) {
this.effect = type; this.effect = effect;
@@ -74,6 +82,7 @@ public class MobEffectInstance implements Comparable<MobEffectInstance> { this.duration = duration;
@@ -90,6 +98,7 @@ public class MobEffectInstance implements Comparable<MobEffectInstance> {
this.ambient = ambient; this.ambient = ambient;
this.visible = showParticles; this.visible = showParticles;
this.showIcon = showIcon; this.showIcon = showIcon;
+ this.key = key; // Purpur - add key + this.key = key; // Purpur - add key
this.hiddenEffect = hiddenEffect; this.hiddenEffect = hiddenEffect;
this.factorData = factorCalculationData;
} }
@@ -94,6 +103,7 @@ public class MobEffectInstance implements Comparable<MobEffectInstance> {
@@ -135,6 +144,7 @@ public class MobEffectInstance implements Comparable<MobEffectInstance> {
this.ambient = that.ambient; this.ambient = that.ambient;
this.visible = that.visible; this.visible = that.visible;
this.showIcon = that.showIcon; this.showIcon = that.showIcon;
@@ -56,7 +58,7 @@ index 5d02e72a39af7b1b01bd894bdac3247ad00c243f..eaa5395d8f30d69745a892fe4e03cc45
} }
public boolean update(MobEffectInstance that) { public boolean update(MobEffectInstance that) {
@@ -138,6 +148,13 @@ public class MobEffectInstance implements Comparable<MobEffectInstance> { @@ -179,6 +189,13 @@ public class MobEffectInstance implements Comparable<MobEffectInstance> {
bl = true; bl = true;
} }
@@ -70,7 +72,7 @@ index 5d02e72a39af7b1b01bd894bdac3247ad00c243f..eaa5395d8f30d69745a892fe4e03cc45
return bl; return bl;
} }
@@ -181,6 +198,17 @@ public class MobEffectInstance implements Comparable<MobEffectInstance> { @@ -222,6 +239,17 @@ public class MobEffectInstance implements Comparable<MobEffectInstance> {
return this.showIcon; return this.showIcon;
} }
@@ -88,7 +90,7 @@ index 5d02e72a39af7b1b01bd894bdac3247ad00c243f..eaa5395d8f30d69745a892fe4e03cc45
public boolean tick(LivingEntity entity, Runnable overwriteCallback) { public boolean tick(LivingEntity entity, Runnable overwriteCallback) {
if (this.hasRemainingDuration()) { if (this.hasRemainingDuration()) {
int i = this.isInfiniteDuration() ? entity.tickCount : this.duration; int i = this.isInfiniteDuration() ? entity.tickCount : this.duration;
@@ -237,6 +265,12 @@ public class MobEffectInstance implements Comparable<MobEffectInstance> { @@ -286,6 +314,12 @@ public class MobEffectInstance implements Comparable<MobEffectInstance> {
string = string + ", Show Icon: false"; string = string + ", Show Icon: false";
} }
@@ -101,7 +103,7 @@ index 5d02e72a39af7b1b01bd894bdac3247ad00c243f..eaa5395d8f30d69745a892fe4e03cc45
return string; return string;
} }
@@ -251,6 +285,7 @@ public class MobEffectInstance implements Comparable<MobEffectInstance> { @@ -300,6 +334,7 @@ public class MobEffectInstance implements Comparable<MobEffectInstance> {
&& this.duration == mobEffectInstance.duration && this.duration == mobEffectInstance.duration
&& this.amplifier == mobEffectInstance.amplifier && this.amplifier == mobEffectInstance.amplifier
&& this.ambient == mobEffectInstance.ambient && this.ambient == mobEffectInstance.ambient
@@ -109,57 +111,22 @@ index 5d02e72a39af7b1b01bd894bdac3247ad00c243f..eaa5395d8f30d69745a892fe4e03cc45
&& this.effect.equals(mobEffectInstance.effect); && this.effect.equals(mobEffectInstance.effect);
} }
@@ -275,6 +310,11 @@ public class MobEffectInstance implements Comparable<MobEffectInstance> {
nbt.putBoolean("ambient", this.isAmbient());
nbt.putBoolean("show_particles", this.isVisible());
nbt.putBoolean("show_icon", this.showIcon());
+ // Purpur start
+ if (this.key != null) {
+ nbt.putString("key", this.key.toString());
+ }
+ // Purpur end
if (this.hiddenEffect != null) {
CompoundTag compoundTag = new CompoundTag();
this.hiddenEffect.save(compoundTag);
@@ -311,6 +351,13 @@ public class MobEffectInstance implements Comparable<MobEffectInstance> {
bl3 = nbt.getBoolean("show_icon");
}
+ // Purpur start
+ org.bukkit.NamespacedKey key = null;
+ if (nbt.contains("key")) {
+ key = org.bukkit.NamespacedKey.fromString(nbt.getString("key"));
+ }
+ // Purpur end
+
MobEffectInstance mobEffectInstance = null;
if (nbt.contains("hidden_effect", 10)) {
mobEffectInstance = loadSpecifiedEffect(type, nbt.getCompound("hidden_effect"));
@@ -325,7 +372,7 @@ public class MobEffectInstance implements Comparable<MobEffectInstance> {
optional = Optional.empty();
}
- return new MobEffectInstance(type, j, Math.max(i, 0), bl, bl2, bl3, mobEffectInstance, optional);
+ return new MobEffectInstance(type, j, Math.max(i, 0), bl, bl2, bl3, mobEffectInstance, key, optional); // Purpur - add key
}
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java
index bac3a5c378054481e1a5abaec1f83afde5d64ac1..f1050bf2b9efc54a894426b08989d44566acd875 100644 index 4a9e6a679530025caa710a152c5249299ceffdf9..ea4f3f606aad69965384c73eb1273ed0644297b8 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaPotion.java
@@ -45,6 +45,7 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { @@ -42,6 +42,7 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta {
static final ItemMetaKey POTION_COLOR = new ItemMetaKey("CustomPotionColor", "custom-color"); static final ItemMetaKey POTION_EFFECTS = new ItemMetaKey("custom-effects");
static final ItemMetaKey ID = new ItemMetaKey("id", "potion-id"); static final ItemMetaKey POTION_COLOR = new ItemMetaKey("custom-color");
static final ItemMetaKey DEFAULT_POTION = new ItemMetaKey("Potion", "potion-type"); static final ItemMetaKey DEFAULT_POTION = new ItemMetaKey("potion-type");
+ static final ItemMetaKey KEY = new ItemMetaKey("key", "namespacedkey"); // Purpur - add key + static final ItemMetaKey KEY = new ItemMetaKey("key", "namespacedkey"); // Purpur - add key
// Having an initial "state" in ItemMeta seems bit dirty but the UNCRAFTABLE potion type private PotionType type;
// is treated as the empty form of the meta because it represents an empty potion with no effect private List<PotionEffect> customEffects;
@@ -97,7 +98,13 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { @@ -91,7 +92,13 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta {
boolean ambient = effect.getBoolean(CraftMetaPotion.AMBIENT.NBT); boolean ambient = effect.isAmbient();
boolean particles = effect.contains(CraftMetaPotion.SHOW_PARTICLES.NBT, CraftMagicNumbers.NBT.TAG_BYTE) ? effect.getBoolean(CraftMetaPotion.SHOW_PARTICLES.NBT) : true; boolean particles = effect.isVisible();
boolean icon = effect.contains(CraftMetaPotion.SHOW_ICON.NBT, CraftMagicNumbers.NBT.TAG_BYTE) ? effect.getBoolean(CraftMetaPotion.SHOW_ICON.NBT) : particles; boolean icon = effect.showIcon();
- this.customEffects.add(new PotionEffect(type, duration, amp, ambient, particles, icon)); - this.customEffects.add(new PotionEffect(type, duration, amp, ambient, particles, icon));
+ // Purpur start + // Purpur start
+ NamespacedKey key = null; + NamespacedKey key = null;
@@ -169,21 +136,21 @@ index bac3a5c378054481e1a5abaec1f83afde5d64ac1..f1050bf2b9efc54a894426b08989d445
+ this.customEffects.add(new PotionEffect(type, duration, amp, ambient, particles, icon, key)); + this.customEffects.add(new PotionEffect(type, duration, amp, ambient, particles, icon, key));
+ // Purpur end + // Purpur end
} }
} });
} }
@@ -150,6 +157,11 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta { @@ -130,6 +137,11 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta {
effectData.putBoolean(CraftMetaPotion.AMBIENT.NBT, effect.isAmbient()); if (this.customEffects != null) {
effectData.putBoolean(CraftMetaPotion.SHOW_PARTICLES.NBT, effect.hasParticles()); for (PotionEffect effect : this.customEffects) {
effectData.putBoolean(CraftMetaPotion.SHOW_ICON.NBT, effect.hasIcon()); effectList.add(new MobEffectInstance(CraftPotionEffectType.bukkitToMinecraftHolder(effect.getType()), effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), effect.hasIcon()));
+ // Purpur start + // Purpur start
+ if (effect.hasKey()) { + if (effect.hasKey()) {
+ effectData.putString(CraftMetaPotion.KEY.NBT, effect.getKey().toString()); + effectData.putString(CraftMetaPotion.KEY.NBT, effect.getKey().toString());
+ } + }
+ // Purpur end + // Purpur end
effectList.add(effectData);
} }
} }
@@ -225,7 +237,7 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta {
@@ -196,7 +208,7 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta {
if (index != -1) { if (index != -1) {
if (overwrite) { if (overwrite) {
PotionEffect old = this.customEffects.get(index); PotionEffect old = this.customEffects.get(index);
@@ -193,19 +160,19 @@ index bac3a5c378054481e1a5abaec1f83afde5d64ac1..f1050bf2b9efc54a894426b08989d445
} }
this.customEffects.set(index, effect); this.customEffects.set(index, effect);
diff --git a/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java b/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java diff --git a/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java b/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java
index e938255fcc5db0c289d3e132175a541187e4a748..f7a747ea73a80c97d863e0fd3772a0c333aef3c8 100644 index 14c58cf8d255c51473fd3d0092faeaf5a3c1ae0c..3ee9c14440046872b83de628b7f460d0782e9315 100644
--- a/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java --- a/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java
+++ b/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java +++ b/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java
@@ -74,7 +74,7 @@ public class CraftPotionUtil { @@ -11,7 +11,7 @@ public class CraftPotionUtil {
public static MobEffectInstance fromBukkit(PotionEffect effect) { public static MobEffectInstance fromBukkit(PotionEffect effect) {
MobEffect type = CraftPotionEffectType.bukkitToMinecraft(effect.getType()); Holder<MobEffect> type = CraftPotionEffectType.bukkitToMinecraftHolder(effect.getType());
// Paper - Note: do not copy over the hidden effect, as this method is only used for applying to entities which we do not want to convert over. // Paper - Note: do not copy over the hidden effect, as this method is only used for applying to entities which we do not want to convert over.
- return new MobEffectInstance(type, effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), effect.hasIcon()); // Paper - return new MobEffectInstance(type, effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), effect.hasIcon()); // Paper
+ return new MobEffectInstance(type, effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), effect.hasIcon(), effect.getKey()); // Paper // Purpur - add key + return new MobEffectInstance(type, effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles(), effect.hasIcon(), effect.getKey()); // Paper // Purpur - add key
} }
public static PotionEffect toBukkit(MobEffectInstance effect) { public static PotionEffect toBukkit(MobEffectInstance effect) {
@@ -83,7 +83,7 @@ public class CraftPotionUtil { @@ -20,7 +20,7 @@ public class CraftPotionUtil {
int duration = effect.getDuration(); int duration = effect.getDuration();
boolean ambient = effect.isAmbient(); boolean ambient = effect.isAmbient();
boolean particles = effect.isVisible(); boolean particles = effect.isVisible();
@@ -213,20 +180,20 @@ index e938255fcc5db0c289d3e132175a541187e4a748..f7a747ea73a80c97d863e0fd3772a0c3
+ return new PotionEffect(type, duration, amp, ambient, particles, effect.showIcon(), effect.hiddenEffect == null ? null : toBukkit(effect.hiddenEffect), effect.getKey()); // Paper // Purpur - add key + return new PotionEffect(type, duration, amp, ambient, particles, effect.showIcon(), effect.hiddenEffect == null ? null : toBukkit(effect.hiddenEffect), effect.getKey()); // Paper // Purpur - add key
} }
public static boolean equals(MobEffect mobEffect, PotionEffectType type) { public static boolean equals(Holder<MobEffect> mobEffect, PotionEffectType type) {
diff --git a/src/test/java/org/bukkit/potion/PotionTest.java b/src/test/java/org/bukkit/potion/PotionTest.java diff --git a/src/test/java/org/bukkit/potion/PotionTest.java b/src/test/java/org/bukkit/potion/PotionTest.java
index 8963d93e99bdaf719fa160c11dd5af6a1d86f9a4..d852d8b14f5000415cbb4f06601059b3934b7efc 100644 index cbcd1c21646308b2a9706095e2e12177ca06734d..b3ccaea713e858e334cc91d1ae498e589e3daafa 100644
--- a/src/test/java/org/bukkit/potion/PotionTest.java --- a/src/test/java/org/bukkit/potion/PotionTest.java
+++ b/src/test/java/org/bukkit/potion/PotionTest.java +++ b/src/test/java/org/bukkit/potion/PotionTest.java
@@ -9,6 +9,7 @@ import net.minecraft.resources.ResourceLocation; @@ -10,6 +10,7 @@ import net.minecraft.world.effect.MobEffect;
import net.minecraft.world.effect.MobEffect;
import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.item.alchemy.Potion; import net.minecraft.world.item.alchemy.Potion;
+import org.bukkit.NamespacedKey; import org.bukkit.craftbukkit.legacy.FieldRename;
+import org.bukkit.NamespacedKey; // Purpur
import org.bukkit.craftbukkit.potion.CraftPotionEffectType; import org.bukkit.craftbukkit.potion.CraftPotionEffectType;
import org.bukkit.support.AbstractTestingBase; import org.bukkit.support.AbstractTestingBase;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@@ -46,4 +47,27 @@ public class PotionTest extends AbstractTestingBase { @@ -47,4 +48,27 @@ public class PotionTest extends AbstractTestingBase {
assertEquals(bukkit, byName, "Same type not returned by name " + key); assertEquals(bukkit, byName, "Same type not returned by name " + key);
} }
} }

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Grindstone API
diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java
index 2a2bcd0fc2b7653d9087b88e9a01034b51f017b9..af99ce32872e079beb6ac1caf3a8ac4c3cae4648 100644 index f7948de0180836f5bcf6818fe3a1362445a5befe..3756543f05bfe56b0b5333281902fa200dad6951 100644
--- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java --- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java +++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java
@@ -95,9 +95,11 @@ public class GrindstoneMenu extends AbstractContainerMenu { @@ -95,9 +95,11 @@ public class GrindstoneMenu extends AbstractContainerMenu {
@@ -21,7 +21,7 @@ index 2a2bcd0fc2b7653d9087b88e9a01034b51f017b9..af99ce32872e079beb6ac1caf3a8ac4c
} }
world.levelEvent(1042, blockposition, 0); world.levelEvent(1042, blockposition, 0);
@@ -341,7 +343,9 @@ public class GrindstoneMenu extends AbstractContainerMenu { @@ -331,7 +333,9 @@ public class GrindstoneMenu extends AbstractContainerMenu {
return ItemStack.EMPTY; return ItemStack.EMPTY;
} }

View File

@@ -5,12 +5,12 @@ Subject: [PATCH] Ability for hoe to replant crops and nether warts
diff --git a/src/main/java/net/minecraft/world/level/block/BushBlock.java b/src/main/java/net/minecraft/world/level/block/BushBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/BushBlock.java b/src/main/java/net/minecraft/world/level/block/BushBlock.java
index bed3d9c781c7d3ca260027b4737970889a54689c..db1941ed32d141327a8b11e54b3ff9900072ad36 100644 index a7b4b5600e3c889c69ac22294899713d50b5fe5c..a27e298ffdfa6956be9cde429d2cd45483a51fed 100644
--- a/src/main/java/net/minecraft/world/level/block/BushBlock.java --- a/src/main/java/net/minecraft/world/level/block/BushBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/BushBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BushBlock.java
@@ -52,4 +52,24 @@ public abstract class BushBlock extends Block { @@ -52,4 +52,24 @@ public abstract class BushBlock extends Block {
public boolean isPathfindable(BlockState state, BlockGetter world, BlockPos pos, PathComputationType type) { protected boolean isPathfindable(BlockState state, PathComputationType type) {
return type == PathComputationType.AIR && !this.hasCollision ? true : super.isPathfindable(state, world, pos, type); return type == PathComputationType.AIR && !this.hasCollision ? true : super.isPathfindable(state, type);
} }
+ +
+ // Purpur start + // Purpur start
@@ -34,7 +34,7 @@ index bed3d9c781c7d3ca260027b4737970889a54689c..db1941ed32d141327a8b11e54b3ff990
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/net/minecraft/world/level/block/CropBlock.java b/src/main/java/net/minecraft/world/level/block/CropBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/CropBlock.java b/src/main/java/net/minecraft/world/level/block/CropBlock.java
index 55e28eef76d9d534037d888d85c0609052478118..2077cb5dcf2352c9d5b502744aeb9a66df256939 100644 index a69e7e8da81bd13578d230cc1e3f0f900817cbfd..5a190834baef60c7b61074393f8856a933902d81 100644
--- a/src/main/java/net/minecraft/world/level/block/CropBlock.java --- a/src/main/java/net/minecraft/world/level/block/CropBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java
@@ -214,4 +214,15 @@ public class CropBlock extends BushBlock implements BonemealableBlock { @@ -214,4 +214,15 @@ public class CropBlock extends BushBlock implements BonemealableBlock {
@@ -54,7 +54,7 @@ index 55e28eef76d9d534037d888d85c0609052478118..2077cb5dcf2352c9d5b502744aeb9a66
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java b/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java b/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java
index 0fc333f240d6918e841a9221be42973839408802..464a9d2e4c694d5d4aae6c2d3e8a5fad0111e910 100644 index acbd60a2f162fe0e254e36d0e8e7face3fc8a7b3..da1c7999ca64199387054de46489d3ff4a299289 100644
--- a/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java --- a/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NetherWartBlock.java
@@ -68,4 +68,15 @@ public class NetherWartBlock extends BushBlock { @@ -68,4 +68,15 @@ public class NetherWartBlock extends BushBlock {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Turtle eggs random tick crack chance
diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java
index 430ccf1b9f5c6306bbe610d1f9058c1a4bfa2986..b18545e1bd55fa468af6d6c03211036eb9fa146d 100644 index 0c732cfbd9ce50198a3f85ae8ef2263d7ae0bc1a..2f0e8aeb9c45853fca12ddd78a7d51813a600e67 100644
--- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java
@@ -169,7 +169,7 @@ public class TurtleEggBlock extends Block { @@ -170,7 +170,7 @@ public class TurtleEggBlock extends Block {
private boolean shouldUpdateHatchLevel(Level world) { private boolean shouldUpdateHatchLevel(Level world) {
float f = world.getTimeOfDay(1.0F); float f = world.getTimeOfDay(1.0F);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Mob head visibility percent
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 3a1b8a94642339a96d8f7391714fae1648dc5149..21019c1484a281e6cbcaf1c3e462efa106fee5eb 100644 index d85407573c47df162cedb8667c2fbc327e75588b..bfb9d3c92950b2600320ba3af409acbf810b5fe7 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1049,9 +1049,20 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1071,9 +1071,20 @@ public abstract class LivingEntity extends Entity implements Attackable {
ItemStack itemstack = this.getItemBySlot(EquipmentSlot.HEAD); ItemStack itemstack = this.getItemBySlot(EquipmentSlot.HEAD);
EntityType<?> entitytypes = entity.getType(); EntityType<?> entitytypes = entity.getType();

View File

@@ -4,20 +4,20 @@ Date: Sat, 1 Jan 2022 18:38:58 -0600
Subject: [PATCH] Configurable valid characters for usernames Subject: [PATCH] Configurable valid characters for usernames
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java diff --git a/src/main/java/net/minecraft/util/StringUtil.java b/src/main/java/net/minecraft/util/StringUtil.java
index e8000f236d3ec0476ec782f08e159eea6c99476a..4297622fecf2cde16cdcb206ecc3e912b06c0a66 100644 index ae7ef47446c15b8a6878dd2d31b60cd0670eaf83..118841518668c82f0031ec97fd89819a06f72c6b 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java --- a/src/main/java/net/minecraft/util/StringUtil.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/util/StringUtil.java
@@ -2429,6 +2429,7 @@ public abstract class Player extends LivingEntity { @@ -64,6 +64,7 @@ public class StringUtil {
} }
public static boolean isValidUsername(String name) { public static boolean isValidPlayerName(String name) {
+ if (true) return org.purpurmc.purpur.PurpurConfig.usernameValidCharactersPattern.matcher(name).matches(); // Purpur + if (true) return org.purpurmc.purpur.PurpurConfig.usernameValidCharactersPattern.matcher(name).matches(); // Purpur
// Paper start - username validation overriding // Paper start - username validation overriding
if (name == null || name.isEmpty() || name.length() > 16) { if (name == null || name.isEmpty() || name.length() > 16) {
return false; return false;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index fe5a35568fdcd24c5020f003f85f3b4d3b4ac631..e24cd4274bfe7d8694a91f74a2f4674befb13bd6 100644 index a1fa16fca204098fd2211a4c206299356fc97724..107852247029b748a3e6e17b0ddbecdb50ce6d29 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -452,4 +452,11 @@ public class PurpurConfig { @@ -452,4 +452,11 @@ public class PurpurConfig {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Shears can have looting enchantment
diff --git a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java diff --git a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java
index 8d65cdb013706a932c2c73231108b2810b99e1c7..5b1938fc849db743e65cd7eed0f83ba059b9525e 100644 index a024c697a65bbab27408da1d6a75e531d9719b47..64bbb3da8a75a90d85cdd3ac90a95c670ee032ae 100644
--- a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java --- a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java
+++ b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java +++ b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java
@@ -104,7 +104,7 @@ public class ShearsDispenseItemBehavior extends OptionalDispenseItemBehavior { @@ -105,7 +105,7 @@ public class ShearsDispenseItemBehavior extends OptionalDispenseItemBehavior {
if (ishearable.readyForShearing()) { if (ishearable.readyForShearing()) {
// CraftBukkit start // CraftBukkit start
// Paper start - Add drops to shear events // Paper start - Add drops to shear events
@@ -31,19 +31,19 @@ index 2ee48ac3b665db2b02bcb1a30ec972d43a3725b0..59e8f5431ce5026209e1428b5fa5b548
} }
// Paper end - custom shear drops // Paper end - custom shear drops
diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java
index 48ee8c43a91efaadacfe8f37399ea1fb81f5f1ee..21632120b52e4d594153ebe057a14afa74c3f4eb 100644 index 06fac8dae42451f912c2db14d792461cee3dba83..a7c95199234231db14faa4a07953bcde57d9861d 100644
--- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java
+++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java
@@ -161,7 +161,7 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder<Mushroo @@ -161,7 +161,7 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder<Mushroo
} else if (itemstack.is(Items.SHEARS) && this.readyForShearing()) { } else if (itemstack.is(Items.SHEARS) && this.readyForShearing()) {
// CraftBukkit start // CraftBukkit start
// Paper start - custom shear drops // Paper start - custom shear drops
- List<ItemStack> drops = this.generateDefaultDrops(); - java.util.List<ItemStack> drops = this.generateDefaultDrops();
+ List<ItemStack> drops = this.generateDefaultDrops(net.minecraft.world.item.enchantment.EnchantmentHelper.getMobLooting(player)); // Purpur + java.util.List<ItemStack> drops = this.generateDefaultDrops(net.minecraft.world.item.enchantment.EnchantmentHelper.getMobLooting(player)); // Purpur
org.bukkit.event.player.PlayerShearEntityEvent event = CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemstack, hand, drops); org.bukkit.event.player.PlayerShearEntityEvent event = CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemstack, hand, drops);
if (event != null) { if (event != null) {
if (event.isCancelled()) { if (event.isCancelled()) {
@@ -213,13 +213,13 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder<Mushroo @@ -209,13 +209,13 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder<Mushroo
@Override @Override
public void shear(SoundSource shearedSoundCategory) { public void shear(SoundSource shearedSoundCategory) {
// Paper start - custom shear drops // Paper start - custom shear drops
@@ -52,19 +52,19 @@ index 48ee8c43a91efaadacfe8f37399ea1fb81f5f1ee..21632120b52e4d594153ebe057a14afa
} }
@Override @Override
- public List<ItemStack> generateDefaultDrops() { - public java.util.List<ItemStack> generateDefaultDrops() {
+ public List<ItemStack> generateDefaultDrops(int looting) { // Purpur + public java.util.List<ItemStack> generateDefaultDrops(int looting) { // Purpur
List<ItemStack> dropEntities = new java.util.ArrayList<>(5); java.util.List<ItemStack> dropEntities = new java.util.ArrayList<>(5);
- for (int i = 0; i < 5; ++i) { - for (int i = 0; i < 5; ++i) {
+ for (int i = 0; i < 5 + (org.purpurmc.purpur.PurpurConfig.allowShearsLooting ? looting : 0); ++i) { // Purpur + for (int i = 0; i < 5 + (org.purpurmc.purpur.PurpurConfig.allowShearsLooting ? looting : 0); ++i) { // Purpur
dropEntities.add(new ItemStack(this.getVariant().getBlockState().getBlock())); dropEntities.add(new ItemStack(this.getVariant().getBlockState().getBlock()));
} }
return dropEntities; return dropEntities;
diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java
index ae2662a5cdc4e531e09876ff8664eaf66a63a960..658f7943d275267d3fc556572831cc095259d12e 100644 index 9e617b3f1ec4eac5f83bdf19a3563cdc81b008d8..6b1244d3957e7f62c96ffd34692b8916337839fd 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java
@@ -292,7 +292,7 @@ public class Sheep extends Animal implements Shearable { @@ -297,7 +297,7 @@ public class Sheep extends Animal implements Shearable {
if (!this.level().isClientSide && this.readyForShearing()) { if (!this.level().isClientSide && this.readyForShearing()) {
// CraftBukkit start // CraftBukkit start
// Paper start - custom shear drops // Paper start - custom shear drops
@@ -73,7 +73,7 @@ index ae2662a5cdc4e531e09876ff8664eaf66a63a960..658f7943d275267d3fc556572831cc09
org.bukkit.event.player.PlayerShearEntityEvent event = CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemstack, hand, drops); org.bukkit.event.player.PlayerShearEntityEvent event = CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemstack, hand, drops);
if (event != null) { if (event != null) {
if (event.isCancelled()) { if (event.isCancelled()) {
@@ -319,12 +319,13 @@ public class Sheep extends Animal implements Shearable { @@ -322,12 +322,13 @@ public class Sheep extends Animal implements Shearable {
@Override @Override
public void shear(SoundSource shearedSoundCategory) { public void shear(SoundSource shearedSoundCategory) {
// Paper start - custom shear drops // Paper start - custom shear drops
@@ -90,10 +90,10 @@ index ae2662a5cdc4e531e09876ff8664eaf66a63a960..658f7943d275267d3fc556572831cc09
for (int j = 0; j < count; ++j) { for (int j = 0; j < count; ++j) {
dropEntities.add(new ItemStack(Sheep.ITEM_BY_DYE.get(this.getColor()))); dropEntities.add(new ItemStack(Sheep.ITEM_BY_DYE.get(this.getColor())));
diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
index df8e19a3adfa7dcc065160e8305d0f12c7c37887..b75d07f3af4addbb306ecb6baacf1607ef65fc25 100644 index 69cdccca01fe7d10e6d958e16d91efe08f699505..3b74931ae4e3a869d8db38c119e57b44af887859 100644
--- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
+++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
@@ -196,7 +196,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -189,7 +189,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
if (itemstack.is(Items.SHEARS) && this.readyForShearing()) { if (itemstack.is(Items.SHEARS) && this.readyForShearing()) {
// CraftBukkit start // CraftBukkit start
// Paper start - custom shear drops // Paper start - custom shear drops
@@ -102,7 +102,7 @@ index df8e19a3adfa7dcc065160e8305d0f12c7c37887..b75d07f3af4addbb306ecb6baacf1607
org.bukkit.event.player.PlayerShearEntityEvent event = CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemstack, hand, drops); org.bukkit.event.player.PlayerShearEntityEvent event = CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemstack, hand, drops);
if (event != null) { if (event != null) {
if (event.isCancelled()) { if (event.isCancelled()) {
@@ -231,11 +231,20 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -222,11 +222,20 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
@Override @Override
public void shear(SoundSource shearedSoundCategory) { public void shear(SoundSource shearedSoundCategory) {
// Paper start - custom shear drops // Paper start - custom shear drops
@@ -125,62 +125,14 @@ index df8e19a3adfa7dcc065160e8305d0f12c7c37887..b75d07f3af4addbb306ecb6baacf1607
return java.util.Collections.singletonList(new ItemStack(Items.CARVED_PUMPKIN)); return java.util.Collections.singletonList(new ItemStack(Items.CARVED_PUMPKIN));
} }
diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java
index cc83aa539f8538fbaed8a3e52d9d9d8901e4793d..4f8d8665cb90b746dc59913ec270839c4e5dba91 100644
--- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java
+++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java
@@ -120,6 +120,12 @@ public enum EnchantmentCategory {
public boolean canEnchant(Item item) {
return item instanceof BowItem || item instanceof CrossbowItem;
}
+ },
+ WEAPON_AND_SHEARS {
+ @Override
+ public boolean canEnchant(Item item) {
+ return WEAPON.canEnchant(item) || item instanceof net.minecraft.world.item.ShearsItem;
+ }
// Purpur end
};
diff --git a/src/main/java/net/minecraft/world/item/enchantment/LootBonusEnchantment.java b/src/main/java/net/minecraft/world/item/enchantment/LootBonusEnchantment.java
index 7f1ffc0ac402fcf0ec086986e959ecc9f78dde03..1351d52374d1c2367932e5ecd5f4637955fb14c9 100644
--- a/src/main/java/net/minecraft/world/item/enchantment/LootBonusEnchantment.java
+++ b/src/main/java/net/minecraft/world/item/enchantment/LootBonusEnchantment.java
@@ -7,6 +7,14 @@ public class LootBonusEnchantment extends Enchantment {
super(rarity, target, slotTypes);
}
+ // Purpur start
+ @Override
+ public boolean canEnchant(net.minecraft.world.item.ItemStack stack) {
+ // we have to cheat the system because this class is loaded before purpur's config is loaded
+ return (org.purpurmc.purpur.PurpurConfig.allowShearsLooting && this.category == EnchantmentCategory.WEAPON ? EnchantmentCategory.WEAPON_AND_SHEARS : this.category).canEnchant(stack.getItem());
+ }
+ // Purpur end
+
@Override
public int getMinCost(int level) {
return 15 + (level - 1) * 9;
diff --git a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java
index c1be4eb145e1a7e7749d24958bfed5c8268f1131..40d385c7865726545bb66f9a1856ed4e73e60202 100644
--- a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java
+++ b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java
@@ -72,6 +72,7 @@ public class CraftEnchantment extends Enchantment implements Handleable<net.mine
case CROSSBOW -> EnchantmentTarget.CROSSBOW;
case VANISHABLE -> EnchantmentTarget.VANISHABLE;
case BOW_AND_CROSSBOW -> EnchantmentTarget.BOW_AND_CROSSBOW; // Purpur
+ case WEAPON_AND_SHEARS -> EnchantmentTarget.WEAPON_AND_SHEARS; // Purpur
};
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index e24cd4274bfe7d8694a91f74a2f4674befb13bd6..ffff69021335ca52d10a07bb3b3f272eea6ebcb5 100644 index 107852247029b748a3e6e17b0ddbecdb50ce6d29..19e54e22ca2e024074c28dda3bbdf75ce9f1b083 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -391,6 +391,7 @@ public class PurpurConfig { @@ -391,6 +391,7 @@ public class PurpurConfig {
public static boolean allowInfinityMending = false; public static boolean allowInfinityMending = false;
public static boolean allowCrossbowInfinity = false; public static boolean allowCrossbowInfinity = true;
+ public static boolean allowShearsLooting = false; + public static boolean allowShearsLooting = false;
public static boolean allowUnsafeEnchants = false; public static boolean allowUnsafeEnchants = false;
public static boolean allowInapplicableEnchants = true; public static boolean allowInapplicableEnchants = true;

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Stop bees from dying after stinging
diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java
index 9fa937d2d6c3b23e390447e4d4fa24543e2679e5..c2dae3636145105ecb3ae950e07095f278f72ac2 100644 index 926c30db9b28a30fe5d6c8d20f3972dec0d7b4d0..221c0051c7a0e20c1b7a464df26eb63c4e997eee 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Bee.java --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java
@@ -446,6 +446,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -435,6 +435,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
this.hurt(this.damageSources().drown(), 1.0F); this.hurt(this.damageSources().drown(), 1.0F);
} }

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Give bee counts in beehives to Purpur clients
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index ae8025a1c4280cde6b0503e0bcaf468f694a188c..1e017c7c33fd70803312efdd61e090cb8aaf2254 100644 index 0f4fde2097b9db59b6c29935462f305f34747b3b..5081a631a94920db0307341261755eac399fea1e 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1063,6 +1063,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1071,6 +1071,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
} }
public void safeShutdown(boolean waitForShutdown, boolean isRestarting) { public void safeShutdown(boolean waitForShutdown, boolean isRestarting) {
org.purpurmc.purpur.task.BossBarTask.stopAll(); // Purpur org.purpurmc.purpur.task.BossBarTask.stopAll(); // Purpur
@@ -17,19 +17,19 @@ index ae8025a1c4280cde6b0503e0bcaf468f694a188c..1e017c7c33fd70803312efdd61e090cb
this.hasLoggedStop = true; // Paper - Debugging this.hasLoggedStop = true; // Paper - Debugging
if (isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper - Debugging if (isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper - Debugging
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index 0d70fe71651c8f9d75a604ed2d5c480b41df1dd6..38de0e9b83ecac489ca676725274d14fcb60dd5c 100644 index 29af03b8690e4d402d1e4e4516e4dc731b7b4323..56c6800ae5696397ffba2dc2e03930195a130112 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -376,6 +376,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -388,6 +388,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
}
if (gg.pufferfish.pufferfish.PufferfishConfig.enableAsyncMobSpawning) mobSpawnExecutor.start(); // Pufferfish
org.purpurmc.purpur.task.BossBarTask.startAll(); // Purpur org.purpurmc.purpur.task.BossBarTask.startAll(); // Purpur
+ if (org.purpurmc.purpur.PurpurConfig.beeCountPayload) org.purpurmc.purpur.task.BeehiveTask.instance().register(); // Purpur + if (org.purpurmc.purpur.PurpurConfig.beeCountPayload) org.purpurmc.purpur.task.BeehiveTask.instance().register(); // Purpur
return true; return true;
} }
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index ffff69021335ca52d10a07bb3b3f272eea6ebcb5..0e28cf20a870f3f3662bd1d8f7a4f2cbf13c48bf 100644 index 19e54e22ca2e024074c28dda3bbdf75ce9f1b083..2d32b5aaa2b2f33b773f9157aee4f7461c48147a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -434,6 +434,11 @@ public class PurpurConfig { @@ -434,6 +434,11 @@ public class PurpurConfig {

View File

@@ -22,10 +22,10 @@ Value set -> Actual fall distance needed to trample
6.0 -> 6.75 6.0 -> 6.75
diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java
index 00a6aa924e47e18ae80b57e9fe1d38e2de15dd72..0c39126ce51439cce05747161aba43bce33a12d8 100644 index 6b12864f323202a1202a59f66412b3d5be28023f..a208649685bbb33302445b54540e68dfa5212f78 100644
--- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java
@@ -110,7 +110,7 @@ public class FarmBlock extends Block { @@ -111,7 +111,7 @@ public class FarmBlock extends Block {
@Override @Override
public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) {
super.fallOn(world, state, pos, entity, fallDistance); // CraftBukkit - moved here as game rules / events shouldn't affect fall damage. super.fallOn(world, state, pos, entity, fallDistance); // CraftBukkit - moved here as game rules / events shouldn't affect fall damage.

View File

@@ -9,10 +9,10 @@ players still only pick up one orb every tick. However, setting this
to any negative number will pick up all orbs instantly. to any negative number will pick up all orbs instantly.
diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
index c8671996f07f1daafe48448f4a5b837ca2f658c6..373a932b80be18b8a47ef849ce837dbfbba6f9cb 100644 index 7ca70e9ddda24e2fe661c7b13fa439a6c19726dd..ce608784e0e35b67dde377436aaf42c956ce0644 100644
--- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java --- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
+++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
@@ -314,7 +314,7 @@ public class ExperienceOrb extends Entity { @@ -320,7 +320,7 @@ public class ExperienceOrb extends Entity {
public void playerTouch(Player player) { public void playerTouch(Player player) {
if (!this.level().isClientSide) { if (!this.level().isClientSide) {
if (player.takeXpDelay == 0 && new com.destroystokyo.paper.event.player.PlayerPickupExperienceEvent(((net.minecraft.server.level.ServerPlayer) player).getBukkitEntity(), (org.bukkit.entity.ExperienceOrb) this.getBukkitEntity()).callEvent()) { // Paper - PlayerPickupExperienceEvent if (player.takeXpDelay == 0 && new com.destroystokyo.paper.event.player.PlayerPickupExperienceEvent(((net.minecraft.server.level.ServerPlayer) player).getBukkitEntity(), (org.bukkit.entity.ExperienceOrb) this.getBukkitEntity()).callEvent()) { // Paper - PlayerPickupExperienceEvent
@@ -22,10 +22,10 @@ index c8671996f07f1daafe48448f4a5b837ca2f658c6..373a932b80be18b8a47ef849ce837dbf
int i = this.repairPlayerItems(player, this.value); int i = this.repairPlayerItems(player, this.value);
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
index 4297622fecf2cde16cdcb206ecc3e912b06c0a66..43199815ffe3d666577390b96187aa898ceb910e 100644 index 44ef706008a1477d2073c29f2c9d016bf91e15a6..102da46e66ac3a395af98fdb0013587ec6d7b48f 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java --- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -633,7 +633,7 @@ public abstract class Player extends LivingEntity { @@ -632,7 +632,7 @@ public abstract class Player extends LivingEntity {
while (iterator.hasNext()) { while (iterator.hasNext()) {
Entity entity = (Entity) iterator.next(); Entity entity = (Entity) iterator.next();

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Allow void trading
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 39a6ff48d820b56728398ac287f9a4db108f3bad..b9ca61e2ec4318c55997840f33fc8eae926fda73 100644 index 42db3e64b120b753e98a0fd7e3f56c7d28256fd2..ae2b9732b2795ea7faec96af4c27ccb04f772307 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java --- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -2920,7 +2920,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -2855,7 +2855,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
// Spigot Start // Spigot Start
if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message
// Paper start - Fix merchant inventory not closing on entity removal // Paper start - Fix merchant inventory not closing on entity removal

View File

@@ -5,12 +5,12 @@ Subject: [PATCH] Configurable phantom size
diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
index 8591fb95aa3079d7722f445ce1b1743c1f02b9bc..44a24707530ca46a6a42e8a4d9049e75f65aa66b 100644 index 0d81540d048cd4a08962bd24d3bdd49db708f83f..26077bd6eeedbdae84613188cb0f336abb3563d2 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
@@ -272,7 +272,11 @@ public class Phantom extends FlyingMob implements Enemy { @@ -265,7 +265,11 @@ public class Phantom extends FlyingMob implements Enemy {
@Override @Override
public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData) {
this.anchorPoint = this.blockPosition().above(5); this.anchorPoint = this.blockPosition().above(5);
- this.setPhantomSize(0); - this.setPhantomSize(0);
+ // Purpur start + // Purpur start
@@ -18,7 +18,7 @@ index 8591fb95aa3079d7722f445ce1b1743c1f02b9bc..44a24707530ca46a6a42e8a4d9049e75
+ int max = world.getLevel().purpurConfig.phantomMaxSize; + int max = world.getLevel().purpurConfig.phantomMaxSize;
+ this.setPhantomSize(min == max ? min : world.getRandom().nextInt(max + 1 - min) + min); + this.setPhantomSize(min == max ? min : world.getRandom().nextInt(max + 1 - min) + min);
+ // Purpur end + // Purpur end
return super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt); return super.finalizeSpawn(world, difficulty, spawnReason, entityData);
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Max joins per second
When this option is set to true the `max-joins-per-tick` setting in paper.yml will be used per second instead of per tick When this option is set to true the `max-joins-per-tick` setting in paper.yml will be used per second instead of per tick
diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java
index a536ebcf29d8ef0ed32863bd8d5e70f7a0636e8d..9e31954212b1d6162dca2fbc91d373e908560335 100644 index 58d28b6c1cc7da7d786f78308db971f7502ad844..9f274048be29ed54dd91983447beadf076cf7438 100644
--- a/src/main/java/net/minecraft/network/Connection.java --- a/src/main/java/net/minecraft/network/Connection.java
+++ b/src/main/java/net/minecraft/network/Connection.java +++ b/src/main/java/net/minecraft/network/Connection.java
@@ -570,11 +570,20 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> { @@ -607,11 +607,20 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
private static final int MAX_PER_TICK = io.papermc.paper.configuration.GlobalConfiguration.get().misc.maxJoinsPerTick; // Paper - Buffer joins to world private static final int MAX_PER_TICK = io.papermc.paper.configuration.GlobalConfiguration.get().misc.maxJoinsPerTick; // Paper - Buffer joins to world
private static int joinAttemptsThisTick; // Paper - Buffer joins to world private static int joinAttemptsThisTick; // Paper - Buffer joins to world
private static int currTick; // Paper - Buffer joins to world private static int currTick; // Paper - Buffer joins to world
@@ -31,7 +31,7 @@ index a536ebcf29d8ef0ed32863bd8d5e70f7a0636e8d..9e31954212b1d6162dca2fbc91d373e9
} }
// Paper end - Buffer joins to world // Paper end - Buffer joins to world
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index ce3ab604e6ed6669f38abf83d40b500148277b9d..a05da9ff158c6e7d55abb23e4b28f3703e9e5b3d 100644 index 2d32b5aaa2b2f33b773f9157aee4f7461c48147a..42a916e89b838868967391b9c042ce5143d862d0 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -456,8 +456,10 @@ public class PurpurConfig { @@ -456,8 +456,10 @@ public class PurpurConfig {

View File

@@ -9,10 +9,10 @@ This patch adds a config option to allow the minimum demand to instead
be configurable. be configurable.
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
index 19a3e88ce5ccdd74b049246eb51eaa0783d03d5d..79184e4721236d4d30f9c516ac0efb56cf06af7d 100644 index 17a247455dd853ae98e2f82f64a99bccc4d27438..4fa66af33ede3949f4e0236c806e3373f9dea730 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -547,7 +547,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -545,7 +545,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
while (iterator.hasNext()) { while (iterator.hasNext()) {
MerchantOffer merchantrecipe = (MerchantOffer) iterator.next(); MerchantOffer merchantrecipe = (MerchantOffer) iterator.next();
@@ -22,10 +22,10 @@ index 19a3e88ce5ccdd74b049246eb51eaa0783d03d5d..79184e4721236d4d30f9c516ac0efb56
} }
diff --git a/src/main/java/net/minecraft/world/item/trading/MerchantOffer.java b/src/main/java/net/minecraft/world/item/trading/MerchantOffer.java diff --git a/src/main/java/net/minecraft/world/item/trading/MerchantOffer.java b/src/main/java/net/minecraft/world/item/trading/MerchantOffer.java
index 02feea12c998f37098b72becf6bfaf6b27d155de..9c89a85d934955c9388cfe1361f13e70e699d279 100644 index 0efc8d997b34302c3e0a5d7ec73a11a940dbeefe..af157881d440b34cfe79fbc9b03cc9ef28515eb8 100644
--- a/src/main/java/net/minecraft/world/item/trading/MerchantOffer.java --- a/src/main/java/net/minecraft/world/item/trading/MerchantOffer.java
+++ b/src/main/java/net/minecraft/world/item/trading/MerchantOffer.java +++ b/src/main/java/net/minecraft/world/item/trading/MerchantOffer.java
@@ -149,7 +149,12 @@ public class MerchantOffer { @@ -131,7 +131,12 @@ public class MerchantOffer {
} }
public void updateDemand() { public void updateDemand() {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Lobotomize stuck villagers
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
index 79184e4721236d4d30f9c516ac0efb56cf06af7d..a188a36d919037fa3177ad7f6930570f5e130fc9 100644 index 4fa66af33ede3949f4e0236c806e3373f9dea730..dd74825c04543ae8c0bb1ab5eef6c8a152b621fd 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -142,6 +142,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -142,6 +142,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -15,9 +15,9 @@ index 79184e4721236d4d30f9c516ac0efb56cf06af7d..a188a36d919037fa3177ad7f6930570f
+ private boolean isLobotomized = false; public boolean isLobotomized() { return this.isLobotomized; } // Purpur + private boolean isLobotomized = false; public boolean isLobotomized() { return this.isLobotomized; } // Purpur
+ private int notLobotomizedCount = 0; // Purpur + private int notLobotomizedCount = 0; // Purpur
public long nextGolemPanic = -1; // Pufferfish public Villager(EntityType<? extends Villager> entityType, Level world) {
this(entityType, world, VillagerType.PLAINS);
@@ -201,6 +203,48 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -199,6 +201,48 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
return this.level().purpurConfig.villagerAlwaysDropExp; return this.level().purpurConfig.villagerAlwaysDropExp;
} }
@@ -66,7 +66,7 @@ index 79184e4721236d4d30f9c516ac0efb56cf06af7d..a188a36d919037fa3177ad7f6930570f
@Override @Override
public Brain<Villager> getBrain() { public Brain<Villager> getBrain() {
return (Brain<Villager>) super.getBrain(); // CraftBukkit - decompile error return (Brain<Villager>) super.getBrain(); // CraftBukkit - decompile error
@@ -298,13 +342,19 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -295,10 +339,19 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
// Paper start // Paper start
this.customServerAiStep(false); this.customServerAiStep(false);
} }
@@ -74,20 +74,19 @@ index 79184e4721236d4d30f9c516ac0efb56cf06af7d..a188a36d919037fa3177ad7f6930570f
+ protected void customServerAiStep(boolean inactive) { // Purpur - not final + protected void customServerAiStep(boolean inactive) { // Purpur - not final
// Paper end // Paper end
this.level().getProfiler().push("villagerBrain"); this.level().getProfiler().push("villagerBrain");
// Purpur start + // Purpur start
+ if (this.level().purpurConfig.villagerLobotomizeEnabled) { + if (this.level().purpurConfig.villagerLobotomizeEnabled) {
+ // treat as inactive if lobotomized + // treat as inactive if lobotomized
+ inactive = inactive || checkLobotomized(); + inactive = inactive || checkLobotomized();
+ } else { + } else {
+ this.isLobotomized = false; + this.isLobotomized = false;
+ } + }
+ // Purpur end
if (!inactive) this.getBrain().tick((ServerLevel) this.level(), this); // Paper
+ else if (this.isLobotomized && shouldRestock()) restock(); // Purpur
/*// Purpur start // Purpur - TODO: Pufferfish
if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) { // Purpur - only use brain if no rider if (!inactive && (getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) { // Purpur - only use brain if no rider
this.getBrain().tick((ServerLevel) this.level(), this); // Paper this.getBrain().tick((ServerLevel) this.level(), this); // Paper
- }
+ } else if (this.isLobotomized && shouldRestock()) restock();
// Purpur end
this.level().getProfiler().pop();
if (this.assignProfessionWhenSpawned) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
index 6c15d40979fd3e3d246a447c432b321fbf29ada3..6ace76a829c88e2e747dbbcce0a6582c615fc56d 100644 index 6c15d40979fd3e3d246a447c432b321fbf29ada3..6ace76a829c88e2e747dbbcce0a6582c615fc56d 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] MC-238526 - Fix spawner not spawning water animals correctly
diff --git a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java diff --git a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java
index 75884a9e69a28404752c1a2cf854335bb78cac01..1fd69e6ab765236b1a09e2791188d1eb7f12ecbb 100644 index 6f22705072fecbe91196e4966fca2eeec060f120..ed2ae44f7cef5aed17d10cc8a7df0a2276f9f16b 100644
--- a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java --- a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java
+++ b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java +++ b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java
@@ -78,6 +78,6 @@ public abstract class WaterAnimal extends PathfinderMob { @@ -72,6 +72,6 @@ public abstract class WaterAnimal extends PathfinderMob {
i = world.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.maximum.or(i); i = world.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.maximum.or(i);
j = world.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.minimum.or(j); j = world.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.minimum.or(j);
// Paper end - Make water animal spawn height configurable // Paper end - Make water animal spawn height configurable

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Config for mob last hurt by player time
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 21019c1484a281e6cbcaf1c3e462efa106fee5eb..839f280eeb18e01712a18b595b1a13abfab6f45b 100644 index bfb9d3c92950b2600320ba3af409acbf810b5fe7..484eff80394a55088f3cef726a8263e28accd6fe 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1555,13 +1555,13 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1561,13 +1561,13 @@ public abstract class LivingEntity extends Entity implements Attackable {
if (entity1 instanceof net.minecraft.world.entity.player.Player) { if (entity1 instanceof net.minecraft.world.entity.player.Player) {
net.minecraft.world.entity.player.Player entityhuman = (net.minecraft.world.entity.player.Player) entity1; net.minecraft.world.entity.player.Player entityhuman = (net.minecraft.world.entity.player.Player) entity1;
@@ -25,10 +25,10 @@ index 21019c1484a281e6cbcaf1c3e462efa106fee5eb..839f280eeb18e01712a18b595b1a13ab
if (entityliving2 instanceof net.minecraft.world.entity.player.Player) { if (entityliving2 instanceof net.minecraft.world.entity.player.Player) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
index 210040aa3f810c03cadf38df9d10da336dffaaa1..64c73cc7370c23c9ce68b68476fd0ddb3ca6beca 100644 index d08f86f2122441d661e7693ad7dcb9854921a767..8d83832ef4bdc452c944101985c4b61cfcef0f08 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
@@ -506,7 +506,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { @@ -505,7 +505,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
net.minecraft.server.level.ServerPlayer entityPlayer = killer == null ? null : ((CraftPlayer) killer).getHandle(); net.minecraft.server.level.ServerPlayer entityPlayer = killer == null ? null : ((CraftPlayer) killer).getHandle();
getHandle().lastHurtByPlayer = entityPlayer; getHandle().lastHurtByPlayer = entityPlayer;
getHandle().lastHurtByMob = entityPlayer; getHandle().lastHurtByMob = entityPlayer;

View File

@@ -5,13 +5,13 @@ Subject: [PATCH] Anvil repair/damage options
diff --git a/src/main/java/net/minecraft/world/level/block/AnvilBlock.java b/src/main/java/net/minecraft/world/level/block/AnvilBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/AnvilBlock.java b/src/main/java/net/minecraft/world/level/block/AnvilBlock.java
index 18d2ff1baa2db0b97f2565eac006fbc4e81022fa..58d29c89e8e54fac143982c40c9aecc855b6cfd5 100644 index 923357251ad950ec4f893e8771fcfa99de8a60c5..9273db1b30398b3d170df562dfeff040c2b14a92 100644
--- a/src/main/java/net/minecraft/world/level/block/AnvilBlock.java --- a/src/main/java/net/minecraft/world/level/block/AnvilBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/AnvilBlock.java +++ b/src/main/java/net/minecraft/world/level/block/AnvilBlock.java
@@ -62,6 +62,54 @@ public class AnvilBlock extends FallingBlock { @@ -61,6 +61,54 @@ public class AnvilBlock extends FallingBlock {
@Override @Override
public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) {
+ // Purpur start - repairable/damageable anvils + // Purpur start - repairable/damageable anvils
+ if (world.purpurConfig.anvilRepairIngotsAmount > 0) { + if (world.purpurConfig.anvilRepairIngotsAmount > 0) {
+ net.minecraft.world.item.ItemStack itemstack = player.getItemInHand(hand); + net.minecraft.world.item.ItemStack itemstack = player.getItemInHand(hand);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Option to disable turtle egg trampling with feather falling
diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java
index b18545e1bd55fa468af6d6c03211036eb9fa146d..9a76665c6369b4106d152370dc3d2f5645cb02b1 100644 index 2f0e8aeb9c45853fca12ddd78a7d51813a600e67..c3df410f692219ef166a8b885980b23a2c79950d 100644
--- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java
@@ -218,7 +218,13 @@ public class TurtleEggBlock extends Block { @@ -219,7 +219,13 @@ public class TurtleEggBlock extends Block {
if (!(entity instanceof LivingEntity)) { if (!(entity instanceof LivingEntity)) {
return false; return false;
} }

View File

@@ -5,33 +5,31 @@ Subject: [PATCH] Add toggle for enchant level clamping
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
index 829d84f48c7149ec1ba0b71b0f43ef19fed99380..f6664447c45b1d6f3371af7bed8b1175b17f25e2 100644 index 0bc6edf82d77ae88d64bd6ca0a5294c2143f2f5c..53fc44af2b9ceca0abb6c7b287eb08bdd1bf7fdb 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java --- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java
@@ -1235,7 +1235,7 @@ public final class ItemStack { @@ -1220,6 +1220,7 @@ public final class ItemStack implements DataComponentHolder {
ListTag nbttaglist = this.tag.getList("Enchantments", 10); public void enchant(Enchantment enchantment, int level) {
EnchantmentHelper.updateEnchantments(this, (itemenchantments_a) -> {
- nbttaglist.add(EnchantmentHelper.storeEnchantment(EnchantmentHelper.getEnchantmentId(enchantment), (byte) level)); + //org.purpurmc.purpur.PurpurConfig.clampEnchantLevels // Purpur - TODO: fix clamp enchant levels option
+ nbttaglist.add(EnchantmentHelper.storeEnchantment(EnchantmentHelper.getEnchantmentId(enchantment), (org.purpurmc.purpur.PurpurConfig.clampEnchantLevels) ? (byte) level : (short) level)); // Purpur itemenchantments_a.upgrade(enchantment, level);
processEnchantOrder(this.tag); // Paper });
} }
diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java
index 496c47eb3b13ba620fde1a2bc96f886c5b01e1de..06ca2cd5ae2a25205a37c783753ef7d56e72df94 100644 index 6d0363cec691996be416ab22ef9d825196399158..96a402b8c5bf083c6120950eacf7970226972b8b 100644
--- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java --- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java
+++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java +++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java
@@ -47,7 +47,7 @@ public class EnchantmentHelper { @@ -35,6 +35,7 @@ public class EnchantmentHelper {
public static int getItemEnchantmentLevel(Enchantment enchantment, ItemStack stack) {
ItemEnchantments itemEnchantments = stack.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY);
+ //org.purpurmc.purpur.PurpurConfig.clampEnchantLevels // Purpur - TODO: fix clamp enchant levels option
return itemEnchantments.getLevel(enchantment);
} }
public static int getEnchantmentLevel(CompoundTag nbt) {
- return Mth.clamp(nbt.getInt("lvl"), 0, 255);
+ return Mth.clamp(nbt.getInt("lvl"), 0, (org.purpurmc.purpur.PurpurConfig.clampEnchantLevels) ? 255 : 32767); // Purpur
}
@Nullable
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index a05da9ff158c6e7d55abb23e4b28f3703e9e5b3d..a504f727f5aaa605809938b4e7e7bbe9b84c522a 100644 index 42a916e89b838868967391b9c042ce5143d862d0..af79332c9c54ca314c59c6e503478e52c5970e31 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -398,6 +398,7 @@ public class PurpurConfig { @@ -398,6 +398,7 @@ public class PurpurConfig {

View File

@@ -5,18 +5,18 @@ Subject: [PATCH] Skip junit tests for purpur commands
diff --git a/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java b/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java diff --git a/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java b/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java
index afeb4271fffb7546209f1e651214065187c88302..81bc3af856b8af019fd13e1da1f7cccd526b7cf0 100644 index 2f3ff50bf3f70b6b404d02d5ffcc079162a63bc1..4e57fdf21d4b7789cd7c3d3a18ddc6227bc77792 100644
--- a/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java --- a/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java
+++ b/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java +++ b/src/test/java/io/papermc/paper/permissions/MinecraftCommandPermissionsTest.java
@@ -45,6 +45,7 @@ public class MinecraftCommandPermissionsTest extends AbstractTestingBase { @@ -48,6 +48,7 @@ public class MinecraftCommandPermissionsTest extends AbstractTestingBase {
Set<String> foundPerms = new HashSet<>(); if ("bukkit.command.paper.pgive".equals(vanillaPerm)) { // skip our custom give command
for (CommandNode<CommandSourceStack> child : root.getChildren()) { continue;
final String vanillaPerm = VanillaCommandWrapper.getPermission(child); }
+ if (TO_SKIP.contains(vanillaPerm)) continue; // Purpur + if (TO_SKIP.contains(vanillaPerm)) continue; // Purpur
if (!perms.contains(vanillaPerm)) { if (!perms.contains(vanillaPerm)) {
missing.add("Missing permission for " + child.getName() + " (" + vanillaPerm + ") command"); missing.add("Missing permission for " + child.getName() + " (" + vanillaPerm + ") command");
} else { } else {
@@ -57,6 +58,25 @@ public class MinecraftCommandPermissionsTest extends AbstractTestingBase { @@ -60,6 +61,25 @@ public class MinecraftCommandPermissionsTest extends AbstractTestingBase {
} }
private static final List<String> TO_SKIP = List.of( private static final List<String> TO_SKIP = List.of(

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Implement configurable search radius for villagers to spawn
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
index a188a36d919037fa3177ad7f6930570f5e130fc9..ef7c67f591ca4a3c73b87a7c44b37ad0b51d875c 100644 index dd74825c04543ae8c0bb1ab5eef6c8a152b621fd..dcf580d852ede8ea01f5d91944a224ec6eca73e4 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -1102,6 +1102,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -1095,6 +1095,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
} }
public void spawnGolemIfNeeded(ServerLevel world, long time, int requiredCount) { public void spawnGolemIfNeeded(ServerLevel world, long time, int requiredCount) {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Stonecutter damage
diff --git a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java diff --git a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java
index d8c5fb5432f0b09124d7f4dbc7b50859c1a84cc7..925654e40a170d1a4af0b9fcde1b9b359f833064 100644 index a375d40ec6365ba8704ba3ece22dd5b2de9857b5..357a79d72a2de02a019595e457fe432bf409e516 100644
--- a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java --- a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java
+++ b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java +++ b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java
@@ -100,6 +100,8 @@ public class CombatTracker { @@ -101,6 +101,8 @@ public class CombatTracker {
// Purpur start // Purpur start
if (damageSource.isScissors()) { if (damageSource.isScissors()) {
return damageSource.getLocalizedDeathMessage(org.purpurmc.purpur.PurpurConfig.deathMsgRunWithScissors, this.mob); return damageSource.getLocalizedDeathMessage(org.purpurmc.purpur.PurpurConfig.deathMsgRunWithScissors, this.mob);
@@ -18,10 +18,10 @@ index d8c5fb5432f0b09124d7f4dbc7b50859c1a84cc7..925654e40a170d1a4af0b9fcde1b9b35
// Purpur end // Purpur end
return damageSource.getLocalizedDeathMessage(this.mob); return damageSource.getLocalizedDeathMessage(this.mob);
diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java
index 5cbbff174b6f10bebe1923c10f84fc26e4d3000e..41651c877246f38c73cc9c81b37a0b86e5054cb9 100644 index 9c18134cb5474a7f3be2337036c7af253ec0b21e..b6881d7f02ad4e9e45e947eaec54f0c6b8ff957a 100644
--- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java
+++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java
@@ -28,6 +28,7 @@ public class DamageSource { @@ -29,6 +29,7 @@ public class DamageSource {
private boolean melting = false; private boolean melting = false;
private boolean poison = false; private boolean poison = false;
private boolean scissors = false; // Purpur private boolean scissors = false; // Purpur
@@ -29,7 +29,7 @@ index 5cbbff174b6f10bebe1923c10f84fc26e4d3000e..41651c877246f38c73cc9c81b37a0b86
@Nullable @Nullable
private Entity customEventDamager = null; // This field is a helper for when causing entity damage is not set by vanilla // Paper - fix DamageSource API private Entity customEventDamager = null; // This field is a helper for when causing entity damage is not set by vanilla // Paper - fix DamageSource API
@@ -67,6 +68,15 @@ public class DamageSource { @@ -68,6 +69,15 @@ public class DamageSource {
public boolean isScissors() { public boolean isScissors() {
return this.scissors; return this.scissors;
} }
@@ -45,7 +45,7 @@ index 5cbbff174b6f10bebe1923c10f84fc26e4d3000e..41651c877246f38c73cc9c81b37a0b86
// Purpur end // Purpur end
// Paper start - fix DamageSource API // Paper start - fix DamageSource API
@@ -113,6 +123,7 @@ public class DamageSource { @@ -114,6 +124,7 @@ public class DamageSource {
damageSource.poison = this.isPoison(); damageSource.poison = this.isPoison();
damageSource.melting = this.isMelting(); damageSource.melting = this.isMelting();
damageSource.scissors = this.isScissors(); // Purpur damageSource.scissors = this.isScissors(); // Purpur
@@ -54,7 +54,7 @@ index 5cbbff174b6f10bebe1923c10f84fc26e4d3000e..41651c877246f38c73cc9c81b37a0b86
} }
// CraftBukkit end // CraftBukkit end
diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSources.java b/src/main/java/net/minecraft/world/damagesource/DamageSources.java diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSources.java b/src/main/java/net/minecraft/world/damagesource/DamageSources.java
index 23c7f22dacc570837120c28e0a57f8c9155e92fc..2c1fdc031bcfc8f39692312e9ce9c5a3cf987349 100644 index b3d7790fa3e873f2e9b8fa4e4e749ef9c06973b9..e8c0cec909deea5cd9a031856d9d249f85d5e5f7 100644
--- a/src/main/java/net/minecraft/world/damagesource/DamageSources.java --- a/src/main/java/net/minecraft/world/damagesource/DamageSources.java
+++ b/src/main/java/net/minecraft/world/damagesource/DamageSources.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSources.java
@@ -45,12 +45,14 @@ public class DamageSources { @@ -45,12 +45,14 @@ public class DamageSources {
@@ -83,11 +83,11 @@ index 23c7f22dacc570837120c28e0a57f8c9155e92fc..2c1fdc031bcfc8f39692312e9ce9c5a3
public DamageSource inFire() { public DamageSource inFire() {
diff --git a/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java b/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java b/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java
index 7c41b940dd915a27856f6fa6f9e536e296deeb53..51ba321172acc9908aac456f8209dd6af6987aa8 100644 index c6ecb378d0cb2ac05b8f22f92fb85df060038f77..b0199a8ffb1ea4cafeadedb8b833063db177b3cd 100644
--- a/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java --- a/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java +++ b/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java
@@ -99,4 +99,14 @@ public class StonecutterBlock extends Block { @@ -98,4 +98,14 @@ public class StonecutterBlock extends Block {
public boolean isPathfindable(BlockState state, BlockGetter world, BlockPos pos, PathComputationType type) { protected boolean isPathfindable(BlockState state, PathComputationType type) {
return false; return false;
} }
+ +
@@ -102,32 +102,23 @@ index 7c41b940dd915a27856f6fa6f9e536e296deeb53..51ba321172acc9908aac456f8209dd6a
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java diff --git a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java
index b7f9793900d365f91d6e30dd22881a30e4250ac8..a0527e9f9c84353d2f4e56bf2f5341fd99daad94 100644 index 31ae0f466ae522d767907ec5066b26695f327b96..f26383cf896785333dbd6f86348d5a5f67a6731f 100644
--- a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java --- a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java
+++ b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java +++ b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java
@@ -475,7 +475,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { @@ -491,7 +491,7 @@ public class WalkNodeEvaluator extends NodeEvaluator {
return BlockPathTypes.BLOCKED; return PathType.TRAPDOOR;
} else {
// Paper end - Do not load chunks during pathfinding
- if (blockState.is(Blocks.CACTUS) || blockState.is(Blocks.SWEET_BERRY_BUSH)) {
+ if (blockState.is(Blocks.CACTUS) || blockState.is(Blocks.SWEET_BERRY_BUSH) || blockState.is(Blocks.STONECUTTER)) { // Purpur
return BlockPathTypes.DANGER_OTHER;
}
@@ -509,7 +509,7 @@ public class WalkNodeEvaluator extends NodeEvaluator {
return BlockPathTypes.TRAPDOOR;
} else if (blockState.is(Blocks.POWDER_SNOW)) { } else if (blockState.is(Blocks.POWDER_SNOW)) {
return BlockPathTypes.POWDER_SNOW; return PathType.POWDER_SNOW;
- } else if (blockState.is(Blocks.CACTUS) || blockState.is(Blocks.SWEET_BERRY_BUSH)) { - } else if (blockState.is(Blocks.CACTUS) || blockState.is(Blocks.SWEET_BERRY_BUSH)) {
+ } else if (blockState.is(Blocks.CACTUS) || blockState.is(Blocks.SWEET_BERRY_BUSH) || blockState.is(Blocks.STONECUTTER)) { // Purpur + } else if (blockState.is(Blocks.CACTUS) || blockState.is(Blocks.SWEET_BERRY_BUSH) || blockState.is(Blocks.STONECUTTER)) { // Purpur
return BlockPathTypes.DAMAGE_OTHER; return PathType.DAMAGE_OTHER;
} else if (blockState.is(Blocks.HONEY_BLOCK)) { } else if (blockState.is(Blocks.HONEY_BLOCK)) {
return BlockPathTypes.STICKY_HONEY; return PathType.STICKY_HONEY;
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 171efb1ab482d0042bead18df0880f038cfda16a..b82a6143526bd1d4ecd4591c1253cdb0b913fe09 100644 index 2391a0c59bfbf315f00ce41c5e0a03ea23a25448..1bd373d835cfcf1b43b28dbd0f138facb06f76f9 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -1133,7 +1133,7 @@ public class CraftEventFactory { @@ -1130,7 +1130,7 @@ public class CraftEventFactory {
return CraftEventFactory.callEntityDamageEvent(source.getDirectBlock(), entity, DamageCause.LAVA, bukkitDamageSource, modifiers, modifierFunctions, cancelled); return CraftEventFactory.callEntityDamageEvent(source.getDirectBlock(), entity, DamageCause.LAVA, bukkitDamageSource, modifiers, modifierFunctions, cancelled);
} else if (source.getDirectBlock() != null) { } else if (source.getDirectBlock() != null) {
DamageCause cause; DamageCause cause;
@@ -137,7 +128,7 @@ index 171efb1ab482d0042bead18df0880f038cfda16a..b82a6143526bd1d4ecd4591c1253cdb0
} else if (source.is(DamageTypes.HOT_FLOOR)) { } else if (source.is(DamageTypes.HOT_FLOOR)) {
cause = DamageCause.HOT_FLOOR; cause = DamageCause.HOT_FLOOR;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index a504f727f5aaa605809938b4e7e7bbe9b84c522a..9bc5cc4944dcd3918b2a90bde9dd8fdd795ae3b2 100644 index af79332c9c54ca314c59c6e503478e52c5970e31..07d6455c781b8743a833cbc04576015433686c4b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -209,8 +209,10 @@ public class PurpurConfig { @@ -209,8 +209,10 @@ public class PurpurConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Configurable damage settings for magma blocks
diff --git a/src/main/java/net/minecraft/world/level/block/MagmaBlock.java b/src/main/java/net/minecraft/world/level/block/MagmaBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/MagmaBlock.java b/src/main/java/net/minecraft/world/level/block/MagmaBlock.java
index 746c211b575ca588deadbbcd5c55b614e8660ba8..2f38bac9efc224084505e802546623260830b6d4 100644 index 77bbdc15472d656fd40e841a70e34d3d31580819..55ae530fac54236ea5614f8e92c30febc744f179 100644
--- a/src/main/java/net/minecraft/world/level/block/MagmaBlock.java --- a/src/main/java/net/minecraft/world/level/block/MagmaBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/MagmaBlock.java +++ b/src/main/java/net/minecraft/world/level/block/MagmaBlock.java
@@ -29,7 +29,7 @@ public class MagmaBlock extends Block { @@ -29,7 +29,7 @@ public class MagmaBlock extends Block {

View File

@@ -5,11 +5,11 @@ Subject: [PATCH] Add config for snow on blue ice
diff --git a/src/main/java/net/minecraft/world/level/block/SnowLayerBlock.java b/src/main/java/net/minecraft/world/level/block/SnowLayerBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/SnowLayerBlock.java b/src/main/java/net/minecraft/world/level/block/SnowLayerBlock.java
index a3da9536c3a3ad33d1c795673bdd7b05d6534054..9b057f3967aae5d0ca621b19d1212db91aaaee22 100644 index 93e8e5107ac047c1f2579b4fe6b0a202edb695f6..f82d275aac7bf3949d3dcc412c7e39e115c69458 100644
--- a/src/main/java/net/minecraft/world/level/block/SnowLayerBlock.java --- a/src/main/java/net/minecraft/world/level/block/SnowLayerBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/SnowLayerBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SnowLayerBlock.java
@@ -88,6 +88,12 @@ public class SnowLayerBlock extends Block { @@ -88,6 +88,12 @@ public class SnowLayerBlock extends Block {
public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { protected boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) {
BlockState iblockdata1 = world.getBlockState(pos.below()); BlockState iblockdata1 = world.getBlockState(pos.below());
+ // Purpur start + // Purpur start