fix lots of levels

This commit is contained in:
Ben Kerllenevich
2023-06-09 00:49:22 -04:00
parent d20403a6d0
commit 1cfcb9f28e
43 changed files with 301 additions and 248 deletions

View File

@@ -46,7 +46,7 @@ index 42d5b4ffc51da90a8f3bbec84e44ac2b0cb7b5ee..9168a02ede5b2fc924dbcf0063109f8e
final Throwable thr = new Throwable(entity + " Added to world at " + new java.util.Date()); final Throwable thr = new Throwable(entity + " Added to world at " + new java.util.Date());
io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(thr); io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(thr);
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 15539499b5a0f16ad2d44c39c5b824876fdf0951..d33eb475a41791b298c3300a14cf2af17e200c6c 100644 index 15539499b5a0f16ad2d44c39c5b824876fdf0951..632af791c9c4c9d2fa84f46b0c28bb8089930ebe 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
@@ -751,6 +751,15 @@ public class ServerPlayer extends Player { @@ -751,6 +751,15 @@ public class ServerPlayer extends Player {
@@ -55,7 +55,7 @@ index 15539499b5a0f16ad2d44c39c5b824876fdf0951..d33eb475a41791b298c3300a14cf2af1
this.advancements.flushDirty(this); this.advancements.flushDirty(this);
+ +
+ // Purpur start + // Purpur start
+ if (this.level().purpurConfig.useNightVisionWhenRiding && this.getVehicle() != null && this.getVehicle().getRider() == this && this.level.getGameTime() % 100 == 0) { // 5 seconds + if (this.level().purpurConfig.useNightVisionWhenRiding && this.getVehicle() != null && this.getVehicle().getRider() == this && this.level().getGameTime() % 100 == 0) { // 5 seconds
+ MobEffectInstance nightVision = this.getEffect(MobEffects.NIGHT_VISION); + MobEffectInstance nightVision = this.getEffect(MobEffects.NIGHT_VISION);
+ if (nightVision == null || nightVision.getDuration() <= 300) { // 15 seconds + if (nightVision == null || nightVision.getDuration() <= 300) { // 15 seconds
+ this.addEffect(new MobEffectInstance(MobEffects.NIGHT_VISION, 400, 0)); // 20 seconds + this.addEffect(new MobEffectInstance(MobEffects.NIGHT_VISION, 400, 0)); // 20 seconds
@@ -269,7 +269,7 @@ index a6d730eaee1df1c5c61aa0f8731b8c055080a9a6..218eaf5f18162422b3376335e32f25d0
// Paper end // Paper end
if (!this.level().isClientSide && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) { if (!this.level().isClientSide && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) {
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
index e2a25c29ec74147b3e66aa0b3deb85a8f6ee53a5..89ea4208bc30bcf3ed59b3a28384c0796b9204c4 100644 index e2a25c29ec74147b3e66aa0b3deb85a8f6ee53a5..d2ae293a23f8d02b3a2f0a60e4389497be77b60d 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java --- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -145,8 +145,8 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -145,8 +145,8 @@ public abstract class Mob extends LivingEntity implements Targeting {
@@ -299,7 +299,7 @@ index e2a25c29ec74147b3e66aa0b3deb85a8f6ee53a5..89ea4208bc30bcf3ed59b3a28384c079
+ +
+ // Purpur start + // Purpur start
+ public double getMaxY() { + public double getMaxY() {
+ return level.getHeight(); + return level().getHeight();
+ } + }
+ +
+ public InteractionResult tryRide(Player player, InteractionHand hand) { + public InteractionResult tryRide(Player player, InteractionHand hand) {
@@ -526,7 +526,7 @@ index 7df56705a4a0de2dc4ff7ab133fc26612c219162..384bed4505b6cabb1ae151cd2c4eb5e5
--this.lookAtCooldown; --this.lookAtCooldown;
this.getYRotD().ifPresent((yaw) -> { this.getYRotD().ifPresent((yaw) -> {
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 940cd932e74bc2e6754186731d7aa6f10d56eb68..7798e8df6156d71878b7c1f60c5636be64a25591 100644 index 940cd932e74bc2e6754186731d7aa6f10d56eb68..2ac0c8a7335450c192352da9c34151a70a2645dd 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
@@ -18,6 +18,7 @@ import net.minecraft.world.entity.EntityDimensions; @@ -18,6 +18,7 @@ import net.minecraft.world.entity.EntityDimensions;
@@ -577,7 +577,7 @@ index 940cd932e74bc2e6754186731d7aa6f10d56eb68..7798e8df6156d71878b7c1f60c5636be
+ super.onMount(rider); + super.onMount(rider);
+ if (isResting()) { + if (isResting()) {
+ setResting(false); + setResting(false);
+ level.levelEvent(null, 1025, new BlockPos(this).above(), 0); + level().levelEvent(null, 1025, new BlockPos(this).above(), 0);
+ } + }
+ } + }
+ +
@@ -964,7 +964,7 @@ index 4b63f6aa3d19cc4f47b05d531df3a43bf398c9ea..3ac30ed0a411384be5102de498815561
// CraftBukkit end // CraftBukkit end
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 501e6cb4aa83f81c1f657e41f4e7f11d19d46831..057ebdba945caa27db8982fe140d858bdb84fa39 100644 index 501e6cb4aa83f81c1f657e41f4e7f11d19d46831..b9a2064fd3a08aa21f1a25d3f367342852185974 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
@@ -78,14 +78,82 @@ public class Dolphin extends WaterAnimal { @@ -78,14 +78,82 @@ public class Dolphin extends WaterAnimal {
@@ -1037,10 +1037,10 @@ index 501e6cb4aa83f81c1f657e41f4e7f11d19d46831..057ebdba945caa27db8982fe140d858b
+ loc.setPitch(loc.getPitch() - 10); + loc.setPitch(loc.getPitch() - 10);
+ org.bukkit.util.Vector target = loc.getDirection().normalize().multiply(10).add(loc.toVector()); + org.bukkit.util.Vector target = loc.getDirection().normalize().multiply(10).add(loc.toVector());
+ +
+ org.purpurmc.purpur.entity.DolphinSpit spit = new org.purpurmc.purpur.entity.DolphinSpit(level, this); + org.purpurmc.purpur.entity.DolphinSpit spit = new org.purpurmc.purpur.entity.DolphinSpit(level(), this);
+ spit.shoot(target.getX() - getX(), target.getY() - getY(), target.getZ() - getZ(), level().purpurConfig.dolphinSpitSpeed, 5.0F); + spit.shoot(target.getX() - getX(), target.getY() - getY(), target.getZ() - getZ(), level().purpurConfig.dolphinSpitSpeed, 5.0F);
+ +
+ level.addFreshEntity(spit); + level().addFreshEntity(spit);
+ playSound(SoundEvents.DOLPHIN_ATTACK, 1.0F, 1.0F + (random.nextFloat() - random.nextFloat()) * 0.2F); + playSound(SoundEvents.DOLPHIN_ATTACK, 1.0F, 1.0F + (random.nextFloat() - random.nextFloat()) * 0.2F);
+ return true; + return true;
+ } + }
@@ -2894,7 +2894,7 @@ index 92666c48620078623a451fbf68f673cb9f81c4b5..5a2eb6775ecb3b01fd136c796258395b
this.dragonFight.updateDragon(this); this.dragonFight.updateDragon(this);
} }
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 f69e0b11be74ac83694f59999b3f07a318410c19..cfde1cde09112251410495203f7daa457c5ed728 100644 index f69e0b11be74ac83694f59999b3f07a318410c19..2a8f6b1fb7f3aac3100e5dc9ee64c53c0edd165b 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
@@ -84,16 +84,30 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -84,16 +84,30 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@@ -3021,11 +3021,11 @@ index f69e0b11be74ac83694f59999b3f07a318410c19..cfde1cde09112251410495203f7daa45
+ } + }
+ +
+ public void shoot(int head, double x, double y, double z, Player rider) { + public void shoot(int head, double x, double y, double z, Player rider) {
+ level.levelEvent(null, 1024, blockPosition(), 0); + level().levelEvent(null, 1024, blockPosition(), 0);
+ double headX = getHeadX(head); + double headX = getHeadX(head);
+ double headY = getHeadY(head); + double headY = getHeadY(head);
+ double headZ = getHeadZ(head); + double headZ = getHeadZ(head);
+ WitherSkull skull = new WitherSkull(level, this, x - headX, y - headY, z - headZ) { + WitherSkull skull = new WitherSkull(level(), this, x - headX, y - headY, z - headZ) {
+ @Override + @Override
+ public boolean canHitEntity(Entity target) { + public boolean canHitEntity(Entity target) {
+ // do not hit rider + // do not hit rider
@@ -3033,7 +3033,7 @@ index f69e0b11be74ac83694f59999b3f07a318410c19..cfde1cde09112251410495203f7daa45
+ } + }
+ }; + };
+ skull.setPosRaw(headX, headY, headZ); + skull.setPosRaw(headX, headY, headZ);
+ level.addFreshEntity(skull); + level().addFreshEntity(skull);
+ } + }
+ // Purpur end + // Purpur end
+ +
@@ -3871,7 +3871,7 @@ index 2858ea5562d06c11e5c7337a2b123f9be7a3f62e..aad51022eac584fbc058c2b25e2bf192
@Override @Override
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 4a132c3eff6978e927bcd4df56b9ce0306af6d19..ea613fe67fcd977aebaae891f95272970ba23698 100644 index 4a132c3eff6978e927bcd4df56b9ce0306af6d19..519d7667e6a8bcb39c200546af5ebbf74e0e9368 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
@@ -60,6 +60,64 @@ public class Phantom extends FlyingMob implements Enemy { @@ -60,6 +60,64 @@ public class Phantom extends FlyingMob implements Enemy {
@@ -3931,7 +3931,7 @@ index 4a132c3eff6978e927bcd4df56b9ce0306af6d19..ea613fe67fcd977aebaae891f9527297
+ org.purpurmc.purpur.entity.PhantomFlames flames = new org.purpurmc.purpur.entity.PhantomFlames(level, this); + org.purpurmc.purpur.entity.PhantomFlames flames = new org.purpurmc.purpur.entity.PhantomFlames(level, this);
+ flames.canGrief = level().purpurConfig.phantomAllowGriefing; + flames.canGrief = level().purpurConfig.phantomAllowGriefing;
+ flames.shoot(target.getX() - getX(), target.getY() - getY(), target.getZ() - getZ(), 1.0F, 5.0F); + flames.shoot(target.getX() - getX(), target.getY() - getY(), target.getZ() - getZ(), 1.0F, 5.0F);
+ level.addFreshEntity(flames); + level().addFreshEntity(flames);
+ return true; + return true;
+ } + }
+ // Purpur end + // Purpur end
@@ -5110,6 +5110,19 @@ index 0bbe853f7df93f9dcd2b21d762939f8b6be069aa..7db9844083703944f59e112c6dc5e1a5
@Override @Override
public void tick() { public void tick() {
super.tick(); super.tick();
diff --git a/src/main/java/net/minecraft/world/entity/projectile/ProjectileUtil.java b/src/main/java/net/minecraft/world/entity/projectile/ProjectileUtil.java
index cc0a3d9794d05b6bc6ab05f4f2ab8d83134b181d..e1f918d0bd2a70db1aba8bda8717149f58766825 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/ProjectileUtil.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/ProjectileUtil.java
@@ -33,7 +33,7 @@ public final class ProjectileUtil {
return getHitResult(vec32, entity, predicate, vec3, level);
}
- private static HitResult getHitResult(Vec3 pos, Entity entity, Predicate<Entity> predicate, Vec3 velocity, Level world) {
+ public static HitResult getHitResult(Vec3 pos, Entity entity, Predicate<Entity> predicate, Vec3 velocity, Level world) { // Purpur - private -> public
Vec3 vec3 = pos.add(velocity);
HitResult hitResult = world.clip(new ClipContext(pos, vec3, ClipContext.Block.COLLIDER, ClipContext.Fluid.NONE, entity));
if (hitResult.getType() != HitResult.Type.MISS) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index ea056babe2f8123f20dc608d8a636da1de634b8c..a820a00440510d77fa1839eef485f8ea2de9ff84 100644 index ea056babe2f8123f20dc608d8a636da1de634b8c..a820a00440510d77fa1839eef485f8ea2de9ff84 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -6303,7 +6316,7 @@ index 0000000000000000000000000000000000000000..ba2a37dad43e238e54632975abea8ee6
+} +}
diff --git a/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java diff --git a/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..a3512b14ecc5b855831e44e7a34d6eba37851e76 index 0000000000000000000000000000000000000000..b436fd92e2db17f6a2ee4118a7a51e324b567b46
--- /dev/null --- /dev/null
+++ b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java +++ b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java
@@ -0,0 +1,99 @@ @@ -0,0 +1,99 @@
@@ -6401,14 +6414,14 @@ index 0000000000000000000000000000000000000000..a3512b14ecc5b855831e44e7a34d6eba
+ if (this.hitCancelled) { + if (this.hitCancelled) {
+ return; + return;
+ } + }
+ BlockState state = this.level.getBlockState(blockHitResult.getBlockPos()); + BlockState state = this.level().getBlockState(blockHitResult.getBlockPos());
+ state.onProjectileHit(this.level, state, blockHitResult, this); + state.onProjectileHit(this.level, state, blockHitResult, this);
+ this.discard(); + this.discard();
+ } + }
+} +}
diff --git a/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java diff --git a/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..c99c7d296126dc36641d2d391092fa1f383a62bf index 0000000000000000000000000000000000000000..1fd6412e332ea8ee82b19c108e113624e51d764b
--- /dev/null --- /dev/null
+++ b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java +++ b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java
@@ -0,0 +1,114 @@ @@ -0,0 +1,114 @@
@@ -6456,7 +6469,7 @@ index 0000000000000000000000000000000000000000..c99c7d296126dc36641d2d391092fa1f
+ super_tick(); + super_tick();
+ +
+ Vec3 mot = this.getDeltaMovement(); + Vec3 mot = this.getDeltaMovement();
+ HitResult hitResult = ProjectileUtil.getHitResult(this, this::canHitEntity); + HitResult hitResult = ProjectileUtil.getHitResult(this.position(), this, this::canHitEntity, mot, level());
+ +
+ this.preOnHit(hitResult); + this.preOnHit(hitResult);
+ +
@@ -6468,7 +6481,7 @@ index 0000000000000000000000000000000000000000..c99c7d296126dc36641d2d391092fa1f
+ +
+ Vec3 motDouble = mot.scale(2.0); + Vec3 motDouble = mot.scale(2.0);
+ for (int i = 0; i < 5; i++) { + for (int i = 0; i < 5; i++) {
+ ((ServerLevel) level).sendParticles(null, ParticleTypes.FLAME, + ((ServerLevel) level()).sendParticles(null, ParticleTypes.FLAME,
+ getX() + random.nextFloat() / 2 - 0.25F, + getX() + random.nextFloat() / 2 - 0.25F,
+ getY() + random.nextFloat() / 2 - 0.25F, + getY() + random.nextFloat() / 2 - 0.25F,
+ getZ() + random.nextFloat() / 2 - 0.25F, + getZ() + random.nextFloat() / 2 - 0.25F,
@@ -6477,7 +6490,7 @@ index 0000000000000000000000000000000000000000..c99c7d296126dc36641d2d391092fa1f
+ +
+ if (++ticksLived > 20) { + if (++ticksLived > 20) {
+ this.discard(); + this.discard();
+ } else if (this.level.getBlockStates(this.getBoundingBox()).noneMatch(BlockBehaviour.BlockStateBase::isAir)) { + } else if (this.level().getBlockStates(this.getBoundingBox()).noneMatch(BlockBehaviour.BlockStateBase::isAir)) {
+ this.discard(); + this.discard();
+ } else if (this.isInWaterOrBubble()) { + } else if (this.isInWaterOrBubble()) {
+ this.discard(); + this.discard();
@@ -6520,8 +6533,8 @@ index 0000000000000000000000000000000000000000..c99c7d296126dc36641d2d391092fa1f
+ return; + return;
+ } + }
+ if (this.canGrief) { + if (this.canGrief) {
+ BlockState state = this.level.getBlockState(blockHitResult.getBlockPos()); + BlockState state = this.level().getBlockState(blockHitResult.getBlockPos());
+ state.onProjectileHit(this.level, state, blockHitResult, this); + state.onProjectileHit(this.level(), state, blockHitResult, this);
+ } + }
+ this.discard(); + this.discard();
+ } + }

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] AFK API
Adds the option for display names to be used in the afk broadcast Adds the option for display names to be used in the afk broadcast
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 d33eb475a41791b298c3300a14cf2af17e200c6c..68c163b6817ba4dd6ecd6b1fc82e37e5549d9569 100644 index 632af791c9c4c9d2fa84f46b0c28bb8089930ebe..62fb638dc4d1f88ff6ddb48bad891b77baf5443c 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
@@ -2116,8 +2116,68 @@ public class ServerPlayer extends Player { @@ -2116,8 +2116,68 @@ public class ServerPlayer extends Player {
@@ -61,7 +61,7 @@ index d33eb475a41791b298c3300a14cf2af17e200c6c..68c163b6817ba4dd6ecd6b1fc82e37e5
+ } + }
+ } + }
+ +
+ ((ServerLevel) this.level).updateSleepingPlayerList(); + ((ServerLevel) this.level()).updateSleepingPlayerList();
+ } + }
+ +
+ @Override + @Override
@@ -290,7 +290,7 @@ index 687710a138edd8492e58aa026872851d00466508..d11442476371fefe6549654c97825a01
public static boolean enderChestSixRows = false; public static boolean enderChestSixRows = false;
public static boolean enderChestPermissionRows = false; public static boolean enderChestPermissionRows = false;
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 b51c96e3f09d303f28675fc440ad402fca3db654..7052ca0128562fb59c3acc2ef354092e349cbffb 100644 index 2bd21bcd94e63048f29bf7e833fabb0751308447..835795fda996469b365f7513a393593af3792d77 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -92,6 +92,24 @@ public class PurpurWorldConfig { @@ -92,6 +92,24 @@ public class PurpurWorldConfig {

View File

@@ -18,7 +18,7 @@ index 5f20e075c532f0f1d413242949d1738c0c152bf7..e6f8cb165f7e3da5f0edfc952d140595
public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE); public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE);
public static final Item FARMLAND = registerBlock(Blocks.FARMLAND); public static final Item FARMLAND = registerBlock(Blocks.FARMLAND);
diff --git a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java
index 936d844a5a246138c9f9ae4ae6e318242b8f1420..3bacb283befd396b757aef54008d89ca029ae52c 100644 index 936d844a5a246138c9f9ae4ae6e318242b8f1420..d58dc4aa02fe371deaf879df8692dbe93c648f9b 100644
--- a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java --- a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java
@@ -40,6 +40,58 @@ public class SpawnerBlock extends BaseEntityBlock { @@ -40,6 +40,58 @@ public class SpawnerBlock extends BaseEntityBlock {
@@ -28,7 +28,7 @@ index 936d844a5a246138c9f9ae4ae6e318242b8f1420..3bacb283befd396b757aef54008d89ca
+ // Purpur start + // Purpur start
+ @Override + @Override
+ public void playerDestroy(Level level, net.minecraft.world.entity.player.Player player, BlockPos pos, BlockState state, BlockEntity blockEntity, ItemStack stack) { + public void playerDestroy(Level level, net.minecraft.world.entity.player.Player player, BlockPos pos, BlockState state, BlockEntity blockEntity, ItemStack stack) {
+ if (level().purpurConfig.silkTouchEnabled && player.getBukkitEntity().hasPermission("purpur.drop.spawners") && isSilkTouch(level, stack)) { + if (level.purpurConfig.silkTouchEnabled && player.getBukkitEntity().hasPermission("purpur.drop.spawners") && isSilkTouch(level, stack)) {
+ Optional<net.minecraft.world.entity.EntityType<?>> type = net.minecraft.world.entity.EntityType.by(((SpawnerBlockEntity) blockEntity).getSpawner().nextSpawnData.getEntityToSpawn()); + Optional<net.minecraft.world.entity.EntityType<?>> type = net.minecraft.world.entity.EntityType.by(((SpawnerBlockEntity) blockEntity).getSpawner().nextSpawnData.getEntityToSpawn());
+ +
+ net.minecraft.world.entity.EntityType<?> entityType = type.orElse(null); + net.minecraft.world.entity.EntityType<?> entityType = type.orElse(null);
@@ -36,7 +36,7 @@ index 936d844a5a246138c9f9ae4ae6e318242b8f1420..3bacb283befd396b757aef54008d89ca
+ CompoundTag display = new CompoundTag(); + CompoundTag display = new CompoundTag();
+ CompoundTag tag = new CompoundTag(); + CompoundTag tag = new CompoundTag();
+ +
+ String name = level().purpurConfig.silkTouchSpawnerName; + String name = level.purpurConfig.silkTouchSpawnerName;
+ if (name != null && !name.isEmpty() && !name.equals("Monster Spawner")) { + if (name != null && !name.isEmpty() && !name.equals("Monster Spawner")) {
+ net.kyori.adventure.text.Component displayName = net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(name, net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.component("mob", mobName)); + net.kyori.adventure.text.Component displayName = net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(name, net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.component("mob", mobName));
+ if (name.startsWith("<reset>")) { + if (name.startsWith("<reset>")) {
@@ -46,7 +46,7 @@ index 936d844a5a246138c9f9ae4ae6e318242b8f1420..3bacb283befd396b757aef54008d89ca
+ tag.put("display", display); + tag.put("display", display);
+ } + }
+ +
+ List<String> lore = level().purpurConfig.silkTouchSpawnerLore; + List<String> lore = level.purpurConfig.silkTouchSpawnerLore;
+ if (lore != null && !lore.isEmpty()) { + if (lore != null && !lore.isEmpty()) {
+ net.minecraft.nbt.ListTag list = new net.minecraft.nbt.ListTag(); + net.minecraft.nbt.ListTag list = new net.minecraft.nbt.ListTag();
+ for (String line : lore) { + for (String line : lore) {
@@ -73,7 +73,7 @@ index 936d844a5a246138c9f9ae4ae6e318242b8f1420..3bacb283befd396b757aef54008d89ca
+ } + }
+ +
+ private boolean isSilkTouch(Level level, ItemStack stack) { + private boolean isSilkTouch(Level level, ItemStack stack) {
+ return stack != null && level().purpurConfig.silkTouchTools.contains(stack.getItem()) && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.SILK_TOUCH, stack) >= level().purpurConfig.minimumSilkTouchSpawnerRequire; + return stack != null && level.purpurConfig.silkTouchTools.contains(stack.getItem()) && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.SILK_TOUCH, stack) >= level.purpurConfig.minimumSilkTouchSpawnerRequire;
+ } + }
+ // Purpur end + // Purpur end
+ +
@@ -89,7 +89,7 @@ index 936d844a5a246138c9f9ae4ae6e318242b8f1420..3bacb283befd396b757aef54008d89ca
int i = 15 + worldserver.random.nextInt(15) + worldserver.random.nextInt(15); int i = 15 + worldserver.random.nextInt(15) + worldserver.random.nextInt(15);
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 724ceea7198e540c391e0c5ad02817033bec694c..67468fde7d4a670bb5b85ef07648cb7ffec6fc74 100644 index 9c2a8b9c56e1dbd79573740d8c16ba8e01c43f4b..1d33fed2bd6702ea68ebd0b6bebb642151fd2e52 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -114,6 +114,38 @@ public class PurpurWorldConfig { @@ -114,6 +114,38 @@ public class PurpurWorldConfig {
@@ -133,7 +133,7 @@ index 724ceea7198e540c391e0c5ad02817033bec694c..67468fde7d4a670bb5b85ef07648cb7f
public boolean useNightVisionWhenRiding = false; public boolean useNightVisionWhenRiding = false;
diff --git a/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java b/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java diff --git a/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java b/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..bc59969740ea3518874e1be9f566804c1b518dcd index 0000000000000000000000000000000000000000..c038fb2bbb0f0e78380bc24bbd6348b869669a90
--- /dev/null --- /dev/null
+++ b/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java +++ b/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java
@@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
@@ -160,7 +160,7 @@ index 0000000000000000000000000000000000000000..bc59969740ea3518874e1be9f566804c
+ @Override + @Override
+ protected boolean updateCustomBlockEntityTag(BlockPos pos, Level level, Player player, ItemStack stack, BlockState state) { + protected boolean updateCustomBlockEntityTag(BlockPos pos, Level level, Player player, ItemStack stack, BlockState state) {
+ boolean handled = super.updateCustomBlockEntityTag(pos, level, player, stack, state); + boolean handled = super.updateCustomBlockEntityTag(pos, level, player, stack, state);
+ if (level().purpurConfig.silkTouchEnabled && player.getBukkitEntity().hasPermission("purpur.place.spawners")) { + if (level.purpurConfig.silkTouchEnabled && player.getBukkitEntity().hasPermission("purpur.place.spawners")) {
+ BlockEntity spawner = level.getBlockEntity(pos); + BlockEntity spawner = level.getBlockEntity(pos);
+ if (spawner instanceof SpawnerBlockEntity && stack.hasTag()) { + if (spawner instanceof SpawnerBlockEntity && stack.hasTag()) {
+ CompoundTag tag = stack.getTag(); + CompoundTag tag = stack.getTag();

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Giants AI settings
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 db95323da1aef267aa4fbe56aaff63cb8684e15b..29491be5f607477acd336fcff8cc472ad740ed50 100644 index db95323da1aef267aa4fbe56aaff63cb8684e15b..12e27b36b3f9949eb644175dd346c487277b2d39 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
@@ -1,13 +1,36 @@ @@ -1,13 +1,36 @@
@@ -45,12 +45,12 @@ index db95323da1aef267aa4fbe56aaff63cb8684e15b..29491be5f607477acd336fcff8cc472a
public class Giant extends Monster { public class Giant extends Monster {
public Giant(EntityType<? extends Giant> type, Level world) { public Giant(EntityType<? extends Giant> type, Level world) {
@@ -45,6 +68,53 @@ public class Giant extends Monster { @@ -33,8 +56,23 @@ public class Giant extends Monster {
this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(this.level().purpurConfig.giantAttackDamage);
}
+ @Override @Override
+ protected void registerGoals() { protected void registerGoals() {
- this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this));
- this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this));
+ if (level().purpurConfig.giantHaveAI) { + if (level().purpurConfig.giantHaveAI) {
+ this.goalSelector.addGoal(0, new FloatGoal(this)); + this.goalSelector.addGoal(0, new FloatGoal(this));
+ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this));
@@ -68,8 +68,13 @@ index db95323da1aef267aa4fbe56aaff63cb8684e15b..29491be5f607477acd336fcff8cc472a
+ this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, true)); + this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, true));
+ } + }
+ } + }
+ } }
+ // Purpur end
@@ -45,6 +83,32 @@ public class Giant extends Monster {
this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(this.level().purpurConfig.giantAttackDamage);
}
+ @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, @Nullable CompoundTag entityNbt) {
+ SpawnGroupData groupData = super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt); + SpawnGroupData groupData = super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt);
@@ -99,7 +104,7 @@ index db95323da1aef267aa4fbe56aaff63cb8684e15b..29491be5f607477acd336fcff8cc472a
@Override @Override
protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) { protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) {
return 10.440001F; return 10.440001F;
@@ -56,6 +126,6 @@ public class Giant extends Monster { @@ -56,6 +120,6 @@ public class Giant extends Monster {
@Override @Override
public float getWalkTargetValue(BlockPos pos, LevelReader world) { public float getWalkTargetValue(BlockPos pos, LevelReader world) {
@@ -108,7 +113,7 @@ index db95323da1aef267aa4fbe56aaff63cb8684e15b..29491be5f607477acd336fcff8cc472a
} }
} }
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 cd259a48b86fa257fc0ec748e667ba17e26e98a5..940ff156a42369656b919bef3dbadfc98d7dce01 100644 index d4d7a0543953a02305348f4744a3467a8b2f02d2..c1996047ebfb4f515a037bf4b8d7872eb8363739 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -558,6 +558,10 @@ public class PurpurWorldConfig { @@ -558,6 +558,10 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Rabbit naturally spawn toast and killer
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 db37932e56d88717a61eb8608b44c6911513aa35..48864c6f720be9132840e05ff4e7eb394ce3ad1d 100644 index db37932e56d88717a61eb8608b44c6911513aa35..2f373666e982a8c4e769168b565ca26e75fe59e9 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
@@ -472,10 +472,23 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> { @@ -472,10 +472,23 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
@@ -25,7 +25,7 @@ index db37932e56d88717a61eb8608b44c6911513aa35..48864c6f720be9132840e05ff4e7eb39
private static Rabbit.Variant getRandomRabbitVariant(LevelAccessor world, BlockPos pos) { private static Rabbit.Variant getRandomRabbitVariant(LevelAccessor world, BlockPos pos) {
+ // Purpur start + // Purpur start
+ Level level = world.getMinecraftWorld(); + Level level = world.getMinecraftWorld();
+ if (level().purpurConfig.rabbitNaturalKiller > 0D && world.getRandom().nextDouble() <= level().purpurConfig.rabbitNaturalKiller) { + if (level.purpurConfig.rabbitNaturalKiller > 0D && world.getRandom().nextDouble() <= level.purpurConfig.rabbitNaturalKiller) {
+ return Rabbit.Variant.EVIL; + return Rabbit.Variant.EVIL;
+ } + }
+ // Purpur end + // Purpur end
@@ -33,7 +33,7 @@ index db37932e56d88717a61eb8608b44c6911513aa35..48864c6f720be9132840e05ff4e7eb39
int i = world.getRandom().nextInt(100); int i = world.getRandom().nextInt(100);
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 c42ae175742c4072d43dd04bd25a1338004e198a..62937cdd2e6cc83a28bf96550b9ea4558f522c67 100644 index e9fbb9f7aeadd2860491a8afdc200de40b51320b..81d72372bc205796f55a742655ef2b01d53db24a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -995,6 +995,8 @@ public class PurpurWorldConfig { @@ -995,6 +995,8 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Cows eat mushrooms
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 d26a44d634fe02e595654e573d02243b5eb66086..e5e84c85d2b1c84c7612392bb060f713bd03ddcf 100644 index d26a44d634fe02e595654e573d02243b5eb66086..b94ec05ffa0a6f9e7368731d360319ffe1b10e3f 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
@@ -2,6 +2,7 @@ package net.minecraft.world.entity.animal; @@ -2,6 +2,7 @@ package net.minecraft.world.entity.animal;
@@ -65,7 +65,7 @@ index d26a44d634fe02e595654e573d02243b5eb66086..e5e84c85d2b1c84c7612392bb060f713
+ } + }
+ +
+ private InteractionResult feedMushroom(Player player, ItemStack stack) { + private InteractionResult feedMushroom(Player player, ItemStack stack) {
+ level.broadcastEntityEvent(this, (byte) 18); // hearts + level().broadcastEntityEvent(this, (byte) 18); // hearts
+ playSound(SoundEvents.COW_MILK, 1.0F, 1.0F); + playSound(SoundEvents.COW_MILK, 1.0F, 1.0F);
+ if (incrementFeedCount(stack) < level().purpurConfig.cowFeedMushrooms) { + if (incrementFeedCount(stack) < level().purpurConfig.cowFeedMushrooms) {
+ if (!player.getAbilities().instabuild) { + if (!player.getAbilities().instabuild) {
@@ -73,7 +73,7 @@ index d26a44d634fe02e595654e573d02243b5eb66086..e5e84c85d2b1c84c7612392bb060f713
+ } + }
+ return InteractionResult.CONSUME; // require 5 mushrooms to transform (prevents mushroom duping) + return InteractionResult.CONSUME; // require 5 mushrooms to transform (prevents mushroom duping)
+ } + }
+ MushroomCow mooshroom = EntityType.MOOSHROOM.create(level); + MushroomCow mooshroom = EntityType.MOOSHROOM.create(level());
+ if (mooshroom == null) { + if (mooshroom == null) {
+ return InteractionResult.PASS; + return InteractionResult.PASS;
+ } + }
@@ -99,13 +99,13 @@ index d26a44d634fe02e595654e573d02243b5eb66086..e5e84c85d2b1c84c7612392bb060f713
+ if (!new com.destroystokyo.paper.event.entity.EntityTransformedEvent(this.getBukkitEntity(), mooshroom.getBukkitEntity(), com.destroystokyo.paper.event.entity.EntityTransformedEvent.TransformedReason.INFECTED).callEvent()) { + if (!new com.destroystokyo.paper.event.entity.EntityTransformedEvent(this.getBukkitEntity(), mooshroom.getBukkitEntity(), com.destroystokyo.paper.event.entity.EntityTransformedEvent.TransformedReason.INFECTED).callEvent()) {
+ return InteractionResult.PASS; + return InteractionResult.PASS;
+ } + }
+ this.level.addFreshEntity(mooshroom); + this.level().addFreshEntity(mooshroom);
+ this.remove(RemovalReason.DISCARDED); + this.remove(RemovalReason.DISCARDED);
+ if (!player.getAbilities().instabuild) { + if (!player.getAbilities().instabuild) {
+ stack.shrink(1); + stack.shrink(1);
+ } + }
+ for (int i = 0; i < 15; ++i) { + for (int i = 0; i < 15; ++i) {
+ ((ServerLevel) level).sendParticles(((ServerLevel) level).players(), null, ParticleTypes.HAPPY_VILLAGER, + ((ServerLevel) level()).sendParticles(((ServerLevel) level()).players(), null, ParticleTypes.HAPPY_VILLAGER,
+ getX() + random.nextFloat(), getY() + (random.nextFloat() * 2), getZ() + random.nextFloat(), 1, + getX() + random.nextFloat(), getY() + (random.nextFloat() * 2), getZ() + random.nextFloat(), 1,
+ random.nextGaussian() * 0.05D, random.nextGaussian() * 0.05D, random.nextGaussian() * 0.05D, 0, true); + random.nextGaussian() * 0.05D, random.nextGaussian() * 0.05D, random.nextGaussian() * 0.05D, 0, true);
+ } + }

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Minecart settings and WASD controls
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 dcc4a25a8c7a7809222cf585901f057c64946a68..d97eec4118983794b49018882f4cf1f2629bf0a7 100644 index 29f4b1142269675a76401ba2d3ae965839db4e3f..c28a819ea5bb93914dda4b94be42506e9492f9f2 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
@@ -1112,6 +1112,7 @@ public class ServerPlayer extends Player { @@ -1112,6 +1112,7 @@ public class ServerPlayer extends Player {
@@ -111,7 +111,7 @@ index 9948a28dae4edba877c13ef0156be5ff58df3fa2..5cdcc5792f19766d2d55d16859f8e0f6
this.move(MoverType.SELF, this.getDeltaMovement()); this.move(MoverType.SELF, this.getDeltaMovement());
if (!this.onGround()) { if (!this.onGround()) {
diff --git a/src/main/java/net/minecraft/world/item/MinecartItem.java b/src/main/java/net/minecraft/world/item/MinecartItem.java diff --git a/src/main/java/net/minecraft/world/item/MinecartItem.java b/src/main/java/net/minecraft/world/item/MinecartItem.java
index c6d2f764efa9b8bec730bbe757d480e365b25ccc..33a30d26da2401535f0a72acb2bbffec1aef151e 100644 index c6d2f764efa9b8bec730bbe757d480e365b25ccc..cef98413d25dcc2def82775bbae71f92b096d905 100644
--- a/src/main/java/net/minecraft/world/item/MinecartItem.java --- a/src/main/java/net/minecraft/world/item/MinecartItem.java
+++ b/src/main/java/net/minecraft/world/item/MinecartItem.java +++ b/src/main/java/net/minecraft/world/item/MinecartItem.java
@@ -120,8 +120,9 @@ public class MinecartItem extends Item { @@ -120,8 +120,9 @@ public class MinecartItem extends Item {
@@ -121,7 +121,7 @@ index c6d2f764efa9b8bec730bbe757d480e365b25ccc..33a30d26da2401535f0a72acb2bbffec
- return InteractionResult.FAIL; - return InteractionResult.FAIL;
- } else { - } else {
+ if (!world.purpurConfig.minecartPlaceAnywhere) return InteractionResult.FAIL; + if (!world.purpurConfig.minecartPlaceAnywhere) return InteractionResult.FAIL;
+ if (iblockdata.getMaterial().isSolid()) blockposition = blockposition.relative(context.getClickedFace()); + if (iblockdata.isSolid()) blockposition = blockposition.relative(context.getClickedFace());
+ } // else { // Purpur - place minecarts anywhere + } // else { // Purpur - place minecarts anywhere
ItemStack itemstack = context.getItemInHand(); ItemStack itemstack = context.getItemInHand();
@@ -148,7 +148,7 @@ index de4c1e4701236e7d5ec77339c51ad6a9d8288bb6..5ac102afde62c08f36886b466010ccfe
protected ResourceLocation drops; protected ResourceLocation drops;
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 e4f5b63162423a4d8fe0704746bd18f6a6134b2c..60f5f27583e57105bbc95ce72138d2b530669c56 100644 index fc0ac2a2531080f98fea4b620dd3f310146b5567..88cfcd838262b553ebb78bd5398472e0b44a0c4f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -97,6 +97,68 @@ public class PurpurWorldConfig { @@ -97,6 +97,68 @@ public class PurpurWorldConfig {

View File

@@ -31,7 +31,7 @@ index 5502ad143fd2575f1346334b5b4fe7846628f54e..37f6de6166fbede2d216e462cf7b1672
if (state.getBlock() instanceof LiquidBlockContainer) { if (state.getBlock() instanceof LiquidBlockContainer) {
((LiquidBlockContainer) state.getBlock()).placeLiquid(world, pos, state, fluidState); ((LiquidBlockContainer) state.getBlock()).placeLiquid(world, pos, state, fluidState);
diff --git a/src/main/java/net/minecraft/world/level/material/LavaFluid.java b/src/main/java/net/minecraft/world/level/material/LavaFluid.java diff --git a/src/main/java/net/minecraft/world/level/material/LavaFluid.java b/src/main/java/net/minecraft/world/level/material/LavaFluid.java
index 72f8b72c6436ca3b8eaeb39c7d3efe2c1462ae1d..c0c072898226710f7e2e12b37838f7cfdfb0dde0 100644 index 72f8b72c6436ca3b8eaeb39c7d3efe2c1462ae1d..3706ebc551413401b0e6a9a0b1c2e3257d1337c1 100644
--- a/src/main/java/net/minecraft/world/level/material/LavaFluid.java --- a/src/main/java/net/minecraft/world/level/material/LavaFluid.java
+++ b/src/main/java/net/minecraft/world/level/material/LavaFluid.java +++ b/src/main/java/net/minecraft/world/level/material/LavaFluid.java
@@ -198,6 +198,13 @@ public abstract class LavaFluid extends FlowingFluid { @@ -198,6 +198,13 @@ public abstract class LavaFluid extends FlowingFluid {
@@ -41,7 +41,7 @@ index 72f8b72c6436ca3b8eaeb39c7d3efe2c1462ae1d..c0c072898226710f7e2e12b37838f7cf
+ // Purpur start + // Purpur start
+ @Override + @Override
+ protected int getRequiredSources(Level level) { + protected int getRequiredSources(Level level) {
+ return level().purpurConfig.lavaInfiniteRequiredSources; + return level.purpurConfig.lavaInfiniteRequiredSources;
+ } + }
+ // Purpur end + // Purpur end
+ +
@@ -49,7 +49,7 @@ index 72f8b72c6436ca3b8eaeb39c7d3efe2c1462ae1d..c0c072898226710f7e2e12b37838f7cf
protected boolean canConvertToSource(Level world) { protected boolean canConvertToSource(Level world) {
return world.getGameRules().getBoolean(GameRules.RULE_LAVA_SOURCE_CONVERSION); return world.getGameRules().getBoolean(GameRules.RULE_LAVA_SOURCE_CONVERSION);
diff --git a/src/main/java/net/minecraft/world/level/material/WaterFluid.java b/src/main/java/net/minecraft/world/level/material/WaterFluid.java diff --git a/src/main/java/net/minecraft/world/level/material/WaterFluid.java b/src/main/java/net/minecraft/world/level/material/WaterFluid.java
index 82e85fbbd45244d02df90fa00c9046e7f51275a2..472dbf007468c39cfaa74e837e2df1cef9a8d1bf 100644 index 82e85fbbd45244d02df90fa00c9046e7f51275a2..ec6c63075306f9e5389e83641d2c8a82369ddc6b 100644
--- a/src/main/java/net/minecraft/world/level/material/WaterFluid.java --- a/src/main/java/net/minecraft/world/level/material/WaterFluid.java
+++ b/src/main/java/net/minecraft/world/level/material/WaterFluid.java +++ b/src/main/java/net/minecraft/world/level/material/WaterFluid.java
@@ -64,6 +64,13 @@ public abstract class WaterFluid extends FlowingFluid { @@ -64,6 +64,13 @@ public abstract class WaterFluid extends FlowingFluid {
@@ -59,7 +59,7 @@ index 82e85fbbd45244d02df90fa00c9046e7f51275a2..472dbf007468c39cfaa74e837e2df1ce
+ // Purpur start + // Purpur start
+ @Override + @Override
+ protected int getRequiredSources(Level level) { + protected int getRequiredSources(Level level) {
+ return level().purpurConfig.waterInfiniteRequiredSources; + return level.purpurConfig.waterInfiniteRequiredSources;
+ } + }
+ // Purpur end + // Purpur end
+ +
@@ -67,7 +67,7 @@ index 82e85fbbd45244d02df90fa00c9046e7f51275a2..472dbf007468c39cfaa74e837e2df1ce
@Override @Override
protected void beforeDestroyingBlock(LevelAccessor world, BlockPos pos, BlockState state, BlockPos source) { protected void beforeDestroyingBlock(LevelAccessor world, BlockPos pos, BlockState state, BlockPos source) {
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 97710a3988ead1049b35de2a9be89cec738ed149..b99bd530802a3212cc42438b607d1aa46587acef 100644 index 47b1152efa1f5ab2f1a0a4d34be3c8e6644457fb..0124b074f936a4e68b539deb9625d153a076d999 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -227,6 +227,11 @@ public class PurpurWorldConfig { @@ -227,6 +227,11 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add canSaveToDisk to Entity
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index f5ae3d265fa190af4d8205ffa45ce053fe0c7ddc..cfef8dec1a96c97bd087ed6dc55eadae4feae079 100644 index ba7901f72f97275ffac8d30e7b6c39f1f31dad37..0447ed23dd3e09fb887b7d7911846030a4e7fb45 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -473,6 +473,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -473,6 +473,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -20,21 +20,21 @@ index f5ae3d265fa190af4d8205ffa45ce053fe0c7ddc..cfef8dec1a96c97bd087ed6dc55eadae
return this.hardCollides; return this.hardCollides;
} }
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 1fcf73cfe789bfe89c5ac01d4bd260e8d7dc0fc0..0ecbee51a48171cad95cc80bd26644774064fead 100644 index 38800a318f675ab11eeba17cb1966e9a294c69e1..a20017a6086421061ee13df9cf37e08eeb515a5b 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
@@ -314,6 +314,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -229,6 +229,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
vec3d = vec3d.add(vec3d2.x * 0.3D - vec3d.x * 0.6D, 0.0D, vec3d2.z * 0.3D - vec3d.z * 0.6D); skull.setPosRaw(headX, headY, headZ);
} level().addFreshEntity(skull);
} }
+ +
+ @Override + @Override
+ public boolean canSaveToDisk() { + public boolean canSaveToDisk() {
+ return false; + return false;
+ } + }
} // Purpur end
this.setDeltaMovement(vec3d); @Override
diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java
index 0ec0be22f7292d57c40da6f1f4575bdebf8dbd09..f1d19cbe165a190cac325e646c7e8080b59cdd54 100644 index 0ec0be22f7292d57c40da6f1f4575bdebf8dbd09..f1d19cbe165a190cac325e646c7e8080b59cdd54 100644
--- a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java --- a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java
@@ -47,3 +47,39 @@ index 0ec0be22f7292d57c40da6f1f4575bdebf8dbd09..f1d19cbe165a190cac325e646c7e8080
CompoundTag compoundTag = new CompoundTag(); CompoundTag compoundTag = new CompoundTag();
if (entity.save(compoundTag)) { if (entity.save(compoundTag)) {
listTag.add(compoundTag); listTag.add(compoundTag);
diff --git a/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java
index b436fd92e2db17f6a2ee4118a7a51e324b567b46..fe14721ac16e702850a778b7481e306ed4bdfd74 100644
--- a/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java
+++ b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java
@@ -35,6 +35,13 @@ public class DolphinSpit extends LlamaSpit {
dolphin.getZ() + (double) (dolphin.getBbWidth() + 1.0F) * 0.5D * (double) Mth.cos(dolphin.yBodyRot * 0.017453292F));
}
+ // Purpur start
+ @Override
+ public boolean canSaveToDisk() {
+ return false;
+ }
+ // Purpur end
+
public void tick() {
super_tick();
diff --git a/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java
index 1fd6412e332ea8ee82b19c108e113624e51d764b..ea8b928b6d82689e71bbcc39ab497491072dfba6 100644
--- a/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java
+++ b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java
@@ -38,6 +38,13 @@ public class PhantomFlames extends LlamaSpit {
phantom.getZ() + (double) (phantom.getBbWidth() + 1.0F) * 0.5D * (double) Mth.cos(phantom.yBodyRot * 0.017453292F));
}
+ // Purpur start
+ @Override
+ public boolean canSaveToDisk() {
+ return false;
+ }
+ // Purpur end
+
public void tick() {
super_tick();

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add option to teleport to spawn if outside world border
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 b0eab4e73c85e4c18301978daac91a4b862617b0..375a6a12cabfdc798792166a60e3b18e8cbd7480 100644 index c28a819ea5bb93914dda4b94be42506e9492f9f2..14d5af88fb39af6bc6a8461972de3a96ad4f0de8 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
@@ -2758,4 +2758,26 @@ public class ServerPlayer extends Player { @@ -2758,4 +2758,26 @@ public class ServerPlayer extends Player {
@@ -27,7 +27,7 @@ index b0eab4e73c85e4c18301978daac91a4b862617b0..375a6a12cabfdc798792166a60e3b18e
+ } + }
+ +
+ ServerLevel toLevel = ((CraftWorld) to.getWorld()).getHandle(); + ServerLevel toLevel = ((CraftWorld) to.getWorld()).getHandle();
+ if (this.level == toLevel) { + if (this.level() == toLevel) {
+ this.connection.internalTeleport(to.getX(), to.getY(), to.getZ(), to.getYaw(), to.getPitch(), java.util.EnumSet.noneOf(net.minecraft.world.entity.RelativeMovement.class)); + this.connection.internalTeleport(to.getX(), to.getY(), to.getZ(), to.getYaw(), to.getPitch(), java.util.EnumSet.noneOf(net.minecraft.world.entity.RelativeMovement.class));
+ } else { + } else {
+ this.server.getPlayerList().respawn(this, toLevel, true, to, !toLevel.paperConfig().environment.disableTeleportationSuffocationCheck, org.bukkit.event.player.PlayerRespawnEvent.RespawnReason.DEATH); + this.server.getPlayerList().respawn(this, toLevel, true, to, !toLevel.paperConfig().environment.disableTeleportationSuffocationCheck, org.bukkit.event.player.PlayerRespawnEvent.RespawnReason.DEATH);
@@ -36,7 +36,7 @@ index b0eab4e73c85e4c18301978daac91a4b862617b0..375a6a12cabfdc798792166a60e3b18e
+ // Purpur end + // Purpur end
} }
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 7126ce61f58079d924bb86ff9257d75612bcc704..637d90f2f5e9f8807516a757ef82d5b2014c752b 100644 index 851bffca44dce8680a34bd5e862c1c0794806021..20b3b2deae7b72cc16f5e47ad73fab4d9779d047 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
@@ -429,6 +429,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -429,6 +429,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -48,7 +48,7 @@ index 7126ce61f58079d924bb86ff9257d75612bcc704..637d90f2f5e9f8807516a757ef82d5b2
} }
} }
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 f553c681956dc6d93c0bf864d054a25ce6236115..e62c71804a0595574e49cd08ce11eee52eab7479 100644 index 0b3b845ba43c8f78424cd843cf3ac69dda5a5bad..082a97f808aba17b03d67e939e282781a4793cf2 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -246,6 +246,7 @@ public class PurpurWorldConfig { @@ -246,6 +246,7 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Dispensers place anvils option
diff --git a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java diff --git a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java
index b4f5dbe9022dd20437c15c4f6fbe2ac06dacbadb..58ee591dc4c5ae6e02dcff3d49d6a82f68e1ceb7 100644 index b4f5dbe9022dd20437c15c4f6fbe2ac06dacbadb..b52a9f05ada86f2d3767dd0d5ba8705e22f105d6 100644
--- a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java --- a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java
+++ b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java +++ b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java
@@ -52,6 +52,7 @@ import net.minecraft.world.item.SpawnEggItem; @@ -52,6 +52,7 @@ import net.minecraft.world.item.SpawnEggItem;
@@ -25,7 +25,7 @@ index b4f5dbe9022dd20437c15c4f6fbe2ac06dacbadb..58ee591dc4c5ae6e02dcff3d49d6a82f
+ @Override + @Override
+ public ItemStack execute(BlockSource dispenser, ItemStack stack) { + public ItemStack execute(BlockSource dispenser, ItemStack stack) {
+ Level level = dispenser.getLevel(); + Level level = dispenser.getLevel();
+ if (!level().purpurConfig.dispenserPlaceAnvils) return super.execute(dispenser, stack); + if (!level.purpurConfig.dispenserPlaceAnvils) return super.execute(dispenser, stack);
+ Direction facing = dispenser.getBlockState().getValue(DispenserBlock.FACING); + Direction facing = dispenser.getBlockState().getValue(DispenserBlock.FACING);
+ BlockPos pos = dispenser.getPos().relative(facing); + BlockPos pos = dispenser.getPos().relative(facing);
+ BlockState state = level.getBlockState(pos); + BlockState state = level.getBlockState(pos);
@@ -41,7 +41,7 @@ index b4f5dbe9022dd20437c15c4f6fbe2ac06dacbadb..58ee591dc4c5ae6e02dcff3d49d6a82f
static void setEntityPokingOutOfBlock(BlockSource pointer, Entity entity, Direction direction) { static void setEntityPokingOutOfBlock(BlockSource pointer, Entity entity, Direction direction) {
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 66162ef0ed12cd0bc4c705758dbbca19c3952d19..4c04982da44f13600a0410981754ab8fcdad6b7c 100644 index 6fc8425ad4a2053fb7769e7f579d7ae226070511..93b2e578a44132c92cb8152edb49a55f048a03bf 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -321,8 +321,10 @@ public class PurpurWorldConfig { @@ -321,8 +321,10 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Raid cooldown setting
diff --git a/src/main/java/net/minecraft/world/entity/raid/Raids.java b/src/main/java/net/minecraft/world/entity/raid/Raids.java diff --git a/src/main/java/net/minecraft/world/entity/raid/Raids.java b/src/main/java/net/minecraft/world/entity/raid/Raids.java
index 41457c9f27b18fa2734a6cca297ec5186470e82f..aa095686746ecc252b66670ba541cd243b6f7061 100644 index 41457c9f27b18fa2734a6cca297ec5186470e82f..94356e0541f8f4da68211fa533347cc97d4f3518 100644
--- a/src/main/java/net/minecraft/world/entity/raid/Raids.java --- a/src/main/java/net/minecraft/world/entity/raid/Raids.java
+++ b/src/main/java/net/minecraft/world/entity/raid/Raids.java +++ b/src/main/java/net/minecraft/world/entity/raid/Raids.java
@@ -28,6 +28,7 @@ import net.minecraft.world.phys.Vec3; @@ -28,6 +28,7 @@ import net.minecraft.world.phys.Vec3;
@@ -21,7 +21,7 @@ index 41457c9f27b18fa2734a6cca297ec5186470e82f..aa095686746ecc252b66670ba541cd24
public void tick() { public void tick() {
++this.tick; ++this.tick;
+ // Purpur start + // Purpur start
+ if (level().purpurConfig.raidCooldownSeconds != 0 && this.tick % 20 == 0) { + if (level.purpurConfig.raidCooldownSeconds != 0 && this.tick % 20 == 0) {
+ com.google.common.collect.ImmutableMap.copyOf(playerCooldowns).forEach((uuid, i) -> { + com.google.common.collect.ImmutableMap.copyOf(playerCooldowns).forEach((uuid, i) -> {
+ if (i < 1) { + if (i < 1) {
+ playerCooldowns.remove(uuid); + playerCooldowns.remove(uuid);
@@ -38,18 +38,18 @@ index 41457c9f27b18fa2734a6cca297ec5186470e82f..aa095686746ecc252b66670ba541cd24
} }
if (flag) { if (flag) {
+ if (level().purpurConfig.raidCooldownSeconds != 0 && playerCooldowns.containsKey(player.getUUID())) return null; // Purpur + if (level.purpurConfig.raidCooldownSeconds != 0 && playerCooldowns.containsKey(player.getUUID())) return null; // Purpur
// CraftBukkit start // CraftBukkit start
if (!org.bukkit.craftbukkit.event.CraftEventFactory.callRaidTriggerEvent(raid, player)) { if (!org.bukkit.craftbukkit.event.CraftEventFactory.callRaidTriggerEvent(raid, player)) {
player.removeEffect(MobEffects.BAD_OMEN); player.removeEffect(MobEffects.BAD_OMEN);
return null; return null;
} }
+ if (level().purpurConfig.raidCooldownSeconds != 0) playerCooldowns.put(player.getUUID(), level().purpurConfig.raidCooldownSeconds); // Purpur + if (level.purpurConfig.raidCooldownSeconds != 0) playerCooldowns.put(player.getUUID(), level.purpurConfig.raidCooldownSeconds); // Purpur
if (!this.raidMap.containsKey(raid.getId())) { if (!this.raidMap.containsKey(raid.getId())) {
this.raidMap.put(raid.getId(), raid); this.raidMap.put(raid.getId(), raid);
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 8eed1a2de61066137c8f7404e9156b0c204b4581..917ea564edcf27b727901028f5035a6caddfb08e 100644 index c97375f60d10121f738f0f162b15c3f25d7d0eeb..7ae9b221c851139be2e289a5baca644b7d19a8c5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -111,6 +111,7 @@ public class PurpurWorldConfig { @@ -111,6 +111,7 @@ public class PurpurWorldConfig {

View File

@@ -18,7 +18,7 @@ index 9ec6145fe04ec64bbee8ec6a837719caebdbc6f5..358d610ad020cada1bb83e393deeeaae
public ClientboundSetTimePacket(long time, long timeOfDay, boolean doDaylightCycle) { public ClientboundSetTimePacket(long time, long timeOfDay, boolean doDaylightCycle) {
this.gameTime = time; this.gameTime = time;
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 6e5bfabe11da547f28b1d56e5a279ae5d9bb3c54..1b24b67437b1a677bbd6ea30b32c703fd7eda2a2 100644 index 6e5bfabe11da547f28b1d56e5a279ae5d9bb3c54..12a5a8c06dc636fbd5008b8f71d05cfae00a52c2 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
@@ -1519,7 +1519,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1519,7 +1519,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -26,7 +26,7 @@ index 6e5bfabe11da547f28b1d56e5a279ae5d9bb3c54..1b24b67437b1a677bbd6ea30b32c703f
final ClientboundSetTimePacket worldPacket = new ClientboundSetTimePacket(worldTime, dayTime, doDaylight); final ClientboundSetTimePacket worldPacket = new ClientboundSetTimePacket(worldTime, dayTime, doDaylight);
for (Player entityhuman : level.players()) { for (Player entityhuman : level.players()) {
- if (!(entityhuman instanceof ServerPlayer) || (tickCount + entityhuman.getId()) % 20 != 0) { - if (!(entityhuman instanceof ServerPlayer) || (tickCount + entityhuman.getId()) % 20 != 0) {
+ if (!(entityhuman instanceof ServerPlayer) || (!world.isForceTime() && (tickCount + entityhuman.getId()) % 20 != 0)) { // Purpur + if (!(entityhuman instanceof ServerPlayer) || (!level.isForceTime() && (tickCount + entityhuman.getId()) % 20 != 0)) { // Purpur
continue; continue;
} }
ServerPlayer entityplayer = (ServerPlayer) entityhuman; ServerPlayer entityplayer = (ServerPlayer) entityhuman;
@@ -88,7 +88,7 @@ index 854e6e73a7fa9c2cd4f0b9beadbff6427c8346e5..3b512beac50bc5a2405ca3287b08e7ff
public void tickCustomSpawners(boolean spawnMonsters, boolean spawnAnimals) { public void tickCustomSpawners(boolean spawnMonsters, boolean spawnAnimals) {
Iterator iterator = this.customSpawners.iterator(); Iterator iterator = this.customSpawners.iterator();
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 1e92e006241e6e8d189081232d2430cfd590586d..88567bc4f504b00bec3841da194a0bd17abf9ce7 100644 index 471ccc46f2e33c68e91553d6cee76be323d20aee..af8aa98460e0fe8d9265087ebc3b6627cefde08e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -124,6 +124,13 @@ public class PurpurWorldConfig { @@ -124,6 +124,13 @@ public class PurpurWorldConfig {

View File

@@ -7,7 +7,7 @@ Configurable chance to spawn a wolf that is rabid.
Rabid wolves attack all players, mobs, and animals. Rabid wolves attack all players, mobs, and animals.
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 074f1860e755348a5a3a8e9df383896656cee9af..563347f7b683d796f7d3575206d40656247a897c 100644 index 074f1860e755348a5a3a8e9df383896656cee9af..aa484d03ed31f6c60c0b4456a4047bc38a40ea4a 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
@@ -10,6 +10,7 @@ import net.minecraft.network.syncher.EntityDataAccessor; @@ -10,6 +10,7 @@ import net.minecraft.network.syncher.EntityDataAccessor;
@@ -179,27 +179,26 @@ index 074f1860e755348a5a3a8e9df383896656cee9af..563347f7b683d796f7d3575206d40656
this.interestedAngleO = this.interestedAngle; this.interestedAngleO = this.interestedAngle;
if (this.isInterested()) { if (this.isInterested()) {
this.interestedAngle += (1.0F - this.interestedAngle) * 0.4F; this.interestedAngle += (1.0F - this.interestedAngle) * 0.4F;
@@ -461,6 +541,20 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -463,6 +543,19 @@ public class Wolf extends TamableAnimal implements NeutralMob {
} else {
this.level().broadcastEntityEvent(this, (byte) 6);
} }
+ // Purpur start
+ else if (this.level().purpurConfig.wolfMilkCuresRabies && itemstack.getItem() == Items.MILK_BUCKET && this.isRabid()) {
+ if (!player.isCreative()) {
+ player.setItemInHand(hand, new ItemStack(Items.BUCKET));
+ }
+ this.setRabid(false);
+ for (int i = 0; i < 10; ++i) {
+ ((ServerLevel) level).sendParticles(((ServerLevel) level).players(), null, ParticleTypes.HAPPY_VILLAGER,
+ getX() + random.nextFloat(), getY() + (random.nextFloat() * 1.5), getZ() + random.nextFloat(), 1,
+ random.nextGaussian() * 0.05D, random.nextGaussian() * 0.05D, random.nextGaussian() * 0.05D, 0, true);
+ }
+ return InteractionResult.SUCCESS;
+ }
+ // Purpur end
return InteractionResult.SUCCESS; return InteractionResult.SUCCESS;
+ // Purpur start
+ } else if (this.level().purpurConfig.wolfMilkCuresRabies && itemstack.getItem() == Items.MILK_BUCKET && this.isRabid()) {
+ if (!player.isCreative()) {
+ player.setItemInHand(hand, new ItemStack(Items.BUCKET));
+ }
+ this.setRabid(false);
+ for (int i = 0; i < 10; ++i) {
+ ((ServerLevel) level()).sendParticles(((ServerLevel) level()).players(), null, ParticleTypes.HAPPY_VILLAGER,
+ getX() + random.nextFloat(), getY() + (random.nextFloat() * 1.5), getZ() + random.nextFloat(), 1,
+ random.nextGaussian() * 0.05D, random.nextGaussian() * 0.05D, random.nextGaussian() * 0.05D, 0, true);
+ }
+ return InteractionResult.SUCCESS;
+ // Purpur end
} else { } else {
return super.mobInteract(player, hand);
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java
index e43fd3e59fd8c74828ae65965fade27f56beef65..b2f133c8baabba1cffa6e92ea0f854532f4c181b 100644 index e43fd3e59fd8c74828ae65965fade27f56beef65..b2f133c8baabba1cffa6e92ea0f854532f4c181b 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java
@@ -222,7 +221,7 @@ index e43fd3e59fd8c74828ae65965fade27f56beef65..b2f133c8baabba1cffa6e92ea0f85453
+ // Purpur end + // Purpur end
} }
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 b29c4380dc2bc7c0aab0e47b5714f14883e7a919..f9a21e10b3d9faf9d7890ea3ca1c7fd3e1ccc03c 100644 index 436e09a655f5fa7eb69d00cb4c68b6b9d9b9106d..37b6e2de8be125d2e2dc9649af6114a5fab5f66c 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1929,6 +1929,8 @@ public class PurpurWorldConfig { @@ -1929,6 +1929,8 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Full netherite armor grants fire resistance
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 fa2a0cc24bbe31abd49ce0f3f41bab2aa5d9c81f..ca16f896ede5cfb957849ef3ad1f90f6518659dc 100644 index fa2a0cc24bbe31abd49ce0f3f41bab2aa5d9c81f..04e816f01db7d2de7ffa9bbaaa72daadaab34831 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
@@ -366,6 +366,16 @@ public abstract class Player extends LivingEntity { @@ -366,6 +366,16 @@ public abstract class Player extends LivingEntity {
@@ -13,7 +13,7 @@ index fa2a0cc24bbe31abd49ce0f3f41bab2aa5d9c81f..ca16f896ede5cfb957849ef3ad1f90f6
} }
+ // Purpur start + // Purpur start
+ if (this.level().purpurConfig.playerNetheriteFireResistanceDuration > 0 && this.level.getGameTime() % 20 == 0) { + if (this.level().purpurConfig.playerNetheriteFireResistanceDuration > 0 && this.level().getGameTime() % 20 == 0) {
+ if (itemstack.is(Items.NETHERITE_HELMET) + if (itemstack.is(Items.NETHERITE_HELMET)
+ && this.getItemBySlot(EquipmentSlot.CHEST).is(Items.NETHERITE_CHESTPLATE) + && this.getItemBySlot(EquipmentSlot.CHEST).is(Items.NETHERITE_CHESTPLATE)
+ && this.getItemBySlot(EquipmentSlot.LEGS).is(Items.NETHERITE_LEGGINGS) + && this.getItemBySlot(EquipmentSlot.LEGS).is(Items.NETHERITE_LEGGINGS)
@@ -26,7 +26,7 @@ index fa2a0cc24bbe31abd49ce0f3f41bab2aa5d9c81f..ca16f896ede5cfb957849ef3ad1f90f6
protected ItemCooldowns createItemCooldowns() { protected ItemCooldowns createItemCooldowns() {
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 b3697cffbf9e0ef637c547167b5b9091a3b9bf40..63b8d72db812f29fbd82bc62fd21d0d53413bd79 100644 index bc897dce38ab2baf33e23239fa908e025a7641bb..c471635681dd4a2da85568fb214d997ba1724556 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -297,6 +297,19 @@ public class PurpurWorldConfig { @@ -297,6 +297,19 @@ public class PurpurWorldConfig {

View File

@@ -18,7 +18,7 @@ index 27df4e881e850a73947651ce7ad98df5159f4c1c..182436020d2376101f5863f80b4b6d3d
BlockState iblockdata = Blocks.WITHER_ROSE.defaultBlockState(); BlockState iblockdata = Blocks.WITHER_ROSE.defaultBlockState();
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
index 0bdd8bcb37a899c1a4191ba13c0922f3385f020f..b0ce2885a304cb15964a1d3bf047c49f95ab594d 100644 index c8e394ebd6d2393ef77b95d6f20fcbf6040a1dc5..16bb50d154622073d017fa350ec4610c1de7046e 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java --- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -701,7 +701,7 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -701,7 +701,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
@@ -57,7 +57,7 @@ index 4253b3b1263a7ae5a2f5f3a34674dfea615a81ea..a987c94fd321f51241c405659d6a0b23
@Override @Override
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java
index abf796c3369da6b73c8587dfc05f56d0b8933fde..f169bb0ca0d1f7bd1507436beca806a790d6b7d2 100644 index abf796c3369da6b73c8587dfc05f56d0b8933fde..95dc62687d10e5c6f54baadda4a725094c52c07f 100644
--- a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java --- a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java
@@ -69,7 +69,7 @@ public class EatBlockGoal extends Goal { @@ -69,7 +69,7 @@ public class EatBlockGoal extends Goal {
@@ -65,7 +65,7 @@ index abf796c3369da6b73c8587dfc05f56d0b8933fde..f169bb0ca0d1f7bd1507436beca806a7
if (EatBlockGoal.IS_TALL_GRASS.test(this.level.getBlockState(blockposition))) { if (EatBlockGoal.IS_TALL_GRASS.test(this.level.getBlockState(blockposition))) {
// CraftBukkit // CraftBukkit
- if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition, Blocks.AIR.defaultBlockState(), !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { - if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition, Blocks.AIR.defaultBlockState(), !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) {
+ if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition, Blocks.AIR.defaultBlockState(), !this.level().purpurConfig.sheepBypassMobGriefing && !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { // Purpur + if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition, Blocks.AIR.defaultBlockState(), !this.level.purpurConfig.sheepBypassMobGriefing && !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { // Purpur
this.level.destroyBlock(blockposition, false); this.level.destroyBlock(blockposition, false);
} }
@@ -74,7 +74,7 @@ index abf796c3369da6b73c8587dfc05f56d0b8933fde..f169bb0ca0d1f7bd1507436beca806a7
if (this.level.getBlockState(blockposition1).is(Blocks.GRASS_BLOCK)) { if (this.level.getBlockState(blockposition1).is(Blocks.GRASS_BLOCK)) {
// CraftBukkit // CraftBukkit
- if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition1, Blocks.DIRT.defaultBlockState(), !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { // Paper - Fix wrong block state - if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition1, Blocks.DIRT.defaultBlockState(), !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { // Paper - Fix wrong block state
+ if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition1, Blocks.DIRT.defaultBlockState(), !this.level().purpurConfig.sheepBypassMobGriefing && !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { // Paper - Fix wrong block state // Purpur + if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition1, Blocks.DIRT.defaultBlockState(), !this.level.purpurConfig.sheepBypassMobGriefing && !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { // Paper - Fix wrong block state // Purpur
this.level.levelEvent(2001, blockposition1, Block.getId(Blocks.GRASS_BLOCK.defaultBlockState())); this.level.levelEvent(2001, blockposition1, Block.getId(Blocks.GRASS_BLOCK.defaultBlockState()));
this.level.setBlock(blockposition1, Blocks.DIRT.defaultBlockState(), 2); this.level.setBlock(blockposition1, Blocks.DIRT.defaultBlockState(), 2);
} }
@@ -105,7 +105,7 @@ index 989dc460d8a21b8e54ff4464998c2b02a6a9dd37..aa190c36d32aef0413e6bf89621fa9b4
if (iblockdata.is(Blocks.SWEET_BERRY_BUSH)) { if (iblockdata.is(Blocks.SWEET_BERRY_BUSH)) {
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 c21d48eb213dac6c932edfe7c4161e76510450a4..c5de6e469030615d9afc64f24cc50f901a557840 100644 index 5443affd9dd8d27e32768c2df5a624b5cd7b1bec..e66a3860e4a14a5a50e95eb53ff67e8d6e6f0db7 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
@@ -637,7 +637,7 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> { @@ -637,7 +637,7 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
@@ -144,7 +144,7 @@ index 81cf89bc57af0f43d05ba93256255155bf0c4d53..2b0aac1e4291549efa6391cb3b414921
// flag1 = this.level().removeBlock(blockposition, false) || flag1; // flag1 = this.level().removeBlock(blockposition, false) || flag1;
flag1 = true; flag1 = true;
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 b39a7dfb910e99f04275fa8e246581f5ccc27afa..f68f330e5a36f1c3cbf956a39b5b2886e30a37d2 100644 index c2f4ae412684cc2f8d3cc2206003be5c9e3b2769..d5f0636053fa0ed246ae2413a5b04f7016cb8b77 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
@@ -496,7 +496,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -496,7 +496,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob

View File

@@ -30,7 +30,7 @@ index 68233db015138b0a615a65eac8c11afc42f7a1c6..8c2327fa0af4c2148cf6bab7f5960f81
if (entity instanceof Boat) { if (entity instanceof Boat) {
diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
index 9eb196ee4061bb4c5713f33e8b16d91ec52711cd..59257815c1a3ec30e2c00f63a557c0555db77ef2 100644 index 9eb196ee4061bb4c5713f33e8b16d91ec52711cd..ffb3ae1d36dda5f521cf3b292d819cb354844806 100644
--- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
+++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
@@ -99,10 +99,12 @@ public class ArmorStand extends LivingEntity { @@ -99,10 +99,12 @@ public class ArmorStand extends LivingEntity {
@@ -55,7 +55,7 @@ index 9eb196ee4061bb4c5713f33e8b16d91ec52711cd..59257815c1a3ec30e2c00f63a557c055
+ @Override + @Override
+ public void updateInWaterStateAndDoWaterCurrentPushing() { + public void updateInWaterStateAndDoWaterCurrentPushing() {
+ if (this.level().purpurConfig.armorstandWaterMovement && + if (this.level().purpurConfig.armorstandWaterMovement &&
+ (this.level().purpurConfig.armorstandWaterFence || !(level.getBlockState(blockPosition().below()).getBlock() instanceof net.minecraft.world.level.block.FenceBlock))) + (this.level().purpurConfig.armorstandWaterFence || !(level().getBlockState(blockPosition().below()).getBlock() instanceof net.minecraft.world.level.block.FenceBlock)))
+ super.updateInWaterStateAndDoWaterCurrentPushing(); + super.updateInWaterStateAndDoWaterCurrentPushing();
+ } + }
+ +
@@ -66,7 +66,7 @@ index 9eb196ee4061bb4c5713f33e8b16d91ec52711cd..59257815c1a3ec30e2c00f63a557c055
+ // Purpur end + // Purpur end
} }
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 9e10f9f5299f0e56ccc50692e11f20605182a2c4..4b8514a938a9029ab9b1af8698beb12e1b33e039 100644 index 2ce13a7437dd7e879bb237e012c15159703b472a..b7c72e3cf37c99ca991138eef07479ac06a731b3 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -101,10 +101,16 @@ public class PurpurWorldConfig { @@ -101,10 +101,16 @@ public class PurpurWorldConfig {

View File

@@ -21,7 +21,7 @@ index b1ba0f24dd6f1ec4c60208564e4eb84bdcd457f4..1a67f46b57e398d23fbc495ee81ae62e
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 0dc811f18724d3142561c0dddf840dbbb28bb12e..81bf59b7b41835dc034f2880c8eac89ff396b695 100644 index 45297abb703c82f13cc206896758458afcfb3b51..98221b38722e5cc009b12c1bc57fd63dc9418706 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
@@ -290,6 +290,11 @@ public class Bat extends AmbientCreature { @@ -290,6 +290,11 @@ public class Bat extends AmbientCreature {
@@ -110,7 +110,7 @@ index 3d61c2d5da103de68242c16d85c703813979d179..2343325fa9a771de7b9445cda24a2bcd
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 1d17a9fcf80278779703e5cdd390ef0e52f9e437..008ce5fed911484b6207eb711f5d1dfcc6348984 100644 index 371cab208ee0a31a90248272f88249eceaf9eb59..c6e5278641fb4a246a8df988fdf5068a044e2c4e 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
@@ -70,6 +70,11 @@ public class Cow extends Animal { @@ -70,6 +70,11 @@ public class Cow extends Animal {
@@ -126,7 +126,7 @@ index 1d17a9fcf80278779703e5cdd390ef0e52f9e437..008ce5fed911484b6207eb711f5d1dfc
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 c9bc4eec14f40a31dbbe928f14277b12044c3089..d7f1a0ddad919fe87be29c16d6ef442cb5692fde 100644 index 7b2674233d0b8582243448c49d1c47271544d0b8..6006b9c996a8070336c4471f2a915d70c6371c76 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
@@ -159,6 +159,11 @@ public class Dolphin extends WaterAnimal { @@ -159,6 +159,11 @@ public class Dolphin extends WaterAnimal {
@@ -286,7 +286,7 @@ index 8b5bf8ef4481ccc829d1a39c0921941581b2f045..ef3d0bbbeb6aa736f35c26066a1473c7
protected void defineSynchedData() { protected void defineSynchedData() {
super.defineSynchedData(); super.defineSynchedData();
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 c5de6e469030615d9afc64f24cc50f901a557840..5e935f0b8980a65eb139b9b17fe4f969018b48b2 100644 index e66a3860e4a14a5a50e95eb53ff67e8d6e6f0db7..a91cef9b519b9d7330c40de9988f0463ce8aa20b 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
@@ -147,6 +147,11 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> { @@ -147,6 +147,11 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
@@ -395,7 +395,7 @@ index c04e77f8c5c1c8c038a9c8f76546b683691c6b2a..5c2fc833dac13dd8b959f035abb74432
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 6b270c1aa37096443701d7f4fbdab006afe2556c..4cd58a67c0af8019e802812c1e2ff893591d4c5f 100644 index 89627025c0b5464900a5ea818c7aaf5d676f7a5f..0ab3e4a854fd1c5369fc734981d16fa6b844807f 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
@@ -209,6 +209,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -209,6 +209,11 @@ public class Wolf extends TamableAnimal implements NeutralMob {
@@ -571,7 +571,7 @@ index 2b0aac1e4291549efa6391cb3b41492184c9aeda..f90b0ae4678da2ffa7d0a693003e0519
return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0D); return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0D);
} }
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 f68f330e5a36f1c3cbf956a39b5b2886e30a37d2..17e44da8b4419ae19f0205e7208b450e68607c79 100644 index d5f0636053fa0ed246ae2413a5b04f7016cb8b77..94027ef3f833c7170a99a8437740b7f99f30ab81 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
@@ -117,6 +117,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -117,6 +117,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@@ -743,21 +743,21 @@ index 61068ae356a9ffc26c5fabc0b2561fda9540ff94..ab6bfdb50ee1bb13a213a2093287f5c2
protected void defineSynchedData() { protected void defineSynchedData() {
super.defineSynchedData(); super.defineSynchedData();
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 29491be5f607477acd336fcff8cc472ad740ed50..494439d60138f1b7bfe5d596c9ab97321400e4b4 100644 index 12e27b36b3f9949eb644175dd346c487277b2d39..6340d8641770110d61dc9337942bc233e6fb49c6 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
@@ -61,6 +61,11 @@ public class Giant extends Monster { @@ -74,6 +74,11 @@ public class Giant extends Monster {
}
}
} }
// Purpur end +
+ @Override + @Override
+ public boolean isSensitiveToWater() { + public boolean isSensitiveToWater() {
+ return this.level().purpurConfig.giantTakeDamageFromWater; + return this.level().purpurConfig.giantTakeDamageFromWater;
+ } + }
+ // 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 b3a8e98c6c094654a283387d5bf78fc9db93a85a..41b080c1fd44c93009908fcfd20180e0d11fca8a 100644 index b3a8e98c6c094654a283387d5bf78fc9db93a85a..41b080c1fd44c93009908fcfd20180e0d11fca8a 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Guardian.java --- a/src/main/java/net/minecraft/world/entity/monster/Guardian.java
@@ -823,7 +823,7 @@ index b472309f97b24f1d7b97d8b6d464c479c2d602d5..e0ebc4c2d8dd718ce78d981a1d099e74
return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, (double)0.2F); return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, (double)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 a9a942896dd428cd974970cac16857c27d08a7ec..6ae67916366ebdc5eed859c4c821e852781c5441 100644 index f1dfda45fc0e44a4e92b3e2f01718e9ef5c7fc06..c2d708f4f7b0fa340dc159c50fc9883b7c49ff67 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
@@ -119,6 +119,11 @@ public class Phantom extends FlyingMob implements Enemy { @@ -119,6 +119,11 @@ public class Phantom extends FlyingMob implements Enemy {

View File

@@ -17,7 +17,7 @@ index 2a923b575fa2e3393f6f667e2ce8adf38fc03afe..2a18d9b7ab5d28458e53ccad29edc6f9
// CraftBukkit end // CraftBukkit end
diff --git a/src/main/java/net/minecraft/world/level/block/SlabBlock.java b/src/main/java/net/minecraft/world/level/block/SlabBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/SlabBlock.java b/src/main/java/net/minecraft/world/level/block/SlabBlock.java
index 18b603d646081926343dea108b55d641df1c2c34..03ad3e45fc6d48091ac0c0ba5dc3d014b1d4ddfa 100644 index 18b603d646081926343dea108b55d641df1c2c34..370772b1297b78bcc7419684015830a87c4d9a17 100644
--- a/src/main/java/net/minecraft/world/level/block/SlabBlock.java --- a/src/main/java/net/minecraft/world/level/block/SlabBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/SlabBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SlabBlock.java
@@ -130,4 +130,25 @@ public class SlabBlock extends Block implements SimpleWaterloggedBlock { @@ -130,4 +130,25 @@ public class SlabBlock extends Block implements SimpleWaterloggedBlock {
@@ -36,18 +36,18 @@ index 18b603d646081926343dea108b55d641df1c2c34..03ad3e45fc6d48091ac0c0ba5dc3d014
+ } + }
+ double hitY = result.getLocation().y(); + double hitY = result.getLocation().y();
+ int blockY = org.bukkit.util.NumberConversions.floor(hitY); + int blockY = org.bukkit.util.NumberConversions.floor(hitY);
+ player.level.setBlock(pos, state.setValue(SlabBlock.TYPE, (hitY - blockY > 0.5 || blockY - pos.getY() == 1) ? SlabType.BOTTOM : SlabType.TOP), 3); + player.level().setBlock(pos, state.setValue(SlabBlock.TYPE, (hitY - blockY > 0.5 || blockY - pos.getY() == 1) ? SlabType.BOTTOM : SlabType.TOP), 3);
+ if (!player.getAbilities().instabuild) { + if (!player.getAbilities().instabuild) {
+ net.minecraft.world.entity.item.ItemEntity item = new net.minecraft.world.entity.item.ItemEntity(player.level, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(asItem())); + net.minecraft.world.entity.item.ItemEntity item = new net.minecraft.world.entity.item.ItemEntity(player.level(), pos.getX(), pos.getY(), pos.getZ(), new ItemStack(asItem()));
+ item.setDefaultPickUpDelay(); + item.setDefaultPickUpDelay();
+ player.level.addFreshEntity(item); + player.level().addFreshEntity(item);
+ } + }
+ return true; + return true;
+ } + }
+ // Purpur end + // Purpur end
} }
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 60841d2da5b3ad0912fb7931d238afa4a574dfc3..ddfa196494b8e4d61dcaf064cc1fd97127638dc7 100644 index 0b3c5a3bf1b9d784b20a5a0fa2cefda22b92dab5..99e1b77a0160507022af41168853fd993fcd2ba4 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -606,6 +606,11 @@ public class PurpurWorldConfig { @@ -606,6 +606,11 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Option to make doors require redstone
diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java b/src/main/java/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java b/src/main/java/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java
index 42ae4d293a420f0b8eb476df6389b2e7a693895f..fa1a2483c24d95ca03c269cde68c335e248810c9 100644 index 42ae4d293a420f0b8eb476df6389b2e7a693895f..97c20c5b89e6d7e4ed844eff39ee55dfa8988d37 100644
--- a/src/main/java/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java --- a/src/main/java/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java
+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java
@@ -57,7 +57,7 @@ public class InteractWithDoor { @@ -57,7 +57,7 @@ public class InteractWithDoor {
@@ -13,7 +13,7 @@ index 42ae4d293a420f0b8eb476df6389b2e7a693895f..fa1a2483c24d95ca03c269cde68c335e
if (iblockdata.is(BlockTags.WOODEN_DOORS, (blockbase_blockdata) -> { if (iblockdata.is(BlockTags.WOODEN_DOORS, (blockbase_blockdata) -> {
return blockbase_blockdata.getBlock() instanceof DoorBlock; return blockbase_blockdata.getBlock() instanceof DoorBlock;
- })) { - })) {
+ }) && !DoorBlock.requiresRedstone(entityliving.level, iblockdata, blockposition)) { // Purpur + }) && !DoorBlock.requiresRedstone(entityliving.level(), iblockdata, blockposition)) { // Purpur
DoorBlock blockdoor = (DoorBlock) iblockdata.getBlock(); DoorBlock blockdoor = (DoorBlock) iblockdata.getBlock();
if (!blockdoor.isOpen(iblockdata)) { if (!blockdoor.isOpen(iblockdata)) {
@@ -22,7 +22,7 @@ index 42ae4d293a420f0b8eb476df6389b2e7a693895f..fa1a2483c24d95ca03c269cde68c335e
if (iblockdata1.is(BlockTags.WOODEN_DOORS, (blockbase_blockdata) -> { if (iblockdata1.is(BlockTags.WOODEN_DOORS, (blockbase_blockdata) -> {
return blockbase_blockdata.getBlock() instanceof DoorBlock; return blockbase_blockdata.getBlock() instanceof DoorBlock;
- })) { - })) {
+ }) && !DoorBlock.requiresRedstone(entityliving.level, iblockdata, blockposition1)) { // Purpur + }) && !DoorBlock.requiresRedstone(entityliving.level(), iblockdata, blockposition1)) { // Purpur
DoorBlock blockdoor1 = (DoorBlock) iblockdata1.getBlock(); DoorBlock blockdoor1 = (DoorBlock) iblockdata1.getBlock();
if (!blockdoor1.isOpen(iblockdata1)) { if (!blockdoor1.isOpen(iblockdata1)) {
@@ -31,12 +31,12 @@ index 42ae4d293a420f0b8eb476df6389b2e7a693895f..fa1a2483c24d95ca03c269cde68c335e
if (!iblockdata.is(BlockTags.WOODEN_DOORS, (blockbase_blockdata) -> { if (!iblockdata.is(BlockTags.WOODEN_DOORS, (blockbase_blockdata) -> {
return blockbase_blockdata.getBlock() instanceof DoorBlock; return blockbase_blockdata.getBlock() instanceof DoorBlock;
- })) { - })) {
+ }) || DoorBlock.requiresRedstone(entity.level, iblockdata, blockposition)) { // Purpur + }) || DoorBlock.requiresRedstone(entity.level(), iblockdata, blockposition)) { // Purpur
iterator.remove(); iterator.remove();
} else { } else {
DoorBlock blockdoor = (DoorBlock) iblockdata.getBlock(); DoorBlock blockdoor = (DoorBlock) iblockdata.getBlock();
diff --git a/src/main/java/net/minecraft/world/level/block/DoorBlock.java b/src/main/java/net/minecraft/world/level/block/DoorBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/DoorBlock.java b/src/main/java/net/minecraft/world/level/block/DoorBlock.java
index c028a7158e41a0754abb8e24dcd647633fbf3fe8..bfd90aa35dce7f8843f7331907a446332db5fade 100644 index c028a7158e41a0754abb8e24dcd647633fbf3fe8..cd65d32f4af016d4937e598c71386a3072f4c490 100644
--- a/src/main/java/net/minecraft/world/level/block/DoorBlock.java --- a/src/main/java/net/minecraft/world/level/block/DoorBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/DoorBlock.java +++ b/src/main/java/net/minecraft/world/level/block/DoorBlock.java
@@ -167,6 +167,7 @@ public class DoorBlock extends Block { @@ -167,6 +167,7 @@ public class DoorBlock extends Block {
@@ -54,7 +54,7 @@ index c028a7158e41a0754abb8e24dcd647633fbf3fe8..bfd90aa35dce7f8843f7331907a44633
+ +
+ // Purpur start + // Purpur start
+ public static boolean requiresRedstone(Level level, BlockState state, BlockPos pos) { + public static boolean requiresRedstone(Level level, BlockState state, BlockPos pos) {
+ if (level().purpurConfig.doorRequiresRedstone.contains(state.getBlock())) { + if (level.purpurConfig.doorRequiresRedstone.contains(state.getBlock())) {
+ // force update client + // force update client
+ BlockPos otherPos = pos.relative(state.getValue(DoorBlock.HALF) == DoubleBlockHalf.LOWER ? Direction.UP : Direction.DOWN); + BlockPos otherPos = pos.relative(state.getValue(DoorBlock.HALF) == DoubleBlockHalf.LOWER ? Direction.UP : Direction.DOWN);
+ BlockState otherState = level.getBlockState(otherPos); + BlockState otherState = level.getBlockState(otherPos);
@@ -67,7 +67,7 @@ index c028a7158e41a0754abb8e24dcd647633fbf3fe8..bfd90aa35dce7f8843f7331907a44633
+ // Purpur end + // Purpur end
} }
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 e3ee434dcca8edafcca3c8f9a28349dccad23617..c0485f0fc5ec96ff709d95c0b5981e6d7e8d6c6f 100644 index 76a7627d45da058437aa397161a3a6d2276bb631..e6a80597801bd0633c880b4470cda6bbec788646 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -510,6 +510,16 @@ public class PurpurWorldConfig { @@ -510,6 +510,16 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Config for changing the blocks that turn into dirt paths
diff --git a/src/main/java/net/minecraft/world/item/ShovelItem.java b/src/main/java/net/minecraft/world/item/ShovelItem.java diff --git a/src/main/java/net/minecraft/world/item/ShovelItem.java b/src/main/java/net/minecraft/world/item/ShovelItem.java
index c7195f2e12bbd6545f7bffcc2b4ba5cc3d48df20..0f4ad7d12b2a3beb7f013c64da3ab4f0ef2c535e 100644 index c7195f2e12bbd6545f7bffcc2b4ba5cc3d48df20..5e730bc9c8ff94b16ac2bf8567dda8aea2ee4b2a 100644
--- a/src/main/java/net/minecraft/world/item/ShovelItem.java --- a/src/main/java/net/minecraft/world/item/ShovelItem.java
+++ b/src/main/java/net/minecraft/world/item/ShovelItem.java +++ b/src/main/java/net/minecraft/world/item/ShovelItem.java
@@ -34,7 +34,7 @@ public class ShovelItem extends DiggerItem { @@ -34,7 +34,7 @@ public class ShovelItem extends DiggerItem {
@@ -13,12 +13,12 @@ index c7195f2e12bbd6545f7bffcc2b4ba5cc3d48df20..0f4ad7d12b2a3beb7f013c64da3ab4f0
} else { } else {
Player player = context.getPlayer(); Player player = context.getPlayer();
- BlockState blockState2 = FLATTENABLES.get(blockState.getBlock()); - BlockState blockState2 = FLATTENABLES.get(blockState.getBlock());
+ BlockState blockState2 = level().purpurConfig.shovelTurnsBlockToGrassPath.contains(blockState.getBlock()) ? Blocks.DIRT_PATH.defaultBlockState() : null; // Purpur + BlockState blockState2 = level.purpurConfig.shovelTurnsBlockToGrassPath.contains(blockState.getBlock()) ? Blocks.DIRT_PATH.defaultBlockState() : null; // Purpur
BlockState blockState3 = null; BlockState blockState3 = null;
Runnable afterAction = null; // Paper Runnable afterAction = null; // Paper
if (blockState2 != null && level.getBlockState(blockPos.above()).isAir()) { if (blockState2 != null && level.getBlockState(blockPos.above()).isAir()) {
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 dbfe6549a0fcc6acd7b1ffb6385dc228b834ab8b..4d8696198ad30f283e91bec76d392d6a825aaeb0 100644 index 3243cf715d7f8a7d871d61a1308d09e8c543f8a3..6cb6d57c374cc11c9624d721e7309004852e1a6a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -450,6 +450,21 @@ public class PurpurWorldConfig { @@ -450,6 +450,21 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Configurable piston push limit
diff --git a/src/main/java/net/minecraft/world/level/block/piston/PistonStructureResolver.java b/src/main/java/net/minecraft/world/level/block/piston/PistonStructureResolver.java diff --git a/src/main/java/net/minecraft/world/level/block/piston/PistonStructureResolver.java b/src/main/java/net/minecraft/world/level/block/piston/PistonStructureResolver.java
index 744d91546d1a810f60a43c15ed74b4158f341a4a..943bb156bfc215fee1e2a4a65c88ff37208f9044 100644 index 744d91546d1a810f60a43c15ed74b4158f341a4a..354538daefa603f6df5a139b6bff87dbb4cef178 100644
--- a/src/main/java/net/minecraft/world/level/block/piston/PistonStructureResolver.java --- a/src/main/java/net/minecraft/world/level/block/piston/PistonStructureResolver.java
+++ b/src/main/java/net/minecraft/world/level/block/piston/PistonStructureResolver.java +++ b/src/main/java/net/minecraft/world/level/block/piston/PistonStructureResolver.java
@@ -86,7 +86,7 @@ public class PistonStructureResolver { @@ -86,7 +86,7 @@ public class PistonStructureResolver {
@@ -13,7 +13,7 @@ index 744d91546d1a810f60a43c15ed74b4158f341a4a..943bb156bfc215fee1e2a4a65c88ff37
} else { } else {
int i = 1; int i = 1;
- if (i + this.toPush.size() > 12) { - if (i + this.toPush.size() > 12) {
+ if (i + this.toPush.size() > this.level().purpurConfig.pistonBlockPushLimit) { // Purpur + if (i + this.toPush.size() > this.level.purpurConfig.pistonBlockPushLimit) { // Purpur
return false; return false;
} else { } else {
while(isSticky(blockState)) { while(isSticky(blockState)) {
@@ -22,7 +22,7 @@ index 744d91546d1a810f60a43c15ed74b4158f341a4a..943bb156bfc215fee1e2a4a65c88ff37
++i; ++i;
- if (i + this.toPush.size() > 12) { - if (i + this.toPush.size() > 12) {
+ if (i + this.toPush.size() > this.level().purpurConfig.pistonBlockPushLimit) { // Purpur + if (i + this.toPush.size() > this.level.purpurConfig.pistonBlockPushLimit) { // Purpur
return false; return false;
} }
} }
@@ -31,12 +31,12 @@ index 744d91546d1a810f60a43c15ed74b4158f341a4a..943bb156bfc215fee1e2a4a65c88ff37
} }
- if (this.toPush.size() >= 12) { - if (this.toPush.size() >= 12) {
+ if (this.toPush.size() >= this.level().purpurConfig.pistonBlockPushLimit) { // Purpur + if (this.toPush.size() >= this.level.purpurConfig.pistonBlockPushLimit) { // Purpur
return false; return false;
} }
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 4d8696198ad30f283e91bec76d392d6a825aaeb0..a8f5a3c7a756cb74cf065f1797b4a1e47b595236 100644 index 6cb6d57c374cc11c9624d721e7309004852e1a6a..9c2c7ea17baa08165c9683853ebc7877d02c7464 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -631,6 +631,11 @@ public class PurpurWorldConfig { @@ -631,6 +631,11 @@ public class PurpurWorldConfig {

View File

@@ -9,7 +9,7 @@ creating an itemstack using the TileEntity's NBT data (how it handles it for
creative players) instead of routing it through the LootableBuilder. creative players) instead of routing it through the LootableBuilder.
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 2a18d9b7ab5d28458e53ccad29edc6f9c2c3099c..76a025d74c577ca2a55659c1426d40a746b034dd 100644 index 2a18d9b7ab5d28458e53ccad29edc6f9c2c3099c..2f0c5df784d5847c59826c3d7930b5d707a5f1aa 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
@@ -427,7 +427,7 @@ public class ServerPlayerGameMode { @@ -427,7 +427,7 @@ public class ServerPlayerGameMode {
@@ -17,7 +17,7 @@ index 2a18d9b7ab5d28458e53ccad29edc6f9c2c3099c..76a025d74c577ca2a55659c1426d40a7
ItemStack mainHandStack = null; // Paper ItemStack mainHandStack = null; // Paper
boolean isCorrectTool = false; // Paper boolean isCorrectTool = false; // Paper
- if (this.isCreative()) { - if (this.isCreative()) {
+ if (this.isCreative() || (this.level().purpurConfig.shulkerBoxAllowOversizedStacks && block instanceof net.minecraft.world.level.block.ShulkerBoxBlock)) { // Purpur + if (this.isCreative() || (this.level.purpurConfig.shulkerBoxAllowOversizedStacks && block instanceof net.minecraft.world.level.block.ShulkerBoxBlock)) { // Purpur
// return true; // CraftBukkit // return true; // CraftBukkit
} else { } else {
ItemStack itemstack = this.player.getMainHandItem(); ItemStack itemstack = this.player.getMainHandItem();
@@ -35,7 +35,7 @@ index b51155ad12515b2d0dd0f202580b9f455c114d9a..dd6c82a418ee299d7a5614cb0260949c
blockEntity.saveToItem(itemStack); blockEntity.saveToItem(itemStack);
if (shulkerBoxBlockEntity.hasCustomName()) { if (shulkerBoxBlockEntity.hasCustomName()) {
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 a0e58a27c70ec7e65a3fef917b0ba4a894252ef8..38f619bb9570fae9a2ded41db262a1e087c6f615 100644 index 2fe9231fbc7f21cc6c6724c075916292bc31b68a..f5ab6850362f00dd44472ad42bd06ee112cc6647 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -688,6 +688,11 @@ public class PurpurWorldConfig { @@ -688,6 +688,11 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Beacon Activation Range Configurable
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java
index 59246e24558569f7f50b4d4d508616798091c888..69e28b65a4a47dc61bae17b65f3f34a8cc3ef6f6 100644 index 59246e24558569f7f50b4d4d508616798091c888..cc03c02f290ee8d58a2fea54b1f977f49a2cec6e 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java --- a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java
@@ -84,6 +84,16 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name @@ -84,6 +84,16 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name
@@ -15,10 +15,10 @@ index 59246e24558569f7f50b4d4d508616798091c888..69e28b65a4a47dc61bae17b65f3f34a8
+ // Purpur Start + // Purpur Start
+ if (this.level != null) { + if (this.level != null) {
+ switch (this.levels) { + switch (this.levels) {
+ case 1: return this.level().purpurConfig.beaconLevelOne; + case 1: return this.level.purpurConfig.beaconLevelOne;
+ case 2: return this.level().purpurConfig.beaconLevelTwo; + case 2: return this.level.purpurConfig.beaconLevelTwo;
+ case 3: return this.level().purpurConfig.beaconLevelThree; + case 3: return this.level.purpurConfig.beaconLevelThree;
+ case 4: return this.level().purpurConfig.beaconLevelFour; + case 4: return this.level.purpurConfig.beaconLevelFour;
+ } + }
+ } + }
+ // Purpur End + // Purpur End
@@ -26,7 +26,7 @@ index 59246e24558569f7f50b4d4d508616798091c888..69e28b65a4a47dc61bae17b65f3f34a8
} else { } else {
return effectRange; return effectRange;
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 9102c90bbc52bd5323cce4cfb5eb40e7e8b086ed..1a2474db319cd9b2a1ecc3cd87d48aed156a773f 100644 index 1510dea6daa49e0bb83a27cec965f2a0cf186274..4a5551dbf79870876b3a8d18284e4fa317ef1837 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -525,6 +525,17 @@ public class PurpurWorldConfig { @@ -525,6 +525,17 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Tool actionable options
diff --git a/src/main/java/net/minecraft/world/item/AxeItem.java b/src/main/java/net/minecraft/world/item/AxeItem.java diff --git a/src/main/java/net/minecraft/world/item/AxeItem.java b/src/main/java/net/minecraft/world/item/AxeItem.java
index 9c7d0b9cc2fa98d5785c914c0183f7d4b5b1c1ea..9f0ccd3f44a095940a9eba8d4de44db0593fae39 100644 index 9c7d0b9cc2fa98d5785c914c0183f7d4b5b1c1ea..89a4ab17ca8d2aa1f52b041c610d7de19bf55e66 100644
--- a/src/main/java/net/minecraft/world/item/AxeItem.java --- a/src/main/java/net/minecraft/world/item/AxeItem.java
+++ b/src/main/java/net/minecraft/world/item/AxeItem.java +++ b/src/main/java/net/minecraft/world/item/AxeItem.java
@@ -33,29 +33,32 @@ public class AxeItem extends DiggerItem { @@ -33,29 +33,32 @@ public class AxeItem extends DiggerItem {
@@ -19,9 +19,9 @@ index 9c7d0b9cc2fa98d5785c914c0183f7d4b5b1c1ea..9f0ccd3f44a095940a9eba8d4de44db0
- }); - });
+ // Purpur start + // Purpur start
+ Block clickedBlock = level.getBlockState(blockPos).getBlock(); + Block clickedBlock = level.getBlockState(blockPos).getBlock();
+ Optional<org.purpurmc.purpur.tool.Actionable> optional = Optional.ofNullable(level().purpurConfig.axeStrippables.get(blockState.getBlock())); + Optional<org.purpurmc.purpur.tool.Actionable> optional = Optional.ofNullable(level.purpurConfig.axeStrippables.get(blockState.getBlock()));
+ Optional<org.purpurmc.purpur.tool.Actionable> optional2 = Optional.ofNullable(level().purpurConfig.axeWeatherables.get(blockState.getBlock())); + Optional<org.purpurmc.purpur.tool.Actionable> optional2 = Optional.ofNullable(level.purpurConfig.axeWeatherables.get(blockState.getBlock()));
+ Optional<org.purpurmc.purpur.tool.Actionable> optional3 = Optional.ofNullable(level().purpurConfig.axeWaxables.get(blockState.getBlock())); + Optional<org.purpurmc.purpur.tool.Actionable> optional3 = Optional.ofNullable(level.purpurConfig.axeWaxables.get(blockState.getBlock()));
+ // Purpur end + // Purpur end
ItemStack itemStack = context.getItemInHand(); ItemStack itemStack = context.getItemInHand();
- Optional<BlockState> optional4 = Optional.empty(); - Optional<BlockState> optional4 = Optional.empty();
@@ -78,7 +78,7 @@ index 9c7d0b9cc2fa98d5785c914c0183f7d4b5b1c1ea..9f0ccd3f44a095940a9eba8d4de44db0
return InteractionResult.PASS; return InteractionResult.PASS;
} }
diff --git a/src/main/java/net/minecraft/world/item/HoeItem.java b/src/main/java/net/minecraft/world/item/HoeItem.java diff --git a/src/main/java/net/minecraft/world/item/HoeItem.java b/src/main/java/net/minecraft/world/item/HoeItem.java
index 180aec596110309aade13d2080f8824d152b07cb..23ecfc9937e21f391b51ea8f4545241a797f6439 100644 index 180aec596110309aade13d2080f8824d152b07cb..c4aec1e5135a79837918b692e75a7b55d5cffeb0 100644
--- a/src/main/java/net/minecraft/world/item/HoeItem.java --- a/src/main/java/net/minecraft/world/item/HoeItem.java
+++ b/src/main/java/net/minecraft/world/item/HoeItem.java +++ b/src/main/java/net/minecraft/world/item/HoeItem.java
@@ -34,15 +34,23 @@ public class HoeItem extends DiggerItem { @@ -34,15 +34,23 @@ public class HoeItem extends DiggerItem {
@@ -93,7 +93,7 @@ index 180aec596110309aade13d2080f8824d152b07cb..23ecfc9937e21f391b51ea8f4545241a
- Consumer<UseOnContext> consumer = pair.getSecond(); - Consumer<UseOnContext> consumer = pair.getSecond();
+ // Purpur start + // Purpur start
+ Block clickedBlock = level.getBlockState(blockPos).getBlock(); + Block clickedBlock = level.getBlockState(blockPos).getBlock();
+ var tillable = level().purpurConfig.hoeTillables.get(level.getBlockState(blockPos).getBlock()); + var tillable = level.purpurConfig.hoeTillables.get(level.getBlockState(blockPos).getBlock());
+ if (tillable == null) { return InteractionResult.PASS; } else { + if (tillable == null) { return InteractionResult.PASS; } else {
+ Predicate<UseOnContext> predicate = tillable.condition().predicate(); + Predicate<UseOnContext> predicate = tillable.condition().predicate();
+ Consumer<UseOnContext> consumer = (ctx) -> { + Consumer<UseOnContext> consumer = (ctx) -> {
@@ -122,7 +122,7 @@ index 180aec596110309aade13d2080f8824d152b07cb..23ecfc9937e21f391b51ea8f4545241a
return InteractionResult.PASS; return InteractionResult.PASS;
} }
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 6683a4fc4746b28d9b3d898258265874ed3e54e1..2905ac9c8ee0555e5aeaeed480454e8463c753b1 100644 index 979c364c4329f5dfc11ab88e00ef7aa7aa17c00e..36f570c2a46384d83d91b118593d369c32db1c9a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -528,6 +528,167 @@ public class PurpurWorldConfig { @@ -528,6 +528,167 @@ public class PurpurWorldConfig {

View File

@@ -93,7 +93,7 @@ index 2acd9fdd1b311f00cc5fae7d879427ededdeecec..e33364beff36e255989520d5d076729c
} }
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 faa77256f116d2b9c9ad931238d10a994c63c484..7fc5562ef55809d864392f05599c2380b32f1fdd 100644 index 1f9a57c4fd251e2969b49a883ee12d3cf8ac5914..24fc4934f2193806fa38c8c3b0ad4cbfc53650a6 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
@@ -84,6 +84,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -84,6 +84,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@@ -120,7 +120,7 @@ index faa77256f116d2b9c9ad931238d10a994c63c484..7fc5562ef55809d864392f05599c2380
@Override @Override
protected PathNavigation createNavigation(Level world) { protected PathNavigation createNavigation(Level world) {
FlyingPathNavigation navigationflying = new FlyingPathNavigation(this, world); FlyingPathNavigation navigationflying = new FlyingPathNavigation(this, world);
@@ -262,6 +272,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -267,6 +277,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
public void addAdditionalSaveData(CompoundTag nbt) { public void addAdditionalSaveData(CompoundTag nbt) {
super.addAdditionalSaveData(nbt); super.addAdditionalSaveData(nbt);
nbt.putInt("Invul", this.getInvulnerableTicks()); nbt.putInt("Invul", this.getInvulnerableTicks());
@@ -128,7 +128,7 @@ index faa77256f116d2b9c9ad931238d10a994c63c484..7fc5562ef55809d864392f05599c2380
} }
@Override @Override
@@ -271,6 +282,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -276,6 +287,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
if (this.hasCustomName()) { if (this.hasCustomName()) {
this.bossEvent.setName(this.getDisplayName()); this.bossEvent.setName(this.getDisplayName());
} }

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Silk touchable budding amethyst
diff --git a/src/main/java/net/minecraft/world/level/block/BuddingAmethystBlock.java b/src/main/java/net/minecraft/world/level/block/BuddingAmethystBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/BuddingAmethystBlock.java b/src/main/java/net/minecraft/world/level/block/BuddingAmethystBlock.java
index 4dae2a98070affd84bc4523a927dc9cbfe7379c6..c16781ec765c234468b13a0b0cb478c6082b62a7 100644 index 4dae2a98070affd84bc4523a927dc9cbfe7379c6..51faa4cfda3d36f2e3bc7cbc47cacf57d3ca716e 100644
--- a/src/main/java/net/minecraft/world/level/block/BuddingAmethystBlock.java --- a/src/main/java/net/minecraft/world/level/block/BuddingAmethystBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/BuddingAmethystBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BuddingAmethystBlock.java
@@ -47,4 +47,14 @@ public class BuddingAmethystBlock extends AmethystBlock { @@ -47,4 +47,14 @@ public class BuddingAmethystBlock extends AmethystBlock {
@@ -16,7 +16,7 @@ index 4dae2a98070affd84bc4523a927dc9cbfe7379c6..c16781ec765c234468b13a0b0cb478c6
+ // Purpur start + // Purpur start
+ @Override + @Override
+ public void playerDestroy(net.minecraft.world.level.Level level, net.minecraft.world.entity.player.Player player, BlockPos pos, BlockState state, net.minecraft.world.level.block.entity.BlockEntity blockEntity, net.minecraft.world.item.ItemStack stack) { + public void playerDestroy(net.minecraft.world.level.Level level, net.minecraft.world.entity.player.Player player, BlockPos pos, BlockState state, net.minecraft.world.level.block.entity.BlockEntity blockEntity, net.minecraft.world.item.ItemStack stack) {
+ if (level().purpurConfig.buddingAmethystSilkTouch && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.SILK_TOUCH, stack) > 0) { + if (level.purpurConfig.buddingAmethystSilkTouch && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.SILK_TOUCH, stack) > 0) {
+ popResource(level, pos, net.minecraft.world.item.Items.BUDDING_AMETHYST.getDefaultInstance()); + popResource(level, pos, net.minecraft.world.item.Items.BUDDING_AMETHYST.getDefaultInstance());
+ } + }
+ super.playerDestroy(level, player, pos, state, blockEntity, stack); + super.playerDestroy(level, player, pos, state, blockEntity, stack);
@@ -24,7 +24,7 @@ index 4dae2a98070affd84bc4523a927dc9cbfe7379c6..c16781ec765c234468b13a0b0cb478c6
+ // Purpur end + // Purpur end
} }
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 177678b320e79eef9ec2c3b77935ef59ffa1b63d..2c6743485c22fc914006ba1ed1aede61f845be0f 100644 index 8cc4d71f4ca13fe8c192f4483101d3fee3b878f3..cdf05c679d7ab1005076251370a8bb53cfcc1306 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -730,6 +730,11 @@ public class PurpurWorldConfig { @@ -730,6 +730,11 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ 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 963a596154091b79ca139af6274aa323518ad1ad..e93f96d0ba193cceae2f2140fb8f678dc47de40b 100644 index 963a596154091b79ca139af6274aa323518ad1ad..4dcac3899a500d8586580bcfd5b4516e1dcdcd4a 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
@@ -171,7 +171,7 @@ public class ConduitBlockEntity extends BlockEntity { @@ -171,7 +171,7 @@ public class ConduitBlockEntity extends BlockEntity {
@@ -66,7 +66,7 @@ index 963a596154091b79ca139af6274aa323518ad1ad..e93f96d0ba193cceae2f2140fb8f678d
int k = pos.getZ(); int k = pos.getZ();
- return (new AABB((double) i, (double) j, (double) k, (double) (i + 1), (double) (j + 1), (double) (k + 1))).inflate(8.0D); - return (new AABB((double) i, (double) j, (double) k, (double) (i + 1), (double) (j + 1), (double) (k + 1))).inflate(8.0D);
+ return (new AABB((double) i, (double) j, (double) k, (double) (i + 1), (double) (j + 1), (double) (k + 1))).inflate(level == null ? 8.0D : level().purpurConfig.conduitDamageDistance); // Purpur + return (new AABB((double) i, (double) j, (double) k, (double) (i + 1), (double) (j + 1), (double) (k + 1))).inflate(level == null ? 8.0D : level.purpurConfig.conduitDamageDistance); // Purpur
} }
@Nullable @Nullable
@@ -77,7 +77,7 @@ index 963a596154091b79ca139af6274aa323518ad1ad..e93f96d0ba193cceae2f2140fb8f678d
}); });
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 0b3c58cfc0cf13aa7d0ba6541a581113b4c01691..1715b39e35b578f8bf554dcd9ee6af1d829f63d1 100644 index e98db1878dd3ec8d7f38fcd213c8d39241479e26..7a56fdad1aca67b89d08cbeebb1fdf2ad02edd84 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -962,6 +962,29 @@ public class PurpurWorldConfig { @@ -962,6 +962,29 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ 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 76a025d74c577ca2a55659c1426d40a746b034dd..4fbcd452a500d258fa7248e8a98979cbea867a89 100644 index 2f0c5df784d5847c59826c3d7930b5d707a5f1aa..5cc5bf4305a6e91c303841e752aeece9a1d03502 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
@@ -516,6 +516,7 @@ public class ServerPlayerGameMode { @@ -516,6 +516,7 @@ public class ServerPlayerGameMode {
@@ -27,7 +27,7 @@ index 76a025d74c577ca2a55659c1426d40a746b034dd..4fbcd452a500d258fa7248e8a98979cb
+ int points = Math.min(this.player.totalExperience, this.player.level().purpurConfig.shiftRightClickRepairsMendingPoints); + int points = Math.min(this.player.totalExperience, this.player.level().purpurConfig.shiftRightClickRepairsMendingPoints);
+ if (points > 0 && itemstack.isDamaged() && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.MENDING, itemstack) > 0) { + if (points > 0 && itemstack.isDamaged() && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.MENDING, itemstack) > 0) {
+ this.player.giveExperiencePoints(-points); + this.player.giveExperiencePoints(-points);
+ this.player.level.addFreshEntity(new net.minecraft.world.entity.ExperienceOrb(this.player.level, this.player.getX(), this.player.getY(), this.player.getZ(), points, org.bukkit.entity.ExperienceOrb.SpawnReason.UNKNOWN, this.player, this.player)); + this.player.level().addFreshEntity(new net.minecraft.world.entity.ExperienceOrb(this.player.level(), this.player.getX(), this.player.getY(), this.player.getZ(), points, org.bukkit.entity.ExperienceOrb.SpawnReason.UNKNOWN, this.player, this.player));
+ return true; + return true;
+ } + }
+ } + }
@@ -48,7 +48,7 @@ index 4ac0941974e6e8aeaea88ce0fc589381f3c0eaad..f3210aa312af48a77129962fe483e65e
cancelled = event.useItemInHand() == Event.Result.DENY; cancelled = event.useItemInHand() == Event.Result.DENY;
} else { } else {
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 224857d1ae9657d11cc646218f8480e5a24e34f7..c8a4056779c86cab41e6d0ac5e24254d256abafe 100644 index 7acdc672137575ebc3164e808a09f153d6c05ab6..41e77c1d3719c14ddb5c542f589e84cd5a8066b2 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -417,6 +417,7 @@ public class PurpurWorldConfig { @@ -417,6 +417,7 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ 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 b71013a6dd5a713543c042199273ddae1feda4b9..87fa0181e6e9c819c3b5abd95f75231dfeb12be2 100644 index b71013a6dd5a713543c042199273ddae1feda4b9..1ed712f5ba4e77582393806fc1bd49553b9ea8d1 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
@@ -1099,6 +1099,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -1099,6 +1099,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -13,8 +13,8 @@ index b71013a6dd5a713543c042199273ddae1feda4b9..87fa0181e6e9c819c3b5abd95f75231d
@Override @Override
public void startSleeping(BlockPos pos) { public void startSleeping(BlockPos pos) {
+ // Purpur start + // Purpur start
+ if (level().purpurConfig.bedExplodeOnVillagerSleep && this.level.getBlockState(pos).getBlock() instanceof net.minecraft.world.level.block.BedBlock) { + if (level().purpurConfig.bedExplodeOnVillagerSleep && this.level().getBlockState(pos).getBlock() instanceof net.minecraft.world.level.block.BedBlock) {
+ this.level.explode(null, (double) pos.getX() + 0.5D, (double) pos.getY() + 0.5D, (double) pos.getZ() + 0.5D, (float) this.level().purpurConfig.bedExplosionPower, this.level().purpurConfig.bedExplosionFire, this.level().purpurConfig.bedExplosionEffect); + this.level().explode(null, (double) pos.getX() + 0.5D, (double) pos.getY() + 0.5D, (double) pos.getZ() + 0.5D, (float) this.level().purpurConfig.bedExplosionPower, this.level().purpurConfig.bedExplosionFire, this.level().purpurConfig.bedExplosionEffect);
+ return; + return;
+ } + }
+ // Purpur end + // Purpur end
@@ -22,7 +22,7 @@ index b71013a6dd5a713543c042199273ddae1feda4b9..87fa0181e6e9c819c3b5abd95f75231d
this.brain.setMemory(MemoryModuleType.LAST_SLEPT, this.level().getGameTime()); // CraftBukkit - decompile error this.brain.setMemory(MemoryModuleType.LAST_SLEPT, this.level().getGameTime()); // CraftBukkit - decompile error
this.brain.eraseMemory(MemoryModuleType.WALK_TARGET); this.brain.eraseMemory(MemoryModuleType.WALK_TARGET);
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 5dc7d311fde305a8a5b3860d6d7e1f1cd02dffb1..3d05d4e5d8e934a07d7957df3dfdf45bb8e22d5e 100644 index 3a80c2901c688a7ef9fbe97fbe3524e773c0b394..33a60222a2ba142ace742a0410ae48e4ae871f51 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -736,6 +736,7 @@ public class PurpurWorldConfig { @@ -736,6 +736,7 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ 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 81bf59b7b41835dc034f2880c8eac89ff396b695..a38b90e1d306a4926f473cdd38b6f719b4ce4252 100644 index 98221b38722e5cc009b12c1bc57fd63dc9418706..c61700a0f1055ee8fe290646814c3e71d917e338 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
@@ -314,7 +314,7 @@ public class Bat extends AmbientCreature { @@ -314,7 +314,7 @@ public class Bat extends AmbientCreature {
@@ -21,7 +21,7 @@ index 81bf59b7b41835dc034f2880c8eac89ff396b695..a38b90e1d306a4926f473cdd38b6f719
} }
} }
+ 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() {
LocalDate localdate = LocalDate.now(); LocalDate localdate = LocalDate.now();
int i = localdate.get(ChronoField.DAY_OF_MONTH); int i = localdate.get(ChronoField.DAY_OF_MONTH);
@@ -60,7 +60,7 @@ index 0bc90b6d5c5a3cb3477d41336a9bb1130ff32fa1..a8d2f8654ee370e98bb1c4e7e1111deb
this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F;
} }
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 3d05d4e5d8e934a07d7957df3dfdf45bb8e22d5e..30e150a4d6580c86e5118467c2c43e2b2538deeb 100644 index 33a60222a2ba142ace742a0410ae48e4ae871f51..17c26886f7bf5b684989c00f0ff874d248f1d7f3 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -143,6 +143,8 @@ public class PurpurWorldConfig { @@ -143,6 +143,8 @@ public class PurpurWorldConfig {

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 b90cedad282e95a067aca176fafa9f72a726f520..c29c849d6b61d23e86e8af949561c00e889d2e9d 100644 index b90cedad282e95a067aca176fafa9f72a726f520..9a8a1e773f247f4c4af4e9789deb70cd5b7889c5 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
@@ -57,6 +57,36 @@ public class Snowball extends ThrowableItemProjectile { @@ -57,6 +57,36 @@ public class Snowball extends ThrowableItemProjectile {
@@ -17,25 +17,25 @@ index b90cedad282e95a067aca176fafa9f72a726f520..c29c849d6b61d23e86e8af949561c00e
+ protected void onHitBlock(net.minecraft.world.phys.BlockHitResult blockHitResult) { + protected void onHitBlock(net.minecraft.world.phys.BlockHitResult blockHitResult) {
+ super.onHitBlock(blockHitResult); + super.onHitBlock(blockHitResult);
+ +
+ if (!this.level.isClientSide) { + if (!this.level().isClientSide) {
+ net.minecraft.core.BlockPos blockposition = blockHitResult.getBlockPos(); + net.minecraft.core.BlockPos blockposition = blockHitResult.getBlockPos();
+ net.minecraft.core.BlockPos blockposition1 = blockposition.relative(blockHitResult.getDirection()); + net.minecraft.core.BlockPos blockposition1 = blockposition.relative(blockHitResult.getDirection());
+ +
+ net.minecraft.world.level.block.state.BlockState iblockdata = this.level.getBlockState(blockposition); + net.minecraft.world.level.block.state.BlockState iblockdata = this.level().getBlockState(blockposition);
+ +
+ if (this.level().purpurConfig.snowballExtinguishesFire && this.level.getBlockState(blockposition1).is(net.minecraft.world.level.block.Blocks.FIRE)) { + if (this.level().purpurConfig.snowballExtinguishesFire && this.level().getBlockState(blockposition1).is(net.minecraft.world.level.block.Blocks.FIRE)) {
+ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockposition1, net.minecraft.world.level.block.Blocks.AIR.defaultBlockState()).isCancelled()) { + if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockposition1, net.minecraft.world.level.block.Blocks.AIR.defaultBlockState()).isCancelled()) {
+ this.level.removeBlock(blockposition1, false); + this.level().removeBlock(blockposition1, false);
+ } + }
+ } else if (this.level().purpurConfig.snowballExtinguishesCandles && net.minecraft.world.level.block.AbstractCandleBlock.isLit(iblockdata)) { + } else if (this.level().purpurConfig.snowballExtinguishesCandles && net.minecraft.world.level.block.AbstractCandleBlock.isLit(iblockdata)) {
+ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.setValue(net.minecraft.world.level.block.AbstractCandleBlock.LIT, false)).isCancelled()) { + if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.setValue(net.minecraft.world.level.block.AbstractCandleBlock.LIT, false)).isCancelled()) {
+ net.minecraft.world.level.block.AbstractCandleBlock.extinguish(null, iblockdata, this.level, blockposition); + net.minecraft.world.level.block.AbstractCandleBlock.extinguish(null, iblockdata, this.level(), blockposition);
+ } + }
+ } else if (this.level().purpurConfig.snowballExtinguishesCampfires && net.minecraft.world.level.block.CampfireBlock.isLitCampfire(iblockdata)) { + } else if (this.level().purpurConfig.snowballExtinguishesCampfires && net.minecraft.world.level.block.CampfireBlock.isLitCampfire(iblockdata)) {
+ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.setValue(net.minecraft.world.level.block.CampfireBlock.LIT, false)).isCancelled()) { + if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.setValue(net.minecraft.world.level.block.CampfireBlock.LIT, false)).isCancelled()) {
+ this.level.levelEvent(null, 1009, blockposition, 0); + this.level().levelEvent(null, 1009, blockposition, 0);
+ net.minecraft.world.level.block.CampfireBlock.dowse(this.getOwner(), this.level, blockposition, iblockdata); + net.minecraft.world.level.block.CampfireBlock.dowse(this.getOwner(), this.level(), blockposition, iblockdata);
+ this.level.setBlockAndUpdate(blockposition, iblockdata.setValue(net.minecraft.world.level.block.CampfireBlock.LIT, false)); + this.level().setBlockAndUpdate(blockposition, iblockdata.setValue(net.minecraft.world.level.block.CampfireBlock.LIT, false));
+ } + }
+ } + }
+ } + }
@@ -46,7 +46,7 @@ index b90cedad282e95a067aca176fafa9f72a726f520..c29c849d6b61d23e86e8af949561c00e
protected void onHit(HitResult hitResult) { protected void onHit(HitResult hitResult) {
super.onHit(hitResult); super.onHit(hitResult);
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 a1151c789644d992fa1ee7ddd967a45b5426c1dd..3d73b18ca2c06250839982ccda9d30c5350a14eb 100644 index e2120e4b3872067f1559c558d3af31c03f0305fc..c04957b14a4e1c2397bedfeeefab7306f94529c1 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -237,6 +237,9 @@ public class PurpurWorldConfig { @@ -237,6 +237,9 @@ public class PurpurWorldConfig {

View File

@@ -21,7 +21,7 @@ index 1a67f46b57e398d23fbc495ee81ae62e0d84d3dc..43cdda0cb26c5d5cc9025199eb71673d
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 a38b90e1d306a4926f473cdd38b6f719b4ce4252..2b24f9015a6ae9693ce844fc78d635de45199832 100644 index c61700a0f1055ee8fe290646814c3e71d917e338..9973c3525953c5a37bbe997a11718d1635276a7b 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
@@ -295,6 +295,11 @@ public class Bat extends AmbientCreature { @@ -295,6 +295,11 @@ public class Bat extends AmbientCreature {
@@ -101,7 +101,7 @@ 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 5c99065d8f097920e440980313fd75a040c2cc66..3147c51a76f70a732fdc0fc53b8376821c4e2034 100644 index 30e87b71ad237d76ec5adb4976edeca909e429ef..6aeb3a6ac9665a0c4b929d0f034f177df88109e0 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
@@ -83,6 +83,11 @@ public class Cow extends Animal { @@ -83,6 +83,11 @@ public class Cow extends Animal {
@@ -117,7 +117,7 @@ index 5c99065d8f097920e440980313fd75a040c2cc66..3147c51a76f70a732fdc0fc53b837682
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 a3585d3c4331138bdd029c6fd8723c5c5dc23a16..7f71ba27e6794d592e74686b9d404340b1bd9d5b 100644 index 3755ffc395ec4644a2263c59cdacfdbab258d4c8..dcb23409b8492200771c515a83d086b39777972f 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
@@ -165,6 +165,11 @@ public class Dolphin extends WaterAnimal { @@ -165,6 +165,11 @@ public class Dolphin extends WaterAnimal {
@@ -277,7 +277,7 @@ index ef3d0bbbeb6aa736f35c26066a1473c70ef028a2..54f5206b686c3cf4d2e5b470c07047a5
protected void defineSynchedData() { protected void defineSynchedData() {
super.defineSynchedData(); super.defineSynchedData();
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 5e935f0b8980a65eb139b9b17fe4f969018b48b2..69333778f311312df6cb65f046740cbdc770257b 100644 index a91cef9b519b9d7330c40de9988f0463ce8aa20b..2bd8f6d05728b48e184f4835d6acb3a00cf66153 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
@@ -152,6 +152,11 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> { @@ -152,6 +152,11 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
@@ -389,7 +389,7 @@ index 5c2fc833dac13dd8b959f035abb74432ec6c82c9..bcc6d50aed60d1255fbdbfb7b9494b52
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 79e67987f8077133f447ba5c7e1d5edb676e18e8..179d6131a8bac2fa031c33810227d9bc036c241d 100644 index b2902e01ff2e9add8258bfd0b32d000209208f52..e7558511e0690d80ff444e71b7524d564d68842b 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
@@ -214,6 +214,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -214,6 +214,11 @@ public class Wolf extends TamableAnimal implements NeutralMob {
@@ -549,7 +549,7 @@ index 063cdf8202af060b64a52b6af6fdf8fd477df0ed..1dbe73dda3fb3f32b354c416908d37ae
return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F); return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0D).add(Attributes.MOVEMENT_SPEED, (double)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 98945bc8d2fee8d491bf04d2c488775a09117ca4..db5a925dbf84d1a5aca1096ef2c76f0edbdd1d9a 100644 index bd38dad0a38a60a0421ee62e52ef7009672de28d..f4596e90d2a569eb1118455b2eeec2036d806533 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
@@ -132,6 +132,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -132,6 +132,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@@ -709,21 +709,21 @@ index ab6bfdb50ee1bb13a213a2093287f5c2465b2d1b..b0aad5778a12d3f0f2ef806f856064c4
protected void defineSynchedData() { protected void defineSynchedData() {
super.defineSynchedData(); super.defineSynchedData();
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 494439d60138f1b7bfe5d596c9ab97321400e4b4..da37eb47704368c6975003532f17ba7678588ad2 100644 index 6340d8641770110d61dc9337942bc233e6fb49c6..88b0dffe2c2b4da1406f218186d28f018ee879a3 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
@@ -66,6 +66,11 @@ public class Giant extends Monster { @@ -79,6 +79,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 41b080c1fd44c93009908fcfd20180e0d11fca8a..96338ed7952683f56d9a406d0956ce230581f146 100644 index 41b080c1fd44c93009908fcfd20180e0d11fca8a..96338ed7952683f56d9a406d0956ce230581f146 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Guardian.java --- a/src/main/java/net/minecraft/world/entity/monster/Guardian.java
@@ -789,7 +789,7 @@ index e0ebc4c2d8dd718ce78d981a1d099e7482221f1f..1ad97267394d3717b1871336193cdc91
return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, (double)0.2F); return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, (double)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 7897d72dacc787b027306911eea4d59e31d06142..d6eda14f1735a8d8a6b7aa1afb6afeff4397fb1b 100644 index 6b618c134dc90847e83b49f4de5332cf8c1bd69c..9de8612f0b21dc7e6dfd45efa9b82a8f864ea6cb 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
@@ -125,6 +125,11 @@ public class Phantom extends FlyingMob implements Enemy { @@ -125,6 +125,11 @@ public class Phantom extends FlyingMob implements Enemy {
@@ -1125,7 +1125,7 @@ index b63d87df0f48dd63c89118f91b31dc4e3622e3b8..61e8f2d030fc50840c3f80dfb6fc8107
return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D); return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0D).add(Attributes.MOVEMENT_SPEED, (double)0.35F).add(Attributes.ATTACK_DAMAGE, 7.0D);
} }
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 87fa0181e6e9c819c3b5abd95f75231dfeb12be2..00a62f48961f6909488b040d75457633d47809ec 100644 index 1ed712f5ba4e77582393806fc1bd49553b9ea8d1..30dc65d9af328cc462dfda531eba7215e732d13b 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
@@ -192,6 +192,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -192,6 +192,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Shearing jeb produces random color wool
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 a1b323ecba25910e97f154e487acc94943117e0c..f3d17ace7273c0678870d6730a1986175642c03a 100644 index a1b323ecba25910e97f154e487acc94943117e0c..62d8ae4c689170420c7850fbbb402be85b565882 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
@@ -315,7 +315,7 @@ public class Sheep extends Animal implements Shearable { @@ -315,7 +315,7 @@ public class Sheep extends Animal implements Shearable {
@@ -13,12 +13,12 @@ index a1b323ecba25910e97f154e487acc94943117e0c..f3d17ace7273c0678870d6730a198617
for (int j = 0; j < i; ++j) { for (int j = 0; j < i; ++j) {
this.forceDrops = true; // CraftBukkit this.forceDrops = true; // CraftBukkit
- ItemEntity entityitem = this.spawnAtLocation((ItemLike) Sheep.ITEM_BY_DYE.get(this.getColor()), 1); - ItemEntity entityitem = this.spawnAtLocation((ItemLike) Sheep.ITEM_BY_DYE.get(this.getColor()), 1);
+ ItemEntity entityitem = this.spawnAtLocation((ItemLike) Sheep.ITEM_BY_DYE.get(this.level().purpurConfig.sheepShearJebRandomColor && hasCustomName() && getCustomName().getString().equals("jeb_") ? DyeColor.random(this.level.random) : this.getColor()), 1); // Purpur + ItemEntity entityitem = this.spawnAtLocation((ItemLike) Sheep.ITEM_BY_DYE.get(this.level().purpurConfig.sheepShearJebRandomColor && hasCustomName() && getCustomName().getString().equals("jeb_") ? DyeColor.random(this.level().random) : this.getColor()), 1); // Purpur
this.forceDrops = false; // CraftBukkit this.forceDrops = false; // CraftBukkit
if (entityitem != null) { if (entityitem != null) {
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 4f50b9d2fb35502fd1a787e547cab4cb88142438..b49b6b2558d18565d5a222360c7865a09c1ab026 100644 index cbfac77db19cda4c34ddd8ae353bdea9be2a6407..96b7a1e4573d7ee989a0cc95c6527bf5b9211028 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -2305,6 +2305,7 @@ public class PurpurWorldConfig { @@ -2305,6 +2305,7 @@ public class PurpurWorldConfig {

View File

@@ -18,7 +18,7 @@ index c2dec99102fa4c64c3c874f725cdc65845cd98d2..90828993a9dffdc27dbdbcb9fcf2fa86
// tested and confirmed via System.nanoTime() // tested and confirmed via System.nanoTime()
com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet<ServerPlayer> playersInRange = reducedRange ? playerchunk.playersInMobSpawnRange : playerchunk.playersInChunkTickRange; com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet<ServerPlayer> playersInRange = reducedRange ? playerchunk.playersInMobSpawnRange : playerchunk.playersInChunkTickRange;
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java
index 95dc62687d10e5c6f54baadda4a725094c52c07f..2b600546990a1d564a218f3c1290e42a62175f7f 100644 index 95dc62687d10e5c6f54baadda4a725094c52c07f..84a7fb84ce97f582a898dab4982ff8e317f40e82 100644
--- a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java --- a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java
@@ -31,6 +31,12 @@ public class EatBlockGoal extends Goal { @@ -31,6 +31,12 @@ public class EatBlockGoal extends Goal {
@@ -26,8 +26,8 @@ index 95dc62687d10e5c6f54baadda4a725094c52c07f..2b600546990a1d564a218f3c1290e42a
@Override @Override
public boolean canUse() { public boolean canUse() {
+ // Purpur start + // Purpur start
+ net.minecraft.world.level.chunk.LevelChunk chunk = this.mob.level.getChunkIfLoaded(this.mob.blockPosition()); + net.minecraft.world.level.chunk.LevelChunk chunk = this.mob.level().getChunkIfLoaded(this.mob.blockPosition());
+ if (chunk == null || chunk.playerChunk == null || !((net.minecraft.server.level.ServerLevel) this.mob.level).getChunkSource().chunkMap.anyPlayerCloseEnoughForSpawning(chunk.playerChunk, this.mob.chunkPosition(), false)) { + if (chunk == null || chunk.playerChunk == null || !((net.minecraft.server.level.ServerLevel) this.mob.level()).getChunkSource().chunkMap.anyPlayerCloseEnoughForSpawning(chunk.playerChunk, this.mob.chunkPosition(), false)) {
+ return false; + return false;
+ } + }
+ // Purpur end + // Purpur end

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Stonecutter damage
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 0a95842c53a9d0286c57bcb42db97e468e30fb7d..b2e4dd9ed599156f517d38eca3b71c8d1e6dc1b6 100644 index 0a95842c53a9d0286c57bcb42db97e468e30fb7d..e2d42e7947a237dd060ec1b9b63ac6ca4f37241a 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
@@ -92,4 +92,16 @@ public class StonecutterBlock extends Block { @@ -92,4 +92,16 @@ public class StonecutterBlock extends Block {
@@ -16,9 +16,9 @@ index 0a95842c53a9d0286c57bcb42db97e468e30fb7d..b2e4dd9ed599156f517d38eca3b71c8d
+ // Purpur start + // Purpur start
+ @Override + @Override
+ public void stepOn(Level level, BlockPos pos, BlockState state, net.minecraft.world.entity.Entity entity) { + public void stepOn(Level level, BlockPos pos, BlockState state, net.minecraft.world.entity.Entity entity) {
+ if (level().purpurConfig.stonecutterDamage > 0.0F && entity instanceof net.minecraft.world.entity.LivingEntity) { + if (level.purpurConfig.stonecutterDamage > 0.0F && entity instanceof net.minecraft.world.entity.LivingEntity) {
+ org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = level.getWorld().getBlockAt(pos.getX(), pos.getY(), pos.getZ()); + org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = level.getWorld().getBlockAt(pos.getX(), pos.getY(), pos.getZ());
+ entity.hurt(entity.damageSources().magic(), level().purpurConfig.stonecutterDamage); + entity.hurt(entity.damageSources().magic(), level.purpurConfig.stonecutterDamage);
+ org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = null; + org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = null;
+ } + }
+ super.stepOn(level, pos, state, entity); + super.stepOn(level, pos, state, entity);
@@ -63,7 +63,7 @@ index 3de2e7a17e1234367e4ec6d944b1145781aefeba..15ed564a579237dd1f5d6ce56ccb473f
public static boolean advancementOnlyBroadcastToAffectedPlayer = false; public static boolean advancementOnlyBroadcastToAffectedPlayer = false;
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 e0cfd29988ec58e0f1328b9b2d131ff6f5f5fa8c..2d52019aa041956827156e5e511f1533f1ff4c96 100644 index 8b24a35bbf003bac3615acd80d7a08751f6f0036..ec1220d874cec48fc538348865b80c27d37ac300 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1001,6 +1001,11 @@ public class PurpurWorldConfig { @@ -1001,6 +1001,11 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Skeletons eat wither roses
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 9b43150a00d7fac85aa69f5a2dbffd0dfdae4b86..65d97a2c4b3fcdfa4800787ab1ef5b77f49229c8 100644 index 9b43150a00d7fac85aa69f5a2dbffd0dfdae4b86..f4a47ac2c86cc95178922cce7320ba1ef5121b57 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
@@ -14,6 +14,16 @@ import net.minecraft.world.item.Items; @@ -14,6 +14,16 @@ import net.minecraft.world.item.Items;
@@ -52,7 +52,7 @@ index 9b43150a00d7fac85aa69f5a2dbffd0dfdae4b86..65d97a2c4b3fcdfa4800787ab1ef5b77
+ return InteractionResult.CONSUME; + return InteractionResult.CONSUME;
+ } + }
+ +
+ WitherSkeleton skeleton = EntityType.WITHER_SKELETON.create(level); + WitherSkeleton skeleton = EntityType.WITHER_SKELETON.create(level());
+ if (skeleton == null) { + if (skeleton == null) {
+ return InteractionResult.PASS; + return InteractionResult.PASS;
+ } + }
@@ -78,14 +78,14 @@ index 9b43150a00d7fac85aa69f5a2dbffd0dfdae4b86..65d97a2c4b3fcdfa4800787ab1ef5b77
+ return InteractionResult.PASS; + return InteractionResult.PASS;
+ } + }
+ +
+ this.level.addFreshEntity(skeleton); + this.level().addFreshEntity(skeleton);
+ this.remove(RemovalReason.DISCARDED); + this.remove(RemovalReason.DISCARDED);
+ if (!player.getAbilities().instabuild) { + if (!player.getAbilities().instabuild) {
+ stack.shrink(1); + stack.shrink(1);
+ } + }
+ +
+ for (int i = 0; i < 15; ++i) { + for (int i = 0; i < 15; ++i) {
+ ((ServerLevel) level).sendParticles(((ServerLevel) level).players(), null, ParticleTypes.HAPPY_VILLAGER, + ((ServerLevel) level()).sendParticles(((ServerLevel) level()).players(), null, ParticleTypes.HAPPY_VILLAGER,
+ getX() + random.nextFloat(), getY() + (random.nextFloat() * 2), getZ() + random.nextFloat(), 1, + getX() + random.nextFloat(), getY() + (random.nextFloat() * 2), getZ() + random.nextFloat(), 1,
+ random.nextGaussian() * 0.05D, random.nextGaussian() * 0.05D, random.nextGaussian() * 0.05D, 0, true); + random.nextGaussian() * 0.05D, random.nextGaussian() * 0.05D, random.nextGaussian() * 0.05D, 0, true);
+ } + }
@@ -94,7 +94,7 @@ index 9b43150a00d7fac85aa69f5a2dbffd0dfdae4b86..65d97a2c4b3fcdfa4800787ab1ef5b77
+ // Purpur end + // Purpur end
} }
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 24377bf7a10a758bd2049031983b9d9347ccd0c4..fac5a929dec9df57217a9b835910769958d39351 100644 index 1f56cddafaca20b8a4f173bc6e60ddd03cdf87e3..96db7651b416e0654586ddd6bdc46222466accf9 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -2431,6 +2431,7 @@ public class PurpurWorldConfig { @@ -2431,6 +2431,7 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Enchantment Table Persists Lapis
diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
index 0c3c3902e84010684ef703545c1377d8a6f32580..fa3ecf3ca6514dcf957b07c787946cc5d626e15a 100644 index 0c3c3902e84010684ef703545c1377d8a6f32580..dbf825836727a50a7b8dda48c97df8d846e4fd80 100644
--- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java --- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java +++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
@@ -38,6 +38,12 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent; @@ -38,6 +38,12 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent;
@@ -31,7 +31,7 @@ index 0c3c3902e84010684ef703545c1377d8a6f32580..fa3ecf3ca6514dcf957b07c787946cc5
+ public void onClose(CraftHumanEntity who) { + public void onClose(CraftHumanEntity who) {
+ super.onClose(who); + super.onClose(who);
+ +
+ if (who.getHandle().getLevel().purpurConfig.enchantmentTableLapisPersists) { + if (who.getHandle().level().purpurConfig.enchantmentTableLapisPersists) {
+ access.execute((level, pos) -> { + access.execute((level, pos) -> {
+ BlockEntity blockEntity = level.getBlockEntity(pos); + BlockEntity blockEntity = level.getBlockEntity(pos);
+ if (blockEntity instanceof EnchantmentTableBlockEntity enchantmentTable) { + if (blockEntity instanceof EnchantmentTableBlockEntity enchantmentTable) {
@@ -50,7 +50,7 @@ index 0c3c3902e84010684ef703545c1377d8a6f32580..fa3ecf3ca6514dcf957b07c787946cc5
+ // Purpur start + // Purpur start
+ access.execute((level, pos) -> { + access.execute((level, pos) -> {
+ if (level().purpurConfig.enchantmentTableLapisPersists) { + if (level.purpurConfig.enchantmentTableLapisPersists) {
+ BlockEntity blockEntity = level.getBlockEntity(pos); + BlockEntity blockEntity = level.getBlockEntity(pos);
+ if (blockEntity instanceof EnchantmentTableBlockEntity enchantmentTable) { + if (blockEntity instanceof EnchantmentTableBlockEntity enchantmentTable) {
+ this.getSlot(1).set(new ItemStack(Items.LAPIS_LAZULI, enchantmentTable.getLapis())); + this.getSlot(1).set(new ItemStack(Items.LAPIS_LAZULI, enchantmentTable.getLapis()));
@@ -71,7 +71,7 @@ index 0c3c3902e84010684ef703545c1377d8a6f32580..fa3ecf3ca6514dcf957b07c787946cc5
}); });
} }
diff --git a/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java b/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java b/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java
index 839b7bc9392906dca384003468746963631fe095..cc065545723c118b454acd91ef9044af36aa3f1b 100644 index 839b7bc9392906dca384003468746963631fe095..286f34eef22a85be3fe9747dc3c3f9a7d51f437c 100644
--- a/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java --- a/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java +++ b/src/main/java/net/minecraft/world/level/block/EnchantmentTableBlock.java
@@ -29,6 +29,8 @@ import net.minecraft.world.level.pathfinder.PathComputationType; @@ -29,6 +29,8 @@ import net.minecraft.world.level.pathfinder.PathComputationType;
@@ -93,7 +93,7 @@ index 839b7bc9392906dca384003468746963631fe095..cc065545723c118b454acd91ef9044af
+ public void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean moved) { + public void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean moved) {
+ BlockEntity blockEntity = level.getBlockEntity(pos); + BlockEntity blockEntity = level.getBlockEntity(pos);
+ +
+ if (level().purpurConfig.enchantmentTableLapisPersists && blockEntity instanceof EnchantmentTableBlockEntity enchantmentTable) { + if (level.purpurConfig.enchantmentTableLapisPersists && blockEntity instanceof EnchantmentTableBlockEntity enchantmentTable) {
+ Containers.dropItemStack(level, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.LAPIS_LAZULI, enchantmentTable.getLapis())); + Containers.dropItemStack(level, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.LAPIS_LAZULI, enchantmentTable.getLapis()));
+ level.updateNeighbourForOutputSignal(pos, this); + level.updateNeighbourForOutputSignal(pos, this);
+ } + }
@@ -146,7 +146,7 @@ index 65e1381bb2d10bd212463feb602c60f8fdb9ade1..b7370e64fd0d50e8725d7d5afc30af2e
+ // Purpur + // 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 fac5a929dec9df57217a9b835910769958d39351..26586904990f39298f7e2a6e1be657a13808fd6d 100644 index 96db7651b416e0654586ddd6bdc46222466accf9..e6da680bca4b9a1ace5229f4c7cd08abb90c4364 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -745,6 +745,11 @@ public class PurpurWorldConfig { @@ -745,6 +745,11 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] PaperPR #7822 Fix exact choice recipe book clicks
diff --git a/src/main/java/net/minecraft/world/entity/player/StackedContents.java b/src/main/java/net/minecraft/world/entity/player/StackedContents.java diff --git a/src/main/java/net/minecraft/world/entity/player/StackedContents.java b/src/main/java/net/minecraft/world/entity/player/StackedContents.java
index 574ebb3a2fcd0e4e426a8a7ee88d722ed3b9c3f5..842b921799111789b37a34b76644c9217bc85794 100644 index 574ebb3a2fcd0e4e426a8a7ee88d722ed3b9c3f5..862972afa333422592a25b854cec191e02c10734 100644
--- a/src/main/java/net/minecraft/world/entity/player/StackedContents.java --- a/src/main/java/net/minecraft/world/entity/player/StackedContents.java
+++ b/src/main/java/net/minecraft/world/entity/player/StackedContents.java +++ b/src/main/java/net/minecraft/world/entity/player/StackedContents.java
@@ -37,8 +37,62 @@ public class StackedContents { @@ -37,8 +37,62 @@ public class StackedContents {
@@ -32,7 +32,7 @@ index 574ebb3a2fcd0e4e426a8a7ee88d722ed3b9c3f5..842b921799111789b37a34b76644c921
+ if (a == null || b == null) { + if (a == null || b == null) {
+ return false; + return false;
+ } + }
+ return ItemStack.tagMatches(a, b); + return ItemStack.matches(a, b);
+ } + }
+ }); + });
+ private final it.unimi.dsi.fastutil.ints.Int2ObjectMap<net.minecraft.world.item.ItemStack> idToItemstack = new it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap<>(); + private final it.unimi.dsi.fastutil.ints.Int2ObjectMap<net.minecraft.world.item.ItemStack> idToItemstack = new it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap<>();
@@ -85,7 +85,7 @@ index 574ebb3a2fcd0e4e426a8a7ee88d722ed3b9c3f5..842b921799111789b37a34b76644c921
} }
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 0f6f14f3ddf18ef111d37434b8c2659c9a6484b9..57bdbfd436feb2004f8c1a45f4a1658e7167582b 100644 index c6bd785382fcd0097c0cfc60ed9b5241cd1b2250..16e051084bb4e9efc3bd009b76f5cd88d62f4fa3 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
@@ -113,6 +113,7 @@ import org.bukkit.event.world.StructureGrowEvent; @@ -113,6 +113,7 @@ import org.bukkit.event.world.StructureGrowEvent;

View File

@@ -5,14 +5,14 @@ Subject: [PATCH] Add Bee API
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 ca977a8f3d3e7925b3abc78d2dd1a7f57771eee8..fefd8890729f90fc271c5b4ff48482ed18d1d5ec 100644 index 2afe5a4f3abaa3f9883b13fa3895e1e15ed68d3a..2677e7899aa98fc04070f5bbbc40da6117d89efa 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
@@ -803,6 +803,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -803,6 +803,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
if (optional.isPresent()) { if (optional.isPresent()) {
Bee.this.savedFlowerPos = (BlockPos) optional.get(); Bee.this.savedFlowerPos = (BlockPos) optional.get();
Bee.this.navigation.moveTo((double) Bee.this.savedFlowerPos.getX() + 0.5D, (double) Bee.this.savedFlowerPos.getY() + 0.5D, (double) Bee.this.savedFlowerPos.getZ() + 0.5D, 1.2000000476837158D); Bee.this.navigation.moveTo((double) Bee.this.savedFlowerPos.getX() + 0.5D, (double) Bee.this.savedFlowerPos.getY() + 0.5D, (double) Bee.this.savedFlowerPos.getZ() + 0.5D, 1.2000000476837158D);
+ new org.purpurmc.purpur.event.entity.BeeFoundFlowerEvent((org.bukkit.entity.Bee) Bee.this.getBukkitEntity(), io.papermc.paper.util.MCUtil.toLocation(Bee.this.level, Bee.this.savedFlowerPos)).callEvent(); // Purpur + new org.purpurmc.purpur.event.entity.BeeFoundFlowerEvent((org.bukkit.entity.Bee) Bee.this.getBukkitEntity(), io.papermc.paper.util.MCUtil.toLocation(Bee.this.level(), Bee.this.savedFlowerPos)).callEvent(); // Purpur
return true; return true;
} else { } else {
Bee.this.remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(Bee.this.random, 20, 60); Bee.this.remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(Bee.this.random, 20, 60);
@@ -20,7 +20,7 @@ index ca977a8f3d3e7925b3abc78d2dd1a7f57771eee8..fefd8890729f90fc271c5b4ff48482ed
this.pollinating = false; this.pollinating = false;
Bee.this.navigation.stop(); Bee.this.navigation.stop();
Bee.this.remainingCooldownBeforeLocatingNewFlower = 200; Bee.this.remainingCooldownBeforeLocatingNewFlower = 200;
+ new org.purpurmc.purpur.event.entity.BeeStopPollinatingEvent((org.bukkit.entity.Bee) Bee.this.getBukkitEntity(), Bee.this.savedFlowerPos == null ? null : io.papermc.paper.util.MCUtil.toLocation(Bee.this.level, Bee.this.savedFlowerPos), Bee.this.hasNectar()).callEvent(); // Purpur + new org.purpurmc.purpur.event.entity.BeeStopPollinatingEvent((org.bukkit.entity.Bee) Bee.this.getBukkitEntity(), Bee.this.savedFlowerPos == null ? null : io.papermc.paper.util.MCUtil.toLocation(Bee.this.level(), Bee.this.savedFlowerPos), Bee.this.hasNectar()).callEvent(); // Purpur
} }
@Override @Override
@@ -28,7 +28,7 @@ index ca977a8f3d3e7925b3abc78d2dd1a7f57771eee8..fefd8890729f90fc271c5b4ff48482ed
this.setWantedPos(); this.setWantedPos();
} }
+ if (this.successfulPollinatingTicks == 0) new org.purpurmc.purpur.event.entity.BeeStartedPollinatingEvent((org.bukkit.entity.Bee) Bee.this.getBukkitEntity(), io.papermc.paper.util.MCUtil.toLocation(Bee.this.level, Bee.this.savedFlowerPos)).callEvent(); // Purpur + if (this.successfulPollinatingTicks == 0) new org.purpurmc.purpur.event.entity.BeeStartedPollinatingEvent((org.bukkit.entity.Bee) Bee.this.getBukkitEntity(), io.papermc.paper.util.MCUtil.toLocation(Bee.this.level(), Bee.this.savedFlowerPos)).callEvent(); // Purpur
++this.successfulPollinatingTicks; ++this.successfulPollinatingTicks;
if (Bee.this.random.nextFloat() < 0.05F && this.successfulPollinatingTicks > this.lastSoundPlayedTick + 60) { if (Bee.this.random.nextFloat() < 0.05F && this.successfulPollinatingTicks > this.lastSoundPlayedTick + 60) {
this.lastSoundPlayedTick = this.successfulPollinatingTicks; this.lastSoundPlayedTick = this.successfulPollinatingTicks;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add option to allow creeper to encircle target when fusing.
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/SwellGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/SwellGoal.java diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/SwellGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/SwellGoal.java
index e241ae250f4f04a17ef2c583d00b065a4ca56a4c..02b567e4e808e1a809d285ef39e1abc54e1e6ad2 100644 index e241ae250f4f04a17ef2c583d00b065a4ca56a4c..7b99c3446b50939241d3e220d93e05649f72a6df 100644
--- a/src/main/java/net/minecraft/world/entity/ai/goal/SwellGoal.java --- a/src/main/java/net/minecraft/world/entity/ai/goal/SwellGoal.java
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/SwellGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/SwellGoal.java
@@ -54,6 +54,14 @@ public class SwellGoal extends Goal { @@ -54,6 +54,14 @@ public class SwellGoal extends Goal {
@@ -13,7 +13,7 @@ index e241ae250f4f04a17ef2c583d00b065a4ca56a4c..02b567e4e808e1a809d285ef39e1abc5
} else { } else {
this.creeper.setSwellDir(1); this.creeper.setSwellDir(1);
+ // Purpur start + // Purpur start
+ if (this.creeper.getLevel().purpurConfig.creeperEncircleTarget) { + if (this.creeper.level().purpurConfig.creeperEncircleTarget) {
+ net.minecraft.world.phys.Vec3 relative = this.creeper.position().subtract(this.target.position()); + net.minecraft.world.phys.Vec3 relative = this.creeper.position().subtract(this.target.position());
+ relative = relative.yRot((float) Math.PI / 3).normalize().multiply(2, 2, 2); + relative = relative.yRot((float) Math.PI / 3).normalize().multiply(2, 2, 2);
+ net.minecraft.world.phys.Vec3 destination = this.target.position().add(relative); + net.minecraft.world.phys.Vec3 destination = this.target.position().add(relative);

View File

@@ -5,19 +5,19 @@ Subject: [PATCH] End Crystal Cramming
diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
index ada7eba2beca5b0897fa2eb3567a639573f4e18d..db513ae4b1427ceba7f1a5878ba692ea42fa12ea 100644 index ada7eba2beca5b0897fa2eb3567a639573f4e18d..dac59bb206f197f8c51535f8c0bd7b98c9f34235 100644
--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
@@ -93,6 +93,7 @@ public class EndCrystal extends Entity { @@ -93,6 +93,7 @@ public class EndCrystal extends Entity {
} }
} }
// Paper end // Paper end
+ if (this.level().purpurConfig.endCrystalCramming > 0 && this.level.getEntitiesOfClass(EndCrystal.class, getBoundingBox()).size() > this.level().purpurConfig.endCrystalCramming) this.hurt(this.damageSources().cramming(), 6.0F); // Purpur + if (this.level().purpurConfig.endCrystalCramming > 0 && this.level().getEntitiesOfClass(EndCrystal.class, getBoundingBox()).size() > this.level().purpurConfig.endCrystalCramming) this.hurt(this.damageSources().cramming(), 6.0F); // 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 4c359f653e7beb0c1e162ebb53dcf1332e334bd6..68690f120e4586defa87de6be1b485e904eb21ff 100644 index 84a14af05556296f40d188bc77b973884681cad6..5bbf2ad0fe37a6f5211fec9dbc854546776482aa 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -873,6 +873,7 @@ public class PurpurWorldConfig { @@ -873,6 +873,7 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Config to remove explosion radius clamp
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
index 8f97c9df726ac20cfce7bdddd5dd4f8c5aa76c35..6fed8a6f4e633cda367e9ee9a0065690bb65a8dc 100644 index 8f97c9df726ac20cfce7bdddd5dd4f8c5aa76c35..93e7e2fe1f4184719736e698563f493b1d31e8c0 100644
--- a/src/main/java/net/minecraft/world/level/Explosion.java --- a/src/main/java/net/minecraft/world/level/Explosion.java
+++ b/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java
@@ -86,7 +86,7 @@ public class Explosion { @@ -86,7 +86,7 @@ public class Explosion {
@@ -22,12 +22,12 @@ index 8f97c9df726ac20cfce7bdddd5dd4f8c5aa76c35..6fed8a6f4e633cda367e9ee9a0065690
public void explode() { public void explode() {
// CraftBukkit start // CraftBukkit start
- if (this.radius < 0.1F) { - if (this.radius < 0.1F) {
+ if ((this.level == null || this.level().purpurConfig.explosionClampRadius) && this.radius < 0.1F) { // Purpur + if ((this.level == null || this.level.purpurConfig.explosionClampRadius) && this.radius < 0.1F) { // Purpur
return; return;
} }
// CraftBukkit end // CraftBukkit end
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 18f1f53ba9084b2d1ed8edbddb19e8253b0b79a4..365c2f9fa912d902fe12ec647ba0193513f4cc92 100644 index 15b35bac4264d436c6226d5868fa4a9eab51dbe4..44532abb382a0536204d6d561ea39c1b46b178b3 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -219,6 +219,11 @@ public class PurpurWorldConfig { @@ -219,6 +219,11 @@ public class PurpurWorldConfig {