first 50 patches done!

This commit is contained in:
granny
2024-10-25 20:37:48 -07:00
parent 66cd75fdaf
commit d8c53a380d
42 changed files with 454 additions and 456 deletions

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index fbfcd1bd4f6bbaef2d5eb4b5f4c286b343ffb294..59a61a6160ff84f04541822aef5e99e5136ed34c 100644
index a4454289fb92cf7b97ee77db422c328f008521f1..7ec26117aa6d98140e994567fd0ded33d308e3d4 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1151,6 +1151,27 @@ public abstract class PlayerList {
@@ -1110,6 +1110,27 @@ public abstract class PlayerList {
player.getBukkitEntity().recalculatePermissions(); // CraftBukkit
this.server.getCommands().sendCommands(player);
} // Paper - Add sendOpLevel API
@@ -37,7 +37,7 @@ index fbfcd1bd4f6bbaef2d5eb4b5f4c286b343ffb294..59a61a6160ff84f04541822aef5e99e5
public boolean isWhiteListed(GameProfile profile) {
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 509d81d6d34137fc62c1eda0e550ccde56fb05a4..72e99a9d1058e65af2553ac1f3a62f92595e4c8f 100644
index 21f85ffe12a6ac11a67c808e4878f9a46f01344e..7e9f9b1f9e932116fc12db9cc2c0135144156eda 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -197,6 +197,7 @@ public abstract class Player extends LivingEntity {
@@ -49,10 +49,10 @@ index 509d81d6d34137fc62c1eda0e550ccde56fb05a4..72e99a9d1058e65af2553ac1f3a62f92
// CraftBukkit start
public boolean fauxSleeping;
diff --git a/src/main/java/net/minecraft/world/inventory/ChestMenu.java b/src/main/java/net/minecraft/world/inventory/ChestMenu.java
index 0dbfd23bbfc6ad203f048142f8c90ef741849fe1..9a80427d2bb470b6b1638e59aba57216676dcbd2 100644
index 48a6b6136ac3414ca735f93a14b1a8d76210603c..27321b07cd04814bc1ff720c65770d7755625bb6 100644
--- a/src/main/java/net/minecraft/world/inventory/ChestMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/ChestMenu.java
@@ -67,10 +67,30 @@ public class ChestMenu extends AbstractContainerMenu {
@@ -66,10 +66,30 @@ public class ChestMenu extends AbstractContainerMenu {
return new ChestMenu(MenuType.GENERIC_9x6, syncId, playerInventory, 6);
}
@@ -108,19 +108,19 @@ index a15d5ff872dbd77f3c3145e0328f3d02e431ff8c..1dcf36d502990d32fc4cd3ea69c3ea33
this.activeChest = blockEntity;
}
diff --git a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java
index 491a59336899179c79820cd61541d49f7337c0f6..492fda30f22c8d09271931229ec02bb6f98f5889 100644
index ebb9baca7a65173f7c9fdf9bf47a8db876719625..d9a1ec9c6ccab71618a42121f049005cf821eb42 100644
--- a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java
@@ -92,7 +92,7 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
playerEnderChestContainer.setActiveChest(enderChestBlockEntity);
// Paper start - Fix InventoryOpenEvent cancellation
if (player.openMenu(
@@ -88,7 +88,7 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
} else {
// Paper start - Fix InventoryOpenEvent cancellation - moved up;
if (world instanceof ServerLevel serverLevel && player.openMenu(
- new SimpleMenuProvider((i, inventory, playerx) -> ChestMenu.threeRows(i, inventory, playerEnderChestContainer), CONTAINER_TITLE)
+ new SimpleMenuProvider((i, inventory, playerx) -> org.purpurmc.purpur.PurpurConfig.enderChestSixRows ? getEnderChestSixRows(i, inventory, player, playerEnderChestContainer) : ChestMenu.threeRows(i, inventory, playerEnderChestContainer), CONTAINER_TITLE) // Purpur
).isPresent()) {
player.awardStat(Stats.OPEN_ENDERCHEST);
PiglinAi.angerNearbyPiglins(player, true);
@@ -105,6 +105,35 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
// Paper end - Fix InventoryOpenEvent cancellation - moved up;
playerEnderChestContainer.setActiveChest(enderChestBlockEntity);
@@ -104,6 +104,35 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
}
}
@@ -157,7 +157,7 @@ index 491a59336899179c79820cd61541d49f7337c0f6..492fda30f22c8d09271931229ec02bb6
public BlockEntity newBlockEntity(BlockPos pos, BlockState state) {
return new EnderChestBlockEntity(pos, state);
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
index 6186e55014bbb9d5bedaa0e9d196879c55339d42..f4f11292d6d00f4a7c65e3e2a157bba595f70889 100644
index 618552afbdacc919c33b30a6bf4834fb71ab3d5b..7a059d20abdcc0073a314311d78f63ae4bd0365e 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java
@@ -68,7 +68,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity {
@@ -215,7 +215,7 @@ index 6186e55014bbb9d5bedaa0e9d196879c55339d42..f4f11292d6d00f4a7c65e3e2a157bba5
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
index 674e3a827f8fb64e5c0beefb3c1874d6e8aee4e5..3bc9ee0d76021d1eeca194d0c2b6c2e144ce09fe 100644
index 6d3f9d5dab6c9a2860ae31cae24310aa2d62da7c..4f29c579f94efe59a8c78520d75676fc4875e2f0 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
@@ -145,8 +145,19 @@ public class CraftContainer extends AbstractContainerMenu {
@@ -253,7 +253,7 @@ index af1ae3dacb628da23f7d2988c6e76d3fb2d64103..4ee2d501f882279b48edb4b8bf082458
for (int i = 0; i < this.getSize(); i++) {
if (i >= items.length) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 08f38c2a87feb138b202f0934abb3724ef79c4c1..5f51a9d16912ecbd9d015f5158d50563904a461f 100644
index f34d12ea5681a944ae2c08fb2cb69b8f662fcdf6..db93b3aa3883707c0e16745a9afee532fed9379f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -179,4 +179,39 @@ public class PurpurConfig {

View File

@@ -25,10 +25,10 @@ index df695b444fa2a993d381e2f197182c3e91a68502..eb0faf58fa1a408f294fc62120b140de
double d = this.llama.distanceToSqr(this.llama.getCaravanHead());
if (d > 676.0) {
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 6098251783c7c24fe2510c170d628462023d8ab2..09c400ce06003139de84e22313354ed6199da761 100644
index eab57ab99168b1b9ae8df6c8b2b6dd623b1871fb..7ff446ea2163d3b3b9f7fd826939dda21e07c99f 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
@@ -75,6 +75,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
@@ -72,6 +72,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
private Llama caravanHead;
@Nullable
public Llama caravanTail; // Paper
@@ -36,7 +36,7 @@ index 6098251783c7c24fe2510c170d628462023d8ab2..09c400ce06003139de84e22313354ed6
public Llama(EntityType<? extends Llama> type, Level world) {
super(type, world);
@@ -168,6 +169,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
@@ -166,6 +167,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
super.addAdditionalSaveData(nbt);
nbt.putInt("Variant", this.getVariant().id);
nbt.putInt("Strength", this.getStrength());
@@ -44,7 +44,7 @@ index 6098251783c7c24fe2510c170d628462023d8ab2..09c400ce06003139de84e22313354ed6
}
@Override
@@ -175,6 +177,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
@@ -173,6 +175,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
this.setStrength(nbt.getInt("Strength"));
super.readAdditionalSaveData(nbt);
this.setVariant(Llama.Variant.byId(nbt.getInt("Variant")));
@@ -52,7 +52,7 @@ index 6098251783c7c24fe2510c170d628462023d8ab2..09c400ce06003139de84e22313354ed6
}
@Override
@@ -456,6 +459,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
@@ -440,6 +443,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
public void leaveCaravan() {
if (this.caravanHead != null) {
@@ -60,7 +60,7 @@ index 6098251783c7c24fe2510c170d628462023d8ab2..09c400ce06003139de84e22313354ed6
this.caravanHead.caravanTail = null;
}
@@ -463,6 +467,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
@@ -447,6 +451,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
}
public void joinCaravan(Llama llama) {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] AFK API
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index be4226b968e02fa88deb851ecb76130034e56695..d4a05d40cb15b6b73d12976d3b25d71215dc04ea 100644
index 7e796655dec9eb48d0c29c9ed06d30ebf67c25a5..00a768a9bef0f60ee43e6e1becc6ba9424ba6dda 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -2371,8 +2371,68 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
@@ -2623,8 +2623,68 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
public void resetLastActionTime() {
this.lastActionTime = Util.getMillis();
@@ -78,10 +78,10 @@ index be4226b968e02fa88deb851ecb76130034e56695..d4a05d40cb15b6b73d12976d3b25d712
return this.stats;
}
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index d5267431f0ac8fdf2d474951dde50f29ae7c3895..23d897ef7f0a26ac87f4d90926f9036d47f4f105 100644
index 352ade7acc9052e4d74ef840e085a86f24c66c00..0ffad0fee921ac302f31894766594921751fbff9 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -332,6 +332,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -342,6 +342,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
private boolean justTeleported = false;
// CraftBukkit end
@@ -102,9 +102,9 @@ index d5267431f0ac8fdf2d474951dde50f29ae7c3895..23d897ef7f0a26ac87f4d90926f9036d
@Override
public void tick() {
if (this.ackBlockChangesUpTo > -1) {
@@ -399,6 +413,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
}
@@ -398,6 +412,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
this.recipeSpamPackets.tick(); // Paper - auto recipe limit
this.dropSpamThrottler.tick();
if (this.player.getLastActionTime() > 0L && this.server.getPlayerIdleTimeout() > 0 && Util.getMillis() - this.player.getLastActionTime() > (long) this.server.getPlayerIdleTimeout() * 1000L * 60L && !this.player.wonGame) { // Paper - Prevent AFK kick while watching end credits
+ // Purpur start
+ this.player.setAfk(true);
@@ -115,7 +115,7 @@ index d5267431f0ac8fdf2d474951dde50f29ae7c3895..23d897ef7f0a26ac87f4d90926f9036d
this.player.resetLastActionTime(); // CraftBukkit - SPIGOT-854
this.disconnect((Component) Component.translatable("multiplayer.disconnect.idling"), org.bukkit.event.player.PlayerKickEvent.Cause.IDLING); // Paper - kick event cause
}
@@ -658,6 +678,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -654,6 +674,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
this.lastYaw = to.getYaw();
this.lastPitch = to.getPitch();
@@ -124,7 +124,7 @@ index d5267431f0ac8fdf2d474951dde50f29ae7c3895..23d897ef7f0a26ac87f4d90926f9036d
Location oldTo = to.clone();
PlayerMoveEvent event = new PlayerMoveEvent(player, from, to);
this.cserver.getPluginManager().callEvent(event);
@@ -1489,7 +1511,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -1465,7 +1487,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
movedWrongly = true;
if (event.getLogWarning())
// Paper end
@@ -133,7 +133,7 @@ index d5267431f0ac8fdf2d474951dde50f29ae7c3895..23d897ef7f0a26ac87f4d90926f9036d
} // Paper
}
@@ -1557,6 +1579,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -1523,6 +1545,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
this.lastYaw = to.getYaw();
this.lastPitch = to.getPitch();
@@ -165,10 +165,10 @@ index 823efad652d8ff9e96b99375b102fef6f017716e..caa8a69bde0c212c36dd990a67836ac2
}
// CraftBukkit start
diff --git a/src/main/java/net/minecraft/world/entity/EntitySelector.java b/src/main/java/net/minecraft/world/entity/EntitySelector.java
index dca7b99e97f21bf6cfae6ee69eeac95d0bcf6863..4830ebddade00f62287bcc9d7b17be83c0ad3a56 100644
index 6bf691fcc6486bde73bae30eff09142802c29eda..59c4d3753c7084e92402608b7fb3c4adbc6c2f65 100644
--- a/src/main/java/net/minecraft/world/entity/EntitySelector.java
+++ b/src/main/java/net/minecraft/world/entity/EntitySelector.java
@@ -40,6 +40,7 @@ public final class EntitySelector {
@@ -39,6 +39,7 @@ public final class EntitySelector {
return net.minecraft.util.Mth.clamp(serverPlayer.getStats().getValue(net.minecraft.stats.Stats.CUSTOM.get(net.minecraft.stats.Stats.TIME_SINCE_REST)), 1, Integer.MAX_VALUE) >= playerInsomniaTicks;
};
// Paper end - Ability to control player's insomnia and phantoms
@@ -177,22 +177,22 @@ index dca7b99e97f21bf6cfae6ee69eeac95d0bcf6863..4830ebddade00f62287bcc9d7b17be83
private EntitySelector() {}
// Paper start - Affects Spawning API
diff --git a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java
index 00ef7f6d60bcaee2506cf111461f2c2f8eedd59a..02a328bb22ebb3593f9f41a1ffc1008ae8414121 100644
index 52982c1e6a4da36392569c791853279f5f9ac31a..9817bc392146b93707291fe69eaab20a8a43235c 100644
--- a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java
+++ b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java
@@ -64,6 +64,10 @@ public class TargetingConditions {
return false;
} else if (this.selector != null && !this.selector.test(targetEntity)) {
} else if (this.selector != null && !this.selector.test(target, world)) {
return false;
+ // Purpur start
+ } else if (!targetEntity.level().purpurConfig.idleTimeoutTargetPlayer && targetEntity instanceof net.minecraft.server.level.ServerPlayer player && player.isAfk()) {
+ return false;
+ // Purpur end
} else {
if (baseEntity == null) {
if (this.isCombat && (!targetEntity.canBeSeenAsEnemy() || targetEntity.level().getDifficulty() == Difficulty.PEACEFUL)) {
if (tester == null) {
if (this.isCombat && (!target.canBeSeenAsEnemy() || world.getDifficulty() == Difficulty.PEACEFUL)) {
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 72e99a9d1058e65af2553ac1f3a62f92595e4c8f..5e404e470a28f04f5659503bcc6b66caf1880f3f 100644
index 7e9f9b1f9e932116fc12db9cc2c0135144156eda..d1b6e7cf8d110d9106ea99431cf9719ea3b102d5 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -203,6 +203,13 @@ public abstract class Player extends LivingEntity {
@@ -210,10 +210,10 @@ index 72e99a9d1058e65af2553ac1f3a62f92595e4c8f..5e404e470a28f04f5659503bcc6b66ca
public CraftHumanEntity getBukkitEntity() {
return (CraftHumanEntity) super.getBukkitEntity();
diff --git a/src/main/java/net/minecraft/world/level/EntityGetter.java b/src/main/java/net/minecraft/world/level/EntityGetter.java
index 141b748abe80402731cdaf14a3d36aa7cef4f4bd..d5d2a6467b48bcf8e5322dd5938f6e4fb37ca467 100644
index 5d7a6e4b73f032db356e7ec369b150013e940ee6..6b2cda6d578a0983b2401ea20629275431018433 100644
--- a/src/main/java/net/minecraft/world/level/EntityGetter.java
+++ b/src/main/java/net/minecraft/world/level/EntityGetter.java
@@ -187,7 +187,7 @@ public interface EntityGetter extends ca.spottedleaf.moonrise.patches.chunk_syst
@@ -184,7 +184,7 @@ public interface EntityGetter extends ca.spottedleaf.moonrise.patches.chunk_syst
default boolean hasNearbyAlivePlayer(double x, double y, double z, double range) {
for (Player player : this.players()) {
@@ -223,10 +223,10 @@ index 141b748abe80402731cdaf14a3d36aa7cef4f4bd..d5d2a6467b48bcf8e5322dd5938f6e4f
if (range < 0.0 || d < range * range) {
return true;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 9e7c447a786bde25bb7ebe58619700b4c2e3d05e..82b8fca9ca46f24d71b357ed5eab89c6b27ecd8a 100644
index e4b41edc7c08c00f4411812a20944507a5b674c7..dc698d64ff3b5ab3b65b91159ce26d7cf51e68a1 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -578,10 +578,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -583,10 +583,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override
public void setPlayerListName(String name) {
@@ -243,7 +243,7 @@ index 9e7c447a786bde25bb7ebe58619700b4c2e3d05e..82b8fca9ca46f24d71b357ed5eab89c6
if (this.getHandle().connection == null) return; // Paper - Updates are possible before the player has fully joined
for (ServerPlayer player : (List<ServerPlayer>) this.server.getHandle().players) {
if (player.getBukkitEntity().canSee(this)) {
@@ -3574,5 +3579,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -3604,5 +3609,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public boolean usesPurpurClient() {
return getHandle().purpurClient;
}
@@ -265,7 +265,7 @@ index 9e7c447a786bde25bb7ebe58619700b4c2e3d05e..82b8fca9ca46f24d71b357ed5eab89c6
// Purpur end
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 5f51a9d16912ecbd9d015f5158d50563904a461f..d80e5f2280aa156bbe455f9638d84f8243dbdaf7 100644
index db93b3aa3883707c0e16745a9afee532fed9379f..490793e1344a6ca475e2d9ada406fa96522c92d1 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -176,8 +176,18 @@ public class PurpurConfig {
@@ -317,10 +317,10 @@ index 65cbd35892ab48fccda9bccf2b4dd66be5c84a0d..42bff6f2d864a31dcb1c0087a4e0c902
public boolean untamedTamablesAreRidable = true;
public boolean useNightVisionWhenRiding = false;
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
index 1461daa08c5b671b8556f29f90400b7e98285a44..378c889b3315fc578629990df361e37baac110d3 100644
index e4252c5a6aec351a4a0a8be372d3b63f7fb771e7..bcb591ba54522ed70ca051429363f3a5517460af 100644
--- a/src/main/java/org/spigotmc/ActivationRange.java
+++ b/src/main/java/org/spigotmc/ActivationRange.java
@@ -205,6 +205,8 @@ public class ActivationRange
@@ -201,6 +201,8 @@ public class ActivationRange
continue;
}

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Bring back server name
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
index d6431376184e5650b370cbab204e28bc31f4dac6..9ebe1f1797b5be562bc4f6d92b9a4d6022ca2151 100644
index 52e61f75f922a075ccc745198f4ba6ad8fa58ea2..b97d8f43f24baf36eca9064b2b48bf6c092f848c 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
@@ -56,6 +56,7 @@ public class DedicatedServerProperties extends Settings<DedicatedServerPropertie
@@ -13,14 +13,14 @@ index d6431376184e5650b370cbab204e28bc31f4dac6..9ebe1f1797b5be562bc4f6d92b9a4d60
public final boolean preventProxyConnections = this.get("prevent-proxy-connections", false);
public final String serverIp = this.get("server-ip", "");
+ public final String serverName = this.get("server-name", "Unknown Server"); // Purpur
public final boolean spawnAnimals = this.get("spawn-animals", true);
public final boolean spawnNpcs = this.get("spawn-npcs", true);
public final boolean pvp = this.get("pvp", true);
public final boolean allowFlight = this.get("allow-flight", false);
public final String motd = this.get("motd", "A Minecraft Server");
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index bc3d41df5cc55281c513f8d4b35c71319119f499..e86551d1518318003f5e8a6e8ed3e1f3c199fe34 100644
index 910539a3c6f89d5f6cf120d36014ed33b05ac39a..b9aee2a00b35e8f53240d5854ba05785e9688b22 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -3232,4 +3232,11 @@ public final class CraftServer implements Server {
@@ -3210,4 +3210,11 @@ public final class CraftServer implements Server {
return this.potionBrewer;
}
// Paper end

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable server mod name
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 17d81fe18dc859675d9d57fd8f739639bc3d4cfb..72b67696bc7d268b2fece68325963d25afb1ac26 100644
index 000a765c2e62d7e1921b2f4b4de77fc1a56ca02b..a95f3032d498c9f71aa89fcfdda1081ae6fca3bd 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1948,7 +1948,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1968,7 +1968,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@DontObfuscate
public String getServerModName() {
@@ -18,7 +18,7 @@ index 17d81fe18dc859675d9d57fd8f739639bc3d4cfb..72b67696bc7d268b2fece68325963d25
public SystemReport fillSystemReport(SystemReport details) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index d80e5f2280aa156bbe455f9638d84f8243dbdaf7..9960d7791d37fb7b43e8ffc3351528510ac537ca 100644
index 490793e1344a6ca475e2d9ada406fa96522c92d1..cea00dc7478ef73984747992b2a8efc28677e2cb 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -190,6 +190,11 @@ public class PurpurConfig {

View File

@@ -5,18 +5,18 @@ Subject: [PATCH] Lagging threshold
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 72b67696bc7d268b2fece68325963d25afb1ac26..8ba26b557a97668b67c317e0d2b137e5204d15db 100644
index a95f3032d498c9f71aa89fcfdda1081ae6fca3bd..a75972eb4a4ad285982bb6dc5faf661123df9817 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -318,6 +318,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -329,6 +329,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Spigot end
public final io.papermc.paper.configuration.PaperConfigurations paperConfigurations; // Paper - add paper configuration files
public boolean isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked
+ public boolean lagging = false; // Purpur
public volatile Thread shutdownThread; // Paper
public volatile boolean abnormalExit = false; // Paper
@@ -1283,6 +1284,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
public static <S extends MinecraftServer> S spin(Function<Thread, S> serverFactory) {
AtomicReference<S> atomicreference = new AtomicReference();
@@ -1269,6 +1270,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.recentTps[0] = tps1.getAverage();
this.recentTps[1] = tps5.getAverage();
this.recentTps[2] = tps15.getAverage();
@@ -25,10 +25,10 @@ index 72b67696bc7d268b2fece68325963d25afb1ac26..8ba26b557a97668b67c317e0d2b137e5
}
// Paper end - further improve server tick loop
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index e86551d1518318003f5e8a6e8ed3e1f3c199fe34..39112ee78ff7f55d9be109f4ad3dffb788f7380f 100644
index b9aee2a00b35e8f53240d5854ba05785e9688b22..febd5dc39cbe96054d21d13b14947bdf65384054 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -3238,5 +3238,10 @@ public final class CraftServer implements Server {
@@ -3216,5 +3216,10 @@ public final class CraftServer implements Server {
public String getServerName() {
return this.getProperties().serverName;
}

View File

@@ -5,11 +5,11 @@ Subject: [PATCH] PlayerSetSpawnerTypeWithEggEvent
diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java
index f9440014ab2fe753c16b9383f5fffbb8adb76e79..5a80b1f1168d17ef62d756f8eed751e721f09f79 100644
index e56050bef4a5aaa0fca17192dab4cf5e6a55fbae..9eebe70e8ce80620b68635c9048e8e5c1083e27e 100644
--- a/src/main/java/net/minecraft/world/entity/EntityType.java
+++ b/src/main/java/net/minecraft/world/entity/EntityType.java
@@ -332,6 +332,16 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
return (EntityType) Registry.register(BuiltInRegistries.ENTITY_TYPE, id, (EntityType<T>) type.build(id)); // CraftBukkit - decompile error
@@ -404,6 +404,16 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
return EntityType.register(EntityType.vanillaEntityId(id), type);
}
+ // Purpur start
@@ -25,7 +25,7 @@ index f9440014ab2fe753c16b9383f5fffbb8adb76e79..5a80b1f1168d17ef62d756f8eed751e7
public static ResourceLocation getKey(EntityType<?> type) {
return BuiltInRegistries.ENTITY_TYPE.getKey(type);
}
@@ -539,6 +549,16 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
@@ -613,6 +623,16 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
return this.category;
}
@@ -40,13 +40,13 @@ index f9440014ab2fe753c16b9383f5fffbb8adb76e79..5a80b1f1168d17ef62d756f8eed751e7
+ // Purpur end
+
public String getDescriptionId() {
if (this.descriptionId == null) {
this.descriptionId = Util.makeDescriptionId("entity", BuiltInRegistries.ENTITY_TYPE.getKey(this));
return this.descriptionId;
}
diff --git a/src/main/java/net/minecraft/world/item/SpawnEggItem.java b/src/main/java/net/minecraft/world/item/SpawnEggItem.java
index 9cea8da84f39bb3f687139ef213ccea358724dee..c513e3b414a1b87b1aa37bb5d51fc2dd0fae1c54 100644
index 9956ed42df55daa6d97fd6e3ab5368dad91cfaf0..e0e746d6c78421b40777125ba49f0a04809f5415 100644
--- a/src/main/java/net/minecraft/world/item/SpawnEggItem.java
+++ b/src/main/java/net/minecraft/world/item/SpawnEggItem.java
@@ -74,6 +74,24 @@ public class SpawnEggItem extends Item {
@@ -73,6 +73,24 @@ public class SpawnEggItem extends Item {
Spawner spawner = (Spawner) tileentity;
entitytypes = this.getType(itemstack);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Anvil API
diff --git a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
index dd4218e108f87f3305b76fbc8d88f488b447c609..ecfa807e78c16a24099d40becd0c7916f239aed1 100644
index 4680f77a275d8d2b226018db89a571ac25998dd8..bfc90524bd739ed1d91fe9912e38093b3c28928f 100644
--- a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
@@ -76,6 +76,7 @@ public abstract class AbstractContainerMenu {
@@ -80,6 +80,7 @@ public abstract class AbstractContainerMenu {
@Nullable
private ContainerSynchronizer synchronizer;
private boolean suppressRemoteUpdates;
@@ -17,7 +17,7 @@ index dd4218e108f87f3305b76fbc8d88f488b447c609..ecfa807e78c16a24099d40becd0c7916
// CraftBukkit start
public boolean checkReachable = true;
diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
index 362278407679f245ebcea778f2199b357339e1fe..07e4c67ed1e5b14315ccbce4f0dd8abf0e5e6635 100644
index dc2bc53f6fa84fa09bd86450060ad9878307001c..0dfcce766872d9b1a9b898f56e6f4d9179a46bc4 100644
--- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
@@ -25,6 +25,12 @@ import org.slf4j.Logger;
@@ -33,7 +33,7 @@ index 362278407679f245ebcea778f2199b357339e1fe..07e4c67ed1e5b14315ccbce4f0dd8abf
public class AnvilMenu extends ItemCombinerMenu {
public static final int INPUT_SLOT = 0;
@@ -54,6 +60,10 @@ public class AnvilMenu extends ItemCombinerMenu {
@@ -55,6 +61,10 @@ public class AnvilMenu extends ItemCombinerMenu {
private CraftAnvilView bukkitEntity;
// CraftBukkit end
public boolean bypassEnchantmentLevelRestriction = false; // Paper - bypass anvil level restrictions
@@ -44,7 +44,7 @@ index 362278407679f245ebcea778f2199b357339e1fe..07e4c67ed1e5b14315ccbce4f0dd8abf
public AnvilMenu(int syncId, Inventory inventory) {
this(syncId, inventory, ContainerLevelAccess.NULL);
@@ -81,12 +91,17 @@ public class AnvilMenu extends ItemCombinerMenu {
@@ -82,12 +92,17 @@ public class AnvilMenu extends ItemCombinerMenu {
@Override
protected boolean mayPickup(Player player, boolean present) {
@@ -63,7 +63,7 @@ index 362278407679f245ebcea778f2199b357339e1fe..07e4c67ed1e5b14315ccbce4f0dd8abf
player.giveExperienceLevels(-this.cost.get());
}
@@ -137,6 +152,12 @@ public class AnvilMenu extends ItemCombinerMenu {
@@ -138,6 +153,12 @@ public class AnvilMenu extends ItemCombinerMenu {
@Override
public void createResult() {
@@ -75,8 +75,8 @@ index 362278407679f245ebcea778f2199b357339e1fe..07e4c67ed1e5b14315ccbce4f0dd8abf
+
ItemStack itemstack = this.inputSlots.getItem(0);
this.cost.set(1);
@@ -144,7 +165,7 @@ public class AnvilMenu extends ItemCombinerMenu {
this.onlyRenaming = false;
@@ -146,7 +167,7 @@ public class AnvilMenu extends ItemCombinerMenu {
long j = 0L;
byte b0 = 0;
@@ -85,7 +85,7 @@ index 362278407679f245ebcea778f2199b357339e1fe..07e4c67ed1e5b14315ccbce4f0dd8abf
ItemStack itemstack1 = itemstack.copy();
ItemStack itemstack2 = this.inputSlots.getItem(1);
ItemEnchantments.Mutable itemenchantments_a = new ItemEnchantments.Mutable(EnchantmentHelper.getEnchantmentsForCrafting(itemstack1));
@@ -223,7 +244,7 @@ public class AnvilMenu extends ItemCombinerMenu {
@@ -225,7 +246,7 @@ public class AnvilMenu extends ItemCombinerMenu {
Holder<Enchantment> holder1 = (Holder) iterator1.next();
if (!holder1.equals(holder) && !Enchantment.areCompatible(holder, holder1)) {
@@ -94,8 +94,8 @@ index 362278407679f245ebcea778f2199b357339e1fe..07e4c67ed1e5b14315ccbce4f0dd8abf
++i;
}
}
@@ -281,6 +302,12 @@ public class AnvilMenu extends ItemCombinerMenu {
this.cost.set(this.maximumRepairCost - 1); // CraftBukkit
@@ -287,6 +308,12 @@ public class AnvilMenu extends ItemCombinerMenu {
this.onlyRenaming = true;
}
+ // Purpur start - Anvil API
@@ -107,7 +107,7 @@ index 362278407679f245ebcea778f2199b357339e1fe..07e4c67ed1e5b14315ccbce4f0dd8abf
if (this.cost.get() >= this.maximumRepairCost && !this.player.getAbilities().instabuild) { // CraftBukkit
itemstack1 = ItemStack.EMPTY;
}
@@ -302,6 +329,13 @@ public class AnvilMenu extends ItemCombinerMenu {
@@ -308,6 +335,13 @@ public class AnvilMenu extends ItemCombinerMenu {
org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(this.getBukkitView(), itemstack1); // CraftBukkit
this.sendAllDataToRemote(); // CraftBukkit - SPIGOT-6686: Always send completed inventory to stay in sync with client
this.broadcastChanges();
@@ -122,10 +122,10 @@ index 362278407679f245ebcea778f2199b357339e1fe..07e4c67ed1e5b14315ccbce4f0dd8abf
org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(this.getBukkitView(), ItemStack.EMPTY); // CraftBukkit
this.cost.set(AnvilMenu.DEFAULT_DENIED_COST); // CraftBukkit - use a variable for set a cost for denied item
diff --git a/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java b/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java
index 7de5e47f9a54263734eeef855a2dc07ef64d30ea..b3bd9bbd96efc4784b86c2be6bb857da4db919b8 100644
index a5d53a656513ae81cc3f9fc506caf6adaba62a8e..ac9df238ef0f3d009f25976b95e0b750e963e952 100644
--- a/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java
@@ -178,7 +178,9 @@ public abstract class ItemCombinerMenu extends AbstractContainerMenu {
@@ -164,7 +164,9 @@ public abstract class ItemCombinerMenu extends AbstractContainerMenu {
return ItemStack.EMPTY;
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Alternative Keepalive Handling
diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
index 0b661bbfa4279cbb26c065c3ed4f2b9eb4342c4e..87e904ef07cf04d7e59c8da418c5d0458902de2d 100644
index b6dd6bde947ac7502f25d3160399596130e8064f..7d276c191b391bca24948ddb36b8b7d0f1f03b03 100644
--- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
@@ -79,6 +79,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -80,6 +80,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
private long keepAliveChallenge;
private long closedListenerTime;
private boolean closed = false;
@@ -16,7 +16,7 @@ index 0b661bbfa4279cbb26c065c3ed4f2b9eb4342c4e..87e904ef07cf04d7e59c8da418c5d045
private int latency;
private volatile boolean suspendFlushingOnServerThread = false;
public final java.util.Map<java.util.UUID, net.kyori.adventure.resource.ResourcePackCallback> packCallbacks = new java.util.concurrent.ConcurrentHashMap<>(); // Paper - adventure resource pack callbacks
@@ -130,6 +131,16 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -137,6 +138,16 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@Override
public void handleKeepAlive(ServerboundKeepAlivePacket packet) {
@@ -33,7 +33,7 @@ index 0b661bbfa4279cbb26c065c3ed4f2b9eb4342c4e..87e904ef07cf04d7e59c8da418c5d045
//PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); // CraftBukkit // Paper - handle ServerboundKeepAlivePacket async
if (this.keepAlivePending && packet.getId() == this.keepAliveChallenge) {
int i = (int) (Util.getMillis() - this.keepAliveTime);
@@ -262,6 +273,21 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
@@ -269,6 +280,21 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
long currentTime = Util.getMillis();
long elapsedTime = currentTime - this.keepAliveTime;

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Enchantment convenience methods
diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java
index fce49b17905ab97e691aa8499a5dfed67adf0c40..9635c076703beee96af9f5d0bdee4cf97ccd98ad 100644
index f99b87cf70df7eaac13d46f4e0234b1e6483d342..d8fc10f9cd0ab2c26e64613006569a86ce201550 100644
--- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java
+++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentHelper.java
@@ -559,4 +559,14 @@ public class EnchantmentHelper {
@@ -578,4 +578,14 @@ public class EnchantmentHelper {
interface EnchantmentVisitor {
void accept(Holder<Enchantment> enchantment, int level);
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Silk touch spawners
diff --git a/src/main/java/net/minecraft/world/item/BlockItem.java b/src/main/java/net/minecraft/world/item/BlockItem.java
index 96fb69ec6db2e7c8c728435f0c537b076259b2fb..3253361d91e2a2e68d354eaf3dd3e3cd486e191d 100644
index c816c935ecc74a811ffdffbe6ded73c06e92324a..b5b7f1db21a22f16f06ced775c8173f90e36a91c 100644
--- a/src/main/java/net/minecraft/world/item/BlockItem.java
+++ b/src/main/java/net/minecraft/world/item/BlockItem.java
@@ -219,6 +219,7 @@ public class BlockItem extends Item {
@@ -213,6 +213,7 @@ public class BlockItem extends Item {
if (tileentity != null) {
if (!world.isClientSide && tileentity.onlyOpCanSetNbt() && (player == null || !(player.canUseGameMasterBlocks() || (player.getAbilities().instabuild && player.getBukkitEntity().hasPermission("minecraft.nbt.place"))))) { // Spigot - add permission
@@ -17,18 +17,18 @@ index 96fb69ec6db2e7c8c728435f0c537b076259b2fb..3253361d91e2a2e68d354eaf3dd3e3cd
}
diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java
index 07315232192f6e09910a028c4643d7f0544c62e3..4eef61323ba54f513e6f251ef7c804b2c91ff477 100644
index 5a70111cd39af50981cfd440c021340da1de5eab..bf7d12594375d5b252db540a6d669a6e6aca7de8 100644
--- a/src/main/java/net/minecraft/world/item/Items.java
+++ b/src/main/java/net/minecraft/world/item/Items.java
@@ -337,7 +337,7 @@ public class Items {
@@ -363,7 +363,7 @@ public class Items {
public static final Item PURPUR_BLOCK = registerBlock(Blocks.PURPUR_BLOCK);
public static final Item PURPUR_PILLAR = registerBlock(Blocks.PURPUR_PILLAR);
public static final Item PURPUR_STAIRS = registerBlock(Blocks.PURPUR_STAIRS);
- public static final Item SPAWNER = registerBlock(Blocks.SPAWNER);
+ public static final Item SPAWNER = registerBlock(new org.purpurmc.purpur.item.SpawnerItem(Blocks.SPAWNER, new Item.Properties().rarity(Rarity.EPIC))); // Purpur
+ public static final Item SPAWNER = registerBlock(Blocks.SPAWNER, org.purpurmc.purpur.item.SpawnerItem::new, new Item.Properties().rarity(Rarity.EPIC)); // Purpur
public static final Item CREAKING_HEART = registerBlock(Blocks.CREAKING_HEART);
public static final Item CHEST = registerBlock(Blocks.CHEST, settings -> settings.component(DataComponents.CONTAINER, ItemContainerContents.EMPTY));
public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE);
public static final Item FARMLAND = registerBlock(Blocks.FARMLAND);
diff --git a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java
index 4f190a40b8474aa06a92c8afcc06d0044120ff7b..80ee7a6f010cc838625674007a3ea908f2f9dadd 100644
--- a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java

View File

@@ -5,13 +5,13 @@ Subject: [PATCH] Add turtle egg block options
diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java
index a6f408e56fa6c9de82fd93555fe21e1b11ce1022..c7377d04ceac3ea624117439783a443c6d6f6d08 100644
index 953ddb2ea6fd48e57712e30a6addf23e188e5312..bae4931fff0db56aa125248e17b29f7c2557221f 100644
--- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java
@@ -203,6 +203,25 @@ public class TurtleEggBlock extends Block {
@@ -204,6 +204,25 @@ public class TurtleEggBlock extends Block {
}
private boolean canDestroyEgg(Level world, Entity entity) {
private boolean canDestroyEgg(ServerLevel world, Entity entity) {
- return !(entity instanceof Turtle) && !(entity instanceof Bat) ? (!(entity instanceof LivingEntity) ? false : entity instanceof Player || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) : false;
+ // Purpur start
+ if (entity instanceof Turtle || entity instanceof Bat) {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Logger settings (suppressing pointless logs)
diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java
index 9fabf9322acd663c4452b562494e74aa42eb19da..b286b157bba78021efa18f01bc91b067b0bd5874 100644
index 8e2eb7b61421ceb063654826941f1a81f6f50bdf..0a16aa193ef24aa8f1716f9e089b8027fa3c0a3c 100644
--- a/src/main/java/net/minecraft/server/PlayerAdvancements.java
+++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java
@@ -199,6 +199,7 @@ public class PlayerAdvancements {
@@ -17,7 +17,7 @@ index 9fabf9322acd663c4452b562494e74aa42eb19da..b286b157bba78021efa18f01bc91b067
} else {
this.startProgress(advancementholder, advancementprogress);
diff --git a/src/main/java/net/minecraft/server/level/WorldGenRegion.java b/src/main/java/net/minecraft/server/level/WorldGenRegion.java
index 5a8a33638ceb1d980ffc3e6dd86e7eb11dfd9375..1c059f4698cfe944ab21cb62f9f3ccb7f7065e08 100644
index e4b0dc3121101d54394a0c3a413dabf8103b2ea6..a8484b9659f175cc20985bf66082616ceb31df4d 100644
--- a/src/main/java/net/minecraft/server/level/WorldGenRegion.java
+++ b/src/main/java/net/minecraft/server/level/WorldGenRegion.java
@@ -336,6 +336,7 @@ public class WorldGenRegion implements WorldGenLevel {
@@ -29,19 +29,19 @@ index 5a8a33638ceb1d980ffc3e6dd86e7eb11dfd9375..1c059f4698cfe944ab21cb62f9f3ccb7
Util.logAndPauseIfInIde("Detected setBlock in a far chunk [" + i + ", " + j + "], pos: " + String.valueOf(pos) + ", status: " + String.valueOf(this.generatingStep.targetStatus()) + (this.currentlyGenerating == null ? "" : ", currently generating: " + (String) this.currentlyGenerating.get()));
hasSetFarWarned = true;
diff --git a/src/main/java/net/minecraft/stats/ServerRecipeBook.java b/src/main/java/net/minecraft/stats/ServerRecipeBook.java
index 8a2584deccbf19de8a18fcfcb9c65318b60afe57..6146ca9fef0e33601c132d4867c9399e7f8f807c 100644
index 5c7484ce2850a2eb698a2183b81134b89b0bbcc7..fef09e71f73f6f24a01289ef05c20a5ffc5fadb1 100644
--- a/src/main/java/net/minecraft/stats/ServerRecipeBook.java
+++ b/src/main/java/net/minecraft/stats/ServerRecipeBook.java
@@ -125,6 +125,7 @@ public class ServerRecipeBook extends RecipeBook {
Optional<RecipeHolder<?>> optional = recipeManager.byKey(minecraftkey);
@@ -159,6 +159,7 @@ public class ServerRecipeBook extends RecipeBook {
ResourceKey<Recipe<?>> resourcekey = ResourceKey.create(Registries.RECIPE, ResourceLocation.parse(s));
if (optional.isEmpty()) {
if (!validPredicate.test(resourcekey)) {
+ if (!org.purpurmc.purpur.PurpurConfig.loggerSuppressUnrecognizedRecipeErrors) // Purpur
ServerRecipeBook.LOGGER.error("Tried to load unrecognized recipe: {} removed now.", minecraftkey);
ServerRecipeBook.LOGGER.error("Tried to load unrecognized recipe: {} removed now.", resourcekey);
} else {
handler.accept((RecipeHolder) optional.get());
handler.accept(resourcekey);
diff --git a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java
index dc591702d1ad41209bb80e8d05f4ca11f20816f2..a63f090e75cf7d6561276c4297305d92cb5bbdb5 100644
index 51ae8eddadc87b143b93521a3cef374f1e3a24dc..a7b45602d9d86aec235eef06d252fb6225f17f6e 100644
--- a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java
+++ b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java
@@ -265,6 +265,7 @@ public final class CraftLegacy {
@@ -53,7 +53,7 @@ index dc591702d1ad41209bb80e8d05f4ca11f20816f2..a63f090e75cf7d6561276c4297305d92
if (MinecraftServer.getServer() != null && MinecraftServer.getServer().isDebugging()) {
new Exception().printStackTrace();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 4ddeff1d34f5e3f7f9c6cfe1c517be0e2d57f86f..49737a87b75c971b823bc1f3a20c17faee9d537c 100644
index 6bbd0021032d1979fc0133f6f859dddcf22c5708..87821e766afe8fa18f9f61a877669068a5f8220a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -239,4 +239,15 @@ public class PurpurConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Disable outdated build check
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
index 22bdc8fe2796940eb971437e1c97d638bfbc42bb..316c5e1460ccf3386c4c8623eabb7f087df8c4b9 100644
index bc0353e4f41680d04f4d5e2dd85640d9e0f06736..b2d60b214b58d9a5fadf3629e5ebc358c904d1c6 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -267,7 +267,7 @@ public class Main {

View File

@@ -5,20 +5,20 @@ Subject: [PATCH] Zombie horse naturally spawn
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index 13541b8d94981705bd32fdd8d8e9c170f9143317..ef645bf72db80a0d085c8bca29bf67cab189ffde 100644
index fc400624a9896f8fd29984c21df70e67b0c32c1d..c4d8ef23a5e384ce554cc3e63e7be3e027d60e44 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -886,10 +886,18 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
@@ -934,10 +934,18 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
boolean flag1 = this.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01D) && !this.getBlockState(blockposition.below()).is(Blocks.LIGHTNING_ROD); // Paper - Configurable spawn chances for skeleton horses
if (flag1) {
- SkeletonHorse entityhorseskeleton = (SkeletonHorse) EntityType.SKELETON_HORSE.create(this);
- SkeletonHorse entityhorseskeleton = (SkeletonHorse) EntityType.SKELETON_HORSE.create(this, EntitySpawnReason.EVENT);
+ // Purpur start
+ net.minecraft.world.entity.animal.horse.AbstractHorse entityhorseskeleton;
+ if (purpurConfig.zombieHorseSpawnChance > 0D && random.nextDouble() <= purpurConfig.zombieHorseSpawnChance) {
+ entityhorseskeleton = EntityType.ZOMBIE_HORSE.create(this);
+ entityhorseskeleton = EntityType.ZOMBIE_HORSE.create(this, EntitySpawnReason.EVENT);
+ } else {
+ entityhorseskeleton = EntityType.SKELETON_HORSE.create(this);
+ entityhorseskeleton = EntityType.SKELETON_HORSE.create(this, EntitySpawnReason.EVENT);
+ if (entityhorseskeleton != null) ((SkeletonHorse) entityhorseskeleton).setTrap(true);
+ }
+ // Purpur end

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Charged creeper naturally spawn
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 e702ba0adfe6b6ace68a9f94f6110fe0d4d0258b..84263f85412039811d9e56a292464158675b5418 100644
index d985f86d320770e73be32740f8f2e874ab08666f..44a3fbaedd0fdb480cde4e2f8a9106965bd5c59d 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
@@ -258,6 +258,14 @@ public class Creeper extends Monster implements PowerableMob {
@@ -257,6 +257,14 @@ public class Creeper extends Monster {
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.creeperScale);
}

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Rabbit naturally spawn toast and killer
diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
index 6f8c6ebf96f1232e127e957f8f392a0656805555..e06445c84aa632429c1647cabab73751f73d2e6c 100644
index 6f3fdf72dd4e8d7399b205818c863e754c898101..b0cdc25f6592d44a3ad3fdf4d461e95887105257 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
@@ -471,10 +471,23 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
@@ -469,10 +469,23 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
}
this.setVariant(entityrabbit_variant);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Tulips change fox type
diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java
index 1133863e0a5f65ec68bf0b11d55a3040b4fde4ff..98e9ad371381350dc3bff7e2a88224a2812d6419 100644
index bb98caa1e5ca711293e50ac82a5cad2fa5972db9..7fe665d9c623fd98a1fd4259a759297de46fe96e 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Fox.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java
@@ -390,6 +390,11 @@ public class Fox extends Animal implements VariantHolder<Fox.Type> {
@@ -384,6 +384,11 @@ public class Fox extends Animal implements VariantHolder<Fox.Variant> {
}
private void setTargetGoals() {
@@ -17,18 +17,18 @@ index 1133863e0a5f65ec68bf0b11d55a3040b4fde4ff..98e9ad371381350dc3bff7e2a88224a2
+ this.targetSelector.removeGoal(this.turtleEggTargetGoal);
+ this.targetSelector.removeGoal(this.fishTargetGoal);
+ // Purpur end
if (this.getVariant() == Fox.Type.RED) {
if (this.getVariant() == Fox.Variant.RED) {
this.targetSelector.addGoal(4, this.landTargetGoal);
this.targetSelector.addGoal(4, this.turtleEggTargetGoal);
@@ -423,6 +428,7 @@ public class Fox extends Animal implements VariantHolder<Fox.Type> {
@@ -413,6 +418,7 @@ public class Fox extends Animal implements VariantHolder<Fox.Variant> {
public void setVariant(Fox.Type variant) {
public void setVariant(Fox.Variant variant) {
this.entityData.set(Fox.DATA_TYPE_ID, variant.getId());
+ this.setTargetGoals(); // Purpur - fix API bug not updating pathfinders on type change
}
List<UUID> getTrustedUUIDs() {
@@ -763,6 +769,29 @@ public class Fox extends Animal implements VariantHolder<Fox.Type> {
@@ -748,6 +754,29 @@ public class Fox extends Animal implements VariantHolder<Fox.Variant> {
}
// Paper end

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Breedable Polar Bears
diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java
index 232f392cf1a1c278acdbbe537c76097ae9610027..cd5856d3c5fdefb22f1ae146e5b64d9d4a64e07c 100644
index f2e205b05213f137ce84b9c5185118f437eec6ff..511d0559743655ed7b43a948fccc2621c906be02 100644
--- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java
+++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java
@@ -99,6 +99,27 @@ public class PolarBear extends Animal implements NeutralMob {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Chickens can retaliate
diff --git a/src/main/java/net/minecraft/world/entity/animal/Chicken.java b/src/main/java/net/minecraft/world/entity/animal/Chicken.java
index 08fd9551baa462c2d3ac2bc20622c7867b5c6444..10101c733154f9e9c725e60e565f735bda14bf5f 100644
index 9d3c5340b9e16117fbc63f184fe92cf7ae0998be..798a59046c3ac9a3838f7bcaf7bb21e738b76e44 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java
@@ -74,6 +74,9 @@ public class Chicken extends Animal {
@@ -73,6 +73,9 @@ public class Chicken extends Animal {
public void initAttributes() {
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.chickenMaxHealth);
this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.chickenScale);
@@ -18,7 +18,7 @@ index 08fd9551baa462c2d3ac2bc20622c7867b5c6444..10101c733154f9e9c725e60e565f735b
}
// Purpur end
@@ -81,7 +84,7 @@ public class Chicken extends Animal {
@@ -80,7 +83,7 @@ public class Chicken extends Animal {
protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this));
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
@@ -27,7 +27,7 @@ index 08fd9551baa462c2d3ac2bc20622c7867b5c6444..10101c733154f9e9c725e60e565f735b
this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D));
this.goalSelector.addGoal(3, new TemptGoal(this, 1.0D, (itemstack) -> {
return itemstack.is(ItemTags.CHICKEN_FOOD);
@@ -90,6 +93,14 @@ public class Chicken extends Animal {
@@ -89,6 +92,14 @@ public class Chicken 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));
@@ -42,12 +42,12 @@ index 08fd9551baa462c2d3ac2bc20622c7867b5c6444..10101c733154f9e9c725e60e565f735b
}
@Override
@@ -98,7 +109,7 @@ public class Chicken extends Animal {
@@ -97,7 +108,7 @@ public class Chicken extends Animal {
}
public static AttributeSupplier.Builder createAttributes() {
- return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 4.0D).add(Attributes.MOVEMENT_SPEED, 0.25D);
+ return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 4.0D).add(Attributes.MOVEMENT_SPEED, 0.25D).add(Attributes.ATTACK_DAMAGE, 0.0D); // Purpur
- return Animal.createAnimalAttributes().add(Attributes.MAX_HEALTH, 4.0D).add(Attributes.MOVEMENT_SPEED, 0.25D);
+ return Animal.createAnimalAttributes().add(Attributes.MAX_HEALTH, 4.0D).add(Attributes.MOVEMENT_SPEED, 0.25D).add(Attributes.ATTACK_DAMAGE, 0.0D); // Purpur
}
@Override

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add option to set armorstand step height
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 624df1834b25ae8a02596fa582fb9030b99107d2..2fc9f26af5aaa41762c48010f08fc3d17d24bdfe 100644
index e8f21091fe1d6043dcc4588d571f20f7bbda0901..fc40e7ec07b7741d12095a25a8408f030904eab8 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -343,6 +343,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -14,9 +14,9 @@ index 624df1834b25ae8a02596fa582fb9030b99107d2..2fc9f26af5aaa41762c48010f08fc3d1
public double zOld;
+ public float maxUpStep; // Purpur
public boolean noPhysics;
private boolean wasOnFire;
public final RandomSource random;
public int tickCount;
@@ -4890,7 +4891,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -5111,7 +5112,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
public float maxUpStep() {
@@ -26,10 +26,10 @@ index 624df1834b25ae8a02596fa582fb9030b99107d2..2fc9f26af5aaa41762c48010f08fc3d1
public void onExplosionHit(@Nullable Entity entity) {}
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 c292f58ba4b29395484dbbf8591e455f449581d8..8d360dc542099af90f0c11839c12910859f0402b 100644
index 70b8023c3badc745f342d5b0ab54699e3923826a..edb0cd90e28016c44b0aaf5c9ed5d7bdbced5295 100644
--- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
+++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
@@ -683,6 +683,7 @@ public class ArmorStand extends LivingEntity {
@@ -681,6 +681,7 @@ public class ArmorStand extends LivingEntity {
@Override
public void tick() {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Cat spawning options
diff --git a/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java b/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java
index e0e5046c84941a8d17e18c177f3daea9cb631940..d503d7a5837dbeb98e58dbe8f7e5de45f6d88990 100644
index b0236c7bf9441aa84d3795ffed05dd6099f29636..796dcc0dcf9022b455b8847e045266b8802da0cf 100644
--- a/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java
+++ b/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java
@@ -27,7 +27,7 @@ public class CatSpawner implements CustomSpawner {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Cows eat mushrooms
diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java
index 854348e18db134be2ed86272e269679a14c0e725..c9f63f3716b37dbf5f4bb4c66b78ba0b97edd686 100644
index 8229a99d4454df64def52bbf686183284d62c900..7f7d68d09b070c24ba1567967c5d228c73fd14b9 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Cow.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java
@@ -74,7 +74,7 @@ public class Cow extends Animal {
@@ -20,7 +20,7 @@ index 854348e18db134be2ed86272e269679a14c0e725..c9f63f3716b37dbf5f4bb4c66b78ba0b
@@ -136,6 +136,10 @@ public class Cow extends Animal {
player.setItemInHand(hand, itemstack1);
return InteractionResult.sidedSuccess(this.level().isClientSide);
return InteractionResult.SUCCESS;
+ // Purpur start - feed mushroom to change to mooshroom
+ } else if (level().purpurConfig.cowFeedMushrooms > 0 && this.getType() != EntityType.MOOSHROOM && isMushroom(itemstack)) {
+ return this.feedMushroom(player, itemstack);

View File

@@ -0,0 +1,24 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Fri, 3 May 2019 23:53:16 -0500
Subject: [PATCH] Fix cow rotation when shearing mooshroom
diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java
index 358f8d6650ed9820e7378d29f993b71504e779f3..2382b82d3d4c09e50e62dd353b4a1149ec9169b4 100644
--- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java
+++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java
@@ -217,6 +217,13 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder<Mushroo
world.playSound((Player) null, (Entity) this, SoundEvents.MOOSHROOM_SHEAR, shearedSoundCategory, 1.0F, 1.0F);
this.convertTo(EntityType.COW, ConversionParams.single(this, false, false), (entitycow) -> {
world.sendParticles(ParticleTypes.EXPLOSION, this.getX(), this.getY(0.5D), this.getZ(), 1, 0.0D, 0.0D, 0.0D, 0.0D);
+ // Purpur start
+ entitycow.copyPosition(this);
+ entitycow.yBodyRot = this.yBodyRot;
+ entitycow.setYHeadRot(this.getYHeadRot());
+ entitycow.yRotO = this.yRotO;
+ entitycow.xRotO = this.xRotO;
+ // Purpur end
// Paper start - custom shear drops; moved drop generation to separate method
drops.forEach(itemstack1 -> {
for (final ItemStack drop : drops) {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Pigs give saddle back
diff --git a/src/main/java/net/minecraft/world/entity/animal/Pig.java b/src/main/java/net/minecraft/world/entity/animal/Pig.java
index d45346a32298879c386246b804763353fe005fb8..51ffdfa038cb1be279da71d691d54728731c186e 100644
index 8b9318713764f8429221b4f6fb162018408f5e1e..294545914dec0a06eadb6c2f139222b3f1a6f64c 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Pig.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Pig.java
@@ -179,6 +179,17 @@ public class Pig extends Animal implements ItemSteerable, Saddleable {
@@ -180,6 +180,17 @@ public class Pig extends Animal implements ItemSteerable, Saddleable {
public InteractionResult mobInteract(Player player, InteractionHand hand) {
boolean flag = this.isFood(player.getItemInHand(hand));

View File

@@ -5,13 +5,13 @@ Subject: [PATCH] Snowman drop and put back pumpkin
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 9be197302153ea384ab5459d586d497fb9d69500..dc5af0b71ec82a8f22e64b03950e35845110a331 100644
index 607c6c5fa38892d8c1d1f9fffc9ccc8617d2140d..bfdb0c52db44e7cc4f37fd42a22c8dae2cc28fac 100644
--- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
+++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
@@ -190,6 +190,14 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
@@ -204,6 +204,14 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
}
return InteractionResult.sidedSuccess(this.level().isClientSide);
return InteractionResult.SUCCESS;
+ // Purpur start
+ } else if (level().purpurConfig.snowGolemPutPumpkinBack && !hasPumpkin() && itemstack.getItem() == Blocks.CARVED_PUMPKIN.asItem()) {
+ setPumpkin(true);

View File

@@ -5,11 +5,11 @@ Subject: [PATCH] Ender dragon always drop full exp
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 7060bb491ecec866837ea4d50b6607c6d31482e6..cc5fd3d020187adcbd20d4947beb353b291bdfd1 100644
index 0faae8faeba4300a44b8dadedc73c9f1a4022e4f..f356110850dd71d066243ec29853f547d94e4400 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
@@ -763,7 +763,7 @@ public class EnderDragon extends Mob implements Enemy {
boolean flag = this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT);
@@ -732,7 +732,7 @@ public class EnderDragon extends Mob implements Enemy {
boolean flag = worldserver.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT);
short short0 = 500;
- if (this.dragonFight != null && !this.dragonFight.hasPreviouslyKilledDragon()) {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Allow soil to moisten from water directly under it
diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java
index d59e33e7326489c6d55d316d0130f22235f4c63c..da85fabd75e9bd5ebece7127ef5b512df16fe3ac 100644
index c3dba0c2c94f3804338f86621dc42405e380a6b3..df89b18f0d5d2dad5745ec65bcd9e4a7bf2f1f2b 100644
--- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java
@@ -172,7 +172,7 @@ public class FarmBlock extends Block {
@@ -174,7 +174,7 @@ public class FarmBlock extends Block {
}
}

View File

@@ -5,11 +5,11 @@ Subject: [PATCH] Minecart settings and WASD controls
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index fe0bbaec0a47305da244bbca7b9ce64015ea39b8..f9d2cb898e8f19accf30de609b5f0b1ef17fa9c7 100644
index 00a768a9bef0f60ee43e6e1becc6ba9424ba6dda..badcca42c771bf39b128c2e123be3c0aeb6b8e76 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1182,6 +1182,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
if (this.isInvulnerableTo(source)) {
@@ -1435,6 +1435,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
if (this.isInvulnerableTo(world, source)) {
return false;
} else {
+ if (source.is(DamageTypeTags.IS_FALL) && getRootVehicle() instanceof net.minecraft.world.entity.vehicle.AbstractMinecart && level().purpurConfig.minecartControllable && !level().purpurConfig.minecartControllableFallDamage) return false; // Purpur
@@ -17,10 +17,10 @@ index fe0bbaec0a47305da244bbca7b9ce64015ea39b8..f9d2cb898e8f19accf30de609b5f0b1e
if (!flag && this.spawnInvulnerableTime > 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) {
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 f403fc311a974558233028663dbe14c27b27d3f9..9ad276a73cba04edbe48f828031a15727d768a5b 100644
index d8fcd6d1edec1f31a861fab4b86cbeb15ddc799d..c328f4155c0c4cc4f590d9d7a992497d8d129421 100644
--- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
+++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
@@ -102,12 +102,14 @@ public abstract class AbstractMinecart extends VehicleEntity {
@@ -92,6 +92,7 @@ public abstract class AbstractMinecart extends VehicleEntity {
private double flyingY = 0.95;
private double flyingZ = 0.95;
public double maxSpeed = 0.4D;
@@ -28,14 +28,15 @@ index f403fc311a974558233028663dbe14c27b27d3f9..9ad276a73cba04edbe48f828031a1572
// CraftBukkit end
protected AbstractMinecart(EntityType<?> type, Level world) {
super(type, world);
this.targetDeltaMovement = Vec3.ZERO;
this.blocksBuilding = true;
@@ -102,6 +103,7 @@ public abstract class AbstractMinecart extends VehicleEntity {
} else {
this.behavior = new OldMinecartBehavior(this);
}
+ if (world != null) maxSpeed = storedMaxSpeed = world.purpurConfig.minecartMaxSpeed; // Purpur
}
protected AbstractMinecart(EntityType<?> type, Level world, double x, double y, double z) {
@@ -296,6 +298,12 @@ public abstract class AbstractMinecart extends VehicleEntity {
@@ -288,6 +290,12 @@ public abstract class AbstractMinecart extends VehicleEntity {
@Override
public void tick() {
@@ -48,9 +49,9 @@ index f403fc311a974558233028663dbe14c27b27d3f9..9ad276a73cba04edbe48f828031a1572
// CraftBukkit start
double prevX = this.getX();
double prevY = this.getY();
@@ -448,16 +456,62 @@ public abstract class AbstractMinecart extends VehicleEntity {
public void activateMinecart(int x, int y, int z, boolean powered) {}
@@ -425,16 +433,62 @@ public abstract class AbstractMinecart extends VehicleEntity {
this.behavior.moveAlongTrack(world);
}
+ // Purpur start
+ private Double lastSpeed;
@@ -71,8 +72,8 @@ index f403fc311a974558233028663dbe14c27b27d3f9..9ad276a73cba04edbe48f828031a1572
+ }
+ // Purpur end
+
protected void comeOffTrack() {
double d0 = this.getMaxSpeed();
protected void comeOffTrack(ServerLevel world) {
double d0 = this.getMaxSpeed(world);
Vec3 vec3d = this.getDeltaMovement();
this.setDeltaMovement(Mth.clamp(vec3d.x, -d0, d0), vec3d.y, Mth.clamp(vec3d.z, -d0, d0));
@@ -101,7 +102,7 @@ index f403fc311a974558233028663dbe14c27b27d3f9..9ad276a73cba04edbe48f828031a1572
+ maxUpStep = 0.0F;
+ }
+ // Purpur end
+
+
if (this.onGround()) {
// CraftBukkit start - replace magic numbers with our variables
this.setDeltaMovement(new Vec3(this.getDeltaMovement().x * this.derailedX, this.getDeltaMovement().y * this.derailedY, this.getDeltaMovement().z * this.derailedZ));
@@ -112,41 +113,41 @@ index f403fc311a974558233028663dbe14c27b27d3f9..9ad276a73cba04edbe48f828031a1572
this.move(MoverType.SELF, this.getDeltaMovement());
if (!this.onGround()) {
diff --git a/src/main/java/net/minecraft/world/item/MinecartItem.java b/src/main/java/net/minecraft/world/item/MinecartItem.java
index d524fcc191cb95d6ec7f12ae7fceeb8077bb08fc..4b8cebb321eddc852b4ec7def7f51d781f67927b 100644
index 7153d9ed12276a0f2d8b8a17c79734aa25ed1fa5..dc49ea6454e04ae8ec68af12c4bf2ff022540671 100644
--- a/src/main/java/net/minecraft/world/item/MinecartItem.java
+++ b/src/main/java/net/minecraft/world/item/MinecartItem.java
@@ -120,8 +120,9 @@ public class MinecartItem extends Item {
@@ -35,8 +35,9 @@ public class MinecartItem extends Item {
BlockState iblockdata = world.getBlockState(blockposition);
if (!iblockdata.is(BlockTags.RAILS)) {
- return InteractionResult.FAIL;
- } else {
+ if (!world.purpurConfig.minecartPlaceAnywhere) return InteractionResult.FAIL;
+ if (!world.purpurConfig.minecartPlaceAnywhere) return InteractionResult.FAIL; // Purpur
+ if (iblockdata.isSolid()) blockposition = blockposition.relative(context.getClickedFace());
+ } // else { // Purpur - place minecarts anywhere
ItemStack itemstack = context.getItemInHand();
if (world instanceof ServerLevel) {
@@ -147,6 +148,6 @@ public class MinecartItem extends Item {
itemstack.shrink(1);
return InteractionResult.sidedSuccess(world.isClientSide);
RailShape blockpropertytrackposition = iblockdata.getBlock() instanceof BaseRailBlock ? (RailShape) iblockdata.getValue(((BaseRailBlock) iblockdata.getBlock()).getShapeProperty()) : RailShape.NORTH_SOUTH;
double d0 = 0.0D;
@@ -80,6 +81,6 @@ public class MinecartItem extends Item {
itemstack.shrink(1);
return InteractionResult.SUCCESS;
}
- }
+ // } // Purpur - place minecarts anywhere
}
}
diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
index d0109633e8bdf109cfc9178963d7b6cf92f8b189..dd607038f42a73f6311d7a6003a2cf57c1589c83 100644
index 99fd67a78539133adf78d65e2c520ff3dd260301..6b987ee220d94b482d2aeb4ff6bf271853605dc1 100644
--- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
+++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
@@ -94,7 +94,7 @@ public abstract class BlockBehaviour implements FeatureElement {
@@ -99,7 +99,7 @@ public abstract class BlockBehaviour implements FeatureElement {
protected final float jumpFactor;
protected final boolean dynamicShape;
protected final FeatureFlagSet requiredFeatures;
- protected final BlockBehaviour.Properties properties;
+ public final BlockBehaviour.Properties properties; // Purpur - protected -> public
@Nullable
protected ResourceKey<LootTable> drops;
protected final Optional<ResourceKey<LootTable>> drops;
protected final String descriptionId;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index c5b3a04d81834d6bdf7c4acd06ce4929d7a25769..2591b4f0d0e4e4d9e77efb821c9ae775182713b6 100644

View File

@@ -5,20 +5,18 @@ Subject: [PATCH] Disable loot drops on death by cramming
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index df19c74439e8855410446201135a997efcc88c24..b4c50e28cad3a063c2168cd9a813dfc6349d86e3 100644
index 2e6701b5dc8bd67cf018b65a7ce5cb2ed6925aa0..8ebd43c8088523396a4f46b8b0083f91e2b55e27 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1880,7 +1880,8 @@ public abstract class LivingEntity extends Entity implements Attackable {
boolean flag = this.lastHurtByPlayerTime > 0;
@@ -1910,6 +1910,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.dropEquipment(); // CraftBukkit - from below
- if (this.shouldDropLoot() && world.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
+ if (this.shouldDropLoot() && this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
this.dropEquipment(world); // CraftBukkit - from below
if (this.shouldDropLoot() && world.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
+ if (!(damageSource.is(net.minecraft.world.damagesource.DamageTypes.CRAMMING) && level().purpurConfig.disableDropsOnCrammingDeath)) { // Purpur
this.dropFromLootTable(damageSource, flag);
this.dropFromLootTable(world, damageSource, flag);
// Paper start
final boolean prev = this.clearEquipmentSlots;
@@ -1889,6 +1890,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -1918,6 +1919,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
// Paper end
this.dropCustomDeathLoot(world, damageSource, flag);
this.clearEquipmentSlots = prev; // Paper

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Skip events if there's no listeners
diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
index 5af48400f87500166dd889c57a8df0aadb08d43d..058d13f681d7aa616846b4b6d24c668da703eb34 100644
index 260350422fc724ba5cd5769cbb387b6007f36a84..b7783480cc6a51a1f18789b7f3fc35faf5573f8d 100644
--- a/src/main/java/net/minecraft/commands/Commands.java
+++ b/src/main/java/net/minecraft/commands/Commands.java
@@ -509,6 +509,7 @@ public class Commands {
@@ -514,6 +514,7 @@ public class Commands {
private void runSync(ServerPlayer player, Collection<String> bukkit, RootCommandNode<SharedSuggestionProvider> rootcommandnode) {
// Paper end - Perf: Async command map building
new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent<CommandSourceStack>(player.getBukkitEntity(), (RootCommandNode) rootcommandnode, true).callEvent(); // Paper - Brigadier API
@@ -16,7 +16,7 @@ index 5af48400f87500166dd889c57a8df0aadb08d43d..058d13f681d7aa616846b4b6d24c668d
PlayerCommandSendEvent event = new PlayerCommandSendEvent(player.getBukkitEntity(), new LinkedHashSet<>(bukkit));
event.getPlayer().getServer().getPluginManager().callEvent(event);
@@ -519,6 +520,7 @@ public class Commands {
@@ -524,6 +525,7 @@ public class Commands {
}
}
// CraftBukkit end

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add permission for F3+N debug
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 59a61a6160ff84f04541822aef5e99e5136ed34c..c8c1510b220c4b26e2c1d26c9386a5e55ba0a0e6 100644
index 7ec26117aa6d98140e994567fd0ded33d308e3d4..e8f43bcf810b200f0dfcac6feae7761f54dda6fe 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1143,6 +1143,7 @@ public abstract class PlayerList {
@@ -1102,6 +1102,7 @@ public abstract class PlayerList {
} else {
b0 = (byte) (24 + permissionLevel);
}

View File

@@ -5,20 +5,22 @@ Subject: [PATCH] Configurable TPS Catchup
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 8ba26b557a97668b67c317e0d2b137e5204d15db..f200a105bd3f5013d0590f1a10d4edc08ad745d1 100644
index a75972eb4a4ad285982bb6dc5faf661123df9817..8719173e50ec2313cb44905b52e5dbe7fb264374 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1316,7 +1316,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.mayHaveDelayedTasks = true;
this.delayedTasksMaxNextTickTimeNanos = Math.max(Util.getNanos() + i, this.nextTickTimeNanos);
// Pufferfish start - tps catchup
- if (!gg.pufferfish.pufferfish.PufferfishConfig.tpsCatchup) {
+ if (!org.purpurmc.purpur.PurpurConfig.tpsCatchup || !gg.pufferfish.pufferfish.PufferfishConfig.tpsCatchup) { // Purpur
this.nextTickTimeNanos = currentTime + i;
this.delayedTasksMaxNextTickTimeNanos = nextTickTimeNanos;
}
@@ -1309,6 +1309,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
gameprofilerfiller.popPush("nextTickWait");
this.mayHaveDelayedTasks = true;
this.delayedTasksMaxNextTickTimeNanos = Math.max(Util.getNanos() + i, this.nextTickTimeNanos);
+ if (!org.purpurmc.purpur.PurpurConfig.tpsCatchup /*|| !gg.pufferfish.pufferfish.PufferfishConfig.tpsCatchup*/) { // Purpur // Purpur - TODO: Pufferfish
+ this.nextTickTimeNanos = currentTime + i;
+ this.delayedTasksMaxNextTickTimeNanos = nextTickTimeNanos;
+ }
this.startMeasuringTaskExecutionTime();
this.waitUntilNextTick();
this.finishMeasuringTaskExecutionTime();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 49737a87b75c971b823bc1f3a20c17faee9d537c..5fc5ae6f6e04e1fe4edfd22379bbfa52b5af0bc2 100644
index 87821e766afe8fa18f9f61a877669068a5f8220a..ed49a5131ca86b60a4d7f5c8ee61a7868dddc179 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -250,4 +250,9 @@ public class PurpurConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add option to allow loyalty on tridents to work in the void
diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java
index 44c733c5b2c3e9942f28e882ad72306a24459c2c..bebaa347ddcc9f54f888fa1bc20a77c6a64c90e3 100644
index 322733266fdca8ce43434a8ffea304c51794bcbb..489c26423a7f5bc9da45d247de57ec989cc74119 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java
@@ -69,7 +69,7 @@ public class ThrownTrident extends AbstractArrow {
@@ -15,20 +15,19 @@ index 44c733c5b2c3e9942f28e882ad72306a24459c2c..bebaa347ddcc9f54f888fa1bc20a77c6
- if (b0 > 0 && (this.dealtDamage || this.isNoPhysics()) && entity != null) {
+ if (b0 > 0 && (this.dealtDamage || this.isNoPhysics() || (level().purpurConfig.tridentLoyaltyVoidReturnHeight < 0.0D && getY() < level().purpurConfig.tridentLoyaltyVoidReturnHeight)) && entity != null) { // Purpur
if (!this.isAcceptibleReturnOwner()) {
if (!this.level().isClientSide && this.pickup == AbstractArrow.Pickup.ALLOWED) {
this.spawnAtLocation(this.getPickupItem(), 0.1F);
Level world = this.level();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 3273ac8bb8f836ea9d2d5d304985ca8152eb2d4a..9e97ab198ad30002f0513d766a1286dadb738e23 100644
index 830ba18f1695bbf4099a9579166e29618206ba83..68e417cbe0c633528b1a064d64a061c0576ef3f8 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -98,9 +98,11 @@ public class PurpurWorldConfig {
@@ -97,8 +97,10 @@ public class PurpurWorldConfig {
}
public boolean disableDropsOnCrammingDeath = false;
public boolean milkCuresBadOmen = true;
+ public double tridentLoyaltyVoidReturnHeight = 0.0D;
private void miscGameplayMechanicsSettings() {
disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath);
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
+ tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight);
}

View File

@@ -5,43 +5,43 @@ Subject: [PATCH] Add enderman and creeper griefing controls
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 84263f85412039811d9e56a292464158675b5418..576d8288a9a5e39479623cac6cbf0f2cc81096db 100644
index 44a3fbaedd0fdb480cde4e2f8a9106965bd5c59d..397509198ab1e7ee275d86fac57ba52445276284 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
@@ -362,7 +362,7 @@ public class Creeper extends Monster implements PowerableMob {
@@ -362,7 +362,7 @@ public class Creeper extends Monster {
if (!event.isCancelled()) {
// CraftBukkit end
this.dead = true;
- this.level().explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.MOB); // CraftBukkit // Paper - fix DamageSource API (revert to vanilla, no, just no, don't change this)
+ this.level().explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), this.level().getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING) && level().purpurConfig.creeperAllowGriefing ? Level.ExplosionInteraction.MOB : Level.ExplosionInteraction.NONE); // CraftBukkit // Paper - fix DamageSource API (revert to vanilla, no, just no, don't change this) // Purpur
- worldserver.explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), Level.ExplosionInteraction.MOB); // CraftBukkit // Paper - fix DamageSource API (revert to vanilla, no, just no, don't change this)
+ worldserver.explode(this, this.getX(), this.getY(), this.getZ(), event.getRadius(), event.getFire(), this.level().getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING) && level().purpurConfig.creeperAllowGriefing ? Level.ExplosionInteraction.MOB : Level.ExplosionInteraction.NONE); // CraftBukkit // Paper - fix DamageSource API (revert to vanilla, no, just no, don't change this) // Purpur
this.spawnLingeringCloud();
this.triggerOnDeathMobEffects(Entity.RemovalReason.KILLED);
this.triggerOnDeathMobEffects(worldserver, Entity.RemovalReason.KILLED);
this.discard(EntityRemoveEvent.Cause.EXPLODE); // CraftBukkit - add Bukkit remove cause
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 aa97f7ce1117c57c1b77dd9a8bb6afbffe51e205..108dca0b1b97e01fd9cadf4ae330fab770fce0c8 100644
index 5caee77e2516afa4edc463e5a8a6b6e610cc04c5..437368100f6205b4c42234713044be47fda7082d 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
@@ -533,6 +533,7 @@ public class EnderMan extends Monster implements NeutralMob {
@@ -514,6 +514,7 @@ public class EnderMan extends Monster implements NeutralMob {
@Override
public boolean canUse() {
+ if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur
return this.enderman.getCarriedBlock() == null ? false : (!this.enderman.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0);
return this.enderman.getCarriedBlock() == null ? false : (!getServerLevel((Entity) this.enderman).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0);
}
@@ -578,6 +579,7 @@ public class EnderMan extends Monster implements NeutralMob {
@@ -559,6 +560,7 @@ public class EnderMan extends Monster implements NeutralMob {
@Override
public boolean canUse() {
+ if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur
return this.enderman.getCarriedBlock() != null ? false : (!this.enderman.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.enderman.getRandom().nextInt(reducedTickDelay(20)) == 0);
return this.enderman.getCarriedBlock() != null ? false : (!getServerLevel((Entity) this.enderman).getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.enderman.getRandom().nextInt(reducedTickDelay(20)) == 0);
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 9e97ab198ad30002f0513d766a1286dadb738e23..016b4f2074efa57a597b765b1b4a2474ab873c00 100644
index 68e417cbe0c633528b1a064d64a061c0576ef3f8..e9e999d06fec2918fc2ee0fed05f8fb88b9675c1 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -487,6 +487,7 @@ public class PurpurWorldConfig {
@@ -485,6 +485,7 @@ public class PurpurWorldConfig {
public double creeperMaxHealth = 20.0D;
public double creeperScale = 1.0D;
public double creeperChargedChance = 0.0D;
@@ -49,7 +49,7 @@ index 9e97ab198ad30002f0513d766a1286dadb738e23..016b4f2074efa57a597b765b1b4a2474
private void creeperSettings() {
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
@@ -499,6 +500,7 @@ public class PurpurWorldConfig {
@@ -497,6 +498,7 @@ public class PurpurWorldConfig {
creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth);
creeperScale = Mth.clamp(getDouble("mobs.creeper.attributes.scale", creeperScale), 0.0625D, 16.0D);
creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance);
@@ -57,7 +57,7 @@ index 9e97ab198ad30002f0513d766a1286dadb738e23..016b4f2074efa57a597b765b1b4a2474
}
public boolean dolphinRidable = false;
@@ -612,6 +614,7 @@ public class PurpurWorldConfig {
@@ -610,6 +612,7 @@ public class PurpurWorldConfig {
public boolean endermanControllable = true;
public double endermanMaxHealth = 40.0D;
public double endermanScale = 1.0D;
@@ -65,7 +65,7 @@ index 9e97ab198ad30002f0513d766a1286dadb738e23..016b4f2074efa57a597b765b1b4a2474
private void endermanSettings() {
endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
@@ -623,6 +626,7 @@ public class PurpurWorldConfig {
@@ -621,6 +624,7 @@ public class PurpurWorldConfig {
}
endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth);
endermanScale = Mth.clamp(getDouble("mobs.enderman.attributes.scale", endermanScale), 0.0625D, 16.0D);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Villagers follow emerald blocks
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/TemptGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/TemptGoal.java
index 13f8c2cb42334ba3b573ca44ace1d3df76e41ff7..baca552e52c728867fcb0527b6c3eb394b2b9c7f 100644
index 84ab90dd1fe693da71732533ccff940c1007e1b6..179fdf7b7f68db610925a9d7b88879289b1b98b8 100644
--- a/src/main/java/net/minecraft/world/entity/ai/goal/TemptGoal.java
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/TemptGoal.java
@@ -64,7 +64,7 @@ public class TemptGoal extends Goal {
@@ -67,7 +67,7 @@ public class TemptGoal extends Goal {
}
private boolean shouldFollow(LivingEntity entity) {
@@ -18,7 +18,7 @@ index 13f8c2cb42334ba3b573ca44ace1d3df76e41ff7..baca552e52c728867fcb0527b6c3eb39
@Override
diff --git a/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java b/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java
index d28ebcae036168dd65a5f3236d12ee416308c23f..1534f3953bae2cc6ef945aacdf332fceac8940e2 100644
index 5f656fc726a1dc5f42657095a2f2b7cf85b92d7c..6c74cf1dea99b3b967b8c3d76f405f823c881fb9 100644
--- a/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java
@@ -48,6 +48,7 @@ import org.bukkit.event.entity.VillagerAcquireTradeEvent;
@@ -30,11 +30,11 @@ index d28ebcae036168dd65a5f3236d12ee416308c23f..1534f3953bae2cc6ef945aacdf332fce
// CraftBukkit start
@Override
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 91369a00aae35cd51c79882fb53c1b45677890bd..70b8e26baaf15b7cc6363c96647c58219dd3bbab 100644
index 37c26008486ffdf7f1d6bdfd0253067a1c6bf942..448f3cacd0c599eb1841b31b1c3bfc60ba3da7d3 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -156,6 +156,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
this.getNavigation().setCanFloat(true);
@@ -154,6 +154,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
this.getNavigation().setRequiredPathLength(48.0F);
this.setCanPickUpLoot(true);
this.setVillagerData(this.getVillagerData().setType(type).setProfession(VillagerProfession.NONE));
+ if (level().purpurConfig.villagerFollowEmeraldBlock) this.goalSelector.addGoal(3, new net.minecraft.world.entity.ai.goal.TemptGoal(this, 1.0D, TEMPT_ITEMS, false));
@@ -42,10 +42,10 @@ index 91369a00aae35cd51c79882fb53c1b45677890bd..70b8e26baaf15b7cc6363c96647c5821
// Purpur start
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 a4ca761f6e8e6e8f86fc20ce5e3dcf92a66b3f2a..6990d6dc306b1d25544793b365fd6f7be8a37201 100644
index f741aca818bc983b034b3ac9864c1d71c714f9b4..c8f6a6fd0d954346e8651b83e05063e09b53f7f9 100644
--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
+++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
@@ -113,6 +113,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
@@ -114,6 +114,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
this.goalSelector.addGoal(1, new PanicGoal(this, 0.5D));
this.goalSelector.addGoal(1, new LookAtTradingPlayerGoal(this));
this.goalSelector.addGoal(2, new WanderingTrader.WanderToPositionGoal(this, 2.0D, 0.35D));
@@ -54,10 +54,10 @@ index a4ca761f6e8e6e8f86fc20ce5e3dcf92a66b3f2a..6990d6dc306b1d25544793b365fd6f7b
this.goalSelector.addGoal(8, new WaterAvoidingRandomStrollGoal(this, 0.35D));
this.goalSelector.addGoal(9, new InteractGoal(this, Player.class, 3.0F, 1.0F));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 016b4f2074efa57a597b765b1b4a2474ab873c00..d40b9bdb60ec1de2052beedb3abd1b0efdbaa390 100644
index e9e999d06fec2918fc2ee0fed05f8fb88b9675c1..96cc376fb7e32ab9c2d7c8697ad98bfe00c6958a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1575,6 +1575,7 @@ public class PurpurWorldConfig {
@@ -1573,6 +1573,7 @@ public class PurpurWorldConfig {
public boolean villagerControllable = true;
public double villagerMaxHealth = 20.0D;
public double villagerScale = 1.0D;
@@ -65,7 +65,7 @@ index 016b4f2074efa57a597b765b1b4a2474ab873c00..d40b9bdb60ec1de2052beedb3abd1b0e
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
@@ -1586,6 +1587,7 @@ public class PurpurWorldConfig {
@@ -1584,6 +1585,7 @@ public class PurpurWorldConfig {
}
villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth);
villagerScale = Mth.clamp(getDouble("mobs.villager.attributes.scale", villagerScale), 0.0625D, 16.0D);
@@ -73,7 +73,7 @@ index 016b4f2074efa57a597b765b1b4a2474ab873c00..d40b9bdb60ec1de2052beedb3abd1b0e
}
public boolean vindicatorRidable = false;
@@ -1611,6 +1613,7 @@ public class PurpurWorldConfig {
@@ -1609,6 +1611,7 @@ public class PurpurWorldConfig {
public boolean wanderingTraderControllable = true;
public double wanderingTraderMaxHealth = 20.0D;
public double wanderingTraderScale = 1.0D;
@@ -81,7 +81,7 @@ index 016b4f2074efa57a597b765b1b4a2474ab873c00..d40b9bdb60ec1de2052beedb3abd1b0e
private void wanderingTraderSettings() {
wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable);
wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater);
@@ -1622,6 +1625,7 @@ public class PurpurWorldConfig {
@@ -1620,6 +1623,7 @@ public class PurpurWorldConfig {
}
wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth);
wanderingTraderScale = Mth.clamp(getDouble("mobs.wandering_trader.attributes.scale", wanderingTraderScale), 0.0625D, 16.0D);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Allow leashing villagers
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 2fc9f26af5aaa41762c48010f08fc3d17d24bdfe..2bbb185b2f2c4ea93f49a14baedfce83db3134f3 100644
index fc40e7ec07b7741d12095a25a8408f030904eab8..f573cbaa5bf7bc12d6e9405010bf50c13727b350 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2933,6 +2933,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -3083,6 +3083,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
if (this.isAlive() && this instanceof Leashable leashable) {
if (leashable.getLeashHolder() == player) {
if (!this.level().isClientSide()) {
@@ -17,10 +17,10 @@ index 2fc9f26af5aaa41762c48010f08fc3d17d24bdfe..2bbb185b2f2c4ea93f49a14baedfce83
// Paper start - Expand EntityUnleashEvent
org.bukkit.event.player.PlayerUnleashEntityEvent event = CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.hasInfiniteMaterials());
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 70b8e26baaf15b7cc6363c96647c58219dd3bbab..f083de2448e0e6dfa277c58a082b305cdc1e11e7 100644
index 448f3cacd0c599eb1841b31b1c3bfc60ba3da7d3..9008eeae3187024862bef886801d197c4c425df3 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -179,6 +179,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -177,6 +177,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this));
}
@@ -33,10 +33,10 @@ index 70b8e26baaf15b7cc6363c96647c58219dd3bbab..f083de2448e0e6dfa277c58a082b305c
@Override
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 6990d6dc306b1d25544793b365fd6f7be8a37201..0d5e828a7fb6fd6facc04a27175541ac463c918e 100644
index c8f6a6fd0d954346e8651b83e05063e09b53f7f9..7b8b5a7b1fea50c7b238afc4b3d79746da08b641 100644
--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
+++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
@@ -86,6 +86,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
@@ -87,6 +87,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
public boolean isControllable() {
return level().purpurConfig.wanderingTraderControllable;
}
@@ -49,10 +49,10 @@ index 6990d6dc306b1d25544793b365fd6f7be8a37201..0d5e828a7fb6fd6facc04a27175541ac
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index d40b9bdb60ec1de2052beedb3abd1b0efdbaa390..4bce5d936876bf17d81d008e73877c6d5637fb87 100644
index 96cc376fb7e32ab9c2d7c8697ad98bfe00c6958a..d39d2ee00b3a2f487d0c341d4103f04ffe516022 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1576,6 +1576,7 @@ public class PurpurWorldConfig {
@@ -1574,6 +1574,7 @@ public class PurpurWorldConfig {
public double villagerMaxHealth = 20.0D;
public double villagerScale = 1.0D;
public boolean villagerFollowEmeraldBlock = false;
@@ -60,7 +60,7 @@ index d40b9bdb60ec1de2052beedb3abd1b0efdbaa390..4bce5d936876bf17d81d008e73877c6d
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
@@ -1588,6 +1589,7 @@ public class PurpurWorldConfig {
@@ -1586,6 +1587,7 @@ public class PurpurWorldConfig {
villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth);
villagerScale = Mth.clamp(getDouble("mobs.villager.attributes.scale", villagerScale), 0.0625D, 16.0D);
villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock);
@@ -68,7 +68,7 @@ index d40b9bdb60ec1de2052beedb3abd1b0efdbaa390..4bce5d936876bf17d81d008e73877c6d
}
public boolean vindicatorRidable = false;
@@ -1614,6 +1616,7 @@ public class PurpurWorldConfig {
@@ -1612,6 +1614,7 @@ public class PurpurWorldConfig {
public double wanderingTraderMaxHealth = 20.0D;
public double wanderingTraderScale = 1.0D;
public boolean wanderingTraderFollowEmeraldBlock = false;
@@ -76,7 +76,7 @@ index d40b9bdb60ec1de2052beedb3abd1b0efdbaa390..4bce5d936876bf17d81d008e73877c6d
private void wanderingTraderSettings() {
wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable);
wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater);
@@ -1626,6 +1629,7 @@ public class PurpurWorldConfig {
@@ -1624,6 +1627,7 @@ public class PurpurWorldConfig {
wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth);
wanderingTraderScale = Mth.clamp(getDouble("mobs.wandering_trader.attributes.scale", wanderingTraderScale), 0.0625D, 16.0D);
wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock);

View File

@@ -1,24 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Fri, 3 May 2019 23:53:16 -0500
Subject: [PATCH] Fix cow rotation when shearing mooshroom
diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java
index b47dddb2fc6058a90665ccbd362088d9a2e837b5..41b52f128fbc174939a7f2d1cd937ab19432de25 100644
--- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java
+++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java
@@ -218,7 +218,13 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder<Mushroo
// this.discard(); // CraftBukkit - moved down
entitycow.moveTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot());
entitycow.setHealth(this.getHealth());
+ // Purpur start
+ entitycow.copyPosition(this);
entitycow.yBodyRot = this.yBodyRot;
+ entitycow.setYHeadRot(this.getYHeadRot());
+ entitycow.yRotO = this.yRotO;
+ entitycow.xRotO = this.xRotO;
+ // Purpur end
if (this.hasCustomName()) {
entitycow.setCustomName(this.getCustomName());
entitycow.setCustomNameVisible(this.isCustomNameVisible());