like 50 more patches

This commit is contained in:
Ben Kerllenevich
2023-06-08 19:39:47 -04:00
parent 72a6198c95
commit d839ab0989
119 changed files with 2326 additions and 2542 deletions

View File

@@ -7,7 +7,7 @@ Adds a configuration option that ensures a player in Creative always tames a tam
This essentially allows Creative mode players to tame animals on their first try.
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java
index 5c64905e90ccca6e0b347241ddf9cc3f71058b8e..3bd7521b131b2b40f807bdc7ab95e64cf9bcdadc 100644
index b463fdb812f1c402885f1538e1c213aea1374e5c..88cae271386b1502cd80880a5c24995994d6ff45 100644
--- a/src/main/java/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java
@@ -63,7 +63,7 @@ public class RunAroundLikeCrazyGoal extends Goal {
@@ -20,10 +20,10 @@ index 5c64905e90ccca6e0b347241ddf9cc3f71058b8e..3bd7521b131b2b40f807bdc7ab95e64c
return;
}
diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java
index e2cee31edc80059a4c4faf531554b4eedd2a0303..d7704daf437f7d30929728042b6b35bafdbc11e0 100644
index 0ebfb9e6e6845cf0248410698fe59a4c7a76c43c..cd4b5286ac58d569f961d50f4d277ad3b70b8897 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Cat.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java
@@ -470,7 +470,7 @@ public class Cat extends TamableAnimal implements VariantHolder<CatVariant> {
@@ -442,7 +442,7 @@ public class Cat extends TamableAnimal implements VariantHolder<CatVariant> {
}
} else if (this.isFood(itemstack)) {
this.usePlayerItem(player, hand, itemstack);
@@ -31,35 +31,35 @@ index e2cee31edc80059a4c4faf531554b4eedd2a0303..d7704daf437f7d30929728042b6b35ba
+ if ((this.level.purpurConfig.alwaysTameInCreative && player.getAbilities().instabuild) || (this.random.nextInt(3) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled())) { // CraftBukkit // Purpur
this.tame(player);
this.setOrderedToSit(true);
this.level.broadcastEntityEvent(this, (byte) 7);
this.level().broadcastEntityEvent(this, (byte) 7);
diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java
index b4d1411a7578768fbd57ff4e87e86c5527e45b1a..c4114ec129b1acacfae920d67423b8ef6836a8d6 100644
index 1298cfd6b45b145b13afa7dbc4ffe914896c58f2..cba42fd7d5ea07960cf7b10702f1e4bd4573a8cd 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java
@@ -334,7 +334,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot
@@ -276,7 +276,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot
}
if (!this.level.isClientSide) {
if (!this.level().isClientSide) {
- if (this.random.nextInt(10) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) { // CraftBukkit
+ if ((this.level.purpurConfig.alwaysTameInCreative && player.getAbilities().instabuild) || (this.random.nextInt(10) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled())) { // CraftBukkit // Purpur
this.tame(player);
this.level.broadcastEntityEvent(this, (byte) 7);
this.level().broadcastEntityEvent(this, (byte) 7);
} else {
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 9b2422f9fb0d046ba2246167f9350ed6828f6265..e2109e66a8ab205d7c33adeca58844184b45d1d1 100644
index f18d90f4b2b786acbea242c4adbbdca2293929ec..6a6c8517f8a2b385a7bf821292fa83945d95f881 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
@@ -537,7 +537,7 @@ public class Wolf extends TamableAnimal implements NeutralMob {
}
@@ -519,7 +519,7 @@ public class Wolf extends TamableAnimal implements NeutralMob {
}
// CraftBukkit - added event call and isCancelled check.
- if (this.random.nextInt(3) == 0 && !CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) {
+ if ((this.level.purpurConfig.alwaysTameInCreative && player.getAbilities().instabuild) || (this.random.nextInt(3) == 0 && !CraftEventFactory.callEntityTameEvent(this, player).isCancelled())) { // Purpur
this.tame(player);
this.navigation.stop();
this.setTarget((LivingEntity) null);
// CraftBukkit - added event call and isCancelled check.
- if (this.random.nextInt(3) == 0 && !CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) {
+ if ((this.level().purpurConfig.alwaysTameInCreative && player.getAbilities().instabuild) || (this.random.nextInt(3) == 0 && !CraftEventFactory.callEntityTameEvent(this, player).isCancelled())) { // Purpur
this.tame(player);
this.navigation.stop();
this.setTarget((LivingEntity) null);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index c615f1a81cdc1c3846f5c8652a9a5d095e9b5db9..83083e335ed5e942be756f2ceaecb027f03545ec 100644
index f3a2c3cd83d8048df9d0df86220d59f2ce4c10af..5cdd5ba91b0de3f93905543061d8918b84a2ae7f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -119,6 +119,7 @@ public class PurpurWorldConfig {

View File

@@ -5,33 +5,33 @@ Subject: [PATCH] End crystal explosion options
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 b373f9e4b5a2604bcbccd36cd3de961f3a41cd32..a4fc0e9cb52bb5937effe5cd09f8bbefcf8dd531 100644
index 5465711d486e5f265a26042031e895fb09e30608..ada7eba2beca5b0897fa2eb3567a639573f4e18d 100644
--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java
@@ -128,6 +128,22 @@ public class EndCrystal extends Entity {
phantomDamageCooldown = 0;
idleCooldown = 60;
@@ -42,6 +42,22 @@ public class EndCrystal extends Entity {
this.setPos(x, y, z);
}
+
+ public boolean shouldExplode() {
+ return showsBottom() ? level.purpurConfig.basedEndCrystalExplode : level.purpurConfig.baselessEndCrystalExplode;
+ return showsBottom() ? level().purpurConfig.basedEndCrystalExplode : level().purpurConfig.baselessEndCrystalExplode;
+ }
+
+ public float getExplosionPower() {
+ return (float) (showsBottom() ? level.purpurConfig.basedEndCrystalExplosionPower : level.purpurConfig.baselessEndCrystalExplosionPower);
+ return (float) (showsBottom() ? level().purpurConfig.basedEndCrystalExplosionPower : level().purpurConfig.baselessEndCrystalExplosionPower);
+ }
+
+ public boolean hasExplosionFire() {
+ return showsBottom() ? level.purpurConfig.basedEndCrystalExplosionFire : level.purpurConfig.baselessEndCrystalExplosionFire;
+ return showsBottom() ? level().purpurConfig.basedEndCrystalExplosionFire : level().purpurConfig.baselessEndCrystalExplosionFire;
+ }
+
+ public Level.ExplosionInteraction getExplosionEffect() {
+ return showsBottom() ? level.purpurConfig.basedEndCrystalExplosionEffect : level.purpurConfig.baselessEndCrystalExplosionEffect;
+ return showsBottom() ? level().purpurConfig.basedEndCrystalExplosionEffect : level().purpurConfig.baselessEndCrystalExplosionEffect;
+ }
// Purpur end
+
@Override
@@ -173,17 +189,19 @@ public class EndCrystal extends Entity {
protected Entity.MovementEmission getMovementEmission() {
return Entity.MovementEmission.NONE;
@@ -124,17 +140,19 @@ public class EndCrystal extends Entity {
// CraftBukkit end
this.remove(Entity.RemovalReason.KILLED);
if (!source.is(DamageTypeTags.IS_EXPLOSION)) {
@@ -41,20 +41,20 @@ index b373f9e4b5a2604bcbccd36cd3de961f3a41cd32..a4fc0e9cb52bb5937effe5cd09f8bbef
// CraftBukkit start
- ExplosionPrimeEvent event = new ExplosionPrimeEvent(this.getBukkitEntity(), 6.0F, false);
+ ExplosionPrimeEvent event = new ExplosionPrimeEvent(this.getBukkitEntity(), getExplosionPower(), hasExplosionFire()); // Purpur
this.level.getCraftServer().getPluginManager().callEvent(event);
this.level().getCraftServer().getPluginManager().callEvent(event);
if (event.isCancelled()) {
this.unsetRemoved();
return false;
}
- this.level.explode(this, damagesource1, (ExplosionDamageCalculator) null, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.BLOCK);
+ this.level.explode(this, damagesource1, (ExplosionDamageCalculator) null, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), getExplosionEffect()); // Purpur
- this.level().explode(this, damagesource1, (ExplosionDamageCalculator) null, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.BLOCK);
+ this.level().explode(this, damagesource1, (ExplosionDamageCalculator) null, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), getExplosionEffect()); // Purpur
// CraftBukkit end
+ } else this.unsetRemoved(); // Purpur
}
this.onDestroyedBy(source);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 83083e335ed5e942be756f2ceaecb027f03545ec..7227e9619f5b908bd3d4b787d9dc468414194236 100644
index 5cdd5ba91b0de3f93905543061d8918b84a2ae7f..77109c7b27e1a0b3c0545f4ea14ca07c5dda3d12 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -470,6 +470,43 @@ public class PurpurWorldConfig {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Configs for if Wither/Ender Dragon can ride vehicles
diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
index 2484498eb7d3ebcf1c9f9c9db54ea12baac0e642..790160cfcb113e046379c2fe5af32667faf3be8c 100644
index 84aedd74177d8c521d4dc660706e08a0fed80f28..f0d1aac073777d6e751345482feec705435ae102 100644
--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
@@ -1154,6 +1154,7 @@ public class EnderDragon extends Mob implements Enemy {
@@ -1112,6 +1112,7 @@ public class EnderDragon extends Mob implements Enemy {
@Override
protected boolean canRide(Entity entity) {
@@ -17,10 +17,10 @@ index 2484498eb7d3ebcf1c9f9c9db54ea12baac0e642..790160cfcb113e046379c2fe5af32667
}
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 cad1246e6a8dbf92f367d0714306a428697bf1c1..c38c92a9967a50515f6d185d116578b6fc065f5e 100644
index 21a9438ed70d0bd0e9cbbe707612594cb9bbc3bc..e8685465837064e9caac86caab7824ba6113a4f6 100644
--- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
+++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
@@ -742,6 +742,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@@ -612,6 +612,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@Override
protected boolean canRide(Entity entity) {
@@ -29,38 +29,38 @@ index cad1246e6a8dbf92f367d0714306a428697bf1c1..c38c92a9967a50515f6d185d116578b6
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 7227e9619f5b908bd3d4b787d9dc468414194236..1e0566329eccba7cb50ba183dc13032afc5c40a0 100644
index 77109c7b27e1a0b3c0545f4ea14ca07c5dda3d12..1f97fd4d671f30cb03659ec4c8289d80b2b8c3e5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -949,6 +949,7 @@ public class PurpurWorldConfig {
@@ -838,6 +838,7 @@ public class PurpurWorldConfig {
public boolean enderDragonAlwaysDropsFullExp = false;
public boolean enderDragonBypassMobGriefing = false;
public boolean enderDragonTakeDamageFromWater = false;
+ public boolean enderDragonCanRideVehicles = false;
private void enderDragonSettings() {
enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable);
enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater);
@@ -967,6 +968,7 @@ public class PurpurWorldConfig {
if (PurpurConfig.version < 8) {
double oldValue = getDouble("mobs.ender_dragon.max-health", enderDragonMaxHealth);
@@ -852,6 +853,7 @@ public class PurpurWorldConfig {
enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp);
enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing);
enderDragonTakeDamageFromWater = getBoolean("mobs.ender_dragon.takes-damage-from-water", enderDragonTakeDamageFromWater);
+ enderDragonCanRideVehicles = getBoolean("mobs.ender_dragon.can-ride-vehicles", enderDragonCanRideVehicles);
}
public boolean endermanRidable = false;
@@ -2158,6 +2160,7 @@ public class PurpurWorldConfig {
public double endermanMaxHealth = 40.0D;
@@ -1711,6 +1713,7 @@ public class PurpurWorldConfig {
public int witherHealthRegenDelay = 20;
public boolean witherBypassMobGriefing = false;
public boolean witherTakeDamageFromWater = false;
+ public boolean witherCanRideVehicles = false;
private void witherSettings() {
witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
@@ -2177,6 +2180,7 @@ public class PurpurWorldConfig {
if (PurpurConfig.version < 8) {
double oldValue = getDouble("mobs.wither.max-health", witherMaxHealth);
@@ -1726,6 +1729,7 @@ public class PurpurWorldConfig {
witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay);
witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing);
witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater);
+ witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles);
}
public boolean witherSkeletonRidable = false;
public double witherSkeletonMaxHealth = 20.0D;

View File

@@ -5,16 +5,16 @@ Subject: [PATCH] Dont run with scissors!
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index d9a6a5ef1cd419d2111e49d42df8b866e90d9c6b..4345b10d2aad2d82155fe50f31139917e9e0d315 100644
index c624651d073eef3a71729555d7fe1adca27679e2..8f08fec1b0c2f244ab155725f5dcb2ef90018843 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -1697,6 +1697,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@@ -1693,6 +1693,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
this.player.resetFallDistance();
}
+ // Purpur Start
+ if (this.player.level.purpurConfig.dontRunWithScissors && this.player.isSprinting() && !(this.player.level.purpurConfig.ignoreScissorsInWater && this.player.isInWater()) && !(this.player.level.purpurConfig.ignoreScissorsInLava && this.player.isInLava()) && (isScissor(this.player.getItemInHand(InteractionHand.MAIN_HAND)) || isScissor(this.player.getItemInHand(InteractionHand.OFF_HAND))) && (int) (Math.random() * 10) == 0) {
+ this.player.hurt(this.player.damageSources().magic(), (float) this.player.level.purpurConfig.scissorsRunningDamage);
+ if (this.player.level().purpurConfig.dontRunWithScissors && this.player.isSprinting() && !(this.player.level().purpurConfig.ignoreScissorsInWater && this.player.isInWater()) && !(this.player.level().purpurConfig.ignoreScissorsInLava && this.player.isInLava()) && (isScissor(this.player.getItemInHand(InteractionHand.MAIN_HAND)) || isScissor(this.player.getItemInHand(InteractionHand.OFF_HAND))) && (int) (Math.random() * 10) == 0) {
+ this.player.hurt(this.player.damageSources().magic(), (float) this.player.level().purpurConfig.scissorsRunningDamage);
+ if (!org.purpurmc.purpur.PurpurConfig.dontRunWithScissors.isBlank()) this.player.sendActionBarMessage(org.purpurmc.purpur.PurpurConfig.dontRunWithScissors);
+ }
+ // Purpur End
@@ -22,32 +22,33 @@ index d9a6a5ef1cd419d2111e49d42df8b866e90d9c6b..4345b10d2aad2d82155fe50f31139917
this.player.checkMovementStatistics(this.player.getX() - d3, this.player.getY() - d4, this.player.getZ() - d5);
this.lastGoodX = this.player.getX();
this.lastGoodY = this.player.getY();
@@ -1730,6 +1737,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@@ -1725,6 +1732,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
}
}
// Paper end - optimise out extra getCubes
+
+ // Purpur start
+ public boolean isScissor(ItemStack stack) {
+ return stack.is(Items.SHEARS) && (stack.getTag() == null || stack.getTag().getInt("CustomModelData") == 0);
+ }
+ // Purpur end
+
private boolean isPlayerCollidingWithAnythingNew(LevelReader world, AABB box) {
Iterable<VoxelShape> iterable = world.getCollisions(this.player, this.player.getBoundingBox().deflate(9.999999747378752E-6D));
VoxelShape voxelshape = Shapes.create(box.deflate(9.999999747378752E-6D));
private boolean isPlayerCollidingWithAnythingNew(LevelReader world, AABB box, double newX, double newY, double newZ) {
AABB axisalignedbb1 = this.player.getBoundingBox().move(newX - this.player.getX(), newY - this.player.getY(), newZ - this.player.getZ());
Iterable<VoxelShape> iterable = world.getCollisions(this.player, axisalignedbb1.deflate(9.999999747378752E-6D));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 70db296b80b98b378917f68037420ae150e14adb..3fc967279daaf6eb2b2d80fcad57b5b6a11cec43 100644
index fdfb1f6bd59f5b9e193aac61b2ddc1b1e4f20d6c..0c3ae4eb17641d31b77a36db2210bef24632e2a2 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -183,6 +183,7 @@ public class PurpurConfig {
@@ -182,6 +182,7 @@ public class PurpurConfig {
public static String demoCommandOutput = "<green>%s has been shown the demo screen";
public static String pingCommandOutput = "<green>%s's ping is %sms";
public static String tpsbarCommandOutput = "<green>Tpsbar toggled <onoff> for <target>";
+ public static String dontRunWithScissors = "<red><italic>Don't run with scissors!";
private static void messages() {
cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob);
afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway);
@@ -194,6 +195,12 @@ public class PurpurConfig {
afkBroadcastBack = getString("settings.messages.afk-broadcast-back", afkBroadcastBack);
@@ -192,6 +193,12 @@ public class PurpurConfig {
demoCommandOutput = getString("settings.messages.demo-command-output", demoCommandOutput);
pingCommandOutput = getString("settings.messages.ping-command-output", pingCommandOutput);
tpsbarCommandOutput = getString("settings.messages.tpsbar-command-output", tpsbarCommandOutput);
@@ -61,7 +62,7 @@ index 70db296b80b98b378917f68037420ae150e14adb..3fc967279daaf6eb2b2d80fcad57b5b6
public static String serverModName = "Purpur";
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 1e0566329eccba7cb50ba183dc13032afc5c40a0..6d20f1788cd7ce776a984ad57a6efaeead8cd490 100644
index 1f97fd4d671f30cb03659ec4c8289d80b2b8c3e5..ab57aaa6a301f2816b03e261038a84d09fefc9c1 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -199,6 +199,10 @@ public class PurpurWorldConfig {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] One Punch Man!
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index f8957ef4d25c66002eb2dc992334a6db617ea5e0..e12f9a021097267147268b3b0ec2824cf9081058 100644
index 77a808d1f2737bd705807a97f84d1c3b77338346..734ea091ab4d5cd211902e0b6838455a7f3cae66 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -2257,6 +2257,20 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -2277,6 +2277,20 @@ public abstract class LivingEntity extends Entity implements Attackable {
}
}
@@ -30,7 +30,7 @@ index f8957ef4d25c66002eb2dc992334a6db617ea5e0..e12f9a021097267147268b3b0ec2824c
if (human) {
// PAIL: Be sure to drag all this code from the EntityHuman subclass each update.
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 6d20f1788cd7ce776a984ad57a6efaeead8cd490..b3347a38973bbb3fe84b5b1118e767cd40f3ccfa 100644
index ab57aaa6a301f2816b03e261038a84d09fefc9c1..0241cf9413fd830fc9fc045a9ef75c8d814ec612 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -348,6 +348,7 @@ public class PurpurWorldConfig {

View File

@@ -8,16 +8,16 @@ Subject: [PATCH] Configurable Ender Pearl cooldown, damage, and Endermite RNG
- Endermite spawn chance
diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
index 39ab9a283d856ba8d578d1378285758e32a24cf0..71cf8c2ccbed676f338a0bf553199b4bbc0d0372 100644
index e8114d89a3129e56c0329410a49ded63cc77cb4c..33eacb5e839805ec9e6f01116b9047a40e5e857e 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
@@ -68,7 +68,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile {
Bukkit.getPluginManager().callEvent(teleEvent);
if (!teleEvent.isCancelled() && entityplayer.connection.isAcceptingMessages()) {
- if (this.random.nextFloat() < 0.05F && this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING)) {
+ if (this.random.nextFloat() < this.level.purpurConfig.enderPearlEndermiteChance && this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING)) { // Purpur
Endermite entityendermite = (Endermite) EntityType.ENDERMITE.create(this.level);
- if (this.random.nextFloat() < 0.05F && this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING)) {
+ if (this.random.nextFloat() < this.level().purpurConfig.enderPearlEndermiteChance && this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING)) { // Purpur
Endermite entityendermite = (Endermite) EntityType.ENDERMITE.create(this.level());
if (entityendermite != null) {
@@ -84,7 +84,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile {
@@ -43,7 +43,7 @@ index 749ab72edc0d2e9c6f1161415ab8d59d3d6ca976..897c202c0905040072a06fdfa2032a7f
// Paper end
if (user instanceof net.minecraft.server.level.ServerPlayer) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index b3347a38973bbb3fe84b5b1118e767cd40f3ccfa..58ab672c238b243a66e615171c0cbf2c941ccd14 100644
index 0241cf9413fd830fc9fc045a9ef75c8d814ec612..d64eea277befa1fb510d8be78f7653ae2e6c32ee 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -203,6 +203,10 @@ public class PurpurWorldConfig {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 9610ab9ba4803f6841c797f740ac5cdc758a70e3..272e7cc5fc33ec7148a47328d2ba9d88b11092d3 100644
index e81f439727dea8073044abec5f99fbe1220fb279..3745b4b2cacef2ce9c2d0aa9e72245a3ec551ae4 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1389,7 +1389,7 @@ public class ServerPlayer extends Player {
@@ -1420,7 +1420,7 @@ public class ServerPlayer extends Player {
return entitymonster.isPreventingPlayerRest(this);
});
@@ -18,7 +18,7 @@ index 9610ab9ba4803f6841c797f740ac5cdc758a70e3..272e7cc5fc33ec7148a47328d2ba9d88
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 58ab672c238b243a66e615171c0cbf2c941ccd14..878224a1a86e486d13010ef0bc1dd336c37ffa55 100644
index d64eea277befa1fb510d8be78f7653ae2e6c32ee..5797833e8a2973bb62efc2e50f857dd579e660c4 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -357,6 +357,7 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add back player spawned endermite API
diff --git a/src/main/java/net/minecraft/world/entity/monster/Endermite.java b/src/main/java/net/minecraft/world/entity/monster/Endermite.java
index 3ead24b788247284d911ad91543b9952ed15c86f..8fabc1e276a399bcdc52de2a50c89a1eedebb156 100644
index e3573708cf8497935144aa270e1a1d5781d3ec7f..ec8a0c6ef570e09e2ac5a7c3cfce82a1c32f30c0 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java
@@ -31,6 +31,7 @@ import net.minecraft.world.level.block.state.BlockState;
@@ -16,11 +16,10 @@ index 3ead24b788247284d911ad91543b9952ed15c86f..8fabc1e276a399bcdc52de2a50c89a1e
public Endermite(EntityType<? extends Endermite> type, Level world) {
super(type, world);
@@ -62,6 +63,14 @@ public class Endermite extends Monster {
public boolean isSensitiveToWater() {
@@ -47,6 +48,14 @@ public class Endermite extends Monster {
return this.level.purpurConfig.endermiteTakeDamageFromWater;
}
+
+ public boolean isPlayerSpawned() {
+ return this.isPlayerSpawned;
+ }
@@ -28,10 +27,11 @@ index 3ead24b788247284d911ad91543b9952ed15c86f..8fabc1e276a399bcdc52de2a50c89a1e
+ public void setPlayerSpawned(boolean playerSpawned) {
+ this.isPlayerSpawned = playerSpawned;
+ }
// Purpur end
+
@Override
@@ -116,12 +125,14 @@ public class Endermite extends Monster {
protected void registerGoals() {
this.goalSelector.addGoal(1, new FloatGoal(this));
@@ -97,12 +106,14 @@ public class Endermite extends Monster {
public void readAdditionalSaveData(CompoundTag nbt) {
super.readAdditionalSaveData(nbt);
this.life = nbt.getInt("Lifetime");
@@ -47,16 +47,16 @@ index 3ead24b788247284d911ad91543b9952ed15c86f..8fabc1e276a399bcdc52de2a50c89a1e
@Override
diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
index 71cf8c2ccbed676f338a0bf553199b4bbc0d0372..f35547c6b5951bc6eb4df74b2a94496fd20d69b5 100644
index 33eacb5e839805ec9e6f01116b9047a40e5e857e..560f2c800f89ae75d8695fe9fb47a250d22099ca 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
@@ -72,6 +72,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile {
Endermite entityendermite = (Endermite) EntityType.ENDERMITE.create(this.level);
Endermite entityendermite = (Endermite) EntityType.ENDERMITE.create(this.level());
if (entityendermite != null) {
+ entityendermite.setPlayerSpawned(true); // Purpur
entityendermite.moveTo(entity.getX(), entity.getY(), entity.getZ(), entity.getYRot(), entity.getXRot());
this.level.addFreshEntity(entityendermite, CreatureSpawnEvent.SpawnReason.ENDER_PEARL);
this.level().addFreshEntity(entityendermite, CreatureSpawnEvent.SpawnReason.ENDER_PEARL);
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java
index 75c7645fb5732c43d1da15181cf5c7ee4c3ecd6c..e7f5ea4d8d72672cf03483e720c6389425f28f6d 100644

View File

@@ -5,11 +5,11 @@ Subject: [PATCH] Config Enderman aggressiveness towards Endermites
diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
index a3652bebb72fa65c4360352e3424002d5b0438d2..34b2e9ec62b5a91db11a4782d5e8803f29f7a6cf 100644
index 69da4fc206d33c7ff401c86edc86d0f308ad7c1f..23bc07396c65763fab8c8d584bcc317cc29af9d4 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
@@ -128,7 +128,7 @@ public class EnderMan extends Monster implements NeutralMob {
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
@@ -109,7 +109,7 @@ public class EnderMan extends Monster implements NeutralMob {
this.goalSelector.addGoal(11, new EnderMan.EndermanTakeBlockGoal(this));
this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt));
this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0]));
- this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Endermite.class, true, false));
@@ -18,19 +18,18 @@ index a3652bebb72fa65c4360352e3424002d5b0438d2..34b2e9ec62b5a91db11a4782d5e8803f
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 878224a1a86e486d13010ef0bc1dd336c37ffa55..98f01e776f1b0124a332c7b90cb33685b1e0b850 100644
index 5797833e8a2973bb62efc2e50f857dd579e660c4..1c027ef8420a2e6b6fe90038a7bce370cefe1cdf 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -999,6 +999,8 @@ public class PurpurWorldConfig {
@@ -881,17 +881,25 @@ public class PurpurWorldConfig {
public boolean endermanDespawnEvenWithBlock = false;
public boolean endermanBypassMobGriefing = false;
public boolean endermanTakeDamageFromWater = true;
+ public boolean endermanAggroEndermites = true;
+ public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false;
private void endermanSettings() {
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
@@ -1008,11 +1010,17 @@ public class PurpurWorldConfig {
if (PurpurConfig.version < 10) {
double oldValue = getDouble("mobs.enderman.attributes.max-health", endermanMaxHealth);
set("mobs.enderman.attributes.max-health", null);
set("mobs.enderman.attributes.max_health", oldValue);
}
@@ -47,4 +46,4 @@ index 878224a1a86e486d13010ef0bc1dd336c37ffa55..98f01e776f1b0124a332c7b90cb33685
+ endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned);
}
public boolean endermiteRidable = false;
public double endermiteMaxHealth = 8.0D;

View File

@@ -7,10 +7,10 @@ Prevents Enderman from becoming aggresive towards players that are wearing a Dra
Adds functionality to a useless item!
diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
index 34b2e9ec62b5a91db11a4782d5e8803f29f7a6cf..bfde674f2e5f88cfe9a4c760a9f8eb9038eaef21 100644
index 23bc07396c65763fab8c8d584bcc317cc29af9d4..9d84092a3e9712609e35e4fd0a2db2fc2ac385ad 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
@@ -265,7 +265,7 @@ public class EnderMan extends Monster implements NeutralMob {
@@ -246,7 +246,7 @@ public class EnderMan extends Monster implements NeutralMob {
// Paper end
ItemStack itemstack = (ItemStack) player.getInventory().armor.get(3);
@@ -20,19 +20,19 @@ index 34b2e9ec62b5a91db11a4782d5e8803f29f7a6cf..bfde674f2e5f88cfe9a4c760a9f8eb90
} else {
Vec3 vec3d = player.getViewVector(1.0F).normalize();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 98f01e776f1b0124a332c7b90cb33685b1e0b850..94438bc7e8e0593d7b23cbe82293518535c36a56 100644
index 1c027ef8420a2e6b6fe90038a7bce370cefe1cdf..fd97b15422815b5bf334db5c4a4c3fd5173a69f8 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1001,6 +1001,8 @@ public class PurpurWorldConfig {
@@ -883,6 +883,8 @@ public class PurpurWorldConfig {
public boolean endermanTakeDamageFromWater = true;
public boolean endermanAggroEndermites = true;
public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false;
+ public boolean endermanIgnorePlayerDragonHead = false;
+ public boolean endermanDisableStareAggro = false;
private void endermanSettings() {
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
@@ -1021,6 +1023,8 @@ public class PurpurWorldConfig {
if (PurpurConfig.version < 10) {
double oldValue = getDouble("mobs.enderman.attributes.max-health", endermanMaxHealth);
@@ -900,6 +902,8 @@ public class PurpurWorldConfig {
endermanTakeDamageFromWater = getBoolean("mobs.enderman.takes-damage-from-water", endermanTakeDamageFromWater);
endermanAggroEndermites = getBoolean("mobs.enderman.aggressive-towards-endermites", endermanAggroEndermites);
endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned);
@@ -40,4 +40,4 @@ index 98f01e776f1b0124a332c7b90cb33685b1e0b850..94438bc7e8e0593d7b23cbe822935185
+ endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro);
}
public boolean endermiteRidable = false;
public double endermiteMaxHealth = 8.0D;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Tick fluids config
diff --git a/src/main/java/net/minecraft/world/level/block/LiquidBlock.java b/src/main/java/net/minecraft/world/level/block/LiquidBlock.java
index 43e8ef1d6a65d4fd3fe53a587639ffb814368217..9c22a730772f71b34c63d1e43d48943f71e9990b 100644
index bbabe4ad8afcc3a2069f6e9d4a9adcb643266894..55419bd653f7f5391fa13cd15a0b00fbff5e9c39 100644
--- a/src/main/java/net/minecraft/world/level/block/LiquidBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/LiquidBlock.java
@@ -105,7 +105,7 @@ public class LiquidBlock extends Block implements BucketPickup {
@@ -17,7 +17,7 @@ index 43e8ef1d6a65d4fd3fe53a587639ffb814368217..9c22a730772f71b34c63d1e43d48943f
world.scheduleTick(pos, state.getFluidState().getType(), this.getFlowSpeed(world, pos)); // Paper
}
@@ -129,7 +129,7 @@ public class LiquidBlock extends Block implements BucketPickup {
@@ -133,7 +133,7 @@ public class LiquidBlock extends Block implements BucketPickup {
@Override
public BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) {
@@ -26,7 +26,7 @@ index 43e8ef1d6a65d4fd3fe53a587639ffb814368217..9c22a730772f71b34c63d1e43d48943f
world.scheduleTick(pos, state.getFluidState().getType(), this.fluid.getTickDelay(world));
}
@@ -138,7 +138,7 @@ public class LiquidBlock extends Block implements BucketPickup {
@@ -142,7 +142,7 @@ public class LiquidBlock extends Block implements BucketPickup {
@Override
public void neighborChanged(BlockState state, Level world, BlockPos pos, Block sourceBlock, BlockPos sourcePos, boolean notify) {
@@ -36,7 +36,7 @@ index 43e8ef1d6a65d4fd3fe53a587639ffb814368217..9c22a730772f71b34c63d1e43d48943f
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 94438bc7e8e0593d7b23cbe82293518535c36a56..cd2eeb6a042a1192451d5dffa757d08ecaa09c55 100644
index fd97b15422815b5bf334db5c4a4c3fd5173a69f8..e2ae6c3b45c5b231b72579a0fbcf00f6abb89ea6 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -131,6 +131,7 @@ public class PurpurWorldConfig {

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Config to disable Llama caravans
Disables the mechanic where llamas follow leashed llamas.
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java
index 7b141c495095afcd9c8b04c059d692e829259e7a..ad30f2d678cfc4b0d693e84e6e152c63b1b3cbb8 100644
index 849f0c7c6d13df00d90211a48d8b56ab156812b8..194dd3a896ed859c23c84ae7cb6147d545cbe8cb 100644
--- a/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java
@@ -22,7 +22,7 @@ public class LlamaFollowCaravanGoal extends Goal {
@@ -16,13 +16,13 @@ index 7b141c495095afcd9c8b04c059d692e829259e7a..ad30f2d678cfc4b0d693e84e6e152c63
- if (!this.llama.shouldJoinCaravan) return false; // Purpur
+ if (!this.llama.level.purpurConfig.llamaJoinCaravans || !this.llama.shouldJoinCaravan) return false; // Purpur
if (!this.llama.isLeashed() && !this.llama.inCaravan()) {
List<Entity> list = this.llama.level.getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0D, 4.0D, 9.0D), (entity) -> {
List<Entity> list = this.llama.level().getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0D, 4.0D, 9.0D), (entity) -> {
EntityType<?> entityType = entity.getType();
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
index de0e0b3d7b300f82717e9b69a5d6fe7dd70e1f1c..0a2adbda0f1c4c6e3695ee39af687f69663f3ae4 100644
index 84f6fab337f126290225e93038555699a7814f94..4ecf2f60465485982a4b9b8f1fabe2757dd778f4 100644
--- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
@@ -540,7 +540,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
@@ -494,7 +494,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
}
public void joinCaravan(Llama llama) {
@@ -32,10 +32,10 @@ index de0e0b3d7b300f82717e9b69a5d6fe7dd70e1f1c..0a2adbda0f1c4c6e3695ee39af687f69
this.caravanHead.caravanTail = this;
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index cd2eeb6a042a1192451d5dffa757d08ecaa09c55..7f28c5f855cc2c07dfb8dd57c69a8e12bc27fa6e 100644
index e2ae6c3b45c5b231b72579a0fbcf00f6abb89ea6..6b9d5c722423e5e52cf138aaa63bc522c3931ec0 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1333,6 +1333,7 @@ public class PurpurWorldConfig {
@@ -1130,6 +1130,7 @@ public class PurpurWorldConfig {
public double llamaMovementSpeedMax = 0.175D;
public int llamaBreedingTicks = 6000;
public boolean llamaTakeDamageFromWater = false;
@@ -43,11 +43,11 @@ index cd2eeb6a042a1192451d5dffa757d08ecaa09c55..7f28c5f855cc2c07dfb8dd57c69a8e12
private void llamaSettings() {
llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable);
llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater);
@@ -1352,6 +1353,7 @@ public class PurpurWorldConfig {
@@ -1149,6 +1150,7 @@ public class PurpurWorldConfig {
llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax);
llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks);
llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater);
+ llamaJoinCaravans = getBoolean("mobs.llama.join-caravans", llamaJoinCaravans);
}
public boolean magmaCubeRidable = false;
public String magmaCubeMaxHealth = "size * size";

View File

@@ -6,41 +6,43 @@ Subject: [PATCH] Config to make Creepers explode on death
Creepers exploded after being killed in the alpha days. This brings that back.
diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
index 514a71bfc0fb95631ce3931528aa5a0d82c1cdbf..82d1bd8b8ba0e4b72e2030f085ddc0db0432d083 100644
index 4c175c9e8a3452f67b3f7cdac5aac1169309e993..656ddb0011eebc7acb9eb72a79fc372b796aaafe 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
@@ -63,6 +63,7 @@ public class Creeper extends Monster implements PowerableMob {
private int spacebarCharge = 0;
private int prevSpacebarCharge = 0;
private int powerToggleDelay = 0;
@@ -59,6 +59,9 @@ public class Creeper extends Monster implements PowerableMob {
public int maxSwell = 30;
public int explosionRadius = 3;
private int droppedSkulls;
+ // Purpur start
+ private boolean exploding = false;
// Purpur end
+ // Purpur end
public Creeper(EntityType<? extends Creeper> type, Level world) {
@@ -155,6 +156,14 @@ public class Creeper extends Monster implements PowerableMob {
public boolean isSensitiveToWater() {
super(type, world);
@@ -191,6 +194,14 @@ public class Creeper extends Monster implements PowerableMob {
return this.level.purpurConfig.creeperTakeDamageFromWater;
}
+
+ @Override
+ protected org.bukkit.event.entity.EntityDeathEvent dropAllDeathLoot(DamageSource damagesource) {
+ if (!exploding && this.level.purpurConfig.creeperExplodeWhenKilled && damagesource.getEntity() instanceof net.minecraft.server.level.ServerPlayer) {
+ if (!exploding && this.level().purpurConfig.creeperExplodeWhenKilled && damagesource.getEntity() instanceof net.minecraft.server.level.ServerPlayer) {
+ this.explodeCreeper();
+ }
+ return super.dropAllDeathLoot(damagesource);
+ }
// Purpur end
+
@Override
@@ -358,6 +367,7 @@ public class Creeper extends Monster implements PowerableMob {
protected SoundEvent getHurtSound(DamageSource source) {
return SoundEvents.CREEPER_HURT;
@@ -281,6 +292,7 @@ public class Creeper extends Monster implements PowerableMob {
}
public void explodeCreeper() {
+ this.exploding = true; // Purpur
if (!this.level.isClientSide) {
if (!this.level().isClientSide) {
float f = this.isPowered() ? 2.0F : 1.0F;
@@ -375,7 +385,7 @@ public class Creeper extends Monster implements PowerableMob {
@@ -298,7 +310,7 @@ public class Creeper extends Monster implements PowerableMob {
}
// CraftBukkit end
}
@@ -50,22 +52,22 @@ index 514a71bfc0fb95631ce3931528aa5a0d82c1cdbf..82d1bd8b8ba0e4b72e2030f085ddc0db
private void spawnLingeringCloud() {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 7f28c5f855cc2c07dfb8dd57c69a8e12bc27fa6e..c7752f41ea30ccac924adcd093f9a946c794f2dc 100644
index 6b9d5c722423e5e52cf138aaa63bc522c3931ec0..5f127fa1013347b6875a987ab0037ab566f67f6e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -853,6 +853,7 @@ public class PurpurWorldConfig {
@@ -771,6 +771,7 @@ public class PurpurWorldConfig {
public boolean creeperAllowGriefing = true;
public boolean creeperBypassMobGriefing = false;
public boolean creeperTakeDamageFromWater = false;
+ public boolean creeperExplodeWhenKilled = false;
private void creeperSettings() {
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
@@ -867,6 +868,7 @@ public class PurpurWorldConfig {
if (PurpurConfig.version < 10) {
double oldValue = getDouble("mobs.creeper.attributes.max-health", creeperMaxHealth);
@@ -782,6 +783,7 @@ public class PurpurWorldConfig {
creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing);
creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing);
creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater);
+ creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled);
}
public boolean dolphinRidable = false;
public double dolphinMaxHealth = 10.0D;

View File

@@ -5,20 +5,20 @@ Subject: [PATCH] Configurable ravager griefable blocks list
diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
index d67171c3b7d53a91ac9761385646cf9b7b474362..6798e9b616a3357ce68728395cb43344b9e16889 100644
index 5fc6506c1d0d064c5adce5416eb1c1049ae8cf01..ead73730128a8646e9a6942c4f89e1974752a39a 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
@@ -205,7 +205,7 @@ public class Ravager extends Raider {
BlockState iblockdata = this.level.getBlockState(blockposition);
@@ -180,7 +180,7 @@ public class Ravager extends Raider {
BlockState iblockdata = this.level().getBlockState(blockposition);
Block block = iblockdata.getBlock();
- if (block instanceof LeavesBlock && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.getFluidState().createLegacyBlock()).isCancelled()) { // CraftBukkit // Paper
+ if (this.level.purpurConfig.ravagerGriefableBlocks.contains(block) && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.getFluidState().createLegacyBlock()).isCancelled()) { // CraftBukkit // Paper
flag = this.level.destroyBlock(blockposition, true, this) || flag;
flag = this.level().destroyBlock(blockposition, true, this) || flag;
}
}
diff --git a/src/main/java/net/minecraft/world/level/block/CropBlock.java b/src/main/java/net/minecraft/world/level/block/CropBlock.java
index d78cb69c6b3fdc0883613c5cc53a38a7d31c0b76..de002217833c8677a305bf6abff590fc41b99a37 100644
index cf7007cabe4ba7505f2728e79e4c56e2d1bc878b..c431ec19212821ba7722c073e5ee6ad78254d23c 100644
--- a/src/main/java/net/minecraft/world/level/block/CropBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java
@@ -168,7 +168,7 @@ public class CropBlock extends BushBlock implements BonemealableBlock {
@@ -31,18 +31,18 @@ index d78cb69c6b3fdc0883613c5cc53a38a7d31c0b76..de002217833c8677a305bf6abff590fc
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index c7752f41ea30ccac924adcd093f9a946c794f2dc..60f4c0e3d26e7ed73e67ff145b7603fded801705 100644
index 5f127fa1013347b6875a987ab0037ab566f67f6e..600ef1ed2478ab68baf3684d64dedefd56f95c6f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1705,6 +1705,7 @@ public class PurpurWorldConfig {
@@ -1405,6 +1405,7 @@ public class PurpurWorldConfig {
public double ravagerMaxHealth = 100.0D;
public boolean ravagerBypassMobGriefing = false;
public boolean ravagerTakeDamageFromWater = false;
+ public List<Block> ravagerGriefableBlocks = new ArrayList<>();
private void ravagerSettings() {
ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable);
ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater);
@@ -1717,6 +1718,23 @@ public class PurpurWorldConfig {
if (PurpurConfig.version < 10) {
double oldValue = getDouble("mobs.ravager.attributes.max-health", ravagerMaxHealth);
@@ -1414,6 +1415,23 @@ public class PurpurWorldConfig {
ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth);
ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing);
ravagerTakeDamageFromWater = getBoolean("mobs.ravager.takes-damage-from-water", ravagerTakeDamageFromWater);
@@ -65,4 +65,4 @@ index c7752f41ea30ccac924adcd093f9a946c794f2dc..60f4c0e3d26e7ed73e67ff145b7603fd
+ });
}
public boolean salmonRidable = false;
public double salmonMaxHealth = 3.0D;

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Sneak to bulk process composter
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
index 1d33c02088c150189d7f4b0aa27f6a1de96b11cf..1a46dbb364423c889fcdf58f640b778487cef7b7 100644
index bb7ad618fad7f11a02d7e088e2c05bfffaf0b41d..b9041e46a4fafeac004cf8a0ef9d7daaa9bfb0ff 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
@@ -576,7 +576,7 @@ public class ServerPlayerGameMode {
@@ -575,7 +575,7 @@ public class ServerPlayerGameMode {
boolean flag1 = player.isSecondaryUseActive() && flag;
ItemStack itemstack1 = stack.copy();
@@ -18,10 +18,10 @@ index 1d33c02088c150189d7f4b0aa27f6a1de96b11cf..1a46dbb364423c889fcdf58f640b7784
if (enuminteractionresult.consumesAction()) {
diff --git a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java
index 6fab2b69a0af298bd00b309efcd6aa8399e23d1f..4f7b21caa123ea7896788fd25133d8de3ab1ccaf 100644
index 87153b5576fed05103183a9860d804c2c8cfbe1c..e8ee608aa5e352d741694f50cdf77f0645892150 100644
--- a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java
@@ -228,20 +228,28 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
@@ -230,20 +230,28 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
ItemStack itemstack = player.getItemInHand(hand);
if (i < 8 && ComposterBlock.COMPOSTABLES.containsKey(itemstack.getItem())) {
@@ -62,7 +62,7 @@ index 6fab2b69a0af298bd00b309efcd6aa8399e23d1f..4f7b21caa123ea7896788fd25133d8de
return InteractionResult.sidedSuccess(world.isClientSide);
} else if (i == 8) {
@@ -252,6 +260,26 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
@@ -254,6 +262,26 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
}
}
@@ -90,7 +90,7 @@ index 6fab2b69a0af298bd00b309efcd6aa8399e23d1f..4f7b21caa123ea7896788fd25133d8de
int i = (Integer) state.getValue(ComposterBlock.LEVEL);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 60f4c0e3d26e7ed73e67ff145b7603fded801705..6a873660c2020c732672cf541a071ab3b5c04e9e 100644
index 600ef1ed2478ab68baf3684d64dedefd56f95c6f..b5847ce9b0df7b6d6bce3c1d91ed1a57f7ece40a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -485,6 +485,11 @@ public class PurpurWorldConfig {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Config for skipping night
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index e113e0e15ec88ac3b72f20ec2c88c3302e77ce20..43cc17bf7d93cdb5a171007e8341c583ec6eab53 100644
index 89de2c9a85068c32cc42927fc22aa42ea05a1519..d44f8a660870ed5e4c4f5d3070c074fab27a5807 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -664,7 +664,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -723,7 +723,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE);
long j;
@@ -18,7 +18,7 @@ index e113e0e15ec88ac3b72f20ec2c88c3302e77ce20..43cc17bf7d93cdb5a171007e8341c583
j = this.levelData.getDayTime() + 24000L;
TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (j - j % 24000L) - this.getDayTime());
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 6a873660c2020c732672cf541a071ab3b5c04e9e..1a75ade998f9e8dddcfe6a14a19d6eb67ee1f856 100644
index b5847ce9b0df7b6d6bce3c1d91ed1a57f7ece40a..54b9ecc50ce2f2f6e709447d29a4ca7d7b977092 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -360,6 +360,7 @@ public class PurpurWorldConfig {

View File

@@ -5,64 +5,64 @@ Subject: [PATCH] Add config for villager trading
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 79ce6459e3307dfd3aafbcbe06f160f2bb02dcd3..401d0885852edbb30b12cfb58c86479d722143ff 100644
index 8e32ba64acfc1b671b859be23f3a84fb4151b570..98f67161f173f513c5794ffb5cb6350c7f1a1e23 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -366,7 +366,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
return tryRide(player, hand, InteractionResult.sidedSuccess(this.level.isClientSide)); // Purpur
@@ -341,7 +341,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
if (flag) {
return InteractionResult.sidedSuccess(this.level().isClientSide);
} else {
if (level.purpurConfig.villagerRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur
- if (!this.level.isClientSide && !this.offers.isEmpty()) {
+ if (this.level.purpurConfig.villagerAllowTrading && !this.offers.isEmpty()) { // Purpur
- if (!this.level().isClientSide && !this.offers.isEmpty()) {
+ if (this.level().purpurConfig.villagerAllowTrading && !this.offers.isEmpty()) {
this.startTrading(player);
}
diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
index 4e321a9f08c8798cee04789a7356893dd2a660c3..6af1d1b3b40d91fd3e0ac269d0e4a60a104be7b8 100644
index 86c8e3d6ad7bb497c50433ff882fab3f5bd7b6ad..959b8174a2ce5329fb136c2f2bf15381a1ecac55 100644
--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
+++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
@@ -152,7 +152,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
return tryRide(player, hand, InteractionResult.sidedSuccess(this.level.isClientSide)); // Purpur
@@ -131,7 +131,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
if (this.getOffers().isEmpty()) {
return InteractionResult.sidedSuccess(this.level().isClientSide);
} else {
if (level.purpurConfig.wanderingTraderRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur
- if (!this.level.isClientSide) {
+ if (this.level.purpurConfig.wanderingTraderAllowTrading) { // Purpur
- if (!this.level().isClientSide) {
+ if (this.level().purpurConfig.wanderingTraderAllowTrading) {
this.setTradingPlayer(player);
this.openTradingScreen(player, this.getDisplayName(), 1);
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 1a75ade998f9e8dddcfe6a14a19d6eb67ee1f856..2a58a5be41bd57b0e2685a5a539771f6d9b33714 100644
index 54b9ecc50ce2f2f6e709447d29a4ca7d7b977092..8da862e56a0144fd53c29e5626a8e960f97e78f0 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -2125,6 +2125,7 @@ public class PurpurWorldConfig {
public boolean villagerClericFarmersThrowWarts = true;
@@ -1714,6 +1714,7 @@ public class PurpurWorldConfig {
public int villagerBreedingTicks = 6000;
public boolean villagerBypassMobGriefing = false;
public boolean villagerTakeDamageFromWater = false;
+ public boolean villagerAllowTrading = true;
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
@@ -2143,6 +2144,7 @@ public class PurpurWorldConfig {
villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts);
if (PurpurConfig.version < 10) {
double oldValue = getDouble("mobs.villager.attributes.max-health", villagerMaxHealth);
@@ -1727,6 +1728,7 @@ public class PurpurWorldConfig {
villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks);
villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing);
villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater);
+ villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading);
}
public boolean vindicatorRidable = false;
@@ -2172,6 +2174,7 @@ public class PurpurWorldConfig {
public double vindicatorMaxHealth = 24.0D;
@@ -1747,6 +1749,7 @@ public class PurpurWorldConfig {
public boolean wanderingTraderFollowEmeraldBlock = false;
public boolean wanderingTraderCanBeLeashed = false;
public boolean wanderingTraderTakeDamageFromWater = false;
+ public boolean wanderingTraderAllowTrading = true;
private void wanderingTraderSettings() {
wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable);
wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater);
@@ -2185,6 +2188,7 @@ public class PurpurWorldConfig {
if (PurpurConfig.version < 10) {
double oldValue = getDouble("mobs.wandering_trader.attributes.max-health", wanderingTraderMaxHealth);
@@ -1757,6 +1760,7 @@ public class PurpurWorldConfig {
wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock);
wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed);
wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater);
+ wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading);
}
public boolean wardenRidable = false;
public double witchMaxHealth = 26.0D;

View File

@@ -5,19 +5,19 @@ Subject: [PATCH] Allow infinity on crossbows
diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java
index bc4f04c2512191da3c9e1c49f0716bb9128fc754..95ed2daf9dbcee099e0dc70d5bfea0649e8245d0 100644
index a433910fb4d0bd8d7b6b0d66c8fc88d62a0e4879..795803bbb89e8f19a308ece7b5d1359da1538519 100644
--- a/src/main/java/net/minecraft/world/item/CrossbowItem.java
+++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java
@@ -113,7 +113,7 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable {
@@ -114,7 +114,7 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable {
// Paper end
int i = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.MULTISHOT, projectile);
int i = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.MULTISHOT, crossbow);
int j = i == 0 ? 1 : 3;
- boolean flag = !consume || shooter instanceof Player && ((Player) shooter).getAbilities().instabuild; // Paper - add consume
+ boolean flag = !consume || shooter instanceof Player && ((Player) shooter).getAbilities().instabuild || (org.purpurmc.purpur.PurpurConfig.allowCrossbowInfinity && EnchantmentHelper.getItemEnchantmentLevel(Enchantments.INFINITY_ARROWS, projectile) > 0); // Paper - add consume // Purpur
ItemStack itemstack1 = shooter.getProjectile(projectile);
ItemStack itemstack1 = shooter.getProjectile(crossbow);
ItemStack itemstack2 = itemstack1.copy();
@@ -303,7 +303,7 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable {
@@ -304,7 +304,7 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable {
for (int i = 0; i < list.size(); ++i) {
ItemStack itemstack1 = (ItemStack) list.get(i);
@@ -77,10 +77,10 @@ index 3d0ce0803e1da8a2681a3cb41096ac942ece54a1..bcd075a771c7f43c6d1549aeec2ccb20
return null;
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 3fc967279daaf6eb2b2d80fcad57b5b6a11cec43..a191d631e4c5401e1fafc0d9a4a4d5eed4f300af 100644
index 0c3ae4eb17641d31b77a36db2210bef24632e2a2..b6db2919825ef04ec4aadd5129cac24d39de5d30 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -284,6 +284,7 @@ public class PurpurConfig {
@@ -282,6 +282,7 @@ public class PurpurConfig {
}
public static boolean allowInfinityMending = false;
@@ -88,7 +88,7 @@ index 3fc967279daaf6eb2b2d80fcad57b5b6a11cec43..a191d631e4c5401e1fafc0d9a4a4d5ee
private static void enchantmentSettings() {
if (version < 5) {
boolean oldValue = getBoolean("settings.enchantment.allow-infinite-and-mending-together", false);
@@ -291,6 +292,7 @@ public class PurpurConfig {
@@ -289,6 +290,7 @@ public class PurpurConfig {
set("settings.enchantment.allow-infinite-and-mending-together", null);
}
allowInfinityMending = getBoolean("settings.enchantment.allow-infinity-and-mending-together", allowInfinityMending);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Drowning Settings
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index fa3258b69770d91aebbf181f5c19690e166f9df2..7dbab470620b60f9d7adac0229649df6ef635f45 100644
index c6157d80118ad936d677651083dcde6724667434..b94ad3ef466fea2bc3d7115c2efae5c4241db843 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -3180,7 +3180,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -3226,7 +3226,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
public int getMaxAirSupply() {
@@ -18,10 +18,10 @@ index fa3258b69770d91aebbf181f5c19690e166f9df2..7dbab470620b60f9d7adac0229649df6
public int getAirSupply() {
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index e12f9a021097267147268b3b0ec2824cf9081058..2a857639e1c2a831dee1236e1796d97b7e9109f2 100644
index 734ea091ab4d5cd211902e0b6838455a7f3cae66..89221731d1150fa8a0d8e49820c9af3a1e456fb3 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -422,7 +422,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -440,7 +440,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
if (flag1) {
this.setAirSupply(this.decreaseAirSupply(this.getAirSupply()));
@@ -30,8 +30,8 @@ index e12f9a021097267147268b3b0ec2824cf9081058..2a857639e1c2a831dee1236e1796d97b
this.setAirSupply(0);
Vec3 vec3d = this.getDeltaMovement();
@@ -434,7 +434,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.level.addParticle(ParticleTypes.BUBBLE, this.getX() + d2, this.getY() + d3, this.getZ() + d4, vec3d.x, vec3d.y, vec3d.z);
@@ -452,7 +452,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.level().addParticle(ParticleTypes.BUBBLE, this.getX() + d2, this.getY() + d3, this.getZ() + d4, vec3d.x, vec3d.y, vec3d.z);
}
- this.hurt(this.damageSources().drown(), 2.0F);
@@ -40,7 +40,7 @@ index e12f9a021097267147268b3b0ec2824cf9081058..2a857639e1c2a831dee1236e1796d97b
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 2a58a5be41bd57b0e2685a5a539771f6d9b33714..ed020d4ea1fca11ddfb5427e3cb67622be0c9cd0 100644
index 8da862e56a0144fd53c29e5626a8e960f97e78f0..c8255b4de12d902f26b33ba8dbe623e404d8721f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -166,6 +166,15 @@ public class PurpurWorldConfig {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Break individual slabs when sneaking
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
index 1a46dbb364423c889fcdf58f640b778487cef7b7..037515e1821098fd44cf6ad42986aec061546fb6 100644
index b9041e46a4fafeac004cf8a0ef9d7daaa9bfb0ff..7501e5773acdacca36ba72d71118c264f85d423c 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
@@ -397,6 +397,7 @@ public class ServerPlayerGameMode {
@@ -396,6 +396,7 @@ public class ServerPlayerGameMode {
} else {capturedBlockEntity = true;} // Paper end
return false;
}
@@ -47,11 +47,11 @@ index 18b603d646081926343dea108b55d641df1c2c34..03ad3e45fc6d48091ac0c0ba5dc3d014
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index ed020d4ea1fca11ddfb5427e3cb67622be0c9cd0..9845dcc5e8d6e870d348e5a3d0293b3c23d8e2e7 100644
index c8255b4de12d902f26b33ba8dbe623e404d8721f..d23828fdbe435acc2deefe653d31f13eaf3f8def 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -611,6 +611,11 @@ public class PurpurWorldConfig {
signRightClickEdit = getBoolean("blocks.sign.right-click-edit", signRightClickEdit);
@@ -606,6 +606,11 @@ public class PurpurWorldConfig {
}
}
+ public boolean slabHalfBreak = false;

View File

@@ -24,7 +24,7 @@ index 55c245d0dfa369dc6de2197ae37335fba4fae4ae..c9b40515f4c2ff1eedfc9510930c3bae
return false;
} else {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 9845dcc5e8d6e870d348e5a3d0293b3c23d8e2e7..2a4287232aebd734419dcf57e4e6458d8fbc73c6 100644
index d23828fdbe435acc2deefe653d31f13eaf3f8def..d442f3dfc8d0e1df032b34761214327167643e67 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -571,6 +571,13 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Config to show Armor Stand arms on spawn
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 88949e8ca7e4a5e74a8a365bb1aa6d466d3f8ddd..0545a39af0f21210ff1f5e53f6d712ae24ce43e4 100644
index cfe4c6f3316a9bcb3fb77bbb839525bed5527b17..d3bb4bb75e00a3f9507ce3699e55edbd6027d89b 100644
--- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
+++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
@@ -114,6 +114,7 @@ public class ArmorStand extends LivingEntity {
@@ -17,7 +17,7 @@ index 88949e8ca7e4a5e74a8a365bb1aa6d466d3f8ddd..0545a39af0f21210ff1f5e53f6d712ae
public ArmorStand(Level world, double x, double y, double z) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 2a4287232aebd734419dcf57e4e6458d8fbc73c6..29c5c640466f96597d5f5e1f07daae4e8fbeb1e6 100644
index d442f3dfc8d0e1df032b34761214327167643e67..e7a7d6deb93ad4c4aac5cc4ddfe936fddce331b7 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -104,6 +104,7 @@ 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
index c3fb86dc3d94d3a0d2464f2dbb83cda2fb9f7bbe..fd77dd0c0bfaba57e5bdfd13f7a90241ecdf813a 100644
index 42ae4d293a420f0b8eb476df6389b2e7a693895f..fa1a2483c24d95ca03c269cde68c335e248810c9 100644
--- a/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 {
@@ -36,20 +36,20 @@ index c3fb86dc3d94d3a0d2464f2dbb83cda2fb9f7bbe..fd77dd0c0bfaba57e5bdfd13f7a90241
} else {
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
index 5ba56ee7d5dd210770e6703be559055d218028d5..b5e90dc00240bccf1a6eca342729a4f4165e22bf 100644
index c028a7158e41a0754abb8e24dcd647633fbf3fe8..cd65d32f4af016d4937e598c71386a3072f4c490 100644
--- a/src/main/java/net/minecraft/world/level/block/DoorBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/DoorBlock.java
@@ -165,6 +165,7 @@ public class DoorBlock extends Block {
@@ -167,6 +167,7 @@ public class DoorBlock extends Block {
public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) {
if (this.material == Material.METAL) {
if (!this.type.canOpenByHand()) {
return InteractionResult.PASS;
+ } else if (requiresRedstone(world, state, pos)) { return InteractionResult.CONSUME; // Purpur
} else {
state = (BlockState) state.cycle(DoorBlock.OPEN);
world.setBlock(pos, state, 10);
@@ -260,4 +261,18 @@ public class DoorBlock extends Block {
public static boolean isWoodenDoor(BlockState state) {
return state.getBlock() instanceof DoorBlock && (state.getMaterial() == Material.WOOD || state.getMaterial() == Material.NETHER_WOOD);
@@ -270,4 +271,18 @@ public class DoorBlock extends Block {
flag = false;
return flag;
}
+
+ // Purpur start
@@ -67,7 +67,7 @@ index 5ba56ee7d5dd210770e6703be559055d218028d5..b5e90dc00240bccf1a6eca342729a4f4
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 29c5c640466f96597d5f5e1f07daae4e8fbeb1e6..4c71694a1daea330af2713a493a7779cd630b02c 100644
index e7a7d6deb93ad4c4aac5cc4ddfe936fddce331b7..effdd617116f125d1de38090c2945951cdc6624e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -510,6 +510,16 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Config to allow for unsafe enchants
diff --git a/src/main/java/net/minecraft/server/commands/EnchantCommand.java b/src/main/java/net/minecraft/server/commands/EnchantCommand.java
index e639c0ec642910e66b1d68ae0b9208ef58d91fce..24c4ad919eeb9c5e15572ee32b0895c993ac6735 100644
index 664cbce2e06fcb95d3d3d6c5302fc9119f938925..bc9778c705d23acd84fa1cdeff6b403b4cda3686 100644
--- a/src/main/java/net/minecraft/server/commands/EnchantCommand.java
+++ b/src/main/java/net/minecraft/server/commands/EnchantCommand.java
@@ -48,7 +48,7 @@ public class EnchantCommand {
@@ -27,10 +27,10 @@ index e639c0ec642910e66b1d68ae0b9208ef58d91fce..24c4ad919eeb9c5e15572ee32b0895c9
++i;
} else if (targets.size() == 1) {
diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
index 2281dba58d32b6314a7abcdb103c03c7056c24e9..37c79c0e13e6d7b6b03ebdf57bebf124cb98bcb6 100644
index 6fc5699ad90127dc48fa9ff5cb6ba5367031ce83..c179fd1ee55116e1bbdd8f8fadd18825c6ba2cde 100644
--- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
@@ -225,7 +225,8 @@ public class AnvilMenu extends ItemCombinerMenu {
@@ -228,7 +228,8 @@ public class AnvilMenu extends ItemCombinerMenu {
int i2 = (Integer) map1.get(enchantment);
i2 = l1 == i2 ? i2 + 1 : Math.max(i2, l1);
@@ -40,7 +40,7 @@ index 2281dba58d32b6314a7abcdb103c03c7056c24e9..37c79c0e13e6d7b6b03ebdf57bebf124
if (this.player.getAbilities().instabuild || itemstack.is(Items.ENCHANTED_BOOK)) {
flag3 = true;
@@ -237,16 +238,16 @@ public class AnvilMenu extends ItemCombinerMenu {
@@ -240,16 +241,16 @@ public class AnvilMenu extends ItemCombinerMenu {
Enchantment enchantment1 = (Enchantment) iterator1.next();
if (enchantment1 != enchantment && !enchantment.isCompatibleWith(enchantment1)) {
@@ -60,7 +60,7 @@ index 2281dba58d32b6314a7abcdb103c03c7056c24e9..37c79c0e13e6d7b6b03ebdf57bebf124
i2 = enchantment.getMaxLevel();
}
@@ -386,7 +387,7 @@ public class AnvilMenu extends ItemCombinerMenu {
@@ -389,7 +390,7 @@ public class AnvilMenu extends ItemCombinerMenu {
sendAllDataToRemote(); // CraftBukkit - SPIGOT-6686: Always send completed inventory to stay in sync with client
this.broadcastChanges();
// Purpur start
@@ -70,10 +70,10 @@ index 2281dba58d32b6314a7abcdb103c03c7056c24e9..37c79c0e13e6d7b6b03ebdf57bebf124
((ServerPlayer) player).connection.send(new ClientboundContainerSetDataPacket(containerId, 0, cost.get()));
}
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
index a29ceeb798619bbda730ce154dfe03dae214c737..729b470e19e83730132e419bd40741018b4ff72e 100644
index b70e57a78bbe9084746ba9a4bc896ad2b1636e8f..20aed640cf6afd6d6a24f42adbedc99a044f236f 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
@@ -1196,6 +1196,12 @@ public final class ItemStack {
@@ -1198,6 +1198,12 @@ public final class ItemStack {
return this.tag != null && this.tag.contains("Enchantments", 9) ? !this.tag.getList("Enchantments", 10).isEmpty() : false;
}
@@ -87,10 +87,10 @@ index a29ceeb798619bbda730ce154dfe03dae214c737..729b470e19e83730132e419bd4074101
this.getOrCreateTag().put(key, element);
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index a191d631e4c5401e1fafc0d9a4a4d5eed4f300af..80f47a113b48670695a5ffe67dd6e0f800970e1e 100644
index b6db2919825ef04ec4aadd5129cac24d39de5d30..79a0d4e5570fccc95c271263e0caebbc777a8b71 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -285,14 +285,32 @@ public class PurpurConfig {
@@ -283,14 +283,32 @@ public class PurpurConfig {
public static boolean allowInfinityMending = false;
public static boolean allowCrossbowInfinity = false;

View File

@@ -18,7 +18,7 @@ index 33df0ca406dc8321b76b393f317bbd1c8ebe6366..220513d3fd5645322886522ea4f6b8c5
entityarrow.setCritArrow(true);
}
diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java
index 95ed2daf9dbcee099e0dc70d5bfea0649e8245d0..0c566b14191c8438389150f0c6e70bcfa3d1f53c 100644
index 795803bbb89e8f19a308ece7b5d1359da1538519..1a2ce6fb16e8fed7c90ce99510b25531087a0699 100644
--- a/src/main/java/net/minecraft/world/item/CrossbowItem.java
+++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java
@@ -64,7 +64,7 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable {
@@ -83,7 +83,7 @@ index de5bdceb4c8578fb972a2fd5ee0dfdae509e46dc..bcf63ccb6e679cb97d658780b2663aaf
com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemStack), (org.bukkit.entity.Projectile) thrownPotion.getBukkitEntity());
if (event.callEvent() && world.addFreshEntity(thrownPotion)) {
diff --git a/src/main/java/net/minecraft/world/item/TridentItem.java b/src/main/java/net/minecraft/world/item/TridentItem.java
index 41bd45c0720751f348b5cf6eaecac4397a439857..60512d08a45670a164a9b93191aafa40b2c2287c 100644
index 06c2f30b77a2c8aecc65e0c305f643d53798f364..6d1573161f0d8c7999f84925ba7bbf536ee9583a 100644
--- a/src/main/java/net/minecraft/world/item/TridentItem.java
+++ b/src/main/java/net/minecraft/world/item/TridentItem.java
@@ -77,7 +77,7 @@ public class TridentItem extends Item implements Vanishable {
@@ -96,7 +96,7 @@ index 41bd45c0720751f348b5cf6eaecac4397a439857..60512d08a45670a164a9b93191aafa40
entitythrowntrident.pickup = AbstractArrow.Pickup.CREATIVE_ONLY;
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 12b96c2fd28817023f41651e3aceafc086b24f4d..03c2a36068ca1c98f9cd9fae87cbbab216c71c60 100644
index effdd617116f125d1de38090c2945951cdc6624e..8beb05cba43108f430daaf427ef62b1a0ce34514 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -428,6 +428,23 @@ public class PurpurWorldConfig {

View File

@@ -18,7 +18,7 @@ index 7fddb6fa8fd30ef88346a59f7867aae792f13772..40893e71fe8447b695350273bef9623b
} else {
int j = pos.getX();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 03c2a36068ca1c98f9cd9fae87cbbab216c71c60..791dfd2d88ff1765a19feb5248ee2e1a1c6d3c85 100644
index 8beb05cba43108f430daaf427ef62b1a0ce34514..74ff1a57e3f52594d4721404b997358453016805 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -621,6 +621,11 @@ public class PurpurWorldConfig {

View File

@@ -31,22 +31,22 @@ index 2c085c4a154cb0f8a1d38453f43474a764398784..589b437e7c97c846410f293e2f014bdc
pos = pos.below();
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 791dfd2d88ff1765a19feb5248ee2e1a1c6d3c85..55f80ce99d62b93d4d06883031c0922f4a8ac868 100644
index 74ff1a57e3f52594d4721404b997358453016805..5e1398e8ca33f8e507c667ec23c87829b52c4d50 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1649,6 +1649,7 @@ public class PurpurWorldConfig {
@@ -1376,6 +1376,7 @@ public class PurpurWorldConfig {
public double piglinMaxHealth = 16.0D;
public boolean piglinBypassMobGriefing = false;
public boolean piglinTakeDamageFromWater = false;
+ public int piglinPortalSpawnModifier = 2000;
private void piglinSettings() {
piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable);
piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater);
@@ -1661,6 +1662,7 @@ public class PurpurWorldConfig {
if (PurpurConfig.version < 10) {
double oldValue = getDouble("mobs.piglin.attributes.max-health", piglinMaxHealth);
@@ -1385,6 +1386,7 @@ public class PurpurWorldConfig {
piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth);
piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing);
piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater);
+ piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier);
}
public boolean piglinBruteRidable = false;
public double piglinBruteMaxHealth = 50.0D;

View File

@@ -18,10 +18,10 @@ index 41c9f074203915c31c1ae7a160ce509c13383f84..a16a1df28258d605cf5908dbe19bda5d
public BeehiveBlockEntity(BlockPos pos, BlockState state) {
super(BlockEntityType.BEEHIVE, pos, state);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 80f47a113b48670695a5ffe67dd6e0f800970e1e..606b5842888a0089103a36367664533fbfedd8f9 100644
index 79a0d4e5570fccc95c271263e0caebbc777a8b71..941c9add3e689528fe8306d291748d576d6a97b1 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -250,6 +250,7 @@ public class PurpurConfig {
@@ -248,6 +248,7 @@ public class PurpurConfig {
public static boolean enderChestSixRows = false;
public static boolean enderChestPermissionRows = false;
public static boolean cryingObsidianValidForPortalFrame = false;
@@ -29,7 +29,7 @@ index 80f47a113b48670695a5ffe67dd6e0f800970e1e..606b5842888a0089103a36367664533f
private static void blockSettings() {
if (version < 3) {
boolean oldValue = getBoolean("settings.barrel.packed-barrels", true);
@@ -281,6 +282,7 @@ public class PurpurConfig {
@@ -279,6 +280,7 @@ public class PurpurConfig {
org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27);
enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows);
cryingObsidianValidForPortalFrame = getBoolean("settings.blocks.crying_obsidian.valid-for-portal-frame", cryingObsidianValidForPortalFrame);

View File

@@ -5,35 +5,35 @@ Subject: [PATCH] Config for wither explosion radius
diff --git a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java
index 093a00e52062868b4fbf358b307513d0f599f69d..ba753735f3cbb2cb3d0a491d1bd94a04f83b123d 100644
index 80b86d5dd68c3d288a1a61ea8aa1cba9d899aa1c..f92e7624f774f883fac7bb51c2e46fdc7c16aea6 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java
@@ -95,7 +95,7 @@ public class WitherSkull extends AbstractHurtingProjectile {
if (!this.level.isClientSide) {
if (!this.level().isClientSide) {
// CraftBukkit start
// this.level.explode(this, this.getX(), this.getY(), this.getZ(), 1.0F, false, World.a.MOB);
// this.level().explode(this, this.getX(), this.getY(), this.getZ(), 1.0F, false, World.a.MOB);
- ExplosionPrimeEvent event = new ExplosionPrimeEvent(this.getBukkitEntity(), 1.0F, false);
+ ExplosionPrimeEvent event = new ExplosionPrimeEvent(this.getBukkitEntity(), this.level.purpurConfig.witherExplosionRadius, false); // Purpur
this.level.getCraftServer().getPluginManager().callEvent(event);
this.level().getCraftServer().getPluginManager().callEvent(event);
if (!event.isCancelled()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 55f80ce99d62b93d4d06883031c0922f4a8ac868..baf89f40d6dae85c84298c402896b10a2a84fa2f 100644
index 5e1398e8ca33f8e507c667ec23c87829b52c4d50..5930767d7d10d10bb352b55770cf7ef1bb6ef95a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -2292,6 +2292,7 @@ public class PurpurWorldConfig {
@@ -1838,6 +1838,7 @@ public class PurpurWorldConfig {
public boolean witherBypassMobGriefing = false;
public boolean witherTakeDamageFromWater = false;
public boolean witherCanRideVehicles = false;
+ public float witherExplosionRadius = 1.0F;
private void witherSettings() {
witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
@@ -2312,6 +2313,7 @@ public class PurpurWorldConfig {
if (PurpurConfig.version < 8) {
double oldValue = getDouble("mobs.wither.max-health", witherMaxHealth);
@@ -1854,6 +1855,7 @@ public class PurpurWorldConfig {
witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing);
witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater);
witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles);
+ witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius);
}
public boolean witherSkeletonRidable = false;
public double witherSkeletonMaxHealth = 20.0D;

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Gamemode extra permissions
diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java
index ccc78857b51e25640ec1e4dcfe4c76a06d1bbff4..941f3a0d50329658a9380500ef039d7f10a284e2 100644
index 4d9a796422ab595acc8b0158cf9dcd5b1d0c9a75..5737fe8c23b46b37cea86524613dd3c32f4ca9cf 100644
--- a/src/main/java/net/minecraft/commands/CommandSourceStack.java
+++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java
@@ -212,6 +212,21 @@ public class CommandSourceStack implements SharedSuggestionProvider, com.destroy
@@ -221,6 +221,21 @@ public class CommandSourceStack implements SharedSuggestionProvider, com.destroy
}
// CraftBukkit end
@@ -31,10 +31,10 @@ index ccc78857b51e25640ec1e4dcfe4c76a06d1bbff4..941f3a0d50329658a9380500ef039d7f
return this.worldPosition;
}
diff --git a/src/main/java/net/minecraft/server/commands/GameModeCommand.java b/src/main/java/net/minecraft/server/commands/GameModeCommand.java
index 27c0aaf123c3e945eb24e8a3892bd8ac42115733..85e1c1d6eb4472baa958b4f482791e8479dfcbf0 100644
index 5cb15e2209d7b315904a1fc6d650ce1e75584271..7e21db60f3ace2a19686d6ea04b994ec3a793ec8 100644
--- a/src/main/java/net/minecraft/server/commands/GameModeCommand.java
+++ b/src/main/java/net/minecraft/server/commands/GameModeCommand.java
@@ -41,6 +41,18 @@ public class GameModeCommand {
@@ -45,6 +45,18 @@ public class GameModeCommand {
}
private static int setMode(CommandContext<CommandSourceStack> context, Collection<ServerPlayer> targets, GameType gameMode) {
@@ -75,10 +75,10 @@ index ec771c480156db393c326fa2fbdc2d432fb76f53..71940bf3a4162d12a422a5b3100ad8de
DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "defaultgamemode", "Allows the user to change the default gamemode of the server", PermissionDefault.OP, commands);
DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "seed", "Allows the user to view the seed of the world", PermissionDefault.OP, commands);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 606b5842888a0089103a36367664533fbfedd8f9..dd741a961e3cfdbe81aa087ef983d1fb4dc94cc2 100644
index 941c9add3e689528fe8306d291748d576d6a97b1..e7467803f8087a5a785cb8afb42185173090c160 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -233,6 +233,7 @@ public class PurpurConfig {
@@ -231,6 +231,7 @@ public class PurpurConfig {
public static String commandTPSBarTextColorMedium = "<gradient:#ffff55:#ffaa00><text></gradient>";
public static String commandTPSBarTextColorLow = "<gradient:#ff5555:#aa0000><text></gradient>";
public static int commandTPSBarTickInterval = 20;
@@ -86,7 +86,7 @@ index 606b5842888a0089103a36367664533fbfedd8f9..dd741a961e3cfdbe81aa087ef983d1fb
private static void commandSettings() {
commandTPSBarTitle = getString("settings.command.tpsbar.title", commandTPSBarTitle);
commandTPSBarProgressOverlay = BossBar.Overlay.valueOf(getString("settings.command.tpsbar.overlay", commandTPSBarProgressOverlay.name()));
@@ -244,6 +245,7 @@ public class PurpurConfig {
@@ -242,6 +243,7 @@ public class PurpurConfig {
commandTPSBarTextColorMedium = getString("settings.command.tpsbar.text-color.medium", commandTPSBarTextColorMedium);
commandTPSBarTextColorLow = getString("settings.command.tpsbar.text-color.low", commandTPSBarTextColorLow);
commandTPSBarTickInterval = getInt("settings.command.tpsbar.tick-interval", commandTPSBarTickInterval);

View File

@@ -18,7 +18,7 @@ index c7195f2e12bbd6545f7bffcc2b4ba5cc3d48df20..5e730bc9c8ff94b16ac2bf8567dda8ae
Runnable afterAction = null; // Paper
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
index baf89f40d6dae85c84298c402896b10a2a84fa2f..4c6a75d0d6068355afe27768c08af9708c4a7b1d 100644
index 5930767d7d10d10bb352b55770cf7ef1bb6ef95a..5a73e8a00f049752446335394bb1782092dc3444 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -450,6 +450,21 @@ public class PurpurWorldConfig {

View File

@@ -36,7 +36,7 @@ index 744d91546d1a810f60a43c15ed74b4158f341a4a..354538daefa603f6df5a139b6bff87db
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 4c6a75d0d6068355afe27768c08af9708c4a7b1d..a9501ad076fadbad81d7b70d1ba9d8423d91711d 100644
index 5a73e8a00f049752446335394bb1782092dc3444..e791e30815b08ae59ec288ab4499c99be479cf99 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -631,6 +631,11 @@ public class PurpurWorldConfig {

View File

@@ -5,22 +5,22 @@ Subject: [PATCH] Configurable broadcast settings
diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java
index 25b832fe30c3837d02b10017e58ad0fa9d097092..3919d9c193abcfd8b97dfb0ceb38638440f60fbe 100644
index 52891c4a4260d1938f2f4565b5219ad303555638..69d349613f01ab0ac1890734657da52984704f29 100644
--- a/src/main/java/net/minecraft/server/PlayerAdvancements.java
+++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java
@@ -250,6 +250,7 @@ public class PlayerAdvancements {
advancement.getRewards().grant(this.player);
// Paper start - Add Adventure message to PlayerAdvancementDoneEvent
if (message != null && this.player.level.getGameRules().getBoolean(GameRules.RULE_ANNOUNCE_ADVANCEMENTS)) {
if (message != null && this.player.level().getGameRules().getBoolean(GameRules.RULE_ANNOUNCE_ADVANCEMENTS)) {
+ if (org.purpurmc.purpur.PurpurConfig.advancementOnlyBroadcastToAffectedPlayer) this.player.sendMessage(message); else // Purpur
this.playerList.broadcastSystemMessage(io.papermc.paper.adventure.PaperAdventure.asVanilla(message), false);
// Paper end
}
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 285f6b72800fa7f5003fb4de7eb092a2310e4d5a..d1f569a7813717552c20a0392b9bc9b2862ecc00 100644
index 3745b4b2cacef2ce9c2d0aa9e72245a3ec551ae4..9f2c584db6fde84a65b661bb7f37988b803916e1 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -962,6 +962,7 @@ public class ServerPlayer extends Player {
@@ -994,6 +994,7 @@ public class ServerPlayer extends Player {
}));
Team scoreboardteambase = this.getTeam();
@@ -29,10 +29,10 @@ index 285f6b72800fa7f5003fb4de7eb092a2310e4d5a..d1f569a7813717552c20a0392b9bc9b2
if (scoreboardteambase.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) {
this.server.getPlayerList().broadcastSystemToTeam(this, ichatbasecomponent);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index dd741a961e3cfdbe81aa087ef983d1fb4dc94cc2..0139da5fcac438530f023a32a75ef454879fe6c1 100644
index e7467803f8087a5a785cb8afb42185173090c160..bc263c360f1e02f53d8203ed1564fbc120a645ca 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -203,6 +203,18 @@ public class PurpurConfig {
@@ -201,6 +201,18 @@ public class PurpurConfig {
deathMsgRunWithScissors = getString("settings.messages.death-message.run-with-scissors", deathMsgRunWithScissors);
}

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Configurable mob blindness
Ported from https://github.com/raltsmc/mobblindness
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 2a857639e1c2a831dee1236e1796d97b7e9109f2..cc95e5bdc2bfa9d53da329a0ec4dd5373e4b150e 100644
index 89221731d1150fa8a0d8e49820c9af3a1e456fb3..89224b1079c841afc8265e9347d22ac784690103 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1019,6 +1019,17 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -1037,6 +1037,17 @@ public abstract class LivingEntity extends Entity implements Attackable {
if (entitytypes == EntityType.SKELETON && itemstack.is(Items.SKELETON_SKULL) || entitytypes == EntityType.ZOMBIE && itemstack.is(Items.ZOMBIE_HEAD) || entitytypes == EntityType.PIGLIN && itemstack.is(Items.PIGLIN_HEAD) || entitytypes == EntityType.PIGLIN_BRUTE && itemstack.is(Items.PIGLIN_HEAD) || entitytypes == EntityType.CREEPER && itemstack.is(Items.CREEPER_HEAD)) {
d0 *= 0.5D;
}
@@ -28,7 +28,7 @@ index 2a857639e1c2a831dee1236e1796d97b7e9109f2..cc95e5bdc2bfa9d53da329a0ec4dd537
return d0;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index a9501ad076fadbad81d7b70d1ba9d8423d91711d..f172a14be15f9d9f842d85f710d5f98534c86c95 100644
index e791e30815b08ae59ec288ab4499c99be479cf99..deb4f2e232e572a00a5e9eade4a82d0c9522600d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -134,6 +134,7 @@ public class PurpurWorldConfig {

View File

@@ -59,10 +59,10 @@ index f25b9330e068c7d9e12cb57a7761cfef9ebaf7bc..7e66aaa960ce7b6dda7c064d4c6856cc
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 0139da5fcac438530f023a32a75ef454879fe6c1..f3ddb65684a2cf7776c6e0137cb7acc7f36eb493 100644
index bc263c360f1e02f53d8203ed1564fbc120a645ca..8814527cdaac91994de01a8cf08d1fa3a048c175 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -246,6 +246,7 @@ public class PurpurConfig {
@@ -244,6 +244,7 @@ public class PurpurConfig {
public static String commandTPSBarTextColorLow = "<gradient:#ff5555:#aa0000><text></gradient>";
public static int commandTPSBarTickInterval = 20;
public static boolean commandGamemodeRequiresPermission = false;
@@ -70,7 +70,7 @@ index 0139da5fcac438530f023a32a75ef454879fe6c1..f3ddb65684a2cf7776c6e0137cb7acc7
private static void commandSettings() {
commandTPSBarTitle = getString("settings.command.tpsbar.title", commandTPSBarTitle);
commandTPSBarProgressOverlay = BossBar.Overlay.valueOf(getString("settings.command.tpsbar.overlay", commandTPSBarProgressOverlay.name()));
@@ -258,6 +259,7 @@ public class PurpurConfig {
@@ -256,6 +257,7 @@ public class PurpurConfig {
commandTPSBarTextColorLow = getString("settings.command.tpsbar.text-color.low", commandTPSBarTextColorLow);
commandTPSBarTickInterval = getInt("settings.command.tpsbar.tick-interval", commandTPSBarTickInterval);
commandGamemodeRequiresPermission = getBoolean("settings.command.gamemode.requires-specific-permission", commandGamemodeRequiresPermission);

View File

@@ -5,38 +5,38 @@ Subject: [PATCH] Config for health to impact Creeper explosion radius
diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
index 82d1bd8b8ba0e4b72e2030f085ddc0db0432d083..095b46134c8f8f686edd9c343d9ce1a445fd5438 100644
index 656ddb0011eebc7acb9eb72a79fc372b796aaafe..ec2d07e96241d8d0f100bb5492ae3bb6eb92ad85 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
@@ -370,9 +370,10 @@ public class Creeper extends Monster implements PowerableMob {
@@ -295,9 +295,10 @@ public class Creeper extends Monster implements PowerableMob {
this.exploding = true; // Purpur
if (!this.level.isClientSide) {
if (!this.level().isClientSide) {
float f = this.isPowered() ? 2.0F : 1.0F;
+ float multiplier = this.level.purpurConfig.creeperHealthRadius ? this.getHealth() / this.getMaxHealth() : 1; // Purpur
// CraftBukkit start
- ExplosionPrimeEvent event = new ExplosionPrimeEvent(this.getBukkitEntity(), this.explosionRadius * f, false);
+ ExplosionPrimeEvent event = new ExplosionPrimeEvent(this.getBukkitEntity(), (this.explosionRadius * f) * multiplier, false); // Purpur
this.level.getCraftServer().getPluginManager().callEvent(event);
this.level().getCraftServer().getPluginManager().callEvent(event);
if (!event.isCancelled()) {
this.dead = true;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index f172a14be15f9d9f842d85f710d5f98534c86c95..47435e31e4301634df65eda9a9a25e718872a868 100644
index deb4f2e232e572a00a5e9eade4a82d0c9522600d..0a6a67d4fb74eebedab5b674d85f81c26013f3b5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -945,6 +945,7 @@ public class PurpurWorldConfig {
@@ -856,6 +856,7 @@ public class PurpurWorldConfig {
public boolean creeperBypassMobGriefing = false;
public boolean creeperTakeDamageFromWater = false;
public boolean creeperExplodeWhenKilled = false;
+ public boolean creeperHealthRadius = false;
private void creeperSettings() {
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
@@ -960,6 +961,7 @@ public class PurpurWorldConfig {
if (PurpurConfig.version < 10) {
double oldValue = getDouble("mobs.creeper.attributes.max-health", creeperMaxHealth);
@@ -868,6 +869,7 @@ public class PurpurWorldConfig {
creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing);
creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater);
creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled);
+ creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius);
}
public boolean dolphinRidable = false;
public double dolphinMaxHealth = 10.0D;

View File

@@ -5,40 +5,39 @@ Subject: [PATCH] Iron golem calm anger options
diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java
index a123c02dfa554f58897b44f8d01f5f56b5a2d5b7..41b4002ad5c81db05a62e9bc977d5ad5e8c5c190 100644
index ec5cd6de7a77dc1959a5d15d51d4dfffc4e3c29d..396882908e819737f25d39c0a601f006448e7856 100644
--- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java
+++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java
@@ -100,6 +100,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob {
@@ -78,6 +78,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob {
@Override
protected void registerGoals() {
if (level.purpurConfig.ironGolemCanSwim) this.goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
+ if (this.level.purpurConfig.ironGolemPoppyCalm) this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.ReceiveFlower(this)); // Purpur
+ if (this.level().purpurConfig.ironGolemPoppyCalm) this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.ReceiveFlower(this)); // Purpur
this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.0D, true));
this.goalSelector.addGoal(2, new MoveTowardsTargetGoal(this, 0.9D, 32.0F));
this.goalSelector.addGoal(2, new MoveBackToVillageGoal(this, 0.6D, false));
@@ -324,6 +325,8 @@ public class IronGolem extends AbstractGolem implements NeutralMob {
@@ -295,6 +296,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob {
itemstack.shrink(1);
}
+ if (this.level.purpurConfig.ironGolemHealCalm && isAngry() && getHealth() == getMaxHealth()) stopBeingAngry(); // Purpur
+
return InteractionResult.sidedSuccess(this.level.isClientSide);
+ if (this.level().purpurConfig.ironGolemHealCalm && isAngry() && getHealth() == getMaxHealth()) stopBeingAngry(); // Purpur
return InteractionResult.sidedSuccess(this.level().isClientSide);
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 47435e31e4301634df65eda9a9a25e718872a868..95ec7a6441f266e3733438f9e20865ecb35033ca 100644
index 0a6a67d4fb74eebedab5b674d85f81c26013f3b5..861af734940e27418f036ec25850a1d56ad72a98 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1403,6 +1403,8 @@ public class PurpurWorldConfig {
public boolean ironGolemCanSwim = false;
@@ -1197,6 +1197,8 @@ public class PurpurWorldConfig {
public double ironGolemMaxHealth = 100.0D;
public boolean ironGolemTakeDamageFromWater = false;
+ public boolean ironGolemPoppyCalm = false;
+ public boolean ironGolemHealCalm = false;
private void ironGolemSettings() {
ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable);
ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater);
@@ -1415,6 +1417,8 @@ public class PurpurWorldConfig {
if (PurpurConfig.version < 10) {
double oldValue = getDouble("mobs.iron_golem.attributes.max-health", ironGolemMaxHealth);
@@ -1205,6 +1207,8 @@ public class PurpurWorldConfig {
}
ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth);
ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater);

View File

@@ -5,35 +5,35 @@ Subject: [PATCH] Breedable parrots
diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java
index c4114ec129b1acacfae920d67423b8ef6836a8d6..09beb422127c563be0609a675d27caa852e809b9 100644
index cba42fd7d5ea07960cf7b10702f1e4bd4573a8cd..b53a9c9bede5a23da0fab0043442566fa6b4207b 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java
@@ -228,6 +228,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot
@@ -170,6 +170,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot
protected void registerGoals() {
this.goalSelector.addGoal(0, new PanicGoal(this, 1.25D));
this.goalSelector.addGoal(0, new FloatGoal(this));
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
this.goalSelector.addGoal(1, new PanicGoal(this, 1.25D)); // Purpur
+ if (this.level.purpurConfig.parrotBreedable) this.goalSelector.addGoal(1, new net.minecraft.world.entity.ai.goal.BreedGoal(this, 1.0D)); // Purpur
+ if (this.level().purpurConfig.parrotBreedable) this.goalSelector.addGoal(1, new net.minecraft.world.entity.ai.goal.BreedGoal(this, 1.0D)); // Purpur
this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 8.0F));
this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this));
this.goalSelector.addGoal(2, new FollowOwnerGoal(this, 1.0D, 5.0F, 1.0F, true));
@@ -342,6 +343,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot
@@ -284,6 +285,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot
}
}
+ if (this.level.purpurConfig.parrotBreedable) return super.mobInteract(player, hand); // Purpur
return InteractionResult.sidedSuccess(this.level.isClientSide);
+ if (this.level().purpurConfig.parrotBreedable) return super.mobInteract(player, hand); // Purpur
return InteractionResult.sidedSuccess(this.level().isClientSide);
} else if (itemstack.is(Parrot.POISONOUS_FOOD)) {
if (!player.getAbilities().instabuild) {
@@ -367,7 +369,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot
@@ -309,7 +311,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot
@Override
public boolean isFood(ItemStack stack) {
- return false;
+ return this.level.purpurConfig.parrotBreedable && Parrot.TAME_FOOD.contains(stack.getItem()); // Purpur
+ return this.level().purpurConfig.parrotBreedable && Parrot.TAME_FOOD.contains(stack.getItem()); // Purpur
}
public static boolean checkParrotSpawnRules(EntityType<Parrot> type, LevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) {
@@ -379,13 +381,13 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot
@@ -321,13 +323,13 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot
@Override
public boolean canMate(Animal other) {
@@ -50,22 +50,22 @@ index c4114ec129b1acacfae920d67423b8ef6836a8d6..09beb422127c563be0609a675d27caa8
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 95ec7a6441f266e3733438f9e20865ecb35033ca..6127e91aebef3f5467d13edcc1362881853996c8 100644
index 861af734940e27418f036ec25850a1d56ad72a98..17fcfb212c7422163c6dfb8db494a4aed55a220a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1573,6 +1573,7 @@ public class PurpurWorldConfig {
public double parrotMaxY = 320D;
@@ -1333,6 +1333,7 @@ public class PurpurWorldConfig {
public double parrotMaxHealth = 6.0D;
public boolean parrotTakeDamageFromWater = false;
+ public boolean parrotBreedable = false;
private void parrotSettings() {
parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable);
parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater);
@@ -1585,6 +1586,7 @@ public class PurpurWorldConfig {
if (PurpurConfig.version < 10) {
double oldValue = getDouble("mobs.parrot.attributes.max-health", parrotMaxHealth);
@@ -1341,6 +1342,7 @@ public class PurpurWorldConfig {
}
parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth);
parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater);
+ parrotBreedable = getBoolean("mobs.parrot.can-breed", parrotBreedable);
}
public boolean phantomRidable = false;
public String phantomMaxHealth = "20.0";

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable powered rail boost modifier
diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
index f774c27dd52219cd524b63cbaa1b23ad55ef849b..ddcd7ada9f4bf5653bd8bf7c6cdb35d7243367d9 100644
index 5cdcc5792f19766d2d55d16859f8e0f68bd6479b..39dac396afb4573adc098d9121fa0622642a5bf6 100644
--- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
+++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
@@ -723,7 +723,7 @@ public abstract class AbstractMinecart extends Entity {
@@ -724,7 +724,7 @@ public abstract class AbstractMinecart extends Entity {
if (d18 > 0.01D) {
double d20 = 0.06D;
@@ -18,7 +18,7 @@ index f774c27dd52219cd524b63cbaa1b23ad55ef849b..ddcd7ada9f4bf5653bd8bf7c6cdb35d7
Vec3 vec3d5 = this.getDeltaMovement();
double d21 = vec3d5.x;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 6127e91aebef3f5467d13edcc1362881853996c8..f40e037970652061103dd517f74e5a7b8cdbba4d 100644
index 17fcfb212c7422163c6dfb8db494a4aed55a220a..faeed2ae0bd0b23dea11e57185a248f24fb2b324 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -277,6 +277,7 @@ public class PurpurWorldConfig {

View File

@@ -5,11 +5,11 @@ Subject: [PATCH] Add config change multiplier critical damage value
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
index 6e6fbcaab227b83144640e3e1024a0382984fdae..9831340303d60f11dcaed1d444449742d86b3db1 100644
index 5537e4d735ff635bb1f088e41c0c5822487d0a6c..52dba0a97d1620447c22e51f2d9af8f898f0cd69 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -1312,7 +1312,7 @@ public abstract class Player extends LivingEntity {
flag2 = flag2 && !level.paperConfig().entities.behavior.disablePlayerCrits; // Paper
@@ -1300,7 +1300,7 @@ public abstract class Player extends LivingEntity {
flag2 = flag2 && !this.level().paperConfig().entities.behavior.disablePlayerCrits; // Paper
flag2 = flag2 && !this.isSprinting();
if (flag2) {
- f *= 1.5F;
@@ -18,7 +18,7 @@ index 6e6fbcaab227b83144640e3e1024a0382984fdae..9831340303d60f11dcaed1d444449742
f += f1;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index f40e037970652061103dd517f74e5a7b8cdbba4d..05c401599a3a1ebb2853f029733ca3bacf460d03 100644
index faeed2ae0bd0b23dea11e57185a248f24fb2b324..07f7eb471f71347326e1b36c58baeebcbfe2de0b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -376,6 +376,7 @@ public class PurpurWorldConfig {

View File

@@ -19,7 +19,7 @@ index 7e1edcc7b9f170b7c649437c2f0dd78c0bab9be4..5f8ac1fdac2c334951261f2b9702f5e7
BlockPos blockposition1 = pos.offset(world.random.nextInt(16) - world.random.nextInt(16), world.random.nextInt(8) - world.random.nextInt(8), world.random.nextInt(16) - world.random.nextInt(16));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 05c401599a3a1ebb2853f029733ca3bacf460d03..b5c6c6b3ce02fb500a333a9363c2a6a4e10e38f9 100644
index 07f7eb471f71347326e1b36c58baeebcbfe2de0b..e66c91f7929f04b0912225107df7aa446b0deb01 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -558,6 +558,11 @@ public class PurpurWorldConfig {

View File

@@ -18,18 +18,18 @@ index 2ff578e4a953ffcf5176815ba8e3f06f73499989..af3ef12851cbfca13ad3316214bd53f2
}
} catch (AuthenticationUnavailableException authenticationunavailableexception) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index f3ddb65684a2cf7776c6e0137cb7acc7f36eb493..3e3a1e859e78d295388706d175dded5dbc41336e 100644
index 8814527cdaac91994de01a8cf08d1fa3a048c175..53363ab94b516a62e4959a5f07ab93884af2bf92 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -184,6 +184,7 @@ public class PurpurConfig {
@@ -183,6 +183,7 @@ public class PurpurConfig {
public static String pingCommandOutput = "<green>%s's ping is %sms";
public static String tpsbarCommandOutput = "<green>Tpsbar toggled <onoff> for <target>";
public static String dontRunWithScissors = "<red><italic>Don't run with scissors!";
+ public static String unverifiedUsername = "default";
private static void messages() {
cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob);
afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway);
@@ -196,6 +197,7 @@ public class PurpurConfig {
afkBroadcastBack = getString("settings.messages.afk-broadcast-back", afkBroadcastBack);
@@ -194,6 +195,7 @@ public class PurpurConfig {
pingCommandOutput = getString("settings.messages.ping-command-output", pingCommandOutput);
tpsbarCommandOutput = getString("settings.messages.tpsbar-command-output", tpsbarCommandOutput);
dontRunWithScissors = getString("settings.messages.dont-run-with-scissors", dontRunWithScissors);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Make anvil cumulative cost configurable
diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
index 37c79c0e13e6d7b6b03ebdf57bebf124cb98bcb6..7ade5cd93b3d7b7259bf3246a8b74b0b31407817 100644
index c179fd1ee55116e1bbdd8f8fadd18825c6ba2cde..d5ac94043f833355dbd84252c490c06a691d9aa6 100644
--- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
@@ -396,7 +396,7 @@ public class AnvilMenu extends ItemCombinerMenu {
@@ -399,7 +399,7 @@ public class AnvilMenu extends ItemCombinerMenu {
}
public static int calculateIncreasedRepairCost(int cost) {
@@ -16,12 +16,12 @@ index 37c79c0e13e6d7b6b03ebdf57bebf124cb98bcb6..7ade5cd93b3d7b7259bf3246a8b74b0b
+ return org.purpurmc.purpur.PurpurConfig.anvilCumulativeCost ? cost * 2 + 1 : 0;
}
public void setItemName(String newItemName) {
public boolean setItemName(String newItemName) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 3e3a1e859e78d295388706d175dded5dbc41336e..14f2b23248f23804a85b522e9e46ffa170162335 100644
index 53363ab94b516a62e4959a5f07ab93884af2bf92..dc781bc68f024951c078b84fd37c2f106eb13a2e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -269,6 +269,7 @@ public class PurpurConfig {
@@ -267,6 +267,7 @@ public class PurpurConfig {
public static boolean enderChestPermissionRows = false;
public static boolean cryingObsidianValidForPortalFrame = false;
public static int beeInsideBeeHive = 3;
@@ -29,7 +29,7 @@ index 3e3a1e859e78d295388706d175dded5dbc41336e..14f2b23248f23804a85b522e9e46ffa1
private static void blockSettings() {
if (version < 3) {
boolean oldValue = getBoolean("settings.barrel.packed-barrels", true);
@@ -301,6 +302,7 @@ public class PurpurConfig {
@@ -299,6 +300,7 @@ public class PurpurConfig {
enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows);
cryingObsidianValidForPortalFrame = getBoolean("settings.blocks.crying_obsidian.valid-for-portal-frame", cryingObsidianValidForPortalFrame);
beeInsideBeeHive = getInt("settings.blocks.beehive.max-bees-inside", beeInsideBeeHive);

View File

@@ -9,10 +9,10 @@ creating an itemstack using the TileEntity's NBT data (how it handles it for
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
index 037515e1821098fd44cf6ad42986aec061546fb6..6b186a49957e97a60bb245912211d58eb7b84c0d 100644
index 7501e5773acdacca36ba72d71118c264f85d423c..1249a776b4b2d97fc51aecddeda8151fa0646dc1 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
@@ -428,7 +428,7 @@ public class ServerPlayerGameMode {
@@ -427,7 +427,7 @@ public class ServerPlayerGameMode {
ItemStack mainHandStack = null; // Paper
boolean isCorrectTool = false; // Paper
@@ -22,10 +22,10 @@ index 037515e1821098fd44cf6ad42986aec061546fb6..6b186a49957e97a60bb245912211d58e
} else {
ItemStack itemstack = this.player.getMainHandItem();
diff --git a/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java b/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java
index c89978ecbc5a13dda6f76ea6d1cc3056efc9a174..39868ad3ee4bb573a4dd562894d93f64be4ee5ac 100644
index b51155ad12515b2d0dd0f202580b9f455c114d9a..dd6c82a418ee299d7a5614cb0260949c198b4149 100644
--- a/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java
@@ -138,7 +138,7 @@ public class ShulkerBoxBlock extends BaseEntityBlock {
@@ -137,7 +137,7 @@ public class ShulkerBoxBlock extends BaseEntityBlock {
public void playerWillDestroy(Level world, BlockPos pos, BlockState state, Player player) {
BlockEntity blockEntity = world.getBlockEntity(pos);
if (blockEntity instanceof ShulkerBoxBlockEntity shulkerBoxBlockEntity) {
@@ -35,11 +35,11 @@ index c89978ecbc5a13dda6f76ea6d1cc3056efc9a174..39868ad3ee4bb573a4dd562894d93f64
blockEntity.saveToItem(itemStack);
if (shulkerBoxBlockEntity.hasCustomName()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index b5c6c6b3ce02fb500a333a9363c2a6a4e10e38f9..8d764953f0718c0bfe125ef51336efbf0551bcd4 100644
index e66c91f7929f04b0912225107df7aa446b0deb01..2b01416cb4361605b326ef67cf9f5a5233dd4fe3 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -678,6 +678,11 @@ public class PurpurWorldConfig {
}
@@ -688,6 +688,11 @@ public class PurpurWorldConfig {
spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone);
}
+ public boolean shulkerBoxAllowOversizedStacks = false;
@@ -47,6 +47,6 @@ index b5c6c6b3ce02fb500a333a9363c2a6a4e10e38f9..8d764953f0718c0bfe125ef51336efbf
+ shulkerBoxAllowOversizedStacks = getBoolean("blocks.shulker_box.allow-oversized-stacks", shulkerBoxAllowOversizedStacks);
+ }
+
public boolean signRightClickEdit = false;
private void signSettings() {
signRightClickEdit = getBoolean("blocks.sign.right-click-edit", signRightClickEdit);
public boolean turtleEggsBreakFromExpOrbs = true;
public boolean turtleEggsBreakFromItems = true;
public boolean turtleEggsBreakFromMinecarts = true;

View File

@@ -5,15 +5,15 @@ Subject: [PATCH] Bee can work when raining or at night
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 89a70432ae1713c2c5c6fff2957f2fd4917fdc70..0c34cb85124c41decaba5fa54bb3abde9ba0adfe 100644
index 9ffb7b5c410f1b2b5bb409788315c20fc171d820..6358539ebd7cef98464376896a65df029db0754a 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Bee.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java
@@ -410,7 +410,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -343,7 +343,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
boolean wantsToEnterHive() {
if (this.stayOutOfHiveCountdown <= 0 && !this.beePollinateGoal.isPollinating() && !this.hasStung() && this.getTarget() == null) {
- boolean flag = this.isTiredOfLookingForNectar() || this.level.isRaining() || this.level.isNight() || this.hasNectar();
+ boolean flag = this.isTiredOfLookingForNectar() || (this.level.isRaining() && !this.level.purpurConfig.beeCanWorkInRain) || (this.level.isNight() && !this.level.purpurConfig.beeCanWorkAtNight) || this.hasNectar(); // Purpur
- boolean flag = this.isTiredOfLookingForNectar() || this.level().isRaining() || this.level().isNight() || this.hasNectar();
+ boolean flag = this.isTiredOfLookingForNectar() || (this.level().isRaining() && !this.level().purpurConfig.beeCanWorkInRain) || (this.level().isNight() && !this.level().purpurConfig.beeCanWorkAtNight) || this.hasNectar(); // Purpur
return flag && !this.isHiveNearFire();
} else {
@@ -31,19 +31,19 @@ index a16a1df28258d605cf5908dbe19bda5d71ad4f45..7b82842b97ce795745cf6ee6399f618c
return false;
} else {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 8d764953f0718c0bfe125ef51336efbf0551bcd4..b9adc841d9814b945e163a8ee78fcd499245f838 100644
index 2b01416cb4361605b326ef67cf9f5a5233dd4fe3..ca2035d4a1c984a8d129ccd424e5d3a0a7f9721f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -788,6 +788,8 @@ public class PurpurWorldConfig {
@@ -742,6 +742,8 @@ public class PurpurWorldConfig {
public double beeMaxHealth = 10.0D;
public int beeBreedingTicks = 6000;
public boolean beeTakeDamageFromWater = false;
+ public boolean beeCanWorkAtNight = false;
+ public boolean beeCanWorkInRain = false;
private void beeSettings() {
beeRidable = getBoolean("mobs.bee.ridable", beeRidable);
beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater);
@@ -801,6 +803,8 @@ public class PurpurWorldConfig {
if (PurpurConfig.version < 10) {
double oldValue = getDouble("mobs.bee.attributes.max-health", beeMaxHealth);
@@ -751,6 +753,8 @@ public class PurpurWorldConfig {
beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth);
beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks);
beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater);
@@ -51,4 +51,4 @@ index 8d764953f0718c0bfe125ef51336efbf0551bcd4..b9adc841d9814b945e163a8ee78fcd49
+ beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain);
}
public boolean blazeRidable = false;
public double blazeMaxHealth = 20.0D;

View File

@@ -6,35 +6,36 @@ Subject: [PATCH] API for any mob to burn daylight
Co-authored by: Encode42 <me@encode42.dev>
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 7dbab470620b60f9d7adac0229649df6ef635f45..14ddffb3a936945095dbaeade48441cc439ef21f 100644
index b94ad3ef466fea2bc3d7115c2efae5c4241db843..7ed24fd92a3edf5cacaf760d752534555d52c017 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -4807,5 +4807,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
public boolean canSaveToDisk() {
@@ -477,6 +477,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
return true;
}
+
+ // Purpur start - copied from Mob
+ public boolean isSunBurnTick() {
+ if (this.level.isDay() && !this.level.isClientSide) {
+ if (this.level().isDay() && !this.level().isClientSide) {
+ float f = this.getLightLevelDependentMagicValue();
+ BlockPos blockposition = BlockPos.containing(this.getX(), this.getEyeY(), this.getZ());
+ boolean flag = this.isInWaterRainOrBubble() || this.isInPowderSnow || this.wasInPowderSnow;
+
+ if (f > 0.5F && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F && !flag && this.level.canSeeSky(blockposition)) {
+ if (f > 0.5F && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F && !flag && this.level().canSeeSky(blockposition)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
// Purpur end
}
+
public final boolean hardCollides() {
return this.hardCollides;
}
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index cc95e5bdc2bfa9d53da329a0ec4dd5373e4b150e..c6e08bdfe1123ce5080c2cd91320702dab6bf84c 100644
index 89224b1079c841afc8265e9347d22ac784690103..99be702786a9f5c98c16c468fd7743ab297d103f 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -261,6 +261,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -265,6 +265,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
public org.bukkit.craftbukkit.entity.CraftLivingEntity getBukkitLivingEntity() { return (org.bukkit.craftbukkit.entity.CraftLivingEntity) super.getBukkitEntity(); } // Paper
public boolean silentDeath = false; // Paper - mark entity as dying silently for cancellable death event
public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper
@@ -42,7 +43,7 @@ index cc95e5bdc2bfa9d53da329a0ec4dd5373e4b150e..c6e08bdfe1123ce5080c2cd91320702d
@Override
public float getBukkitYaw() {
@@ -787,6 +788,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -805,6 +806,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
dataresult.resultOrPartial(logger::error).ifPresent((nbtbase) -> {
nbt.put("Brain", nbtbase);
});
@@ -50,7 +51,7 @@ index cc95e5bdc2bfa9d53da329a0ec4dd5373e4b150e..c6e08bdfe1123ce5080c2cd91320702d
}
@Override
@@ -871,6 +873,11 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -889,6 +891,11 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.brain = this.makeBrain(new Dynamic(NbtOps.INSTANCE, nbt.get("Brain")));
}
@@ -62,7 +63,7 @@ index cc95e5bdc2bfa9d53da329a0ec4dd5373e4b150e..c6e08bdfe1123ce5080c2cd91320702d
}
// CraftBukkit start
@@ -3495,6 +3502,27 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -3504,6 +3511,27 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.hurt(this.damageSources().drown(), 1.0F);
}
@@ -91,30 +92,30 @@ index cc95e5bdc2bfa9d53da329a0ec4dd5373e4b150e..c6e08bdfe1123ce5080c2cd91320702d
public boolean isSensitiveToWater() {
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
index 34eb04112fa47cbcd233f8a959036d988d73f1b4..bf5705551720d338ee0b790504727685b1f8f026 100644
index 475ac814ccd4dc988a10511a4419336ecf34421e..65914b253725e740f6efe278d89f71aa4421b251 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -1737,17 +1737,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
@@ -1733,17 +1733,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
}
public boolean isSunBurnTick() {
- if (this.level.isDay() && !this.level.isClientSide) {
- if (this.level().isDay() && !this.level().isClientSide) {
- float f = this.getLightLevelDependentMagicValue();
- BlockPos blockposition = BlockPos.containing(this.getX(), this.getEyeY(), this.getZ());
- boolean flag = this.isInWaterRainOrBubble() || this.isInPowderSnow || this.wasInPowderSnow;
-
- if (f > 0.5F && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F && !flag && this.level.canSeeSky(blockposition)) {
- if (f > 0.5F && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F && !flag && this.level().canSeeSky(blockposition)) {
- return true;
- }
- }
-
- return false;
+ return super.isSunBurnTick(); // Purpur - moved contents to Entity
+ return super.isSunBurnTick();
}
@Override
diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
index 8fad4a642e2d430ad4b195f77422ba6855be1d63..ea897da752c96c58d137af56544e9bf50135c6ec 100644
index 9ca1e9d95e62929c0015d5ca2c2f9c70e421842e..af73945e4fc9cae081be90fa68fe73c9bde9b5bf 100644
--- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
+++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
@@ -66,6 +66,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
@@ -125,7 +126,7 @@ index 8fad4a642e2d430ad4b195f77422ba6855be1d63..ea897da752c96c58d137af56544e9bf5
}
@Override
@@ -101,35 +102,14 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
@@ -99,35 +100,14 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
}
// Paper start
@@ -163,7 +164,7 @@ index 8fad4a642e2d430ad4b195f77422ba6855be1d63..ea897da752c96c58d137af56544e9bf5
super.aiStep();
}
@@ -194,7 +174,6 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
@@ -192,7 +172,6 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
} else {
this.goalSelector.addGoal(4, this.meleeGoal);
}
@@ -171,7 +172,7 @@ index 8fad4a642e2d430ad4b195f77422ba6855be1d63..ea897da752c96c58d137af56544e9bf5
}
}
@@ -238,7 +217,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
@@ -236,7 +215,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
this.reassessWeaponGoal();
// Paper start
if (nbt.contains("Paper.ShouldBurnInDay")) {
@@ -180,7 +181,7 @@ index 8fad4a642e2d430ad4b195f77422ba6855be1d63..ea897da752c96c58d137af56544e9bf5
}
// Paper end
}
@@ -247,7 +226,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
@@ -245,7 +224,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
@Override
public void addAdditionalSaveData(CompoundTag nbt) {
super.addAdditionalSaveData(nbt);
@@ -190,7 +191,7 @@ index 8fad4a642e2d430ad4b195f77422ba6855be1d63..ea897da752c96c58d137af56544e9bf5
// Paper end
diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java
index 94175bf66886fbf2808d1587e229c74086482589..7d40c970990241d39b22196e9af6354ab2a2c66b 100644
index 2c605d8acc12177baedacc265b276f66e268d0a2..04cbd6f0a7686ccfcb80c54b44e410ec9a76728f 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Husk.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java
@@ -20,6 +20,7 @@ public class Husk extends Zombie {
@@ -200,8 +201,8 @@ index 94175bf66886fbf2808d1587e229c74086482589..7d40c970990241d39b22196e9af6354a
+ this.setShouldBurnInDay(false); // Purpur
}
// Purpur start
@@ -75,7 +76,7 @@ public class Husk extends Zombie {
@Override
@@ -58,7 +59,7 @@ public class Husk extends Zombie {
@Override
public boolean isSunSensitive() {
@@ -211,18 +212,18 @@ index 94175bf66886fbf2808d1587e229c74086482589..7d40c970990241d39b22196e9af6354a
@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
index 7d8441d433a9c3e5456e7e96c503cdbbf53959c6..ac94212c2c844f3d426b16a7f3b4a44707389916 100644
index 935cab241766f11b2dc957403db35d43b93e9080..da3e01c9d8d7202bcb2b0b249012bafe10f2e0c0 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
@@ -60,6 +60,7 @@ public class Phantom extends FlyingMob implements Enemy {
@@ -59,6 +59,7 @@ public class Phantom extends FlyingMob implements Enemy {
this.xpReward = 5;
this.moveControl = new Phantom.PhantomMoveControl(this);
this.lookControl = new Phantom.PhantomLookControl(this);
+ this.setShouldBurnInDay(true); // Purpur
}
// Purpur start
@@ -254,15 +255,7 @@ public class Phantom extends FlyingMob implements Enemy {
@Override
@@ -169,15 +170,7 @@ public class Phantom extends FlyingMob implements Enemy {
@Override
public void aiStep() {
@@ -239,7 +240,7 @@ index 7d8441d433a9c3e5456e7e96c503cdbbf53959c6..ac94212c2c844f3d426b16a7f3b4a447
super.aiStep();
}
@@ -290,7 +283,7 @@ public class Phantom extends FlyingMob implements Enemy {
@@ -205,7 +198,7 @@ public class Phantom extends FlyingMob implements Enemy {
if (nbt.hasUUID("Paper.SpawningEntity")) {
this.spawningEntity = nbt.getUUID("Paper.SpawningEntity");
}
@@ -248,7 +249,7 @@ index 7d8441d433a9c3e5456e7e96c503cdbbf53959c6..ac94212c2c844f3d426b16a7f3b4a447
this.shouldBurnInDay = nbt.getBoolean("Paper.ShouldBurnInDay");
}
// Paper end
@@ -307,7 +300,7 @@ public class Phantom extends FlyingMob implements Enemy {
@@ -222,7 +215,7 @@ public class Phantom extends FlyingMob implements Enemy {
if (this.spawningEntity != null) {
nbt.putUUID("Paper.SpawningEntity", this.spawningEntity);
}
@@ -257,7 +258,7 @@ index 7d8441d433a9c3e5456e7e96c503cdbbf53959c6..ac94212c2c844f3d426b16a7f3b4a447
// Paper end
}
@@ -373,8 +366,14 @@ public class Phantom extends FlyingMob implements Enemy {
@@ -288,8 +281,14 @@ public class Phantom extends FlyingMob implements Enemy {
}
public void setSpawningEntity(java.util.UUID entity) { this.spawningEntity = entity; }
@@ -275,7 +276,7 @@ index 7d8441d433a9c3e5456e7e96c503cdbbf53959c6..ac94212c2c844f3d426b16a7f3b4a447
// Paper end
private static enum AttackPhase {
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
index 5cf17a81d8c2a784bbd406dc3725ebbbbdf4a045..114093185454a428e0ef9f0877ea4efd9532c2f8 100644
index a7f1c1f38b187cc5a67a9ef08fa432b80f450617..c09cbdf9df9db13cb038e376ab10c5b53c74a6f8 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
@@ -95,11 +95,12 @@ public class Zombie extends Monster {
@@ -292,7 +293,7 @@ index 5cf17a81d8c2a784bbd406dc3725ebbbbdf4a045..114093185454a428e0ef9f0877ea4efd
}
public Zombie(Level world) {
@@ -295,30 +296,7 @@ public class Zombie extends Monster {
@@ -276,30 +277,7 @@ public class Zombie extends Monster {
@Override
public void aiStep() {
@@ -324,7 +325,7 @@ index 5cf17a81d8c2a784bbd406dc3725ebbbbdf4a045..114093185454a428e0ef9f0877ea4efd
super.aiStep();
}
@@ -356,6 +334,7 @@ public class Zombie extends Monster {
@@ -337,6 +315,7 @@ public class Zombie extends Monster {
}
@@ -332,7 +333,7 @@ index 5cf17a81d8c2a784bbd406dc3725ebbbbdf4a045..114093185454a428e0ef9f0877ea4efd
public boolean isSunSensitive() {
return this.shouldBurnInDay; // Paper - use api value instead
}
@@ -485,7 +464,7 @@ public class Zombie extends Monster {
@@ -466,7 +445,7 @@ public class Zombie extends Monster {
nbt.putBoolean("CanBreakDoors", this.canBreakDoors());
nbt.putInt("InWaterTime", this.isInWater() ? this.inWaterTime : -1);
nbt.putInt("DrownedConversionTime", this.isUnderWaterConverting() ? this.conversionTime : -1);
@@ -341,7 +342,7 @@ index 5cf17a81d8c2a784bbd406dc3725ebbbbdf4a045..114093185454a428e0ef9f0877ea4efd
}
@Override
@@ -499,7 +478,7 @@ public class Zombie extends Monster {
@@ -480,7 +459,7 @@ public class Zombie extends Monster {
}
// Paper start
if (nbt.contains("Paper.ShouldBurnInDay")) {
@@ -351,7 +352,7 @@ index 5cf17a81d8c2a784bbd406dc3725ebbbbdf4a045..114093185454a428e0ef9f0877ea4efd
// Paper end
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index ef683027bc840999d70420b2d6c751ca07c168e9..bdb6485b7b3544e1b264a44ae919277221ce11ba 100644
index 285d58cfa0ea899e2a7583d1ca308872e68f18c9..270d38696f95e259dd036c5db2883e406e81d3fa 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -209,6 +209,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
@@ -367,7 +368,7 @@ index ef683027bc840999d70420b2d6c751ca07c168e9..bdb6485b7b3544e1b264a44ae9192772
/*
* Order is *EXTREMELY* important -- keep it right! =D
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
index 6216b4590f40b6d5f904d57b50076fb8f64fd7a9..697cc3adf3c07241136d555cbb618b528906efaf 100644
index a6e30e77d335b74b47ae2dd5bd80a4bb0dc877e7..75b3bee5c0907d24c324ccdef8b6fcc46bd5971c 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
@@ -1088,5 +1088,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Config MobEffect by world
diff --git a/src/main/java/net/minecraft/world/effect/MobEffect.java b/src/main/java/net/minecraft/world/effect/MobEffect.java
index 2cc714585fc3790b70a7ad1ab8034543462e2b3b..22d7f04cefafa0115a4504e37380787777091b18 100644
index bcce17f884b57e619749351b7b2047f0a5f9be71..350ad84b02ec85566dc360b3d760913507426519 100644
--- a/src/main/java/net/minecraft/world/effect/MobEffect.java
+++ b/src/main/java/net/minecraft/world/effect/MobEffect.java
@@ -60,16 +60,16 @@ public class MobEffect {
@@ -28,7 +28,7 @@ index 2cc714585fc3790b70a7ad1ab8034543462e2b3b..22d7f04cefafa0115a4504e373807877
- ((Player) entity).causeFoodExhaustion(0.005F * (float) (amplifier + 1), org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.HUNGER_EFFECT); // CraftBukkit - EntityExhaustionEvent
+ ((Player) entity).causeFoodExhaustion(entity.level.purpurConfig.humanHungerExhaustionAmount * (float) (amplifier + 1), org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.HUNGER_EFFECT); // CraftBukkit - EntityExhaustionEvent // Purpur
} else if (this == MobEffects.SATURATION && entity instanceof Player) {
if (!entity.level.isClientSide) {
if (!entity.level().isClientSide) {
// CraftBukkit start
@@ -79,7 +79,7 @@ public class MobEffect {
org.bukkit.event.entity.FoodLevelChangeEvent event = CraftEventFactory.callFoodLevelChangeEvent(entityhuman, amplifier + 1 + oldFoodLevel);
@@ -40,7 +40,7 @@ index 2cc714585fc3790b70a7ad1ab8034543462e2b3b..22d7f04cefafa0115a4504e373807877
((ServerPlayer) entityhuman).connection.send(new ClientboundSetHealthPacket(((ServerPlayer) entityhuman).getBukkitEntity().getScaledHealth(), entityhuman.getFoodData().foodLevel, entityhuman.getFoodData().saturationLevel));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index b9adc841d9814b945e163a8ee78fcd499245f838..fef8e9d314e2078d08cb326e1cb4a593c3161193 100644
index ca2035d4a1c984a8d129ccd424e5d3a0a7f9721f..c03259911008e5f6c7c0ae2eb700e34a29868eb2 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -333,6 +333,21 @@ 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
index ef740d1ad6352ca4af299001a081b720bc472d2e..c787019b5cbadec81dd33ef4021708b9b423485a 100644
index 59246e24558569f7f50b4d4d508616798091c888..cc03c02f290ee8d58a2fea54b1f977f49a2cec6e 100644
--- a/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
@@ -26,7 +26,7 @@ index ef740d1ad6352ca4af299001a081b720bc472d2e..c787019b5cbadec81dd33ef4021708b9
} else {
return effectRange;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index fef8e9d314e2078d08cb326e1cb4a593c3161193..52fe09a63496d1c707d9406e1f2d102c9ecdf018 100644
index c03259911008e5f6c7c0ae2eb700e34a29868eb2..b2fe6c51dbc11c8c021f89b9fe74c9703aa00ed4 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -525,6 +525,17 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add toggle for sand duping fix
diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
index 536856300da929c101f50da5827677bada5feb50..98844ccc6200ba060022525b3a00bcb1de1d0a7a 100644
index eff81e846f696349b3bd3d26c02442f157b169f0..98cad555493376374fa2a19c365834895659f018 100644
--- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
@@ -131,7 +131,7 @@ public class FallingBlockEntity extends Entity {
@@ -27,11 +27,11 @@ index 536856300da929c101f50da5827677bada5feb50..98844ccc6200ba060022525b3a00bcb1
}
// Paper end - fix sand duping
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 52fe09a63496d1c707d9406e1f2d102c9ecdf018..cec4bd68c9b166045f0e868fcbc33b9e4d3bdb0b 100644
index b2fe6c51dbc11c8c021f89b9fe74c9703aa00ed4..43971b5e317f44ec66bc7adf7f409ad09698446f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -704,6 +704,11 @@ public class PurpurWorldConfig {
}
@@ -714,6 +714,11 @@ public class PurpurWorldConfig {
spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone);
}
+ public boolean fixSandDuping = true;

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add toggle for end portal safe teleporting
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 14ddffb3a936945095dbaeade48441cc439ef21f..cf7eb47706b5344fa7619aeda88c9641bda0ad42 100644
index 7ed24fd92a3edf5cacaf760d752534555d52c017..ed73296c9c2e07c3b24067946f996c13aa777cbb 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2998,7 +2998,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -3055,7 +3055,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
this.processPortalCooldown();
@@ -45,7 +45,7 @@ index f80f6da484f4144e743079e5104bf503419074b2..2deddc746e43896584bd65ba8e7971a8
entity.portalWorld = ((ServerLevel)world);
entity.portalBlock = pos.immutable();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index cec4bd68c9b166045f0e868fcbc33b9e4d3bdb0b..6d9d002e53319b82426e79c4772163a13b0efa52 100644
index 43971b5e317f44ec66bc7adf7f409ad09698446f..0286905783204f067bcb4371dc8ed81b7bea243d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -652,6 +652,11 @@ public class PurpurWorldConfig {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Make lightning rod range configurable
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index cd7ca682b569c3633e412704534a9425c007f09b..da0ee556419074c8f1af6fd09e713a8898e0c8c4 100644
index d44f8a660870ed5e4c4f5d3070c074fab27a5807..1ddab634be51af2ad1c208e7ffc55f56e1bf298e 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -994,7 +994,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1038,7 +1038,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
return holder.is(PoiTypes.LIGHTNING_ROD);
}, (blockposition1) -> {
return blockposition1.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockposition1.getX(), blockposition1.getZ()) - 1;
@@ -18,10 +18,10 @@ index cd7ca682b569c3633e412704534a9425c007f09b..da0ee556419074c8f1af6fd09e713a88
return optional.map((blockposition1) -> {
return blockposition1.above(1);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 14f2b23248f23804a85b522e9e46ffa170162335..90354c009041e38143464f082ee8b6b54a5ec8cb 100644
index dc781bc68f024951c078b84fd37c2f106eb13a2e..078942f541713fc106008f3b39fed3a61acf866c 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -270,6 +270,7 @@ public class PurpurConfig {
@@ -268,6 +268,7 @@ public class PurpurConfig {
public static boolean cryingObsidianValidForPortalFrame = false;
public static int beeInsideBeeHive = 3;
public static boolean anvilCumulativeCost = true;
@@ -29,7 +29,7 @@ index 14f2b23248f23804a85b522e9e46ffa170162335..90354c009041e38143464f082ee8b6b5
private static void blockSettings() {
if (version < 3) {
boolean oldValue = getBoolean("settings.barrel.packed-barrels", true);
@@ -303,6 +304,7 @@ public class PurpurConfig {
@@ -301,6 +302,7 @@ public class PurpurConfig {
cryingObsidianValidForPortalFrame = getBoolean("settings.blocks.crying_obsidian.valid-for-portal-frame", cryingObsidianValidForPortalFrame);
beeInsideBeeHive = getInt("settings.blocks.beehive.max-bees-inside", beeInsideBeeHive);
anvilCumulativeCost = getBoolean("settings.blocks.anvil.cumulative-cost", anvilCumulativeCost);

View File

@@ -6,32 +6,31 @@ Subject: [PATCH] Burp delay, burp after eating food fills hunger bar
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 9831340303d60f11dcaed1d444449742d86b3db1..75250719f8d10dd06471758b2848d132e5b1aa70 100644
index 52dba0a97d1620447c22e51f2d9af8f898f0cd69..0598a4db8de5ff85937c3e5bd95cee5a09633df5 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -199,6 +199,8 @@ public abstract class Player extends LivingEntity {
// CraftBukkit end
@@ -188,6 +188,7 @@ public abstract class Player extends LivingEntity {
public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET;
// Paper end
public int sixRowEnderchestSlotCount = -1; // Purpur
+ public int burpDelay = 0; // Purpur
// Purpur start
+ public int burpDelay = 0;
+
public abstract void resetLastActionTime();
public void setAfk(boolean afk) {
@@ -262,6 +264,12 @@ public abstract class Player extends LivingEntity {
// CraftBukkit start
public boolean fauxSleeping;
@@ -250,6 +251,12 @@ public abstract class Player extends LivingEntity {
@Override
public void tick() {
+ // Purpur start
+ if (this.burpDelay > 0 && --this.burpDelay == 0) {
+ this.level.playSound(null, getX(), getY(), getZ(), SoundEvents.PLAYER_BURP, SoundSource.PLAYERS, 1.0F, this.level.random.nextFloat() * 0.1F + 0.9F);
+ this.level().playSound(null, getX(), getY(), getZ(), SoundEvents.PLAYER_BURP, SoundSource.PLAYERS, 1.0F, this.level().random.nextFloat() * 0.1F + 0.9F);
+ }
+ // Purpur end
+
this.noPhysics = this.isSpectator();
if (this.isSpectator()) {
this.onGround = false;
@@ -2352,7 +2360,7 @@ public abstract class Player extends LivingEntity {
this.setOnGround(false);
@@ -2367,7 +2374,7 @@ public abstract class Player extends LivingEntity {
public ItemStack eat(Level world, ItemStack stack) {
this.getFoodData().eat(stack.getItem(), stack);
this.awardStat(Stats.ITEM_USED.get(stack.getItem()));
@@ -41,7 +40,7 @@ index 9831340303d60f11dcaed1d444449742d86b3db1..75250719f8d10dd06471758b2848d132
CriteriaTriggers.CONSUME_ITEM.trigger((ServerPlayer) this, stack);
}
diff --git a/src/main/java/net/minecraft/world/food/FoodData.java b/src/main/java/net/minecraft/world/food/FoodData.java
index 4a2dcf9bd83dd3fdff43483f887f4f58dc4715cd..87f9e03fb5e095396e054a84be60ec455d3fbd35 100644
index 2038df72f8d7d33d4105de8129628daf21de6f0f..3f7193bebdfd914df2efeb57d77fd86af68d4041 100644
--- a/src/main/java/net/minecraft/world/food/FoodData.java
+++ b/src/main/java/net/minecraft/world/food/FoodData.java
@@ -33,8 +33,10 @@ public class FoodData {
@@ -56,7 +55,7 @@ index 4a2dcf9bd83dd3fdff43483f887f4f58dc4715cd..87f9e03fb5e095396e054a84be60ec45
public void eat(Item item, ItemStack stack) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 6d9d002e53319b82426e79c4772163a13b0efa52..62f984a5bbfd50a2ad66bfcde4c1b461cb9c1e6a 100644
index 0286905783204f067bcb4371dc8ed81b7bea243d..2b9a4ef1365e3350095901f05be9622154c44096 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -392,6 +392,8 @@ public class PurpurWorldConfig {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Allow player join full server by permission
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index cfe70ad065f7c5919faad67b171b9dbbabaea51c..2e404f8ef0f0f2f9de1356cf7f353b55ee1e9c45 100644
index 15a04d24f511425aee392a2fa4e333071ca5c582..0273f390d3df438b88b02ad9c43dc6a477cda974 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -734,7 +734,7 @@ public abstract class PlayerList {
@@ -740,7 +740,7 @@ public abstract class PlayerList {
event.disallow(PlayerLoginEvent.Result.KICK_BANNED, PaperAdventure.asAdventure(ichatmutablecomponent)); // Paper - Adventure
} else {
// return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameprofile) ? IChatBaseComponent.translatable("multiplayer.disconnect.server_full") : null;

View File

@@ -5,28 +5,28 @@ Subject: [PATCH] Add portal waiting option & permission bypass
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 75250719f8d10dd06471758b2848d132e5b1aa70..4557ae0ab9387c99f4f416205e16a2ab92dbaab5 100644
index 0598a4db8de5ff85937c3e5bd95cee5a09633df5..86007f7ed1e5c4e2e688e1f012468e4cf6dc0d2e 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -187,6 +187,7 @@ public abstract class Player extends LivingEntity {
public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET;
@@ -189,6 +189,7 @@ public abstract class Player extends LivingEntity {
// Paper end
public int sixRowEnderchestSlotCount = -1; // Purpur
public int burpDelay = 0; // Purpur
+ public boolean canPortalInstant = false; // Purpur
// CraftBukkit start
public boolean fauxSleeping;
@@ -469,7 +470,7 @@ public abstract class Player extends LivingEntity {
@@ -456,7 +457,7 @@ public abstract class Player extends LivingEntity {
@Override
public int getPortalWaitTime() {
- return this.abilities.invulnerable ? 1 : 80;
+ return canPortalInstant ? 1 : this.abilities.invulnerable ? this.level.purpurConfig.playerCreativePortalWaitTime : this.level.purpurConfig.playerPortalWaitTime; // Purpur
+ return canPortalInstant ? 1 : this.abilities.invulnerable ? this.level().purpurConfig.playerCreativePortalWaitTime : this.level().purpurConfig.playerPortalWaitTime; // Purpur
}
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
index 1b008e5217c5bbf566a213abb92e1c7c43a3a7c2..468023414b4a9119a3418b8e8a5e38375bbd2407 100644
index cba6ead3f937f2b3d59c15a864e07e5cb2f2330c..ab75c82b96d0aea1ba1ba1065c8a16e5ad9cdbdd 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
@@ -266,6 +266,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
@@ -38,7 +38,7 @@ index 1b008e5217c5bbf566a213abb92e1c7c43a3a7c2..468023414b4a9119a3418b8e8a5e3837
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 62f984a5bbfd50a2ad66bfcde4c1b461cb9c1e6a..09716be179c69cbab1561c2b36cbdf9d03269d7f 100644
index 2b9a4ef1365e3350095901f05be9622154c44096..cfb1a28cc33ce9c2e776662c7515acba0e5b7631 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -394,6 +394,8 @@ public class PurpurWorldConfig {

View File

@@ -13,46 +13,47 @@ Subject: [PATCH] Shulker spawn from bullet options
(7 - 1) / 5.0 = 1.2 1.0 - 1.2 = -0.2 0% (6 other shulkers)
diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java
index 9c832e03a288ff0cdb6fbb34e6bea4ef69102ee7..a0d34af033130d88a19a078b628ea4fbce3d268e 100644
index 4017784e5b722887caf8ab5d17579e6daf50c5b4..08d39b0660736be641ad22e3ceb08db7aabebf6a 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java
@@ -513,11 +513,20 @@ public class Shulker extends AbstractGolem implements VariantHolder<Optional<Dye
@@ -494,12 +494,21 @@ public class Shulker extends AbstractGolem implements VariantHolder<Optional<Dye
Vec3 vec3d = this.position();
AABB axisalignedbb = this.getBoundingBox();
- if (!this.isClosed() && this.teleportSomewhere()) {
- int i = this.level.getEntities((EntityTypeTest) EntityType.SHULKER, axisalignedbb.inflate(8.0D), Entity::isAlive).size();
- int i = this.level().getEntities((EntityTypeTest) EntityType.SHULKER, axisalignedbb.inflate(8.0D), Entity::isAlive).size();
- float f = (float) (i - 1) / 5.0F;
-
- if (this.level.random.nextFloat() >= f) {
+ if ((!this.level.purpurConfig.shulkerSpawnFromBulletRequireOpenLid || !this.isClosed()) && this.teleportSomewhere()) {
- if (this.level().random.nextFloat() >= f) {
+ if ((!this.level().purpurConfig.shulkerSpawnFromBulletRequireOpenLid || !this.isClosed()) && this.teleportSomewhere()) {
+ // Purpur start
+ float chance = this.level.purpurConfig.shulkerSpawnFromBulletBaseChance;
+ if (!this.level.purpurConfig.shulkerSpawnFromBulletNearbyEquation.isBlank()) {
+ int nearby = this.level.getEntities((EntityTypeTest) EntityType.SHULKER, axisalignedbb.inflate(this.level.purpurConfig.shulkerSpawnFromBulletNearbyRange), Entity::isAlive).size();
+ float chance = this.level().purpurConfig.shulkerSpawnFromBulletBaseChance;
+ if (!this.level().purpurConfig.shulkerSpawnFromBulletNearbyEquation.isBlank()) {
+ int nearby = this.level().getEntities((EntityTypeTest) EntityType.SHULKER, axisalignedbb.inflate(this.level().purpurConfig.shulkerSpawnFromBulletNearbyRange), Entity::isAlive).size();
+ try {
+ chance -= ((Number) scriptEngine.eval("let nearby = " + nearby + "; " + this.level.purpurConfig.shulkerSpawnFromBulletNearbyEquation)).floatValue();
+ chance -= ((Number) scriptEngine.eval("let nearby = " + nearby + "; " + this.level().purpurConfig.shulkerSpawnFromBulletNearbyEquation)).floatValue();
+ } catch (javax.script.ScriptException e) {
+ e.printStackTrace();
+ chance -= (nearby - 1) / 5.0F;
+ }
+ }
+ if (this.level.random.nextFloat() <= chance) {
+ if (this.level().random.nextFloat() <= chance) {
Shulker entityshulker = (Shulker) EntityType.SHULKER.create(this.level());
+ // Purpur end
Shulker entityshulker = (Shulker) EntityType.SHULKER.create(this.level);
if (entityshulker != null) {
@@ -630,7 +639,7 @@ public class Shulker extends AbstractGolem implements VariantHolder<Optional<Dye
entityshulker.setVariant(this.getVariant());
@@ -611,7 +620,7 @@ public class Shulker extends AbstractGolem implements VariantHolder<Optional<Dye
@Override
public Optional<DyeColor> getVariant() {
- return Optional.ofNullable(this.getColor());
+ return Optional.ofNullable(this.level.purpurConfig.shulkerSpawnFromBulletRandomColor ? DyeColor.random(this.level.random) : this.getColor()); // Purpur
+ return Optional.ofNullable(this.level().purpurConfig.shulkerSpawnFromBulletRandomColor ? DyeColor.random(this.level().random) : this.getColor()); // Purpur
}
@Nullable
diff --git a/src/main/java/net/minecraft/world/item/DyeColor.java b/src/main/java/net/minecraft/world/item/DyeColor.java
index 2170715ed0e81a3055e4ab546c8b294c5ef7f142..beae4e2b9f61df83215de860d64c4ce2d3482004 100644
index 88e1c2431d51d8cdc3d555b711e506648225d289..ac8735cc9d127fc1f867b40d4000c033ef73bb83 100644
--- a/src/main/java/net/minecraft/world/item/DyeColor.java
+++ b/src/main/java/net/minecraft/world/item/DyeColor.java
@@ -103,4 +103,10 @@ public enum DyeColor implements StringRepresentable {
@@ -67,11 +68,11 @@ index 2170715ed0e81a3055e4ab546c8b294c5ef7f142..beae4e2b9f61df83215de860d64c4ce2
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 09716be179c69cbab1561c2b36cbdf9d03269d7f..1ffa2a0336351162d09fd2cdd70aa9db5f344f41 100644
index cfb1a28cc33ce9c2e776662c7515acba0e5b7631..48b7f4f34f810819ac39638f14758a9b54f10132 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1943,6 +1943,11 @@ public class PurpurWorldConfig {
public boolean shulkerControllable = true;
@@ -1620,6 +1620,11 @@ public class PurpurWorldConfig {
public double shulkerMaxHealth = 30.0D;
public boolean shulkerTakeDamageFromWater = false;
+ public float shulkerSpawnFromBulletBaseChance = 1.0F;
@@ -80,9 +81,9 @@ index 09716be179c69cbab1561c2b36cbdf9d03269d7f..1ffa2a0336351162d09fd2cdd70aa9db
+ public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0";
+ public boolean shulkerSpawnFromBulletRandomColor = false;
private void shulkerSettings() {
shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable);
shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater);
@@ -1954,6 +1959,11 @@ public class PurpurWorldConfig {
if (PurpurConfig.version < 10) {
double oldValue = getDouble("mobs.shulker.attributes.max-health", shulkerMaxHealth);
@@ -1628,6 +1633,11 @@ public class PurpurWorldConfig {
}
shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth);
shulkerTakeDamageFromWater = getBoolean("mobs.shulker.takes-damage-from-water", shulkerTakeDamageFromWater);
@@ -93,4 +94,4 @@ index 09716be179c69cbab1561c2b36cbdf9d03269d7f..1ffa2a0336351162d09fd2cdd70aa9db
+ shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor);
}
public boolean silverfishRidable = false;
public double silverfishMaxHealth = 8.0D;

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Eating glow berries adds glow effect
diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java
index 42e6aeea8d2e076aea7fa2c1ccf5edcc5efba46f..1f2e467272dddf3e91b7ab7037a0367b809725ca 100644
index e6f8cb165f7e3da5f0edfc952d14059516de8acf..31f5ed9dd1727eee24804a384817d2b76a45676b 100644
--- a/src/main/java/net/minecraft/world/item/Items.java
+++ b/src/main/java/net/minecraft/world/item/Items.java
@@ -1178,7 +1178,7 @@ public class Items {
@@ -1184,7 +1184,7 @@ public class Items {
public static final Item LANTERN = registerBlock(Blocks.LANTERN);
public static final Item SOUL_LANTERN = registerBlock(Blocks.SOUL_LANTERN);
public static final Item SWEET_BERRIES = registerItem("sweet_berries", new ItemNameBlockItem(Blocks.SWEET_BERRY_BUSH, (new Item.Properties()).food(Foods.SWEET_BERRIES)));
@@ -18,7 +18,7 @@ index 42e6aeea8d2e076aea7fa2c1ccf5edcc5efba46f..1f2e467272dddf3e91b7ab7037a0367b
public static final Item SOUL_CAMPFIRE = registerBlock(Blocks.SOUL_CAMPFIRE);
public static final Item SHROOMLIGHT = registerBlock(Blocks.SHROOMLIGHT);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 80aa54f4e04009a044db29f0aa523777904bf6c3..2ddb58e7703cc936f0b6b8765e82bc1be40044d3 100644
index 48b7f4f34f810819ac39638f14758a9b54f10132..f24895f3db1a920d2e4711b686bd907ac09fd3e3 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -222,6 +222,7 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Option to make drowned break doors
diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java
index 81646291540b07d6e1fa4ca06eda35f048a7a4fe..7a348d243f2a39c4e3faa1995eaf3f0cb0743070 100644
index 050b337bfd328c0272a93615c98b8eec02deb026..05066a7f72908e7a1c8a55c5edced9946b83da6f 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java
@@ -29,6 +29,7 @@ import net.minecraft.world.entity.ai.goal.MoveToBlockGoal;
@@ -16,15 +16,15 @@ index 81646291540b07d6e1fa4ca06eda35f048a7a4fe..7a348d243f2a39c4e3faa1995eaf3f0c
import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal;
import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal;
import net.minecraft.world.entity.ai.navigation.GroundPathNavigation;
@@ -122,6 +123,7 @@ public class Drowned extends Zombie implements RangedAttackMob {
@@ -105,6 +106,7 @@ public class Drowned extends Zombie implements RangedAttackMob {
this.goalSelector.addGoal(2, new Drowned.DrownedAttackGoal(this, 1.0D, false));
this.goalSelector.addGoal(5, new Drowned.DrownedGoToBeachGoal(this, 1.0D));
this.goalSelector.addGoal(6, new Drowned.DrownedSwimUpGoal(this, 1.0D, this.level.getSeaLevel()));
this.goalSelector.addGoal(6, new Drowned.DrownedSwimUpGoal(this, 1.0D, this.level().getSeaLevel()));
+ if (level.purpurConfig.drownedBreakDoors) this.goalSelector.addGoal(6, new MoveThroughVillageGoal(this, 1.0D, true, 4, this::canBreakDoors));
this.goalSelector.addGoal(7, new RandomStrollGoal(this, 1.0D));
this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{Drowned.class})).setAlertOthers(ZombifiedPiglin.class));
this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::okTarget));
@@ -171,7 +173,7 @@ public class Drowned extends Zombie implements RangedAttackMob {
@@ -154,7 +156,7 @@ public class Drowned extends Zombie implements RangedAttackMob {
@Override
public boolean supportsBreakDoorGoal() {
@@ -34,22 +34,22 @@ index 81646291540b07d6e1fa4ca06eda35f048a7a4fe..7a348d243f2a39c4e3faa1995eaf3f0c
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 443d32da515574765d2bfd7430110c119cdd2256..0234b1c52738bc8f831486fd4c4911d7ad8f3eb0 100644
index f24895f3db1a920d2e4711b686bd907ac09fd3e3..7d189a2f2979b1c921b353a00777a49baaa537d1 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1089,6 +1089,7 @@ public class PurpurWorldConfig {
@@ -982,6 +982,7 @@ public class PurpurWorldConfig {
public double drownedJockeyChance = 0.05D;
public boolean drownedJockeyTryExistingChickens = true;
public boolean drownedTakeDamageFromWater = false;
+ public boolean drownedBreakDoors = false;
private void drownedSettings() {
drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable);
drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater);
@@ -1104,6 +1105,7 @@ public class PurpurWorldConfig {
if (PurpurConfig.version < 10) {
double oldValue = getDouble("mobs.drowned.attributes.max-health", drownedMaxHealth);
@@ -994,6 +995,7 @@ public class PurpurWorldConfig {
drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance);
drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens);
drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater);
+ drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors);
}
public boolean elderGuardianRidable = false;
public double elderGuardianMaxHealth = 80.0D;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Configurable hunger starvation damage
diff --git a/src/main/java/net/minecraft/world/food/FoodData.java b/src/main/java/net/minecraft/world/food/FoodData.java
index 87f9e03fb5e095396e054a84be60ec455d3fbd35..3d2e3c7dd3bf5c8f483a933e9f6868586c0d3911 100644
index 3f7193bebdfd914df2efeb57d77fd86af68d4041..1f6ed751dd9c1575967a57af5b26ceff9521dd0d 100644
--- a/src/main/java/net/minecraft/world/food/FoodData.java
+++ b/src/main/java/net/minecraft/world/food/FoodData.java
@@ -102,7 +102,7 @@ public class FoodData {
@@ -18,10 +18,10 @@ index 87f9e03fb5e095396e054a84be60ec455d3fbd35..3d2e3c7dd3bf5c8f483a933e9f686858
this.tickTimer = 0;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 0234b1c52738bc8f831486fd4c4911d7ad8f3eb0..4f864dd35bc5ecd1631b51080468b4c7d8b9af56 100644
index 7d189a2f2979b1c921b353a00777a49baaa537d1..1868642e47d7129378b673efb54b721a1f284962 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -2600,4 +2600,9 @@ public class PurpurWorldConfig {
@@ -2102,4 +2102,9 @@ public class PurpurWorldConfig {
zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry);
zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater);
}

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Enhance SysoutCatcher
diff --git a/src/main/java/io/papermc/paper/logging/SysoutCatcher.java b/src/main/java/io/papermc/paper/logging/SysoutCatcher.java
index 76d0d00cd6742991e3f3ec827a75ee87d856b6c9..38480793e300f9d8f3404617a9a85bae2f313df2 100644
index a8e813ca89b033f061e695288b3383bdcf128531..1ab65af9359d19530bba7f985a604d2a430ee234 100644
--- a/src/main/java/io/papermc/paper/logging/SysoutCatcher.java
+++ b/src/main/java/io/papermc/paper/logging/SysoutCatcher.java
@@ -54,9 +54,9 @@ public final class SysoutCatcher {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add uptime command
diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
index 144e83bac0d8885c48d97d7fbb4b712d4c0fc4b3..23e19bfbc41c5982a746ad0b5ba8c5834c2494a5 100644
index 4e721dfca7559620d8ce65a6703f2089a839f4a0..7aae9e3c60ba15b8dcd8174a4d70866edebb6cca 100644
--- a/src/main/java/net/minecraft/commands/Commands.java
+++ b/src/main/java/net/minecraft/commands/Commands.java
@@ -225,6 +225,7 @@ public class Commands {
@@ -227,6 +227,7 @@ public class Commands {
org.purpurmc.purpur.command.CreditsCommand.register(this.dispatcher); // Purpur
org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur
org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur
@@ -17,7 +17,7 @@ index 144e83bac0d8885c48d97d7fbb4b712d4c0fc4b3..23e19bfbc41c5982a746ad0b5ba8c583
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index de9e19d9979ad6981fcda881d22b18a613c4138d..83cfdbd54d5eb9fb614ab0828b052735868d98b9 100644
index 8e044ff6db7f4ab1605eec1bd8063916add22ca8..394ba413834eec0449a8b7d989b3541b04298cf0 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -296,6 +296,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -29,18 +29,18 @@ index de9e19d9979ad6981fcda881d22b18a613c4138d..83cfdbd54d5eb9fb614ab0828b052735
public int autosavePeriod;
public Commands vanillaCommandDispatcher;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 90354c009041e38143464f082ee8b6b54a5ec8cb..669174925e7dcca0e5a8b5c5d5feb241b58e8719 100644
index 078942f541713fc106008f3b39fed3a61acf866c..ef87e69c95c892ed0a06341138d0ec644b9660f7 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -184,6 +184,7 @@ public class PurpurConfig {
@@ -183,6 +183,7 @@ public class PurpurConfig {
public static String pingCommandOutput = "<green>%s's ping is %sms";
public static String tpsbarCommandOutput = "<green>Tpsbar toggled <onoff> for <target>";
public static String dontRunWithScissors = "<red><italic>Don't run with scissors!";
+ public static String uptimeCommandOutput = "<green>Server uptime is <uptime>";
public static String unverifiedUsername = "default";
private static void messages() {
cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob);
@@ -197,6 +198,7 @@ public class PurpurConfig {
afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway);
@@ -195,6 +196,7 @@ public class PurpurConfig {
pingCommandOutput = getString("settings.messages.ping-command-output", pingCommandOutput);
tpsbarCommandOutput = getString("settings.messages.tpsbar-command-output", tpsbarCommandOutput);
dontRunWithScissors = getString("settings.messages.dont-run-with-scissors", dontRunWithScissors);
@@ -48,7 +48,7 @@ index 90354c009041e38143464f082ee8b6b54a5ec8cb..669174925e7dcca0e5a8b5c5d5feb241
unverifiedUsername = getString("settings.messages.unverified-username", unverifiedUsername);
}
@@ -249,6 +251,15 @@ public class PurpurConfig {
@@ -247,6 +249,15 @@ public class PurpurConfig {
public static int commandTPSBarTickInterval = 20;
public static boolean commandGamemodeRequiresPermission = false;
public static boolean hideHiddenPlayersFromEntitySelector = false;
@@ -64,7 +64,7 @@ index 90354c009041e38143464f082ee8b6b54a5ec8cb..669174925e7dcca0e5a8b5c5d5feb241
private static void commandSettings() {
commandTPSBarTitle = getString("settings.command.tpsbar.title", commandTPSBarTitle);
commandTPSBarProgressOverlay = BossBar.Overlay.valueOf(getString("settings.command.tpsbar.overlay", commandTPSBarProgressOverlay.name()));
@@ -262,6 +273,15 @@ public class PurpurConfig {
@@ -260,6 +271,15 @@ public class PurpurConfig {
commandTPSBarTickInterval = getInt("settings.command.tpsbar.tick-interval", commandTPSBarTickInterval);
commandGamemodeRequiresPermission = getBoolean("settings.command.gamemode.requires-specific-permission", commandGamemodeRequiresPermission);
hideHiddenPlayersFromEntitySelector = getBoolean("settings.command.hide-hidden-players-from-entity-selector", hideHiddenPlayersFromEntitySelector);

View File

@@ -122,7 +122,7 @@ index 180aec596110309aade13d2080f8824d152b07cb..c4aec1e5135a79837918b692e75a7b55
return InteractionResult.PASS;
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 4f864dd35bc5ecd1631b51080468b4c7d8b9af56..d5f3e9ebf5b068cbb95c7a27d674e9f9d4e05b59 100644
index 1868642e47d7129378b673efb54b721a1f284962..c4ad31abb6dacb28f016c1414297d0c40d8aa206 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -528,6 +528,167 @@ public class PurpurWorldConfig {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Store placer on Block when placed
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
index 71acec715d65737d0b13392b5b42b607937c2d15..d5c667a9ca5562c2df38e191748f081ef9ffbd68 100644
index 20aed640cf6afd6d6a24f42adbedc99a044f236f..b42360ce91de16864ad1e4489dc0c22ba412c749 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
@@ -417,6 +417,7 @@ public final class ItemStack {
@@ -421,6 +421,7 @@ public final class ItemStack {
world.preventPoiUpdated = true; // CraftBukkit - SPIGOT-5710
for (BlockState blockstate : blocks) {
blockstate.update(true, false);
@@ -16,7 +16,7 @@ index 71acec715d65737d0b13392b5b42b607937c2d15..d5c667a9ca5562c2df38e191748f081e
}
world.preventPoiUpdated = false;
@@ -446,6 +447,7 @@ public final class ItemStack {
@@ -450,6 +451,7 @@ public final class ItemStack {
if (!(block.getBlock() instanceof BaseEntityBlock)) { // Containers get placed automatically
block.getBlock().onPlace(block, world, newblockposition, oldBlock, true, itemactioncontext); // Paper - pass itemactioncontext
}
@@ -25,10 +25,10 @@ index 71acec715d65737d0b13392b5b42b607937c2d15..d5c667a9ca5562c2df38e191748f081e
world.notifyAndUpdatePhysics(newblockposition, null, oldBlock, block, world.getBlockState(newblockposition), updateFlag, 512); // send null chunk as chunk.k() returns false by this point
}
diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java
index 4f91e4832a94c3facbc711fcae4cb5ad540a5ca0..84f031ec0f196b90c78a6432f344e68b22d363c0 100644
index 9522e646529f3d849471931b4b3c0d133e7fcfc5..91832d8ed048e3b78f156bcbe265955dd93b3c9a 100644
--- a/src/main/java/net/minecraft/world/level/block/Block.java
+++ b/src/main/java/net/minecraft/world/level/block/Block.java
@@ -434,7 +434,17 @@ public class Block extends BlockBehaviour implements ItemLike {
@@ -422,7 +422,17 @@ public class Block extends BlockBehaviour implements ItemLike {
Block.dropResources(state, world, pos, blockEntity, player, tool);
}
@@ -45,5 +45,5 @@ index 4f91e4832a94c3facbc711fcae4cb5ad540a5ca0..84f031ec0f196b90c78a6432f344e68b
+ }
+ // Purpur end
public boolean isPossibleToRespawnInThis() {
return !this.material.isSolid() && !this.material.isLiquid();
public boolean isPossibleToRespawnInThis(BlockState state) {
return !state.isSolid() && !state.liquid();

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Summoner API
diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java
index 41b4002ad5c81db05a62e9bc977d5ad5e8c5c190..ee6f351d9a1ca8f3ed4c3c0f414093025c5c8cb1 100644
index 396882908e819737f25d39c0a601f006448e7856..e07f0444e4917bf38448e6908ba1c3d3b7d5d413 100644
--- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java
+++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java
@@ -63,6 +63,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob {
@@ -60,6 +60,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob {
private int remainingPersistentAngerTime;
@Nullable
private UUID persistentAngerTarget;
@@ -16,11 +16,10 @@ index 41b4002ad5c81db05a62e9bc977d5ad5e8c5c190..ee6f351d9a1ca8f3ed4c3c0f41409302
public IronGolem(EntityType<? extends IronGolem> type, Level world) {
super(type, world);
@@ -94,6 +95,15 @@ public class IronGolem extends AbstractGolem implements NeutralMob {
public boolean isSensitiveToWater() {
@@ -76,6 +77,15 @@ public class IronGolem extends AbstractGolem implements NeutralMob {
return this.level.purpurConfig.ironGolemTakeDamageFromWater;
}
+
+ @Nullable
+ public UUID getSummoner() {
+ return summoner;
@@ -29,10 +28,11 @@ index 41b4002ad5c81db05a62e9bc977d5ad5e8c5c190..ee6f351d9a1ca8f3ed4c3c0f41409302
+ public void setSummoner(@Nullable UUID summoner) {
+ this.summoner = summoner;
+ }
// Purpur end
+
@Override
@@ -179,6 +189,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob {
protected void registerGoals() {
if (this.level().purpurConfig.ironGolemPoppyCalm) this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.ReceiveFlower(this)); // Purpur
@@ -150,6 +160,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob {
public void addAdditionalSaveData(CompoundTag nbt) {
super.addAdditionalSaveData(nbt);
nbt.putBoolean("PlayerCreated", this.isPlayerCreated());
@@ -40,16 +40,16 @@ index 41b4002ad5c81db05a62e9bc977d5ad5e8c5c190..ee6f351d9a1ca8f3ed4c3c0f41409302
this.addPersistentAngerSaveData(nbt);
}
@@ -186,6 +197,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob {
@@ -157,6 +168,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob {
public void readAdditionalSaveData(CompoundTag nbt) {
super.readAdditionalSaveData(nbt);
this.setPlayerCreated(nbt.getBoolean("PlayerCreated"));
+ if (nbt.contains("Purpur.Summoner")) setSummoner(nbt.getUUID("Purpur.Summoner")); // Purpur
this.readPersistentAngerSaveData(this.level, nbt);
this.readPersistentAngerSaveData(this.level(), nbt);
}
diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
index f0b9c2e06b836b9c3fe53cade4f0922fe2083083..659bded9afe97a73f1408b80769691a602c16174 100644
index e932db904ba8c22a4ab939a2e92e20e3200512c0..6dd2d09cc6432edfbebab37120b2bfd5084522fe 100644
--- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
+++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
@@ -49,6 +49,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
@@ -60,11 +60,10 @@ index f0b9c2e06b836b9c3fe53cade4f0922fe2083083..659bded9afe97a73f1408b80769691a6
public SnowGolem(EntityType<? extends SnowGolem> type, Level world) {
super(type, world);
@@ -74,6 +75,15 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
public void initAttributes() {
@@ -59,6 +60,15 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.snowGolemMaxHealth);
}
+
+ @Nullable
+ public java.util.UUID getSummoner() {
+ return summoner;
@@ -73,10 +72,11 @@ index f0b9c2e06b836b9c3fe53cade4f0922fe2083083..659bded9afe97a73f1408b80769691a6
+ public void setSummoner(@Nullable java.util.UUID summoner) {
+ this.summoner = summoner;
+ }
// Purpur end
+
@Override
@@ -103,6 +113,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
protected void registerGoals() {
this.goalSelector.addGoal(1, new RangedAttackGoal(this, level.purpurConfig.snowGolemAttackDistance, level.purpurConfig.snowGolemSnowBallMin, level.purpurConfig.snowGolemSnowBallMax, level.purpurConfig.snowGolemSnowBallModifier)); // Purpur
@@ -84,6 +94,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
public void addAdditionalSaveData(CompoundTag nbt) {
super.addAdditionalSaveData(nbt);
nbt.putBoolean("Pumpkin", this.hasPumpkin());
@@ -84,7 +84,7 @@ index f0b9c2e06b836b9c3fe53cade4f0922fe2083083..659bded9afe97a73f1408b80769691a6
}
@Override
@@ -111,6 +122,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
@@ -92,6 +103,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
if (nbt.contains("Pumpkin")) {
this.setPumpkin(nbt.getBoolean("Pumpkin"));
}
@@ -93,22 +93,21 @@ index f0b9c2e06b836b9c3fe53cade4f0922fe2083083..659bded9afe97a73f1408b80769691a6
}
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 c38c92a9967a50515f6d185d116578b6fc065f5e..eeab4bb9727be75a4167aeb8ed1c80a2a2145be9 100644
index e8685465837064e9caac86caab7824ba6113a4f6..954d9c5984a4bd8858b35a32cd2789cfb77cf923 100644
--- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
+++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
@@ -85,6 +85,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@@ -84,6 +84,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
return entityliving.getMobType() != MobType.UNDEAD && entityliving.attackable();
};
private static final TargetingConditions TARGETING_CONDITIONS = TargetingConditions.forCombat().range(20.0D).selector(WitherBoss.LIVING_ENTITY_SELECTOR);
private int shootCooldown = 0; // Purpur
+ @Nullable private java.util.UUID summoner; // Purpur
// Paper start
private boolean canPortal = false;
@@ -239,6 +240,15 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
public boolean isSensitiveToWater() {
@@ -108,6 +109,15 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
return this.level.purpurConfig.witherTakeDamageFromWater;
}
+
+ @Nullable
+ public java.util.UUID getSummoner() {
+ return summoner;
@@ -117,10 +116,11 @@ index c38c92a9967a50515f6d185d116578b6fc065f5e..eeab4bb9727be75a4167aeb8ed1c80a2
+ public void setSummoner(@Nullable java.util.UUID summoner) {
+ this.summoner = summoner;
+ }
// Purpur end
+
@Override
@@ -267,6 +277,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
protected PathNavigation createNavigation(Level world) {
FlyingPathNavigation navigationflying = new FlyingPathNavigation(this, world);
@@ -142,6 +152,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
public void addAdditionalSaveData(CompoundTag nbt) {
super.addAdditionalSaveData(nbt);
nbt.putInt("Invul", this.getInvulnerableTicks());
@@ -128,7 +128,7 @@ index c38c92a9967a50515f6d185d116578b6fc065f5e..eeab4bb9727be75a4167aeb8ed1c80a2
}
@Override
@@ -276,6 +287,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@@ -151,6 +162,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
if (this.hasCustomName()) {
this.bossEvent.setName(this.getDisplayName());
}
@@ -137,10 +137,10 @@ index c38c92a9967a50515f6d185d116578b6fc065f5e..eeab4bb9727be75a4167aeb8ed1c80a2
}
diff --git a/src/main/java/net/minecraft/world/level/block/CarvedPumpkinBlock.java b/src/main/java/net/minecraft/world/level/block/CarvedPumpkinBlock.java
index 05112bc416019daba885a3de1b7f96177665135f..32d7ae44dd4e4987b1085f08cb30a92937e57226 100644
index 23c487e295b3b736d8800f0c884324c9b18a5373..ebeb7caf7fd4f45714bab0856a48b847a544cce7 100644
--- a/src/main/java/net/minecraft/world/level/block/CarvedPumpkinBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/CarvedPumpkinBlock.java
@@ -69,7 +69,7 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock implements Eq
@@ -64,7 +64,7 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock {
SnowGolem entitysnowman = (SnowGolem) EntityType.SNOW_GOLEM.create(world);
if (entitysnowman != null) {
@@ -149,7 +149,7 @@ index 05112bc416019daba885a3de1b7f96177665135f..32d7ae44dd4e4987b1085f08cb30a929
}
} else {
BlockPattern.BlockPatternMatch shapedetector_shapedetectorcollection1 = this.getOrCreateIronGolemFull().find(world, pos);
@@ -79,7 +79,7 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock implements Eq
@@ -74,7 +74,7 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock {
if (entityirongolem != null) {
entityirongolem.setPlayerCreated(true);
@@ -158,7 +158,7 @@ index 05112bc416019daba885a3de1b7f96177665135f..32d7ae44dd4e4987b1085f08cb30a929
}
}
}
@@ -87,6 +87,16 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock implements Eq
@@ -82,6 +82,16 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock {
}
private static void spawnGolemInWorld(Level world, BlockPattern.BlockPatternMatch patternResult, Entity entity, BlockPos pos) {
@@ -176,10 +176,10 @@ index 05112bc416019daba885a3de1b7f96177665135f..32d7ae44dd4e4987b1085f08cb30a929
entity.moveTo((double) pos.getX() + 0.5D, (double) pos.getY() + 0.05D, (double) pos.getZ() + 0.5D, 0.0F, 0.0F);
// CraftBukkit start
diff --git a/src/main/java/net/minecraft/world/level/block/WitherSkullBlock.java b/src/main/java/net/minecraft/world/level/block/WitherSkullBlock.java
index b91effe91dad2e1aeea0ea31140f7432833b343f..bb628bd3fe8b185f356968697b17e1c4a442a6d2 100644
index 1aa0e921890d600c9274deb923da04e72b12bcc6..44bd7bee2665a05878fd2df935a700f02cd13a75 100644
--- a/src/main/java/net/minecraft/world/level/block/WitherSkullBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/WitherSkullBlock.java
@@ -71,6 +71,7 @@ public class WitherSkullBlock extends SkullBlock {
@@ -69,6 +69,7 @@ public class WitherSkullBlock extends SkullBlock {
entitywither.moveTo((double) blockposition1.getX() + 0.5D, (double) blockposition1.getY() + 0.55D, (double) blockposition1.getZ() + 0.5D, shapedetector_shapedetectorcollection.getForwards().getAxis() == Direction.Axis.X ? 0.0F : 90.0F, 0.0F);
entitywither.yBodyRot = shapedetector_shapedetectorcollection.getForwards().getAxis() == Direction.Axis.X ? 0.0F : 90.0F;
entitywither.makeInvulnerable();
@@ -232,7 +232,7 @@ index 42b7058d93fab8cbee49dba130734e1df9910096..5c6f55527cc0016f09b443528463b390
+ // Purpur end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java
index 1a21d30620f13a48976da5ead7edab201ea68b21..a50a04dc2009515032058562627eba8e4406c5bb 100644
index 1477c2c04d8f5c5639ce94808fe2a7029cedaeb2..e333c591582ac196f2cea1b69d39117092e80a3a 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java
@@ -105,4 +105,17 @@ public class CraftWither extends CraftMonster implements Wither, com.destroystok

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Customizable sleeping actionbar messages
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index da0ee556419074c8f1af6fd09e713a8898e0c8c4..a6bdef67b3bdc7b149c443fb1e4341f0379e0501 100644
index 1ddab634be51af2ad1c208e7ffc55f56e1bf298e..a215739d8b7b74e9c3578a7932185c57da465ec2 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -1043,11 +1043,27 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1087,11 +1087,27 @@ public class ServerLevel extends Level implements WorldGenLevel {
if (this.canSleepThroughNights()) {
if (!this.getServer().isSingleplayer() || this.getServer().isPublished()) {
int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE);
@@ -38,19 +38,19 @@ index da0ee556419074c8f1af6fd09e713a8898e0c8c4..a6bdef67b3bdc7b149c443fb1e4341f0
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 669174925e7dcca0e5a8b5c5d5feb241b58e8719..714acff3f53ef463d1de1d5f301b9a2f89711acc 100644
index ef87e69c95c892ed0a06341138d0ec644b9660f7..1cc985eac1b57fdcdb8f51788d4278c355bcda64 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -186,6 +186,8 @@ public class PurpurConfig {
@@ -185,6 +185,8 @@ public class PurpurConfig {
public static String dontRunWithScissors = "<red><italic>Don't run with scissors!";
public static String uptimeCommandOutput = "<green>Server uptime is <uptime>";
public static String unverifiedUsername = "default";
+ public static String sleepSkippingNight = "default";
+ public static String sleepingPlayersPercent = "default";
private static void messages() {
cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob);
afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway);
@@ -200,6 +202,8 @@ public class PurpurConfig {
afkBroadcastBack = getString("settings.messages.afk-broadcast-back", afkBroadcastBack);
@@ -198,6 +200,8 @@ public class PurpurConfig {
dontRunWithScissors = getString("settings.messages.dont-run-with-scissors", dontRunWithScissors);
uptimeCommandOutput = getString("settings.messages.uptime-command-output", uptimeCommandOutput);
unverifiedUsername = getString("settings.messages.unverified-username", unverifiedUsername);

View File

@@ -19,7 +19,7 @@ index ebee8de2ed831755b6fd154f6cc77ac993839bb9..ff236d3ad8838b14e5a20c70b2a2ce56
CompoundTag nbttagcompound = BlockItem.getBlockEntityData(itemstack);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 527a1c3205b2a284096ed308fe7947c4cdde2831..403420313834bd9f025a8f069291cfea71348804 100644
index c4ad31abb6dacb28f016c1414297d0c40d8aa206..fa09d871398ed8939df84835d109921a544038bd 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -223,6 +223,7 @@ public class PurpurWorldConfig {

View File

@@ -5,10 +5,10 @@ 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
index bedccb8717d08d5a60058445b04ddff149e7d36c..5293ffca3da94c9c485a87d1232b6a902fcafd6a 100644
index 4dae2a98070affd84bc4523a927dc9cbfe7379c6..51faa4cfda3d36f2e3bc7cbc47cacf57d3ca716e 100644
--- a/src/main/java/net/minecraft/world/level/block/BuddingAmethystBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/BuddingAmethystBlock.java
@@ -53,4 +53,14 @@ public class BuddingAmethystBlock extends AmethystBlock {
@@ -47,4 +47,14 @@ public class BuddingAmethystBlock extends AmethystBlock {
public static boolean canClusterGrowAtState(BlockState state) {
return state.isAir() || state.is(Blocks.WATER) && state.getFluidState().getAmount() == 8;
}
@@ -24,7 +24,7 @@ index bedccb8717d08d5a60058445b04ddff149e7d36c..5293ffca3da94c9c485a87d1232b6a90
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 55508e7df23be27a17e5ad320262ecd0b69ef11d..e2caaaa817fc458f500ca01af2e7061fe8f53088 100644
index fa09d871398ed8939df84835d109921a544038bd..4cbe9a9ce5a290323d3313eddd1125da5ce2d07a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -730,6 +730,11 @@ public class PurpurWorldConfig {
@@ -39,7 +39,7 @@ index 55508e7df23be27a17e5ad320262ecd0b69ef11d..e2caaaa817fc458f500ca01af2e7061f
public boolean chestOpenWithBlockOnTop = false;
private void chestSettings() {
chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop);
@@ -2769,3 +2774,4 @@ public class PurpurWorldConfig {
@@ -2271,3 +2276,4 @@ public class PurpurWorldConfig {
hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage);
}
}

View File

@@ -11,7 +11,7 @@ PARTIAL: big_dripleaf with PARTIAL tilt will change to FULL tilt after 10 ticks
UNSTABLE: big_dripleaf with FULL tilt will change back to no tilt after 100 ticks
diff --git a/src/main/java/net/minecraft/world/level/block/BigDripleafBlock.java b/src/main/java/net/minecraft/world/level/block/BigDripleafBlock.java
index 8537581e7ca1f4efb492a2e734f46f947f36cffa..5f89229ff68d923c5cdee40e72e379ba7024f961 100644
index 7455847cf8a05ed237d2df84ae2d9b1d2f2d7176..2960f5e35012665939c2d670d212aa4d6cb228db 100644
--- a/src/main/java/net/minecraft/world/level/block/BigDripleafBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/BigDripleafBlock.java
@@ -236,7 +236,7 @@ public class BigDripleafBlock extends HorizontalDirectionalBlock implements Bone
@@ -24,7 +24,7 @@ index 8537581e7ca1f4efb492a2e734f46f947f36cffa..5f89229ff68d923c5cdee40e72e379ba
if (i != -1) {
world.scheduleTick(blockposition, (Block) this, i);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index e2caaaa817fc458f500ca01af2e7061fe8f53088..332721c3917d73f9d60445bc0013595faf1eb35a 100644
index 4cbe9a9ce5a290323d3313eddd1125da5ce2d07a..5d4cf690acac49974668cc5bff1add8b34b84483 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -730,6 +730,22 @@ public class PurpurWorldConfig {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Player ridable in water option
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 4557ae0ab9387c99f4f416205e16a2ab92dbaab5..d548510ab31185d8c4978b86834a2684fff90570 100644
index 86007f7ed1e5c4e2e688e1f012468e4cf6dc0d2e..2675e574f2a528e88862d58355d4cd6cdbe8693a 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -2078,6 +2078,11 @@ public abstract class Player extends LivingEntity {
@@ -2091,6 +2091,11 @@ public abstract class Player extends LivingEntity {
return this.inventory.armor;
}
@@ -18,10 +18,10 @@ index 4557ae0ab9387c99f4f416205e16a2ab92dbaab5..d548510ab31185d8c4978b86834a2684
+ }
+
public boolean setEntityOnShoulder(CompoundTag entityNbt) {
if (!this.isPassenger() && this.onGround && !this.isInWater() && !this.isInPowderSnow) {
if (!this.isPassenger() && this.onGround() && !this.isInWater() && !this.isInPowderSnow) {
if (this.getShoulderEntityLeft().isEmpty()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 332721c3917d73f9d60445bc0013595faf1eb35a..52fbd22e5f19c38b3f53acd63c005644d411b0e6 100644
index 5d4cf690acac49974668cc5bff1add8b34b84483..a8e9e77cf8af44a3af8ec9f56c3f5340f0ea0f2b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -400,6 +400,7 @@ public class PurpurWorldConfig {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Config to disable Enderman teleport on projectile hit
diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
index bfde674f2e5f88cfe9a4c760a9f8eb9038eaef21..0cb3a52990eb17339fbd61e1649a277438a2f1a2 100644
index 9d84092a3e9712609e35e4fd0a2db2fc2ac385ad..6c0b28f64dbd44b5d014c617981e4e6458f58e7b 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
@@ -444,6 +444,7 @@ public class EnderMan extends Monster implements NeutralMob {
@@ -418,6 +418,7 @@ public class EnderMan extends Monster implements NeutralMob {
} else {
flag1 = flag && this.hurtWithCleanWater(source, (ThrownPotion) source.getDirectEntity(), amount);
@@ -17,22 +17,22 @@ index bfde674f2e5f88cfe9a4c760a9f8eb9038eaef21..0cb3a52990eb17339fbd61e1649a2774
for (int i = 0; i < 64; ++i) {
if (this.teleport()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 52fbd22e5f19c38b3f53acd63c005644d411b0e6..3523fed89e2f42ef3e92c91a5f12c9aa92e3d32d 100644
index a8e9e77cf8af44a3af8ec9f56c3f5340f0ea0f2b..0ae9a533915a0cb33eea2107dce64c2e880e30d4 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1352,6 +1352,7 @@ public class PurpurWorldConfig {
@@ -1227,6 +1227,7 @@ public class PurpurWorldConfig {
public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false;
public boolean endermanIgnorePlayerDragonHead = false;
public boolean endermanDisableStareAggro = false;
+ public boolean endermanIgnoreProjectiles = false;
private void endermanSettings() {
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
@@ -1374,6 +1375,7 @@ public class PurpurWorldConfig {
if (PurpurConfig.version < 10) {
double oldValue = getDouble("mobs.enderman.attributes.max-health", endermanMaxHealth);
@@ -1246,6 +1247,7 @@ public class PurpurWorldConfig {
endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned);
endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead);
endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro);
+ endermanIgnoreProjectiles = getBoolean("mobs.enderman.ignore-projectiles", endermanIgnoreProjectiles);
}
public boolean endermiteRidable = false;
public double endermiteMaxHealth = 8.0D;

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add compass command
diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
index 23e19bfbc41c5982a746ad0b5ba8c5834c2494a5..314ab6183e31b4bac6a40c1f8007d48e9cab1760 100644
index 7aae9e3c60ba15b8dcd8174a4d70866edebb6cca..5f6cc8b16af6dce3b74f0c2c662b0ecf84ae8d36 100644
--- a/src/main/java/net/minecraft/commands/Commands.java
+++ b/src/main/java/net/minecraft/commands/Commands.java
@@ -227,6 +227,7 @@ public class Commands {
@@ -229,6 +229,7 @@ public class Commands {
org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur
org.purpurmc.purpur.command.UptimeCommand.register(this.dispatcher); // Purpur
org.purpurmc.purpur.command.TPSBarCommand.register(this.dispatcher); // Purpur
@@ -17,7 +17,7 @@ index 23e19bfbc41c5982a746ad0b5ba8c5834c2494a5..314ab6183e31b4bac6a40c1f8007d48e
if (environment.includeIntegrated) {
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index d1f569a7813717552c20a0392b9bc9b2862ecc00..086c49137da6f29abbfd11a17f50128c106a42e7 100644
index 9f2c584db6fde84a65b661bb7f37988b803916e1..2e5d186ac2904e3214e2e037f1eb1d486dc4a4a2 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -280,6 +280,7 @@ public class ServerPlayer extends Player {
@@ -26,9 +26,9 @@ index d1f569a7813717552c20a0392b9bc9b2862ecc00..086c49137da6f29abbfd11a17f50128c
private boolean tpsBar = false; // Purpur
+ private boolean compassBar = false; // Purpur
public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile) {
super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile);
@@ -520,6 +521,7 @@ public class ServerPlayer extends Player {
private final java.util.concurrent.atomic.AtomicReference<io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances> viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1));
public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader;
@@ -561,6 +562,7 @@ public class ServerPlayer extends Player {
}
if (nbt.contains("Purpur.TPSBar")) { this.tpsBar = nbt.getBoolean("Purpur.TPSBar"); } // Purpur
@@ -36,7 +36,7 @@ index d1f569a7813717552c20a0392b9bc9b2862ecc00..086c49137da6f29abbfd11a17f50128c
}
@Override
@@ -587,6 +589,7 @@ public class ServerPlayer extends Player {
@@ -628,6 +630,7 @@ public class ServerPlayer extends Player {
this.getBukkitEntity().setExtraData(nbt); // CraftBukkit
nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur
@@ -44,7 +44,7 @@ index d1f569a7813717552c20a0392b9bc9b2862ecc00..086c49137da6f29abbfd11a17f50128c
}
// CraftBukkit start - World fallback code, either respawn location or global spawn
@@ -2716,5 +2719,13 @@ public class ServerPlayer extends Player {
@@ -2792,5 +2795,13 @@ public class ServerPlayer extends Player {
public void tpsBar(boolean tpsBar) {
this.tpsBar = tpsBar;
}
@@ -59,10 +59,10 @@ index d1f569a7813717552c20a0392b9bc9b2862ecc00..086c49137da6f29abbfd11a17f50128c
// Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 714acff3f53ef463d1de1d5f301b9a2f89711acc..351fc72f0d1450114285b0577e8d5e533ad62901 100644
index 1cc985eac1b57fdcdb8f51788d4278c355bcda64..eeec29480c853e67f7b01b76fd33485f2d390a14 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -253,6 +253,11 @@ public class PurpurConfig {
@@ -251,6 +251,11 @@ public class PurpurConfig {
public static String commandTPSBarTextColorMedium = "<gradient:#ffff55:#ffaa00><text></gradient>";
public static String commandTPSBarTextColorLow = "<gradient:#ff5555:#aa0000><text></gradient>";
public static int commandTPSBarTickInterval = 20;
@@ -74,7 +74,7 @@ index 714acff3f53ef463d1de1d5f301b9a2f89711acc..351fc72f0d1450114285b0577e8d5e53
public static boolean commandGamemodeRequiresPermission = false;
public static boolean hideHiddenPlayersFromEntitySelector = false;
public static String uptimeFormat = "<days><hours><minutes><seconds>";
@@ -275,6 +280,13 @@ public class PurpurConfig {
@@ -273,6 +278,13 @@ public class PurpurConfig {
commandTPSBarTextColorMedium = getString("settings.command.tpsbar.text-color.medium", commandTPSBarTextColorMedium);
commandTPSBarTextColorLow = getString("settings.command.tpsbar.text-color.low", commandTPSBarTextColorLow);
commandTPSBarTickInterval = getInt("settings.command.tpsbar.tick-interval", commandTPSBarTickInterval);
@@ -89,7 +89,7 @@ index 714acff3f53ef463d1de1d5f301b9a2f89711acc..351fc72f0d1450114285b0577e8d5e53
hideHiddenPlayersFromEntitySelector = getBoolean("settings.command.hide-hidden-players-from-entity-selector", hideHiddenPlayersFromEntitySelector);
uptimeFormat = getString("settings.command.uptime.format", uptimeFormat);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 3523fed89e2f42ef3e92c91a5f12c9aa92e3d32d..c346ebfa1df94dd523ef2a11778f42e0266e22c7 100644
index 0ae9a533915a0cb33eea2107dce64c2e880e30d4..a6afd320cf59b258d9f11157bd44c6dd5564d18b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -224,6 +224,7 @@ public class PurpurWorldConfig {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for kinetic damage
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index c6e08bdfe1123ce5080c2cd91320702dab6bf84c..db6ee0ef067c42dd7f3a69cc796e2dd2c8fc059d 100644
index 99be702786a9f5c98c16c468fd7743ab297d103f..97f8087ade872591f1d4ba0783b8ee38d5f614aa 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -2858,6 +2858,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -2874,6 +2874,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
if (f3 > 0.0F) {
this.playSound(this.getFallDamageSound((int) f3), 1.0F, 1.0F);
@@ -17,7 +17,7 @@ index c6e08bdfe1123ce5080c2cd91320702dab6bf84c..db6ee0ef067c42dd7f3a69cc796e2dd2
}
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index a066968f61c55c569a922137e5b837690f2f8ebd..fa417b9103c97d350d1fc74f7612ac7928641b75 100644
index a6afd320cf59b258d9f11157bd44c6dd5564d18b..1b2cdacc48361232691a1fb4caf46206b1bc2fd1 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -184,12 +184,14 @@ public class PurpurWorldConfig {

View File

@@ -18,7 +18,7 @@ index 7b45d6b9a005036ca5051d089a7be792eb87012f..8806c97ecc6bdd8a64c2d82bb2f58f46
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index fa417b9103c97d350d1fc74f7612ac7928641b75..79d08b70a28c407be3cbdea7a80c38651a068441 100644
index 1b2cdacc48361232691a1fb4caf46206b1bc2fd1..e35b5d1b8fccb308193dd19761b433d3d93a0e16 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -371,6 +371,11 @@ public class PurpurWorldConfig {

View File

@@ -5,32 +5,32 @@ Subject: [PATCH] Customizeable Zombie Villager curing times
diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
index 6e1caf05b5577fec82354b4c59e3f86b3c1c1dbc..a6d9354d8ddac808cc89c5fe70842fc2472ff6fa 100644
index 818fc0b9bc6bd95c46b5939f0a09c6e6f86b80e4..23a611d6ccd3c72e36a7bee3a2d751d4d135921f 100644
--- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
+++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
@@ -218,7 +218,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
@@ -201,7 +201,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
}
if (!this.level.isClientSide) {
if (!this.level().isClientSide) {
- this.startConverting(player.getUUID(), this.random.nextInt(2401) + 3600);
+ this.startConverting(player.getUUID(), this.random.nextInt(level.purpurConfig.zombieVillagerCuringTimeMax - level.purpurConfig.zombieVillagerCuringTimeMin + 1) + level.purpurConfig.zombieVillagerCuringTimeMin); // Purpur
}
return InteractionResult.SUCCESS;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 6758c34aea78d8633729c4269017605c8dbf2f7d..6bf505571f44af7d7bae7ee99f29dad81c6ff4ec 100644
index e35b5d1b8fccb308193dd19761b433d3d93a0e16..37ed6b40188c702db268b7751d9ca7cdab66a6b1 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -2753,6 +2753,8 @@ public class PurpurWorldConfig {
@@ -2264,6 +2264,8 @@ public class PurpurWorldConfig {
public double zombieVillagerJockeyChance = 0.05D;
public boolean zombieVillagerJockeyTryExistingChickens = true;
public boolean zombieVillagerTakeDamageFromWater = false;
+ public int zombieVillagerCuringTimeMin = 3600;
+ public int zombieVillagerCuringTimeMax = 6000;
private void zombieVillagerSettings() {
zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable);
zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater);
@@ -2768,6 +2770,8 @@ public class PurpurWorldConfig {
if (PurpurConfig.version < 10) {
double oldValue = getDouble("mobs.zombie_villager.attributes.max-health", zombieVillagerMaxHealth);
@@ -2276,6 +2278,8 @@ public class PurpurWorldConfig {
zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance);
zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens);
zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater);
@@ -38,4 +38,4 @@ index 6758c34aea78d8633729c4269017605c8dbf2f7d..6bf505571f44af7d7bae7ee99f29dad8
+ zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax);
}
public boolean zombifiedPiglinRidable = false;
public double zombifiedPiglinMaxHealth = 20.0D;

View File

@@ -5,31 +5,31 @@ Subject: [PATCH] Option for sponges to work on lava
diff --git a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java
index d96e3fbc0fd4275c29e7e6154ef66e9ed1a5d829..df04a571ebd3c04bc7b58c1ee5661a1f03c69d2f 100644
index 4bce895268542531598a01a1bccd8ac1ed703b7d..54c690ae384a6467a4bab992b642d0fed3025ff0 100644
--- a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java
@@ -73,7 +73,7 @@ public class SpongeBlock extends Block {
// CraftBukkit end
Material material = iblockdata.getMaterial();
@@ -116,7 +116,7 @@ public class SpongeBlock extends Block {
BlockState iblockdata = world.getBlockState(blockposition1);
FluidState fluid = world.getFluidState(blockposition1);
- if (fluid.is(FluidTags.WATER)) {
+ if (fluid.is(FluidTags.WATER) || (world.purpurConfig.spongeAbsorbsLava && fluid.is(FluidTags.LAVA))) { // Purpur
if (iblockdata.getBlock() instanceof BucketPickup && !((BucketPickup) iblockdata.getBlock()).pickupBlock(blockList, blockposition2, iblockdata).isEmpty()) { // CraftBukkit
++i;
if (j < world.purpurConfig.spongeAbsorptionRadius) { // Purpur
if (iblockdata.getBlock() instanceof BucketPickup && !((BucketPickup) iblockdata.getBlock()).pickupBlock(blockList, blockposition1, iblockdata).isEmpty()) {
// NOP
} else if (iblockdata.getBlock() instanceof LiquidBlock) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 6bf505571f44af7d7bae7ee99f29dad81c6ff4ec..18e06df80a74203c2dd38c4d616ab90e448ee5c3 100644
index 37ed6b40188c702db268b7751d9ca7cdab66a6b1..649b37f187d97b5fdec1db68b3c1cd4b7af04d3a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -941,9 +941,11 @@ public class PurpurWorldConfig {
public int spongeAbsorptionArea = 64;
public int spongeAbsorptionRadius = 6;
+ public boolean spongeAbsorbsLava = false;
private void spongeSettings() {
spongeAbsorptionArea = getInt("blocks.sponge.absorption.area", spongeAbsorptionArea);
spongeAbsorptionRadius = getInt("blocks.sponge.absorption.radius", spongeAbsorptionRadius);
+ spongeAbsorbsLava = getBoolean("blocks.sponge.absorbs-lava", spongeAbsorbsLava);
@@ -934,6 +934,11 @@ public class PurpurWorldConfig {
shulkerBoxAllowOversizedStacks = getBoolean("blocks.shulker_box.allow-oversized-stacks", shulkerBoxAllowOversizedStacks);
}
+ public boolean spongeAbsorbsLava = false;
+ private void spongeSettings() {
+ spongeAbsorbsLava = getBoolean("blocks.sponge.absorbs-lava", spongeAbsorbsLava);
+ }
+
public boolean turtleEggsBreakFromExpOrbs = true;
public boolean turtleEggsBreakFromItems = true;
public boolean turtleEggsBreakFromMinecarts = true;

View File

@@ -5,35 +5,35 @@ Subject: [PATCH] Toggle for Wither's spawn sound
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 eeab4bb9727be75a4167aeb8ed1c80a2a2145be9..b746f793228560275e2a50bd2342f20dabc78941 100644
index 954d9c5984a4bd8858b35a32cd2789cfb77cf923..f9d77c02cf474a9dee25178ea8d6852648d8193c 100644
--- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
+++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
@@ -429,7 +429,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@@ -299,7 +299,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
}
// CraftBukkit end
- if (!this.isSilent()) {
+ if (!this.isSilent() && level.purpurConfig.witherPlaySpawnSound) {
// CraftBukkit start - Use relative location for far away sounds
// this.world.globalLevelEvent(1023, new BlockPosition(this), 0);
int viewDistance = ((ServerLevel) this.level).getCraftServer().getViewDistance() * 16;
// this.level().globalLevelEvent(1023, new BlockPosition(this), 0);
int viewDistance = ((ServerLevel) this.level()).getCraftServer().getViewDistance() * 16;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 18e06df80a74203c2dd38c4d616ab90e448ee5c3..5f8df9955293042ce98f8cc453fa618a18d9be0f 100644
index 649b37f187d97b5fdec1db68b3c1cd4b7af04d3a..b8de470b993c9fffdaacf9da8ff2ae3103ca073e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -2598,6 +2598,7 @@ public class PurpurWorldConfig {
@@ -2147,6 +2147,7 @@ public class PurpurWorldConfig {
public boolean witherTakeDamageFromWater = false;
public boolean witherCanRideVehicles = false;
public float witherExplosionRadius = 1.0F;
+ public boolean witherPlaySpawnSound = true;
private void witherSettings() {
witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
@@ -2619,6 +2620,7 @@ public class PurpurWorldConfig {
if (PurpurConfig.version < 8) {
double oldValue = getDouble("mobs.wither.max-health", witherMaxHealth);
@@ -2164,6 +2165,7 @@ public class PurpurWorldConfig {
witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater);
witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles);
witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius);
+ witherPlaySpawnSound = getBoolean("mobs.wither.play-spawn-sound", witherPlaySpawnSound);
}
public boolean witherSkeletonRidable = false;
public double witherSkeletonMaxHealth = 20.0D;

View File

@@ -5,20 +5,20 @@ Subject: [PATCH] Cactus breaks from solid neighbors config
diff --git a/src/main/java/net/minecraft/world/level/block/CactusBlock.java b/src/main/java/net/minecraft/world/level/block/CactusBlock.java
index 7579946ce222b6ab3685a7fd9821bcd5a4babe33..2fffe4452d8f3fa5b9365dff1cfe5b5dab6bf2f8 100644
index 0003fb51ae3a6575575e10b4c86719f3061e2577..c2ca3432a47124d02e1aaf8ffb621f9a2c7d7a62 100644
--- a/src/main/java/net/minecraft/world/level/block/CactusBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/CactusBlock.java
@@ -109,7 +109,7 @@ public class CactusBlock extends Block {
BlockState iblockdata2 = world.getBlockState(pos.relative(enumdirection));
@@ -107,7 +107,7 @@ public class CactusBlock extends Block {
material = iblockdata2.getMaterial();
- } while (!material.isSolid() && !world.getFluidState(pos.relative(enumdirection)).is(FluidTags.LAVA));
+ } while ((!world.getWorldBorder().world.purpurConfig.cactusBreaksFromSolidNeighbors || !material.isSolid()) && !world.getFluidState(pos.relative(enumdirection)).is(FluidTags.LAVA)); // Purpur
enumdirection = (Direction) iterator.next();
iblockdata1 = world.getBlockState(pos.relative(enumdirection));
- } while (!iblockdata1.isSolid() && !world.getFluidState(pos.relative(enumdirection)).is(FluidTags.LAVA));
+ } while ((!world.getWorldBorder().world.purpurConfig.cactusBreaksFromSolidNeighbors || !iblockdata1.isSolid()) && !world.getFluidState(pos.relative(enumdirection)).is(FluidTags.LAVA)); // Purpur
return false;
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 5f8df9955293042ce98f8cc453fa618a18d9be0f..80ba5482192e449ea67408340d6bba349b97fb0a 100644
index b8de470b993c9fffdaacf9da8ff2ae3103ca073e..5e0f59b7fb808439c04f2737f251e3fde2c7d989 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -762,6 +762,11 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Config to remove curse of binding with weakness
diff --git a/src/main/java/net/minecraft/world/inventory/InventoryMenu.java b/src/main/java/net/minecraft/world/inventory/InventoryMenu.java
index da0f5c5e6ca7ce7b38792e6da52c5cdcdbae3b78..4136bcd49fe05d916ab65de0e866145185db4204 100644
index c549618421c5d077c3d977d8d2064eca2acc438a..3cf62a2343deb1096eba5f7fe7b26b66380b921f 100644
--- a/src/main/java/net/minecraft/world/inventory/InventoryMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/InventoryMenu.java
@@ -4,6 +4,7 @@ import com.mojang.datafixers.util.Pair;
@@ -26,7 +26,7 @@ index da0f5c5e6ca7ce7b38792e6da52c5cdcdbae3b78..4136bcd49fe05d916ab65de0e8661451
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 80ba5482192e449ea67408340d6bba349b97fb0a..449f48e8447b820edc53db4cdff56b2cc0af99c1 100644
index 5e0f59b7fb808439c04f2737f251e3fde2c7d989..95a11827af5af3c0c8fc7b66e03739bf6f811313 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -410,6 +410,7 @@ public class PurpurWorldConfig {

View File

@@ -77,10 +77,10 @@ index 963a596154091b79ca139af6274aa323518ad1ad..4dcac3899a500d8586580bcfd5b4516e
});
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 449f48e8447b820edc53db4cdff56b2cc0af99c1..9bed8e9875f270aeca4ef41ff15208a464a428a1 100644
index 95a11827af5af3c0c8fc7b66e03739bf6f811313..1117bd74f1a6a646590cc94d139976ea032288ee 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -2817,5 +2817,28 @@ public class PurpurWorldConfig {
@@ -2322,5 +2322,28 @@ public class PurpurWorldConfig {
private void hungerSettings() {
hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage);
}

View File

@@ -18,10 +18,10 @@ index 2f85b893dd0abc39fcedec65acc89e1567faf6f0..3ee012a9ef8cada0b2203e53b2f731f6
@Override
diff --git a/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java b/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java
index 6b909d41ccdf6c1ac3ac0c4e673ff52f0d14a238..b8f69063cec4d31c9d9525a04c46ed8904ceff76 100644
index e978132e51cde52f7ff1ba31ad521fc2cb4f0dce..60a95c42a333d68d9fd14539e0051c0851d96e3b 100644
--- a/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/PointedDripstoneBlock.java
@@ -188,7 +188,7 @@ public class PointedDripstoneBlock extends Block implements Fallable, SimpleWate
@@ -186,7 +186,7 @@ public class PointedDripstoneBlock extends Block implements Fallable, SimpleWate
@VisibleForTesting
public static void maybeTransferFluid(BlockState state, ServerLevel world, BlockPos pos, float dripChance) {
@@ -30,7 +30,7 @@ index 6b909d41ccdf6c1ac3ac0c4e673ff52f0d14a238..b8f69063cec4d31c9d9525a04c46ed89
if (PointedDripstoneBlock.isStalactiteStartPos(state, world, pos)) {
Optional<PointedDripstoneBlock.FluidInfo> optional = PointedDripstoneBlock.getFluidAboveStalactite(world, pos, state);
@@ -197,13 +197,13 @@ public class PointedDripstoneBlock extends Block implements Fallable, SimpleWate
@@ -195,13 +195,13 @@ public class PointedDripstoneBlock extends Block implements Fallable, SimpleWate
float f1;
if (fluidtype == Fluids.WATER) {
@@ -47,10 +47,10 @@ index 6b909d41ccdf6c1ac3ac0c4e673ff52f0d14a238..b8f69063cec4d31c9d9525a04c46ed89
if (dripChance < f1) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 9bed8e9875f270aeca4ef41ff15208a464a428a1..ed2b5652e814b035cef56b1e1fe2de63c5176521 100644
index 1117bd74f1a6a646590cc94d139976ea032288ee..fee7bbf351e9b4b294a3b381cd99b6cc2b6877f3 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -2840,5 +2840,16 @@ public class PurpurWorldConfig {
@@ -2345,5 +2345,16 @@ public class PurpurWorldConfig {
});
conduitBlocks = conduitBlockList.toArray(Block[]::new);
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Config to allow mobs to pathfind over rails
diff --git a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java
index 94a0fde36dda9404e5eb62d323c71dac1929a46b..17a7fab20b4174273354fdc2fc700b7f2d669a98 100644
index 3583fcf5284bc5883308876dbd9886664b391e28..0e6923e6d440e846b3db47c6b8357f7e0e85ad65 100644
--- a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java
+++ b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java
@@ -243,7 +243,7 @@ public class WalkNodeEvaluator extends NodeEvaluator {
@@ -241,7 +241,7 @@ public class WalkNodeEvaluator extends NodeEvaluator {
}
if (blockPathTypes != BlockPathTypes.WALKABLE && (!this.isAmphibious() || blockPathTypes != BlockPathTypes.WATER)) {
@@ -18,7 +18,7 @@ index 94a0fde36dda9404e5eb62d323c71dac1929a46b..17a7fab20b4174273354fdc2fc700b7f
if (node != null && (node.type == BlockPathTypes.OPEN || node.type == BlockPathTypes.WALKABLE) && this.mob.getBbWidth() < 1.0F) {
double g = (double)(x - direction.getStepX()) + 0.5D;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 7265366cf680f8587b49995705a3f5a1083c67fe..ec5adf9fafbfa451ba610f132c8dc249c7bf4812 100644
index fee7bbf351e9b4b294a3b381cd99b6cc2b6877f3..dd3d890dfc0546b1beec2d4196638f01d0f38a02 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -140,6 +140,7 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Shulker change color with dye
diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java
index a0d34af033130d88a19a078b628ea4fbce3d268e..8825407882bbfe1b92b4da384bc0f0a3d2853acf 100644
index 08d39b0660736be641ad22e3ceb08db7aabebf6a..e4925f6af4fd33ef7d008c7c00734c32684a1320 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java
@@ -22,6 +22,8 @@ import net.minecraft.tags.DamageTypeTags;
@@ -26,11 +26,10 @@ index a0d34af033130d88a19a078b628ea4fbce3d268e..8825407882bbfe1b92b4da384bc0f0a3
import net.minecraft.world.level.Level;
import net.minecraft.world.level.ServerLevelAccessor;
import net.minecraft.world.level.block.Blocks;
@@ -123,6 +127,19 @@ public class Shulker extends AbstractGolem implements VariantHolder<Optional<Dye
public boolean isSensitiveToWater() {
@@ -108,6 +112,19 @@ public class Shulker extends AbstractGolem implements VariantHolder<Optional<Dye
return this.level.purpurConfig.shulkerTakeDamageFromWater;
}
+
+ @Override
+ protected InteractionResult mobInteract(Player player, InteractionHand hand) {
+ ItemStack itemstack = player.getItemInHand(hand);
@@ -43,26 +42,27 @@ index a0d34af033130d88a19a078b628ea4fbce3d268e..8825407882bbfe1b92b4da384bc0f0a3
+ }
+ return super.mobInteract(player, hand);
+ }
// Purpur end
+
@Override
protected void registerGoals() {
this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 8.0F, 0.02F, true));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 260fec619fe389abac6a14c5190b2b9d7e6044af..d3a3f42e171d804cd4953cf1ca19a033759f8c61 100644
index dd3d890dfc0546b1beec2d4196638f01d0f38a02..c7627b7c24a5b8c7efb95f0f37ec504154311622 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -2160,6 +2160,7 @@ public class PurpurWorldConfig {
@@ -1840,6 +1840,7 @@ public class PurpurWorldConfig {
public double shulkerSpawnFromBulletNearbyRange = 8.0D;
public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0";
public boolean shulkerSpawnFromBulletRandomColor = false;
+ public boolean shulkerChangeColorWithDye = false;
private void shulkerSettings() {
shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable);
shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater);
@@ -2176,6 +2177,7 @@ public class PurpurWorldConfig {
if (PurpurConfig.version < 10) {
double oldValue = getDouble("mobs.shulker.attributes.max-health", shulkerMaxHealth);
@@ -1853,6 +1854,7 @@ public class PurpurWorldConfig {
shulkerSpawnFromBulletNearbyRange = getDouble("mobs.shulker.spawn-from-bullet.nearby-range", shulkerSpawnFromBulletNearbyRange);
shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation);
shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor);
+ shulkerChangeColorWithDye = getBoolean("mobs.shulker.change-color-with-dye", shulkerChangeColorWithDye);
}
public boolean silverfishRidable = false;
public double silverfishMaxHealth = 8.0D;

View File

@@ -223,10 +223,10 @@ index 714afc98b5150907b45a00060be4e41582333204..312a6d90c0a09570aef24c205dc2ff27
+ // Purpur end - OfflinePlayer API
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index a87fc2fa8399a4f117ef966f482c693747d6b08b..9b2f7d293669f0e9adcb8292e4a27a460321f5a0 100644
index d65147f864dc75475cbb893fdcc9b391538b7c3c..48a330e253d5db20dbc834cf0e802a6c114e97a0 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -2414,6 +2414,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -2387,6 +2387,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return this.getHandle().getAbilities().walkingSpeed * 2f;
}

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Added the ability to add combustible items
diff --git a/src/main/java/net/minecraft/world/inventory/AbstractFurnaceMenu.java b/src/main/java/net/minecraft/world/inventory/AbstractFurnaceMenu.java
index 8ae78ae54d87ea7789df754311fa0e8aade0ce91..35479019fb846573f4e2eb5902f3ebe898c4d61f 100644
index 35b41bceeba72c3896c91c2605bac3b0bf9c54e9..5c028f957661089ff502109c996692856b12ee27 100644
--- a/src/main/java/net/minecraft/world/inventory/AbstractFurnaceMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/AbstractFurnaceMenu.java
@@ -145,7 +145,13 @@ public abstract class AbstractFurnaceMenu extends RecipeBookMenu<Container> {
@@ -24,7 +24,7 @@ index 8ae78ae54d87ea7789df754311fa0e8aade0ce91..35479019fb846573f4e2eb5902f3ebe8
} else if (this.isFuel(itemstack1)) {
if (!this.moveItemStackTo(itemstack1, 1, 2, false)) {
diff --git a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
index 4ff472f454b60c3608286b7553926acf74069b73..5cd7b4e7065070bf9fcc34b621dba2ccba99a573 100644
index ca2052804ad829a1528a9c5a0a792275beead113..997d0fab71eacc6466ffe3bc8f6349e5813d6d49 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java
@@ -208,6 +208,22 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit
@@ -51,10 +51,10 @@ index 4ff472f454b60c3608286b7553926acf74069b73..5cd7b4e7065070bf9fcc34b621dba2cc
private int maxStack = MAX_STACK;
public List<HumanEntity> transaction = new java.util.ArrayList<HumanEntity>();
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index b2db5a0594a9749005c728c0f9ac32743cf303f3..6c6fe8b0a6cb00647aa2cc8ad4dd56c0ce87721c 100644
index 3f5ed031272c358f19e7ec3d7bf6d1a527d77f25..3ef465b4ff9f3a602f8c289e65e5a9548846cbcd 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1454,6 +1454,19 @@ public final class CraftServer implements Server {
@@ -1447,6 +1447,19 @@ public final class CraftServer implements Server {
return true;
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Option for if rain and thunder should stop on sleep
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 63deec6d22c18ca43c34b7f2dc961ce84a10bdaa..169eb774eea589cab7daec9fe5764a639ecd8ed4 100644
index a215739d8b7b74e9c3578a7932185c57da465ec2..f4895d28727dc9394dfa6e56e96294535a6671f1 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -1202,6 +1202,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1246,6 +1246,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
private void resetWeatherCycle() {
// CraftBukkit start
@@ -16,7 +16,7 @@ index 63deec6d22c18ca43c34b7f2dc961ce84a10bdaa..169eb774eea589cab7daec9fe5764a63
this.serverLevelData.setRaining(false, org.bukkit.event.weather.WeatherChangeEvent.Cause.SLEEP); // Paper - when passing the night
// If we stop due to everyone sleeping we should reset the weather duration to some other random value.
// Not that everyone ever manages to get the whole server to sleep at the same time....
@@ -1209,6 +1210,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1253,6 +1254,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.serverLevelData.setRainTime(0);
}
// CraftBukkit end
@@ -25,7 +25,7 @@ index 63deec6d22c18ca43c34b7f2dc961ce84a10bdaa..169eb774eea589cab7daec9fe5764a63
// CraftBukkit start
// If we stop due to everyone sleeping we should reset the weather duration to some other random value.
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 2c6e4905e691338de60d60cfe27fefce1854e102..2faddfef9b38d35cfcd6ffdb8a93b0c831f59bf2 100644
index c7627b7c24a5b8c7efb95f0f37ec504154311622..db0d5fce6b7d5266536be6dbbed30d4c752c34ca 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -141,6 +141,8 @@ public class PurpurWorldConfig {

View File

@@ -30,22 +30,22 @@ index 95b53450a807fccfa55b59852da52785b8cf3e3d..c69f1d23979a0759472d22760a18d986
}
diff --git a/src/main/java/net/minecraft/world/level/block/Blocks.java b/src/main/java/net/minecraft/world/level/block/Blocks.java
index 8584a65433555133cdcfc24a078fb0b53b9f83bc..4afc4670f9b00a4087410ec366fe45fe2f2734dc 100644
index 0453397c157c8c7968947445f41bc46b68b111e8..ed35878fdb9dffcd46c27d26ee8379401207cef5 100644
--- a/src/main/java/net/minecraft/world/level/block/Blocks.java
+++ b/src/main/java/net/minecraft/world/level/block/Blocks.java
@@ -1087,8 +1087,8 @@ public class Blocks {
public static final Block CAVE_VINES = register("cave_vines", new CaveVinesBlock(BlockBehaviour.Properties.of(Material.PLANT).randomTicks().noCollission().lightLevel(CaveVines.emission(14)).instabreak().sound(SoundType.CAVE_VINES)));
public static final Block CAVE_VINES_PLANT = register("cave_vines_plant", new CaveVinesPlantBlock(BlockBehaviour.Properties.of(Material.PLANT).noCollission().lightLevel(CaveVines.emission(14)).instabreak().sound(SoundType.CAVE_VINES)));
public static final Block SPORE_BLOSSOM = register("spore_blossom", new SporeBlossomBlock(BlockBehaviour.Properties.of(Material.PLANT).instabreak().noCollission().sound(SoundType.SPORE_BLOSSOM)));
- public static final Block AZALEA = register("azalea", new AzaleaBlock(BlockBehaviour.Properties.of(Material.PLANT).instabreak().sound(SoundType.AZALEA).noOcclusion()));
- public static final Block FLOWERING_AZALEA = register("flowering_azalea", new AzaleaBlock(BlockBehaviour.Properties.of(Material.PLANT).instabreak().sound(SoundType.FLOWERING_AZALEA).noOcclusion()));
+ public static final Block AZALEA = register("azalea", new AzaleaBlock(BlockBehaviour.Properties.of(Material.PLANT).randomTicks().instabreak().sound(SoundType.AZALEA).noOcclusion())); // Purpur
+ public static final Block FLOWERING_AZALEA = register("flowering_azalea", new AzaleaBlock(BlockBehaviour.Properties.of(Material.PLANT).randomTicks().instabreak().sound(SoundType.FLOWERING_AZALEA).noOcclusion())); // Purpur
public static final Block MOSS_CARPET = register("moss_carpet", new CarpetBlock(BlockBehaviour.Properties.of(Material.PLANT, MaterialColor.COLOR_GREEN).strength(0.1F).sound(SoundType.MOSS_CARPET)));
public static final Block PINK_PETALS = register("pink_petals", new PinkPetalsBlock(BlockBehaviour.Properties.of(Material.PLANT).noCollission().sound(SoundType.PINK_PETALS).requiredFeatures(FeatureFlags.UPDATE_1_20)));
public static final Block MOSS_BLOCK = register("moss_block", new MossBlock(BlockBehaviour.Properties.of(Material.MOSS, MaterialColor.COLOR_GREEN).strength(0.1F).sound(SoundType.MOSS)));
@@ -1093,8 +1093,8 @@ public class Blocks {
public static final Block CAVE_VINES = register("cave_vines", new CaveVinesBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).randomTicks().noCollission().lightLevel(CaveVines.emission(14)).instabreak().sound(SoundType.CAVE_VINES).pushReaction(PushReaction.DESTROY)));
public static final Block CAVE_VINES_PLANT = register("cave_vines_plant", new CaveVinesPlantBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).noCollission().lightLevel(CaveVines.emission(14)).instabreak().sound(SoundType.CAVE_VINES).pushReaction(PushReaction.DESTROY)));
public static final Block SPORE_BLOSSOM = register("spore_blossom", new SporeBlossomBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).instabreak().noCollission().sound(SoundType.SPORE_BLOSSOM).pushReaction(PushReaction.DESTROY)));
- public static final Block AZALEA = register("azalea", new AzaleaBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).forceSolidOff().instabreak().sound(SoundType.AZALEA).noOcclusion().pushReaction(PushReaction.DESTROY)));
- public static final Block FLOWERING_AZALEA = register("flowering_azalea", new AzaleaBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).forceSolidOff().instabreak().sound(SoundType.FLOWERING_AZALEA).noOcclusion().pushReaction(PushReaction.DESTROY)));
+ public static final Block AZALEA = register("azalea", new AzaleaBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).forceSolidOff().randomTicks().instabreak().sound(SoundType.AZALEA).noOcclusion().pushReaction(PushReaction.DESTROY))); // Purpur
+ public static final Block FLOWERING_AZALEA = register("flowering_azalea", new AzaleaBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).forceSolidOff().randomTicks().instabreak().sound(SoundType.FLOWERING_AZALEA).noOcclusion().pushReaction(PushReaction.DESTROY))); // Purpur
public static final Block MOSS_CARPET = register("moss_carpet", new CarpetBlock(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_GREEN).strength(0.1F).sound(SoundType.MOSS_CARPET).pushReaction(PushReaction.DESTROY)));
public static final Block PINK_PETALS = register("pink_petals", new PinkPetalsBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).noCollission().sound(SoundType.PINK_PETALS).pushReaction(PushReaction.DESTROY)));
public static final Block MOSS_BLOCK = register("moss_block", new MossBlock(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_GREEN).strength(0.1F).sound(SoundType.MOSS).pushReaction(PushReaction.DESTROY)));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 6edbc74030c264a042e1ae0a10059453cb42c009..2fb231490abb495e6fe8247d3eba4c7767efdc68 100644
index db0d5fce6b7d5266536be6dbbed30d4c752c34ca..fe22503b69dda17af116ef98a8e610b0777b1000 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -717,6 +717,11 @@ public class PurpurWorldConfig {

View File

@@ -5,10 +5,10 @@ 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
index 6b186a49957e97a60bb245912211d58eb7b84c0d..75f29f6dddf50ccf7ef43ecfa602ccade3c9004d 100644
index 1249a776b4b2d97fc51aecddeda8151fa0646dc1..ad46dd38caccfe7d87f26bd51a7864a4b6d7c4ee 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
@@ -517,6 +517,7 @@ public class ServerPlayerGameMode {
@@ -516,6 +516,7 @@ public class ServerPlayerGameMode {
public InteractionHand interactHand;
public ItemStack interactItemStack;
public InteractionResult useItemOn(ServerPlayer player, Level world, ItemStack stack, InteractionHand hand, BlockHitResult hitResult) {
@@ -16,7 +16,7 @@ index 6b186a49957e97a60bb245912211d58eb7b84c0d..75f29f6dddf50ccf7ef43ecfa602ccad
BlockPos blockposition = hitResult.getBlockPos();
BlockState iblockdata = world.getBlockState(blockposition);
InteractionResult enuminteractionresult = InteractionResult.PASS;
@@ -613,4 +614,18 @@ public class ServerPlayerGameMode {
@@ -612,4 +613,18 @@ public class ServerPlayerGameMode {
public void setLevel(ServerLevel world) {
this.level = world;
}
@@ -36,10 +36,10 @@ index 6b186a49957e97a60bb245912211d58eb7b84c0d..75f29f6dddf50ccf7ef43ecfa602ccad
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 4345b10d2aad2d82155fe50f31139917e9e0d315..d65e562202557019bc941552b15476c99d6fd3ba 100644
index 8f08fec1b0c2f244ab155725f5dcb2ef90018843..8e90ee2ee59395533dc8803ded3f06c694a02e4f 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2087,6 +2087,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@@ -2084,6 +2084,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
boolean cancelled;
if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) {
@@ -48,7 +48,7 @@ index 4345b10d2aad2d82155fe50f31139917e9e0d315..d65e562202557019bc941552b15476c9
cancelled = event.useItemInHand() == Event.Result.DENY;
} else {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 2fb231490abb495e6fe8247d3eba4c7767efdc68..bb18991cf6f987fe156a712dc3523d5b076e77bc 100644
index fe22503b69dda17af116ef98a8e610b0777b1000..6b17119250b267eec89e71d47b173379d4721a46 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -417,6 +417,7 @@ public class PurpurWorldConfig {

View File

@@ -5,18 +5,18 @@ Subject: [PATCH] Dolphins naturally aggressive to players chance
diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
index f8d3a5d2dc254501c7e4405444ed4439f9af915e..c038a23c4e19c5bf160792cf599acc8f66a7d571 100644
index c02a84fc12780b8f02722539b31ace840ae4bc1d..e8f77e81cd8e6ea29b79f7a4399fb9cc2bb89c16 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
@@ -79,6 +79,7 @@ public class Dolphin extends WaterAnimal {
@@ -78,6 +78,7 @@ public class Dolphin extends WaterAnimal {
public static final Predicate<ItemEntity> ALLOWED_ITEMS = (entityitem) -> {
return !entityitem.hasPickUpDelay() && entityitem.isAlive() && entityitem.isInWater();
};
private int spitCooldown; // Purpur
+ private boolean isNaturallyAggressiveToPlayers; // Purpur
public Dolphin(EntityType<? extends Dolphin> type, Level world) {
super(type, world);
@@ -169,6 +170,7 @@ public class Dolphin extends WaterAnimal {
@@ -101,6 +102,7 @@ public class Dolphin extends WaterAnimal {
public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) {
this.setAirSupply(this.getMaxAirSupply());
this.setXRot(0.0F);
@@ -24,10 +24,10 @@ index f8d3a5d2dc254501c7e4405444ed4439f9af915e..c038a23c4e19c5bf160792cf599acc8f
return super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt);
}
@@ -239,18 +241,20 @@ public class Dolphin extends WaterAnimal {
@@ -170,17 +172,19 @@ public class Dolphin extends WaterAnimal {
protected void registerGoals() {
this.goalSelector.addGoal(0, new BreathAirGoal(this));
this.goalSelector.addGoal(0, new TryFindWaterGoal(this));
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
+ this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.2000000476837158D, true)); // Purpur
this.goalSelector.addGoal(1, new Dolphin.DolphinSwimToTreasureGoal(this));
this.goalSelector.addGoal(2, new Dolphin.DolphinSwimWithPlayerGoal(this, 4.0D));
@@ -40,29 +40,28 @@ index f8d3a5d2dc254501c7e4405444ed4439f9af915e..c038a23c4e19c5bf160792cf599acc8f
this.goalSelector.addGoal(8, new Dolphin.PlayWithItemsGoal());
this.goalSelector.addGoal(8, new FollowBoatGoal(this));
this.goalSelector.addGoal(9, new AvoidEntityGoal<>(this, Guardian.class, 8.0F, 1.0D, 1.0D));
this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{Guardian.class})).setAlertOthers());
+ this.targetSelector.addGoal(2, new net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, target -> isNaturallyAggressiveToPlayers)); // Purpur
}
public static AttributeSupplier.Builder createAttributes() {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index bb18991cf6f987fe156a712dc3523d5b076e77bc..0815363cb21f5669d4a755d6a6549cc17e93a9f0 100644
index 6b17119250b267eec89e71d47b173379d4721a46..3c8aec13b843df1dc8adb3bb7f8e84bc26acc453 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1258,6 +1258,7 @@ public class PurpurWorldConfig {
@@ -1164,6 +1164,7 @@ public class PurpurWorldConfig {
public double dolphinMaxHealth = 10.0D;
public boolean dolphinDisableTreasureSearching = false;
public boolean dolphinTakeDamageFromWater = false;
+ public double dolphinNaturallyAggressiveToPlayersChance = 0.0D;
private void dolphinSettings() {
dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable);
dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable);
@@ -1272,6 +1273,7 @@ public class PurpurWorldConfig {
if (PurpurConfig.version < 10) {
double oldValue = getDouble("mobs.dolphin.attributes.max-health", dolphinMaxHealth);
@@ -1173,6 +1174,7 @@ public class PurpurWorldConfig {
dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth);
dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching);
dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater);
+ dolphinNaturallyAggressiveToPlayersChance = getDouble("mobs.dolphin.naturally-aggressive-to-players-chance", dolphinNaturallyAggressiveToPlayersChance);
}
public boolean donkeyRidableInWater = false;
public double donkeyMaxHealthMin = 15.0D;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Cows naturally aggressive to players chance
diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java
index d1966126950d086649c1e3c7cd140669c36d7e76..f6dc68ddea67e9573d2420c8f852b0920a64b1a3 100644
index 385bf94f85471c9461c83df2fff48c1e1115e5f7..58a223e36fb964d546e512d3c102fe5577e5652d 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Cow.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java
@@ -38,6 +38,7 @@ import org.bukkit.craftbukkit.inventory.CraftItemStack;
@@ -16,7 +16,7 @@ index d1966126950d086649c1e3c7cd140669c36d7e76..f6dc68ddea67e9573d2420c8f852b092
public Cow(EntityType<? extends Cow> type, Level world) {
super(type, world);
@@ -62,6 +63,7 @@ public class Cow extends Animal {
@@ -46,6 +47,7 @@ public class Cow extends Animal {
@Override
public void initAttributes() {
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.cowMaxHealth);
@@ -24,28 +24,25 @@ index d1966126950d086649c1e3c7cd140669c36d7e76..f6dc68ddea67e9573d2420c8f852b092
}
@Override
@@ -73,6 +75,12 @@ public class Cow extends Animal {
public boolean isSensitiveToWater() {
@@ -58,10 +60,17 @@ public class Cow extends Animal {
return this.level.purpurConfig.cowTakeDamageFromWater;
}
+
+ @Override
+ public net.minecraft.world.entity.SpawnGroupData finalizeSpawn(net.minecraft.world.level.ServerLevelAccessor world, net.minecraft.world.DifficultyInstance difficulty, net.minecraft.world.entity.MobSpawnType spawnReason, net.minecraft.world.entity.SpawnGroupData entityData, net.minecraft.nbt.CompoundTag entityNbt) {
+ this.isNaturallyAggressiveToPlayers = world.getLevel().purpurConfig.cowNaturallyAggressiveToPlayersChance > 0.0D && random.nextDouble() <= world.getLevel().purpurConfig.cowNaturallyAggressiveToPlayersChance;
+ return super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt);
+ }
// Purpur end
+
@Override
@@ -80,6 +88,7 @@ public class Cow extends Animal {
protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this));
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
this.goalSelector.addGoal(1, new PanicGoal(this, 2.0D));
+ this.goalSelector.addGoal(1, new net.minecraft.world.entity.ai.goal.MeleeAttackGoal(this, 1.2000000476837158D, true)); // Purpur
this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D));
if (level.purpurConfig.cowFeedMushrooms > 0) this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT, Blocks.RED_MUSHROOM.asItem(), Blocks.BROWN_MUSHROOM.asItem()), false)); else // Purpur
this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT), false));
@@ -87,10 +96,11 @@ public class Cow extends Animal {
@@ -69,10 +78,11 @@ public class Cow extends Animal {
this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 1.0D));
this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F));
this.goalSelector.addGoal(7, new RandomLookAroundGoal(this));
@@ -59,25 +56,27 @@ index d1966126950d086649c1e3c7cd140669c36d7e76..f6dc68ddea67e9573d2420c8f852b092
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 0815363cb21f5669d4a755d6a6549cc17e93a9f0..fc9398cfa1fc4a48530714062d59d7ae92b08e2c 100644
index 3c8aec13b843df1dc8adb3bb7f8e84bc26acc453..08ffcfb46b52068443f591c07e04d0d0c2abe61d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1207,7 +1207,14 @@ public class PurpurWorldConfig {
@@ -1127,16 +1127,25 @@ public class PurpurWorldConfig {
public int cowFeedMushrooms = 0;
public int cowBreedingTicks = 6000;
public boolean cowTakeDamageFromWater = false;
+ public double cowNaturallyAggressiveToPlayersChance = 0.0D;
+ public double cowNaturallyAggressiveToPlayersDamage = 2.0D;
private void cowSettings() {
if (PurpurConfig.version < 10) {
double oldValue = getDouble("mobs.cow.attributes.max-health", cowMaxHealth);
set("mobs.cow.attributes.max-health", null);
set("mobs.cow.attributes.max_health", oldValue);
}
+ if (PurpurConfig.version < 22) {
+ double oldValue = getDouble("mobs.cow.naturally-aggressive-to-players-chance", cowNaturallyAggressiveToPlayersChance);
+ set("mobs.cow.naturally-aggressive-to-players-chance", null);
+ set("mobs.cow.naturally-aggressive-to-players.chance", oldValue);
+ }
cowRidable = getBoolean("mobs.cow.ridable", cowRidable);
cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater);
cowControllable = getBoolean("mobs.cow.controllable", cowControllable);
@@ -1220,6 +1227,8 @@ public class PurpurWorldConfig {
cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth);
cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms);
cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks);
cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater);
@@ -85,4 +84,4 @@ index 0815363cb21f5669d4a755d6a6549cc17e93a9f0..fc9398cfa1fc4a48530714062d59d7ae
+ cowNaturallyAggressiveToPlayersDamage = getDouble("mobs.cow.naturally-aggressive-to-players.damage", cowNaturallyAggressiveToPlayersDamage);
}
public boolean creeperRidable = false;
public double creeperMaxHealth = 20.0D;

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Option for beds to explode on villager sleep
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
index 401d0885852edbb30b12cfb58c86479d722143ff..2e759f0b3766377c65608deb3d1859c7924159f5 100644
index 98f67161f173f513c5794ffb5cb6350c7f1a1e23..718ee5c391a287f2dcac98744c646b1c68bd0f3c 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -1103,6 +1103,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -1075,6 +1075,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@Override
public void startSleeping(BlockPos pos) {
@@ -19,10 +19,10 @@ index 401d0885852edbb30b12cfb58c86479d722143ff..2e759f0b3766377c65608deb3d1859c7
+ }
+ // Purpur end
super.startSleeping(pos);
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);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index fc9398cfa1fc4a48530714062d59d7ae92b08e2c..69484ea2a23f80e694d75b26bb316a47b30765ba 100644
index 08ffcfb46b52068443f591c07e04d0d0c2abe61d..de76eee0a82bc7c77fc74ea38dffb8c8966d9034 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -736,6 +736,7 @@ public class PurpurWorldConfig {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Halloween options and optimizations
diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
index 01a407d9bdf3c3bc5a85054529d696044be53377..fe6fba48082d3cf54d4350f836a03cac83e1a45c 100644
index b29d4dc2f531cb9e8ba11e49c636df41b27c6bd2..65628c2eb3117bd816b772bfe49b65d2c1bd1e75 100644
--- a/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 {
@@ -258,7 +258,7 @@ public class Bat extends AmbientCreature {
int i = world.getMaxLocalRawBrightness(pos);
byte b0 = 4;
@@ -17,21 +17,21 @@ index 01a407d9bdf3c3bc5a85054529d696044be53377..fe6fba48082d3cf54d4350f836a03cac
b0 = 7;
} else if (random.nextBoolean()) {
return false;
@@ -328,6 +328,7 @@ public class Bat extends AmbientCreature {
private static boolean isSpookySeason = false;
private static final int ONE_HOUR = 20 * 60 * 60;
private static int lastSpookyCheck = -ONE_HOUR;
@@ -268,6 +268,7 @@ public class Bat extends AmbientCreature {
}
}
+ public static boolean isHalloweenSeason(Level level) { return level.purpurConfig.forceHalloweenSeason || isHalloween(); } // Purpur
private static boolean isHalloween() {
if (net.minecraft.server.MinecraftServer.currentTick - lastSpookyCheck > ONE_HOUR) {
LocalDate localdate = LocalDate.now();
int i = localdate.get(ChronoField.DAY_OF_MONTH);
diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
index ea897da752c96c58d137af56544e9bf50135c6ec..32a303f9ac9768daf621e3aa561cd6b31e5f5dff 100644
index af73945e4fc9cae081be90fa68fe73c9bde9b5bf..5ce17aec68ef65436599fde0e8d8d8c31c8a246a 100644
--- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
+++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
@@ -143,11 +143,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
@@ -141,11 +141,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
this.reassessWeaponGoal();
this.setCanPickUpLoot(this.level.paperConfig().entities.behavior.mobsCanAlwaysPickUpLoot.skeletons || randomsource.nextFloat() < 0.55F * difficulty.getSpecialMultiplier()); // Paper
this.setCanPickUpLoot(this.level().paperConfig().entities.behavior.mobsCanAlwaysPickUpLoot.skeletons || randomsource.nextFloat() < 0.55F * difficulty.getSpecialMultiplier()); // Paper
if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) {
- LocalDate localdate = LocalDate.now();
- int i = localdate.get(ChronoField.DAY_OF_MONTH);
@@ -43,10 +43,10 @@ index ea897da752c96c58d137af56544e9bf50135c6ec..32a303f9ac9768daf621e3aa561cd6b3
this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F;
}
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
index 114093185454a428e0ef9f0877ea4efd9532c2f8..d2ab6c240bc45f1c19ade78a7c0509306a31b1bd 100644
index c09cbdf9df9db13cb038e376ab10c5b53c74a6f8..98591d2b5578439230f3291046381c179f9cf5dd 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
@@ -593,11 +593,7 @@ public class Zombie extends Monster {
@@ -574,11 +574,7 @@ public class Zombie extends Monster {
}
if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) {
@@ -60,20 +60,24 @@ index 114093185454a428e0ef9f0877ea4efd9532c2f8..d2ab6c240bc45f1c19ade78a7c050930
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
index 69484ea2a23f80e694d75b26bb316a47b30765ba..3fa36ab54543be869b3979865c6c38a2392c98db 100644
index de76eee0a82bc7c77fc74ea38dffb8c8966d9034..6e6a48b69a560de73881af6f93f1726691c82656 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1600,6 +1600,13 @@ public class PurpurWorldConfig {
guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater);
}
@@ -143,6 +143,8 @@ public class PurpurWorldConfig {
public boolean mobsIgnoreRails = false;
public boolean rainStopsAfterSleep = true;
public boolean thunderStopsAfterSleep = true;
+ public boolean forceHalloweenSeason = false;
+ public float chanceHeadHalloweenOnEntity = 0.25F;
+ private void halloweenSetting() {
private void miscGameplayMechanicsSettings() {
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative);
@@ -167,6 +169,8 @@ public class PurpurWorldConfig {
mobsIgnoreRails = getBoolean("gameplay-mechanics.mobs-ignore-rails", mobsIgnoreRails);
rainStopsAfterSleep = getBoolean("gameplay-mechanics.rain-stops-after-sleep", rainStopsAfterSleep);
thunderStopsAfterSleep = getBoolean("gameplay-mechanics.thunder-stops-after-sleep", thunderStopsAfterSleep);
+ forceHalloweenSeason = getBoolean("gameplay-mechanics.halloween.force", forceHalloweenSeason);
+ chanceHeadHalloweenOnEntity = (float) getDouble("gameplay-mechanics.halloween.head-chance", chanceHeadHalloweenOnEntity);
+ }
+
public boolean hoglinRidable = false;
public boolean hoglinRidableInWater = true;
public boolean hoglinControllable = true;
}
public int daytimeTicks = 12000;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Config for grindstones
diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java
index 89838076f3231ff4318ebb2718c9406399b4e4f5..155f601ce39b109fa04b4de176dec8e2a4417c8b 100644
index b56766ff0e61691294b40ea8c2370940c0e8b640..6860e3467bf785e9d017fc98fce1e3cf71f9b6ee 100644
--- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java
@@ -130,7 +130,7 @@ public class GrindstoneMenu extends AbstractContainerMenu {
@@ -26,16 +26,16 @@ index 89838076f3231ff4318ebb2718c9406399b4e4f5..155f601ce39b109fa04b4de176dec8e2
itemstack2.enchant(enchantment, (Integer) entry.getValue());
}
}
@@ -251,7 +251,7 @@ public class GrindstoneMenu extends AbstractContainerMenu {
@@ -250,7 +250,7 @@ public class GrindstoneMenu extends AbstractContainerMenu {
}
itemstack1.setCount(amount);
Map<Enchantment, Integer> map = (Map) EnchantmentHelper.getEnchantments(item).entrySet().stream().filter((entry) -> {
- return ((Enchantment) entry.getKey()).isCurse();
+ return org.purpurmc.purpur.PurpurConfig.grindstoneIgnoredEnchants.contains((Enchantment) entry.getKey()); // Purpur
}).collect(Collectors.toMap(Entry::getKey, Entry::getValue));
EnchantmentHelper.setEnchantments(map, itemstack1);
@@ -267,6 +267,20 @@ public class GrindstoneMenu extends AbstractContainerMenu {
@@ -266,6 +266,20 @@ public class GrindstoneMenu extends AbstractContainerMenu {
itemstack1.setRepairCost(AnvilMenu.calculateIncreasedRepairCost(itemstack1.getBaseRepairCost()));
}
@@ -57,10 +57,10 @@ index 89838076f3231ff4318ebb2718c9406399b4e4f5..155f601ce39b109fa04b4de176dec8e2
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 351fc72f0d1450114285b0577e8d5e533ad62901..ec519c0e6388eac27f9eb6fcd85713763206d71e 100644
index eeec29480c853e67f7b01b76fd33485f2d390a14..7d9422b06ba79dbc268d451d3753150366e0877e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -307,6 +307,9 @@ public class PurpurConfig {
@@ -305,6 +305,9 @@ public class PurpurConfig {
public static int beeInsideBeeHive = 3;
public static boolean anvilCumulativeCost = true;
public static int lightningRodRange = 128;
@@ -70,7 +70,7 @@ index 351fc72f0d1450114285b0577e8d5e533ad62901..ec519c0e6388eac27f9eb6fcd8571376
private static void blockSettings() {
if (version < 3) {
boolean oldValue = getBoolean("settings.barrel.packed-barrels", true);
@@ -341,6 +344,19 @@ public class PurpurConfig {
@@ -339,6 +342,19 @@ public class PurpurConfig {
beeInsideBeeHive = getInt("settings.blocks.beehive.max-bees-inside", beeInsideBeeHive);
anvilCumulativeCost = getBoolean("settings.blocks.anvil.cumulative-cost", anvilCumulativeCost);
lightningRodRange = getInt("settings.blocks.lightning_rod.range", lightningRodRange);

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] UPnP Port Forwarding
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 83cfdbd54d5eb9fb614ab0828b052735868d98b9..ac616adc23ef5a404858e341ef01a4d5141d093e 100644
index 394ba413834eec0449a8b7d989b3541b04298cf0..a29b5e39407699f1052c16caa17dde7f35ae65d3 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -311,6 +311,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -16,7 +16,7 @@ index 83cfdbd54d5eb9fb614ab0828b052735868d98b9..ac616adc23ef5a404858e341ef01a4d5
public volatile Thread shutdownThread; // Paper
public volatile boolean abnormalExit = false; // Paper
@@ -946,6 +947,14 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -942,6 +943,14 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
MinecraftServer.LOGGER.info("Stopping server");
Commands.COMMAND_SENDING_POOL.shutdownNow(); // Paper - Shutdown and don't bother finishing
MinecraftTimings.stopServer(); // Paper
@@ -32,10 +32,10 @@ index 83cfdbd54d5eb9fb614ab0828b052735868d98b9..ac616adc23ef5a404858e341ef01a4d5
if (this.server != null) {
this.server.disablePlugins();
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index e0b2819d6c73a9ca1fa60ff71d29e201360370a8..283b05dccb828f3e19739c0434ad6b31ac911397 100644
index c2b243240efacac250cb8440d215884756b66283..cd663643c38e787b06e7bc9cf74d9f78431ca988 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -278,6 +278,30 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -276,6 +276,30 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
DedicatedServer.LOGGER.warn("Perhaps a server is already running on that port?");
return false;
}
@@ -67,10 +67,10 @@ index e0b2819d6c73a9ca1fa60ff71d29e201360370a8..283b05dccb828f3e19739c0434ad6b31
// CraftBukkit start
// this.setPlayerList(new DedicatedPlayerList(this, this.registries(), this.playerDataStorage)); // Spigot - moved up
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index ec519c0e6388eac27f9eb6fcd85713763206d71e..1c277fca191df2ed3cc397ec247a7d785d97a894 100644
index 7d9422b06ba79dbc268d451d3753150366e0877e..fca49d64c0067cef3f29d0924b4cf4672c5fbec5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -424,4 +424,9 @@ public class PurpurConfig {
@@ -422,4 +422,9 @@ public class PurpurConfig {
private static void tpsCatchup() {
tpsCatchup = getBoolean("settings.tps-catchup", tpsCatchup);
}

View File

@@ -18,10 +18,10 @@ index 219c87dcf065e86512f330fbeec59e55f4675083..f8fd3b320494d1c1e8ee3d170f2feebd
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 3fa36ab54543be869b3979865c6c38a2392c98db..0b8110d023cc3d54879baf59a4d7a17095b5addf 100644
index 6e6a48b69a560de73881af6f93f1726691c82656..c03748e3658e477c0df0816a70f84ac5d287a271 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -784,6 +784,11 @@ public class PurpurWorldConfig {
@@ -788,6 +788,11 @@ public class PurpurWorldConfig {
cactusBreaksFromSolidNeighbors = getBoolean("blocks.cactus.breaks-from-solid-neighbors", cactusBreaksFromSolidNeighbors);
}

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
index 5827236f351cd0679af764644bb22bb286ac361d..9a84e8cc1d1b2803a061fe9ef6297c9c4aea34c5 100644
index e1e19a360be99b189dee1652e5289292f4996d92..d34b78584ae428388dd82e6eb207650bb0bd8a56 100644
--- a/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 {
@@ -46,10 +46,10 @@ index 5827236f351cd0679af764644bb22bb286ac361d..9a84e8cc1d1b2803a061fe9ef6297c9c
protected void onHit(HitResult hitResult) {
super.onHit(hitResult);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index ee99154939a311ccfeb837e40bf6965e853622fd..c956df1d71a66b2838a2cf9b8ea14fba907d25bf 100644
index c03748e3658e477c0df0816a70f84ac5d287a271..b9473efe90c401cf55251120672e82070139890e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -233,6 +233,9 @@ public class PurpurWorldConfig {
@@ -237,6 +237,9 @@ public class PurpurWorldConfig {
public int glowBerriesEatGlowDuration = 0;
public boolean shulkerBoxItemDropContentsWhenDestroyed = true;
public boolean compassItemShowsBossBar = false;
@@ -59,7 +59,7 @@ index ee99154939a311ccfeb837e40bf6965e853622fd..c956df1d71a66b2838a2cf9b8ea14fba
private void itemSettings() {
itemImmuneToCactus.clear();
getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> {
@@ -281,6 +284,9 @@ public class PurpurWorldConfig {
@@ -285,6 +288,9 @@ public class PurpurWorldConfig {
glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration);
shulkerBoxItemDropContentsWhenDestroyed = getBoolean("gameplay-mechanics.item.shulker_box.drop-contents-when-destroyed", shulkerBoxItemDropContentsWhenDestroyed);
compassItemShowsBossBar = getBoolean("gameplay-mechanics.item.compass.holding-shows-bossbar", compassItemShowsBossBar);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add option to disable zombie villagers cure
diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
index a6d9354d8ddac808cc89c5fe70842fc2472ff6fa..87556ffdfb93eba9c84931b1f922b9369442ea32 100644
index 23a611d6ccd3c72e36a7bee3a2d751d4d135921f..e1e8fca7ff8231689eae0d5cfcb62e967f3ccf16 100644
--- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
+++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
@@ -212,7 +212,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
@@ -195,7 +195,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
ItemStack itemstack = player.getItemInHand(hand);
if (itemstack.is(Items.GOLDEN_APPLE)) {
@@ -18,22 +18,22 @@ index a6d9354d8ddac808cc89c5fe70842fc2472ff6fa..87556ffdfb93eba9c84931b1f922b936
itemstack.shrink(1);
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 34367920931fc7c11defb331c84aea9c77f43fae..dd8ed07888e740ed95e4527b8c437412d625190e 100644
index b9473efe90c401cf55251120672e82070139890e..f46664c3fa54318aa4ecc21ce2a1c30e35f4afc0 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -2817,6 +2817,7 @@ public class PurpurWorldConfig {
@@ -2328,6 +2328,7 @@ public class PurpurWorldConfig {
public boolean zombieVillagerTakeDamageFromWater = false;
public int zombieVillagerCuringTimeMin = 3600;
public int zombieVillagerCuringTimeMax = 6000;
+ public boolean zombieVillagerCureEnabled = true;
private void zombieVillagerSettings() {
zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable);
zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater);
@@ -2834,6 +2835,7 @@ public class PurpurWorldConfig {
if (PurpurConfig.version < 10) {
double oldValue = getDouble("mobs.zombie_villager.attributes.max-health", zombieVillagerMaxHealth);
@@ -2342,6 +2343,7 @@ public class PurpurWorldConfig {
zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater);
zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin);
zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax);
+ zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled);
}
public boolean zombifiedPiglinRidable = false;
public double zombifiedPiglinMaxHealth = 20.0D;

View File

@@ -37,10 +37,10 @@ index ff236d3ad8838b14e5a20c70b2a2ce56d441dc7f..9060a844cd3bb3b62171872d84516b91
@Nullable
diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java
index 84f031ec0f196b90c78a6432f344e68b22d363c0..33d3a3df277e751a3fb0d4421bf9ea2e1173763c 100644
index 91832d8ed048e3b78f156bcbe265955dd93b3c9a..2feca2820d1760defe0ef784f9737ab9e9ec800f 100644
--- a/src/main/java/net/minecraft/world/level/block/Block.java
+++ b/src/main/java/net/minecraft/world/level/block/Block.java
@@ -63,6 +63,13 @@ import net.minecraft.world.phys.shapes.Shapes;
@@ -62,6 +62,13 @@ import net.minecraft.world.phys.shapes.Shapes;
import net.minecraft.world.phys.shapes.VoxelShape;
import org.slf4j.Logger;
@@ -54,7 +54,7 @@ index 84f031ec0f196b90c78a6432f344e68b22d363c0..33d3a3df277e751a3fb0d4421bf9ea2e
public class Block extends BlockBehaviour implements ItemLike {
private static final Logger LOGGER = LogUtils.getLogger();
@@ -325,7 +332,7 @@ public class Block extends BlockBehaviour implements ItemLike {
@@ -313,7 +320,7 @@ public class Block extends BlockBehaviour implements ItemLike {
public static void dropResources(BlockState state, LevelAccessor world, BlockPos pos, @Nullable BlockEntity blockEntity) {
if (world instanceof ServerLevel) {
Block.getDrops(state, (ServerLevel) world, pos, blockEntity).forEach((itemstack) -> {
@@ -63,7 +63,7 @@ index 84f031ec0f196b90c78a6432f344e68b22d363c0..33d3a3df277e751a3fb0d4421bf9ea2e
});
state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY, true);
}
@@ -341,7 +348,7 @@ public class Block extends BlockBehaviour implements ItemLike {
@@ -329,7 +336,7 @@ public class Block extends BlockBehaviour implements ItemLike {
io.papermc.paper.event.block.BlockBreakBlockEvent event = new io.papermc.paper.event.block.BlockBreakBlockEvent(org.bukkit.craftbukkit.block.CraftBlock.at(world, pos), org.bukkit.craftbukkit.block.CraftBlock.at(world, source), items);
event.callEvent();
for (var drop : event.getDrops()) {
@@ -72,8 +72,8 @@ index 84f031ec0f196b90c78a6432f344e68b22d363c0..33d3a3df277e751a3fb0d4421bf9ea2e
}
state.spawnAfterBreak(world.getMinecraftWorld(), pos, ItemStack.EMPTY, true);
}
@@ -352,13 +359,53 @@ public class Block extends BlockBehaviour implements ItemLike {
public static void dropResources(BlockState state, Level world, BlockPos pos, @Nullable BlockEntity blockEntity, Entity entity, ItemStack tool) {
@@ -340,13 +347,53 @@ public class Block extends BlockBehaviour implements ItemLike {
public static void dropResources(BlockState state, Level world, BlockPos pos, @Nullable BlockEntity blockEntity, @Nullable Entity entity, ItemStack tool) {
if (world instanceof ServerLevel) {
Block.getDrops(state, (ServerLevel) world, pos, blockEntity, entity, tool).forEach((itemstack1) -> {
- Block.popResource(world, pos, itemstack1);
@@ -128,7 +128,7 @@ index 84f031ec0f196b90c78a6432f344e68b22d363c0..33d3a3df277e751a3fb0d4421bf9ea2e
double d0 = (double) EntityType.ITEM.getHeight() / 2.0D;
double d1 = (double) pos.getX() + 0.5D + Mth.nextDouble(world.random, -0.25D, 0.25D);
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
index 1b248db497500aa6bd346b306dcb908af77626f3..64c55f3ebdbc27f7f0cea38247ff7b35fa99e341 100644
index 370a25d2deb54f10a35ee24d9e7e92fbfde60edf..2f19f6ac5de454845f5d13a3ebb93af625b2afc8 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
@@ -6,6 +6,8 @@ import net.minecraft.CrashReportCategory;
@@ -140,7 +140,7 @@ index 1b248db497500aa6bd346b306dcb908af77626f3..64c55f3ebdbc27f7f0cea38247ff7b35
import net.minecraft.network.protocol.Packet;
import net.minecraft.network.protocol.game.ClientGamePacketListener;
import net.minecraft.resources.ResourceLocation;
@@ -74,10 +76,27 @@ public abstract class BlockEntity {
@@ -73,10 +75,27 @@ public abstract class BlockEntity {
if (persistentDataTag instanceof CompoundTag) {
this.persistentDataContainer.putAll((CompoundTag) persistentDataTag);
}
@@ -169,7 +169,7 @@ index 1b248db497500aa6bd346b306dcb908af77626f3..64c55f3ebdbc27f7f0cea38247ff7b35
public final CompoundTag saveWithFullMetadata() {
CompoundTag nbttagcompound = this.saveWithoutMetadata();
@@ -264,4 +283,24 @@ public abstract class BlockEntity {
@@ -263,4 +282,24 @@ public abstract class BlockEntity {
}
// Paper end
@@ -195,7 +195,7 @@ index 1b248db497500aa6bd346b306dcb908af77626f3..64c55f3ebdbc27f7f0cea38247ff7b35
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 844b0d69f64702ca65aa4aaa09f0e8055ea7c62c..c304ce978e7468ce6e5005468d6075616f2a7ae3 100644
index f46664c3fa54318aa4ecc21ce2a1c30e35f4afc0..c3cd9cbb94ce09db9ac4e6aac591b35355b2b882 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -132,6 +132,7 @@ public class PurpurWorldConfig {
@@ -206,7 +206,7 @@ index 844b0d69f64702ca65aa4aaa09f0e8055ea7c62c..c304ce978e7468ce6e5005468d607561
public boolean projectilesBypassMobGriefing = false;
public boolean tickFluids = true;
public double mobsBlindnessMultiplier = 1;
@@ -155,6 +156,7 @@ public class PurpurWorldConfig {
@@ -157,6 +158,7 @@ public class PurpurWorldConfig {
imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways);
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove);

View File

@@ -135,10 +135,10 @@ index e5c135ec059746b75fe58516809584221285cdbe..713c7e6e31a3e1097b612c77a4fce147
+ // Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 1c277fca191df2ed3cc397ec247a7d785d97a894..7467d3738b1159323606f08e7086dba653063211 100644
index fca49d64c0067cef3f29d0924b4cf4672c5fbec5..e52ef79d8488edeca10920976f2ef2cdd9a9f93b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -310,6 +310,10 @@ public class PurpurConfig {
@@ -308,6 +308,10 @@ public class PurpurConfig {
public static Set<Enchantment> grindstoneIgnoredEnchants = new HashSet<>();
public static boolean grindstoneRemoveAttributes = false;
public static boolean grindstoneRemoveDisplay = false;
@@ -149,7 +149,7 @@ index 1c277fca191df2ed3cc397ec247a7d785d97a894..7467d3738b1159323606f08e7086dba6
private static void blockSettings() {
if (version < 3) {
boolean oldValue = getBoolean("settings.barrel.packed-barrels", true);
@@ -357,6 +361,30 @@ public class PurpurConfig {
@@ -355,6 +359,30 @@ public class PurpurConfig {
});
grindstoneRemoveAttributes = getBoolean("settings.blocks.grindstone.remove-attributes", grindstoneRemoveAttributes);
grindstoneRemoveDisplay = getBoolean("settings.blocks.grindstone.remove-name-and-lore", grindstoneRemoveDisplay);

View File

@@ -160,7 +160,7 @@ index 14fab63346d56c72cd7534a04760efd10eef4295..745e792482f61c571e2efbd4200dd1bd
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
index 697cc3adf3c07241136d555cbb618b528906efaf..69dbcc299cde87de76ff5c254842e6b89f55d86b 100644
index 75b3bee5c0907d24c324ccdef8b6fcc46bd5971c..641caa0f74a40ea52f71f3150c0168272b378edf 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
@@ -456,7 +456,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {

Some files were not shown because too many files have changed in this diff Show More