9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-21 07:59:26 +00:00

Updated Upstream (Paper/Purpur)

Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@a9399451 Fixup sendAllDataToRemote calls
PaperMC/Paper@cb47e018 Remove more dead code, fix pre-existing desync when cancelling and closing container
PaperMC/Paper@40764534 Specify the class loader when loading services (#12829)
PaperMC/Paper@1bf6364b Update Mache for horse decompile fix
PaperMC/Paper@76fb5060 Add vanilla error message to precondition for DialogBaseImpl (#12831)

Purpur Changes:
PurpurMC/Purpur@5b26bab8 Updated Upstream (Paper)
PurpurMC/Purpur@8734844b sigh...
PurpurMC/Purpur@09ea9cb9 fix mobs not burning in daylight (#1689)
PurpurMC/Purpur@4d5a8e6e Updated Upstream (Paper)
PurpurMC/Purpur@7dbe4153 Add support for "/chase", a disabled Minecraft command. (#1690)
PurpurMC/Purpur@11c030a8 Updated Upstream (Paper)
This commit is contained in:
Dreeam
2025-07-12 18:14:29 +08:00
parent 2c1a3f706a
commit ccf2f9c0d2
22 changed files with 177 additions and 136 deletions

View File

@@ -2,7 +2,7 @@ group=cn.dreeam.leaf
mcVersion=1.21.7 mcVersion=1.21.7
version=1.21.7-R0.1-SNAPSHOT version=1.21.7-R0.1-SNAPSHOT
paperCommit=b4466ec981d104c4756d1a3b90c2ee0d6ce4e6bd paperCommit=76fb5060c1f02993d4448cae3b19116ae4f0b053
org.gradle.configuration-cache=true org.gradle.configuration-cache=true
org.gradle.caching=true org.gradle.caching=true

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Purpur API Changes
Original license: MIT Original license: MIT
Original project: https://github.com/PurpurMC/Purpur Original project: https://github.com/PurpurMC/Purpur
Commit: 2d8cdd15c79fce29455eaf8bedfc203bd16ca4d7 Commit: 11c030a8f81b2f845a9f2749790692c2d152f284
Patches listed below are removed in this patch, They exists in Gale or Leaf: Patches listed below are removed in this patch, They exists in Gale or Leaf:
* "co/aikar/timings/TimedEventExecutor.java.patch" * "co/aikar/timings/TimedEventExecutor.java.patch"

View File

@@ -3,6 +3,9 @@ From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com>
Date: Fri, 11 Jul 2025 06:10:41 +0800 Date: Fri, 11 Jul 2025 06:10:41 +0800
Subject: [PATCH] Fix infinite loop in dismount loc check Subject: [PATCH] Fix infinite loop in dismount loc check
Removed since Leaf 1.21.7, fixed in Paper (mache) side,
Very fun VineFlower decompile issue.
Invert the condition to prevent infinite loop Invert the condition to prevent infinite loop
diff --git a/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/net/minecraft/world/entity/animal/horse/AbstractHorse.java diff --git a/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/net/minecraft/world/entity/animal/horse/AbstractHorse.java

View File

@@ -7,7 +7,7 @@
+val leafMavenPublicUrl = "https://maven.nostal.ink/repository/maven-snapshots/" // Leaf - project setup - Add publish repo +val leafMavenPublicUrl = "https://maven.nostal.ink/repository/maven-snapshots/" // Leaf - project setup - Add publish repo
dependencies { dependencies {
mache("io.papermc:mache:1.21.7+build.1") mache("io.papermc:mache:1.21.7+build.2")
- paperclip("io.papermc:paperclip:3.0.3") - paperclip("io.papermc:paperclip:3.0.3")
+ paperclip("cn.dreeam:quantumleaper:1.0.0-SNAPSHOT") // Leaf - project setup - Use own paperclip fork + paperclip("cn.dreeam:quantumleaper:1.0.0-SNAPSHOT") // Leaf - project setup - Use own paperclip fork
testRuntimeOnly("org.junit.platform:junit-platform-launcher") testRuntimeOnly("org.junit.platform:junit-platform-launcher")

View File

@@ -1079,7 +1079,7 @@ index b4c983216cd839d793a09e327bb2f15ab90cbff8..1413511500ce8ae25cc4af1d54fc33c8
for (Entity entity : passengerEntity.getPassengers()) { for (Entity entity : passengerEntity.getPassengers()) {
this.tickPassenger(passengerEntity, entity, isActive); // Paper - EAR 2 this.tickPassenger(passengerEntity, entity, isActive); // Paper - EAR 2
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 21ae237a94232090029539652310f7d1e4aba381..4132ebc316af92aedd3b5f21d291e7d57560e985 100644 index 163ede7fe353417942a98f9bd2757fc0f133b418..c37c86e837fa8894172e65031d3d41b9281cacab 100644
--- a/net/minecraft/server/level/ServerPlayer.java --- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java
@@ -106,8 +106,6 @@ import net.minecraft.util.HashOps; @@ -106,8 +106,6 @@ import net.minecraft.util.HashOps;
@@ -1234,7 +1234,7 @@ index 64b0508ef21952c65b0b967b756b2a4c64d96899..b6b03fbbd669e6331b30255df5419611
protected abstract T prepare(ResourceManager resourceManager, ProfilerFiller profiler); protected abstract T prepare(ResourceManager resourceManager, ProfilerFiller profiler);
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 162dfba21cee2f3a9eb8403bf04aa3de5211a31c..31a939facfd4b506a2cff3cee6e4b86a12b1d343 100644 index ff5e165a51dd8e15bb4b42e7ba27449d8f27d0cf..397bf42ef1d83cc242ca8228cd28e5f862da72d7 100644
--- a/net/minecraft/world/entity/Entity.java --- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java
@@ -80,8 +80,6 @@ import net.minecraft.tags.TagKey; @@ -80,8 +80,6 @@ import net.minecraft.tags.TagKey;
@@ -1306,7 +1306,7 @@ index 162dfba21cee2f3a9eb8403bf04aa3de5211a31c..31a939facfd4b506a2cff3cee6e4b86a
} }
} }
// Paper start - detailed watchdog information // Paper start - detailed watchdog information
@@ -3407,8 +3394,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -3406,8 +3393,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
this.processPortalCooldown(); this.processPortalCooldown();
if (this.portalProcess != null) { if (this.portalProcess != null) {
if (this.portalProcess.processPortalTeleportation(serverLevel, this, this.canUsePortal(false))) { if (this.portalProcess.processPortalTeleportation(serverLevel, this, this.canUsePortal(false))) {
@@ -1315,7 +1315,7 @@ index 162dfba21cee2f3a9eb8403bf04aa3de5211a31c..31a939facfd4b506a2cff3cee6e4b86a
this.setPortalCooldown(); this.setPortalCooldown();
TeleportTransition portalDestination = this.portalProcess.getPortalDestination(serverLevel, this); TeleportTransition portalDestination = this.portalProcess.getPortalDestination(serverLevel, this);
if (portalDestination != null) { if (portalDestination != null) {
@@ -3419,7 +3404,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -3418,7 +3403,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
} }
} }
@@ -1323,7 +1323,7 @@ index 162dfba21cee2f3a9eb8403bf04aa3de5211a31c..31a939facfd4b506a2cff3cee6e4b86a
} else if (this.portalProcess.hasExpired()) { } else if (this.portalProcess.hasExpired()) {
this.portalProcess = null; this.portalProcess = null;
} }
@@ -3986,15 +3970,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -3985,15 +3969,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
entity.teleport(this.calculatePassengerTransition(teleportTransition, entity)); entity.teleport(this.calculatePassengerTransition(teleportTransition, entity));
} }
@@ -1339,7 +1339,7 @@ index 162dfba21cee2f3a9eb8403bf04aa3de5211a31c..31a939facfd4b506a2cff3cee6e4b86a
return this; return this;
} }
@@ -4010,11 +3991,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -4009,11 +3990,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
} }
} }
@@ -1351,7 +1351,7 @@ index 162dfba21cee2f3a9eb8403bf04aa3de5211a31c..31a939facfd4b506a2cff3cee6e4b86a
return null; return null;
} else { } else {
// Paper start - Fix item duplication and teleport issues // Paper start - Fix item duplication and teleport issues
@@ -4034,7 +4012,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -4033,7 +4011,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
newLevel.resetEmptyTime(); newLevel.resetEmptyTime();
teleportTransition.postTeleportTransition().onTransition(entityx); teleportTransition.postTeleportTransition().onTransition(entityx);
this.teleportSpectators(teleportTransition, oldLevel); this.teleportSpectators(teleportTransition, oldLevel);
@@ -1360,7 +1360,7 @@ index 162dfba21cee2f3a9eb8403bf04aa3de5211a31c..31a939facfd4b506a2cff3cee6e4b86a
} }
} }
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
index 35d71978a3d360eed97feb66d1048bee337ef2b9..97431aa47b5425578bf14b992596962c64c87f35 100644 index 8f5dc1180de2d144e0d081770ef26937dfdbd705..532cc5ae07d81bedeaa8d76bd5a8d1cd8760e0a2 100644
--- a/net/minecraft/world/entity/LivingEntity.java --- a/net/minecraft/world/entity/LivingEntity.java
+++ b/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java
@@ -69,8 +69,6 @@ import net.minecraft.tags.FluidTags; @@ -69,8 +69,6 @@ import net.minecraft.tags.FluidTags;

View File

@@ -152,7 +152,7 @@ index a9c2f419200483673f6743ed94af110a8e875e71..617eb1b9d30d499124576c5d7cb51525
return ret; return ret;
} }
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 8df0dbadca1dc72ac8d267654414044eb988ee43..784a08d0aed30fd0362e408aaa5772003021c0ad 100644 index bb1d7467b3fe01762c8ef28f1f9f6563e18a6195..af726d261f8d27ba95daa2657abd26a7461903ac 100644
--- a/net/minecraft/server/level/ServerPlayer.java --- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java
@@ -1100,7 +1100,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -1100,7 +1100,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -165,7 +165,7 @@ index 8df0dbadca1dc72ac8d267654414044eb988ee43..784a08d0aed30fd0362e408aaa577200
this.getInventory().equipment.set(value, net.minecraft.world.item.ItemStack.EMPTY); this.getInventory().equipment.set(value, net.minecraft.world.item.ItemStack.EMPTY);
} }
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 1729f36ec81f0f7ac0bf494513e6b0ceba87e063..b1d2e52c04cdc7285bc732e91006f76c3552d35f 100644 index 83ab47fead8c07c70a96d5794baa04cd1444fb8f..3f1f68ed20ec6c944f031afc74052e63594e84e6 100644
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2794,7 +2794,7 @@ public class ServerGamePacketListenerImpl @@ -2794,7 +2794,7 @@ public class ServerGamePacketListenerImpl
@@ -176,7 +176,7 @@ index 1729f36ec81f0f7ac0bf494513e6b0ceba87e063..b1d2e52c04cdc7285bc732e91006f76c
+ target.getId(), java.util.Arrays.stream(net.minecraft.world.entity.EquipmentSlot.VALUES_ARRAY) // Gale - JettPack - reduce array allocations + target.getId(), java.util.Arrays.stream(net.minecraft.world.entity.EquipmentSlot.VALUES_ARRAY) // Gale - JettPack - reduce array allocations
.map((slot) -> com.mojang.datafixers.util.Pair.of(slot, ((LivingEntity) target).getItemBySlot(slot).copy())) .map((slot) -> com.mojang.datafixers.util.Pair.of(slot, ((LivingEntity) target).getItemBySlot(slot).copy()))
.collect(Collectors.toList()), true)); // Paper - sanitize .collect(Collectors.toList()), true)); // Paper - sanitize
} player.containerMenu.sendAllDataToRemote();
diff --git a/net/minecraft/server/players/StoredUserList.java b/net/minecraft/server/players/StoredUserList.java diff --git a/net/minecraft/server/players/StoredUserList.java b/net/minecraft/server/players/StoredUserList.java
index d445e8f126f077d8419c52fa5436ea963a1a42a4..39483f7b453d6faedeccc1ab1eda76669395ea5a 100644 index d445e8f126f077d8419c52fa5436ea963a1a42a4..39483f7b453d6faedeccc1ab1eda76669395ea5a 100644
--- a/net/minecraft/server/players/StoredUserList.java --- a/net/minecraft/server/players/StoredUserList.java
@@ -217,10 +217,10 @@ index 3eea236bd1fd401fefdf7c5cc553a3db335029c7..3739272cbc73b7c4f15a2fbe874905cf
if (!itemBySlot.isEmpty()) { if (!itemBySlot.isEmpty()) {
newMob.setItemSlot(equipmentSlot, itemBySlot.copyAndClear()); newMob.setItemSlot(equipmentSlot, itemBySlot.copyAndClear());
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 31a939facfd4b506a2cff3cee6e4b86a12b1d343..e8cd21863aff0aa37b2e6c23a3c60335a3d279cb 100644 index 397bf42ef1d83cc242ca8228cd28e5f862da72d7..584403a056350b05da0108ea668a1583db2ee943 100644
--- a/net/minecraft/world/entity/Entity.java --- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java
@@ -3077,7 +3077,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -3076,7 +3076,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
} }
private boolean attemptToShearEquipment(Player player, InteractionHand hand, ItemStack stack, Mob mob) { private boolean attemptToShearEquipment(Player player, InteractionHand hand, ItemStack stack, Mob mob) {
@@ -284,10 +284,10 @@ index b383836c200ca9f7bd84639367aa81b57868fb25..3af4a6dcc81afaf2860325fe5852c9a9
private static Map<EquipmentSlot, Float> createForAllSlots(List<EquipmentSlot> equipmentSlots, float dropChance) { private static Map<EquipmentSlot, Float> createForAllSlots(List<EquipmentSlot> equipmentSlots, float dropChance) {
diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java
index cf283389d9263ba29720bf296a778be9eaf308a7..8803c03846828b532bd2b6e164c589995907c96b 100644 index da16f4831c875e07c25d7ed041bed493db614658..951c86278e8cb5cd801a5db2ebfabef8c6d813ef 100644
--- a/net/minecraft/world/item/ItemStack.java --- a/net/minecraft/world/item/ItemStack.java
+++ b/net/minecraft/world/item/ItemStack.java +++ b/net/minecraft/world/item/ItemStack.java
@@ -1153,7 +1153,7 @@ public final class ItemStack implements DataComponentHolder { @@ -1149,7 +1149,7 @@ public final class ItemStack implements DataComponentHolder {
private void addAttributeTooltips(Consumer<Component> tooltipAdder, TooltipDisplay tooltipDisplay, @Nullable Player player) { private void addAttributeTooltips(Consumer<Component> tooltipAdder, TooltipDisplay tooltipDisplay, @Nullable Player player) {
if (tooltipDisplay.shows(DataComponents.ATTRIBUTE_MODIFIERS)) { if (tooltipDisplay.shows(DataComponents.ATTRIBUTE_MODIFIERS)) {

View File

@@ -13,7 +13,7 @@ As part of: VMP (https://github.com/RelativityMC/VMP-fabric)
Licensed under: MIT (https://opensource.org/licenses/MIT) Licensed under: MIT (https://opensource.org/licenses/MIT)
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index e0f82de257a0f4c6ad3c7c4362b46d12e56391a7..0c0ef8705a8a2f7e96c84f380a43fdc48abdb1e3 100644 index ab6abe703c3df6908c8001fc81efe2dca062eba1..9b81d49b6a6a93019100416c21ba8c732203395e 100644
--- a/net/minecraft/world/entity/Entity.java --- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java
@@ -260,6 +260,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -260,6 +260,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -36,7 +36,7 @@ index e0f82de257a0f4c6ad3c7c4362b46d12e56391a7..0c0ef8705a8a2f7e96c84f380a43fdc4
final Vec3 originalMovement = movement; // Paper - Expose pre-collision velocity final Vec3 originalMovement = movement; // Paper - Expose pre-collision velocity
// Paper start - detailed watchdog information // Paper start - detailed watchdog information
ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread("Cannot move an entity off-main"); ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread("Cannot move an entity off-main");
@@ -4376,6 +4382,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -4375,6 +4381,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
} }
public final void setBoundingBox(AABB bb) { public final void setBoundingBox(AABB bb) {

View File

@@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
Gale - https://galemc.org Gale - https://galemc.org
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 8fcc1223942114f46c36028326e9c7daf4f0d9e0..41279a276622062338bef685491cc2959ecb2ff4 100644 index 79c88dae33c0b1f27064d388e4c6ec7501d3313e..fa6a565e308cdf356855172621dcd7d8c3237403 100644
--- a/net/minecraft/world/entity/Entity.java --- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java
@@ -4874,6 +4874,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -4873,6 +4873,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return this.inBlockState; return this.inBlockState;
} }
@@ -28,7 +28,7 @@ index 8fcc1223942114f46c36028326e9c7daf4f0d9e0..41279a276622062338bef685491cc295
return this.chunkPosition; return this.chunkPosition;
} }
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
index 586b79bc844b098336c6d3bf342b570396e6af88..9e93c446fb3641a88643d382abddc5d2acc8a810 100644 index 80e250ce17f315ddaa783624413397f56b52f5b9..ae2e0afb0c36fc5512dcea3d15997a737e91de11 100644
--- a/net/minecraft/world/entity/LivingEntity.java --- a/net/minecraft/world/entity/LivingEntity.java
+++ b/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java
@@ -2129,8 +2129,17 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin @@ -2129,8 +2129,17 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin

View File

@@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
Gale - https://galemc.org Gale - https://galemc.org
diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java
index 8803c03846828b532bd2b6e164c589995907c96b..3acc2ae8533f19a6f9b2b6a1d96271f1047384a4 100644 index 951c86278e8cb5cd801a5db2ebfabef8c6d813ef..6ceb6cf302bad28e453fa89ec16083b0e0c5c398 100644
--- a/net/minecraft/world/item/ItemStack.java --- a/net/minecraft/world/item/ItemStack.java
+++ b/net/minecraft/world/item/ItemStack.java +++ b/net/minecraft/world/item/ItemStack.java
@@ -868,11 +868,11 @@ public final class ItemStack implements DataComponentHolder { @@ -864,11 +864,11 @@ public final class ItemStack implements DataComponentHolder {
} }
public static boolean isSameItem(ItemStack stack, ItemStack other) { public static boolean isSameItem(ItemStack stack, ItemStack other) {

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Purpur Server Minecraft Changes
Original license: MIT Original license: MIT
Original project: https://github.com/PurpurMC/Purpur Original project: https://github.com/PurpurMC/Purpur
Commit: 2d8cdd15c79fce29455eaf8bedfc203bd16ca4d7 Commit: 11c030a8f81b2f845a9f2749790692c2d152f284
Patches listed below are removed in this patch, They exists in Gale or Leaf: Patches listed below are removed in this patch, They exists in Gale or Leaf:
* "net/minecraft/CrashReport.java.patch" * "net/minecraft/CrashReport.java.patch"
@@ -118,7 +118,7 @@ index 3acfb2a78845dd8081dc3c01d653034232c76e60..51caf352e77df49fc04bf84f1fab29b6
boolean flag = this.source.acceptsSuccess() && !this.silent; boolean flag = this.source.acceptsSuccess() && !this.silent;
boolean flag1 = allowLogging && this.source.shouldInformAdmins() && !this.silent; boolean flag1 = allowLogging && this.source.shouldInformAdmins() && !this.silent;
diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java
index e00624a738e65ab14ec68a8d0e7861522fa32e82..1dc009e85403fe0b6a68daefecfe5cb25ad263cd 100644 index e00624a738e65ab14ec68a8d0e7861522fa32e82..287c0936930ff4f3ca6dc2a4cbfc796a120fe4c0 100644
--- a/net/minecraft/commands/Commands.java --- a/net/minecraft/commands/Commands.java
+++ b/net/minecraft/commands/Commands.java +++ b/net/minecraft/commands/Commands.java
@@ -249,7 +249,7 @@ public class Commands { @@ -249,7 +249,7 @@ public class Commands {
@@ -130,7 +130,20 @@ index e00624a738e65ab14ec68a8d0e7861522fa32e82..1dc009e85403fe0b6a68daefecfe5cb2
RaidCommand.register(this.dispatcher, context); RaidCommand.register(this.dispatcher, context);
DebugPathCommand.register(this.dispatcher); DebugPathCommand.register(this.dispatcher);
DebugMobSpawningCommand.register(this.dispatcher); DebugMobSpawningCommand.register(this.dispatcher);
@@ -277,6 +277,14 @@ public class Commands { @@ -261,6 +261,12 @@ public class Commands {
}
}
+ // Purpur start - register disabled minecraft commands
+ if (org.purpurmc.purpur.PurpurConfig.registerMinecraftDisabledCommands) {
+ net.minecraft.server.commands.ChaseCommand.register(this.dispatcher);
+ }
+ // Purpur end - register disabled minecraft commands
+
if (selection.includeDedicated) {
BanIpCommands.register(this.dispatcher);
BanListCommands.register(this.dispatcher);
@@ -277,6 +283,14 @@ public class Commands {
StopCommand.register(this.dispatcher); StopCommand.register(this.dispatcher);
TransferCommand.register(this.dispatcher); TransferCommand.register(this.dispatcher);
WhitelistCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher);
@@ -303,10 +316,10 @@ index 8bab2c26e10e8495fd39be470bcb02917fe56f40..e72eda830644851656fae3118c513d7b
} }
// Paper end - Buffer joins to world // Paper end - Buffer joins to world
diff --git a/net/minecraft/server/Main.java b/net/minecraft/server/Main.java diff --git a/net/minecraft/server/Main.java b/net/minecraft/server/Main.java
index b16f3f515a76ddbbd74d73464396cf094cb30599..dd6ae338fa48d52962ee0af5b1572077ba6dff91 100644 index b16f3f515a76ddbbd74d73464396cf094cb30599..4134679c838307de7ae410cfc727fada0eeebf6b 100644
--- a/net/minecraft/server/Main.java --- a/net/minecraft/server/Main.java
+++ b/net/minecraft/server/Main.java +++ b/net/minecraft/server/Main.java
@@ -109,6 +109,12 @@ public class Main { @@ -109,6 +109,13 @@ public class Main {
JvmProfiler.INSTANCE.start(Environment.SERVER); JvmProfiler.INSTANCE.start(Environment.SERVER);
} }
@@ -314,6 +327,7 @@ index b16f3f515a76ddbbd74d73464396cf094cb30599..dd6ae338fa48d52962ee0af5b1572077
+ org.bukkit.configuration.file.YamlConfiguration purpurConfiguration = io.papermc.paper.configuration.PaperConfigurations.loadLegacyConfigFile((File) optionSet.valueOf("purpur-settings")); + org.bukkit.configuration.file.YamlConfiguration purpurConfiguration = io.papermc.paper.configuration.PaperConfigurations.loadLegacyConfigFile((File) optionSet.valueOf("purpur-settings"));
+ org.purpurmc.purpur.PurpurConfig.clampEnchantLevels = purpurConfiguration.getBoolean("settings.enchantment.clamp-levels", true); + org.purpurmc.purpur.PurpurConfig.clampEnchantLevels = purpurConfiguration.getBoolean("settings.enchantment.clamp-levels", true);
+ org.purpurmc.purpur.PurpurConfig.registerMinecraftDebugCommands = purpurConfiguration.getBoolean("settings.register-minecraft-debug-commands"); // Purpur - register minecraft debug commands + org.purpurmc.purpur.PurpurConfig.registerMinecraftDebugCommands = purpurConfiguration.getBoolean("settings.register-minecraft-debug-commands"); // Purpur - register minecraft debug commands
+ org.purpurmc.purpur.PurpurConfig.registerMinecraftDisabledCommands = purpurConfiguration.getBoolean("settings.register-minecraft-disabled-commands"); // Purpur - register disabled minecraft commands
+ // Purpur end - Add toggle for enchant level clamping - load config files early + // Purpur end - Add toggle for enchant level clamping - load config files early
+ +
org.dreeam.leaf.config.LeafConfig.loadConfig(); // Leaf - Leaf config org.dreeam.leaf.config.LeafConfig.loadConfig(); // Leaf - Leaf config
@@ -925,7 +939,7 @@ index 3f70fca36f67fa421314ff92d372a97112a19025..95c128f028c3cce7d0b37821a6e75208
} }
// Paper end - Fix merchant inventory not closing on entity removal // Paper end - Fix merchant inventory not closing on entity removal
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index feb4f7c70220e9c48a17a815631298bcb8366ded..e181134e654a32aef9174dcc5d1a163858f7f143 100644 index 3592f91f1876a044b61d0d7b28a1619ab2cff04a..852802af6885607ddd9de795c66ef499fef11722 100644
--- a/net/minecraft/server/level/ServerPlayer.java --- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java
@@ -428,6 +428,9 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -428,6 +428,9 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -1223,7 +1237,7 @@ index feb4f7c70220e9c48a17a815631298bcb8366ded..e181134e654a32aef9174dcc5d1a1638
+ // Purpur end - Add rambar command + // Purpur end - Add rambar command
} }
diff --git a/net/minecraft/server/level/ServerPlayerGameMode.java b/net/minecraft/server/level/ServerPlayerGameMode.java diff --git a/net/minecraft/server/level/ServerPlayerGameMode.java b/net/minecraft/server/level/ServerPlayerGameMode.java
index 6734756d7a51e635a50a47577f9e6b6f8111db51..c4a4f08272b34f72dea4feaaeb66d153b2aab8c8 100644 index cfbf34964288526e93d0a5b212c1b60296c10430..d638821595138ef972163925136eb57207b31719 100644
--- a/net/minecraft/server/level/ServerPlayerGameMode.java --- a/net/minecraft/server/level/ServerPlayerGameMode.java
+++ b/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/net/minecraft/server/level/ServerPlayerGameMode.java
@@ -348,6 +348,7 @@ public class ServerPlayerGameMode { @@ -348,6 +348,7 @@ public class ServerPlayerGameMode {
@@ -1299,7 +1313,7 @@ index de630a692291926c52a0947f9943e59433ab130a..ca9ba2a2535eab66622230778efdf941
this.playerBrand = new net.minecraft.network.FriendlyByteBuf(io.netty.buffer.Unpooled.wrappedBuffer(data)).readUtf(256); this.playerBrand = new net.minecraft.network.FriendlyByteBuf(io.netty.buffer.Unpooled.wrappedBuffer(data)).readUtf(256);
} }
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index b1d2e52c04cdc7285bc732e91006f76c3552d35f..cb646939cc6465135030b715d203ba2211981b8e 100644 index 3f1f68ed20ec6c944f031afc74052e63594e84e6..6fc36c917bee5453e4aadd018389893c0f5dd6f4 100644
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -338,6 +338,20 @@ public class ServerGamePacketListenerImpl @@ -338,6 +338,20 @@ public class ServerGamePacketListenerImpl
@@ -1530,10 +1544,10 @@ index b1d2e52c04cdc7285bc732e91006f76c3552d35f..cb646939cc6465135030b715d203ba22
+ player.processClick(hand); // Purpur - Ridables + player.processClick(hand); // Purpur - Ridables
+ +
// Entity in bucket - SPIGOT-4048 and SPIGOT-6859a // Entity in bucket - SPIGOT-4048 and SPIGOT-6859
if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) { if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) {
target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it
@@ -3553,7 +3637,7 @@ public class ServerGamePacketListenerImpl @@ -3495,7 +3579,7 @@ public class ServerGamePacketListenerImpl
@Override @Override
public void handleChangeGameMode(ServerboundChangeGameModePacket packet) { public void handleChangeGameMode(ServerboundChangeGameModePacket packet) {
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level()); PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level());
@@ -1909,7 +1923,7 @@ index 1fc9e1ad541c46124183a401b2a7d99aea69cecf..881271f0bc77a8a8a7d31daad9a8188b
} }
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 28e2ad1238651b8adb47b77763b0c8ae8172fe8a..fb387919e51504beafd2e7947faa41795df18100 100644 index 9ee1ce59ee5612a0793ad76c4635af63c315657a..5b6c8d4caac3fca20e5994e24267f04cb59c27dd 100644
--- a/net/minecraft/world/entity/Entity.java --- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java
@@ -146,6 +146,7 @@ import org.jetbrains.annotations.Contract; @@ -146,6 +146,7 @@ import org.jetbrains.annotations.Contract;
@@ -2037,7 +2051,7 @@ index 28e2ad1238651b8adb47b77763b0c8ae8172fe8a..fb387919e51504beafd2e7947faa4179
// Paper start - EntityUnleashEvent // Paper start - EntityUnleashEvent
if (!org.bukkit.craftbukkit.event.CraftEventFactory.handlePlayerUnleashEntityEvent( if (!org.bukkit.craftbukkit.event.CraftEventFactory.handlePlayerUnleashEntityEvent(
leashable2, player, hand, !player.hasInfiniteMaterials(), true leashable2, player, hand, !player.hasInfiniteMaterials(), true
@@ -3300,6 +3342,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -3299,6 +3341,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
this.passengers = ImmutableList.copyOf(list); this.passengers = ImmutableList.copyOf(list);
} }
@@ -2051,7 +2065,7 @@ index 28e2ad1238651b8adb47b77763b0c8ae8172fe8a..fb387919e51504beafd2e7947faa4179
this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); this.gameEvent(GameEvent.ENTITY_MOUNT, passenger);
} }
} }
@@ -3341,6 +3390,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -3340,6 +3389,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return false; return false;
} }
// CraftBukkit end // CraftBukkit end
@@ -2066,7 +2080,7 @@ index 28e2ad1238651b8adb47b77763b0c8ae8172fe8a..fb387919e51504beafd2e7947faa4179
if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) { if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) {
this.passengers = ImmutableList.of(); this.passengers = ImmutableList.of();
} else { } else {
@@ -3410,15 +3467,18 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -3409,15 +3466,18 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return Vec3.directionFromRotation(this.getRotationVector()); return Vec3.directionFromRotation(this.getRotationVector());
} }
@@ -2086,7 +2100,7 @@ index 28e2ad1238651b8adb47b77763b0c8ae8172fe8a..fb387919e51504beafd2e7947faa4179
} }
} }
} }
@@ -3620,7 +3680,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -3619,7 +3679,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
} }
public int getMaxAirSupply() { public int getMaxAirSupply() {
@@ -2095,7 +2109,7 @@ index 28e2ad1238651b8adb47b77763b0c8ae8172fe8a..fb387919e51504beafd2e7947faa4179
} }
public int getAirSupply() { public int getAirSupply() {
@@ -4167,7 +4227,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -4166,7 +4226,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
// CraftBukkit end // CraftBukkit end
public boolean canUsePortal(boolean allowPassengers) { public boolean canUsePortal(boolean allowPassengers) {
@@ -2104,7 +2118,7 @@ index 28e2ad1238651b8adb47b77763b0c8ae8172fe8a..fb387919e51504beafd2e7947faa4179
} }
public boolean canTeleport(Level fromLevel, Level toLevel) { public boolean canTeleport(Level fromLevel, Level toLevel) {
@@ -4697,6 +4757,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -4696,6 +4756,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return Mth.lerp(partialTick, this.yRotO, this.yRot); return Mth.lerp(partialTick, this.yRotO, this.yRot);
} }
@@ -2117,7 +2131,7 @@ index 28e2ad1238651b8adb47b77763b0c8ae8172fe8a..fb387919e51504beafd2e7947faa4179
// Paper start - optimise collisions // Paper start - optimise collisions
public boolean updateFluidHeightAndDoFluidPushing(final TagKey<Fluid> fluid, final double flowScale) { public boolean updateFluidHeightAndDoFluidPushing(final TagKey<Fluid> fluid, final double flowScale) {
if (this.touchingUnloadedChunk()) { if (this.touchingUnloadedChunk()) {
@@ -5133,7 +5199,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -5132,7 +5198,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
} }
public float maxUpStep() { public float maxUpStep() {
@@ -2126,7 +2140,7 @@ index 28e2ad1238651b8adb47b77763b0c8ae8172fe8a..fb387919e51504beafd2e7947faa4179
} }
public void onExplosionHit(@Nullable Entity entity) { public void onExplosionHit(@Nullable Entity entity) {
@@ -5391,4 +5457,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -5390,4 +5456,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition()); return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition());
} }
// Paper end - Expose entity id counter // Paper end - Expose entity id counter
@@ -2310,7 +2324,7 @@ index aab9adb8313c4b18279c7fd7500ef04bda09c6c1..86a694b94045b47f6e98c480645f7573
protected ParticleOptions getInkParticle() { protected ParticleOptions getInkParticle() {
return ParticleTypes.GLOW_SQUID_INK; return ParticleTypes.GLOW_SQUID_INK;
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
index 40b9dd1a1568f0f1eeba6925167a79cde48d66fd..25a7651efa80938124bbda27a1de25e9a6eb3620 100644 index 89e073b0a40738a7c1c7aea84eb2409e252e5473..310b2c9197c0c32fd1be05ab10eae5fc1d43fc26 100644
--- a/net/minecraft/world/entity/LivingEntity.java --- a/net/minecraft/world/entity/LivingEntity.java
+++ b/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java
@@ -236,9 +236,9 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin @@ -236,9 +236,9 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
@@ -2396,7 +2410,7 @@ index 40b9dd1a1568f0f1eeba6925167a79cde48d66fd..25a7651efa80938124bbda27a1de25e9
} // Paper - The sleeping pos will always also set the actual pos, so a desync suggests something is wrong } // Paper - The sleeping pos will always also set the actual pos, so a desync suggests something is wrong
}, this::clearSleepingPos); }, this::clearSleepingPos);
input.read("Brain", Codec.PASSTHROUGH).ifPresent(dynamic -> this.brain = this.makeBrain((Dynamic<?>)dynamic)); input.read("Brain", Codec.PASSTHROUGH).ifPresent(dynamic -> this.brain = this.makeBrain((Dynamic<?>)dynamic));
+ this.shouldBurnInDay = input.getBooleanOr("Purpur.ShouldBurnInDay", false); // Purpur - API for any mob to burn daylight + this.shouldBurnInDay = input.getBooleanOr("Purpur.ShouldBurnInDay", this.shouldBurnInDay); // Purpur - API for any mob to burn daylight
this.lastHurtByPlayer = EntityReference.read(input, "last_hurt_by_player"); this.lastHurtByPlayer = EntityReference.read(input, "last_hurt_by_player");
this.lastHurtByPlayerMemoryTime = input.getIntOr("last_hurt_by_player_memory_time", 0); this.lastHurtByPlayerMemoryTime = input.getIntOr("last_hurt_by_player_memory_time", 0);
this.lastHurtByMob = EntityReference.read(input, "last_hurt_by_mob"); this.lastHurtByMob = EntityReference.read(input, "last_hurt_by_mob");
@@ -2645,7 +2659,7 @@ index 40b9dd1a1568f0f1eeba6925167a79cde48d66fd..25a7651efa80938124bbda27a1de25e9
} }
this.gameEvent(GameEvent.ELYTRA_GLIDE); this.gameEvent(GameEvent.ELYTRA_GLIDE);
@@ -4530,6 +4661,12 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin @@ -4524,6 +4655,12 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
: slot == equippable.slot() && this.canUseSlot(equippable.slot()) && equippable.canBeEquippedBy(this.getType()); : slot == equippable.slot() && this.canUseSlot(equippable.slot()) && equippable.canBeEquippedBy(this.getType());
} }
@@ -6621,7 +6635,7 @@ index 2a72d7f422c340dabef11a6dc680358207bee637..11b020704a673c69bd2d4ab6313ea32e
brain.setMemory(MemoryModuleType.RAM_TARGET, entity.position()); brain.setMemory(MemoryModuleType.RAM_TARGET, entity.position());
brain.eraseMemory(MemoryModuleType.RAM_COOLDOWN_TICKS); brain.eraseMemory(MemoryModuleType.RAM_COOLDOWN_TICKS);
diff --git a/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/net/minecraft/world/entity/animal/horse/AbstractHorse.java diff --git a/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/net/minecraft/world/entity/animal/horse/AbstractHorse.java
index 31ed5d7cfbda1a1f98ebfc89f5cbc65332cabdae..e78ef459d6eecb7f69882ed95cd9f9967f53989f 100644 index e7e4558d0f018a0c975d12d77287cda4df5a500a..6f1006281128d6da0dda43cc61ee672e872186af 100644
--- a/net/minecraft/world/entity/animal/horse/AbstractHorse.java --- a/net/minecraft/world/entity/animal/horse/AbstractHorse.java
+++ b/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/net/minecraft/world/entity/animal/horse/AbstractHorse.java
@@ -127,11 +127,61 @@ public abstract class AbstractHorse extends Animal implements HasCustomInventory @@ -127,11 +127,61 @@ public abstract class AbstractHorse extends Animal implements HasCustomInventory
@@ -9881,10 +9895,10 @@ index 5ef9566b16a4d0300ee45a993c46e734db156416..04d5910d736dee2a88a2602f4a984954
return false; return false;
} else { } else {
diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java
index ffcfdbc80df2a9e6c546348b86e7615e6109eb49..3b812e0860e37d30d5d12f97410ed5fd2babadf6 100644 index ffcfdbc80df2a9e6c546348b86e7615e6109eb49..32f037ae8a3dbb1f3c7e123db67b91ee23bc83b3 100644
--- a/net/minecraft/world/entity/monster/Phantom.java --- a/net/minecraft/world/entity/monster/Phantom.java
+++ b/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java
@@ -49,19 +49,111 @@ public class Phantom extends Mob implements Enemy { @@ -49,19 +49,110 @@ public class Phantom extends Mob implements Enemy {
@Nullable @Nullable
public BlockPos anchorPoint; public BlockPos anchorPoint;
Phantom.AttackPhase attackPhase = Phantom.AttackPhase.CIRCLE; Phantom.AttackPhase attackPhase = Phantom.AttackPhase.CIRCLE;
@@ -9892,7 +9906,8 @@ index ffcfdbc80df2a9e6c546348b86e7615e6109eb49..3b812e0860e37d30d5d12f97410ed5fd
// Paper start // Paper start
@Nullable @Nullable
public java.util.UUID spawningEntity; public java.util.UUID spawningEntity;
public boolean shouldBurnInDay = true; - public boolean shouldBurnInDay = true;
+ //public boolean shouldBurnInDay = true; // Purpur - API for any mob to burn daylight
// Paper end // Paper end
+ private static final net.minecraft.world.item.crafting.Ingredient TORCH = net.minecraft.world.item.crafting.Ingredient.of(net.minecraft.world.item.Items.TORCH, net.minecraft.world.item.Items.SOUL_TORCH); // Purpur - Phantoms burn in light + private static final net.minecraft.world.item.crafting.Ingredient TORCH = net.minecraft.world.item.crafting.Ingredient.of(net.minecraft.world.item.Items.TORCH, net.minecraft.world.item.Items.SOUL_TORCH); // Purpur - Phantoms burn in light
@@ -9976,7 +9991,6 @@ index ffcfdbc80df2a9e6c546348b86e7615e6109eb49..3b812e0860e37d30d5d12f97410ed5fd
+ } + }
+ // Purpur end - Toggle for water sensitive mob damage + // Purpur end - Toggle for water sensitive mob damage
+ +
+ //private boolean shouldBurnInDay = true; // Purpur - moved to LivingEntity; keep methods for ABI compatibility - API for any mob to burn daylight
+ // Purpur start - API for any mob to burn daylight + // Purpur start - API for any mob to burn daylight
+ public boolean shouldBurnInDay() { + public boolean shouldBurnInDay() {
+ boolean burnFromDaylight = this.shouldBurnInDay && this.level().purpurConfig.phantomBurnInDaylight; + boolean burnFromDaylight = this.shouldBurnInDay && this.level().purpurConfig.phantomBurnInDaylight;
@@ -9996,7 +10010,7 @@ index ffcfdbc80df2a9e6c546348b86e7615e6109eb49..3b812e0860e37d30d5d12f97410ed5fd
@Override @Override
public boolean isFlapping() { public boolean isFlapping() {
return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0; return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0;
@@ -74,9 +166,17 @@ public class Phantom extends Mob implements Enemy { @@ -74,9 +165,17 @@ public class Phantom extends Mob implements Enemy {
@Override @Override
protected void registerGoals() { protected void registerGoals() {
@@ -10017,7 +10031,7 @@ index ffcfdbc80df2a9e6c546348b86e7615e6109eb49..3b812e0860e37d30d5d12f97410ed5fd
this.targetSelector.addGoal(1, new Phantom.PhantomAttackPlayerTargetGoal()); this.targetSelector.addGoal(1, new Phantom.PhantomAttackPlayerTargetGoal());
} }
@@ -92,7 +192,11 @@ public class Phantom extends Mob implements Enemy { @@ -92,7 +191,11 @@ public class Phantom extends Mob implements Enemy {
private void updatePhantomSizeInfo() { private void updatePhantomSizeInfo() {
this.refreshDimensions(); this.refreshDimensions();
@@ -10030,7 +10044,7 @@ index ffcfdbc80df2a9e6c546348b86e7615e6109eb49..3b812e0860e37d30d5d12f97410ed5fd
} }
public int getPhantomSize() { public int getPhantomSize() {
@@ -117,6 +221,23 @@ public class Phantom extends Mob implements Enemy { @@ -117,6 +220,23 @@ public class Phantom extends Mob implements Enemy {
return true; return true;
} }
@@ -10054,7 +10068,7 @@ index ffcfdbc80df2a9e6c546348b86e7615e6109eb49..3b812e0860e37d30d5d12f97410ed5fd
@Override @Override
public void tick() { public void tick() {
super.tick(); super.tick();
@@ -148,10 +269,7 @@ public class Phantom extends Mob implements Enemy { @@ -148,10 +268,7 @@ public class Phantom extends Mob implements Enemy {
@Override @Override
public void aiStep() { public void aiStep() {
@@ -10066,7 +10080,7 @@ index ffcfdbc80df2a9e6c546348b86e7615e6109eb49..3b812e0860e37d30d5d12f97410ed5fd
super.aiStep(); super.aiStep();
} }
@@ -167,6 +285,15 @@ public class Phantom extends Mob implements Enemy { @@ -167,6 +284,15 @@ public class Phantom extends Mob implements Enemy {
@Override @Override
public void travel(Vec3 travelVector) { public void travel(Vec3 travelVector) {
this.travelFlying(travelVector, 0.2F); this.travelFlying(travelVector, 0.2F);
@@ -10082,7 +10096,7 @@ index ffcfdbc80df2a9e6c546348b86e7615e6109eb49..3b812e0860e37d30d5d12f97410ed5fd
} }
@Override @Override
@@ -174,7 +301,11 @@ public class Phantom extends Mob implements Enemy { @@ -174,7 +300,11 @@ public class Phantom extends Mob implements Enemy {
ServerLevelAccessor level, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData spawnGroupData ServerLevelAccessor level, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData spawnGroupData
) { ) {
this.anchorPoint = this.blockPosition().above(5); this.anchorPoint = this.blockPosition().above(5);
@@ -10095,7 +10109,7 @@ index ffcfdbc80df2a9e6c546348b86e7615e6109eb49..3b812e0860e37d30d5d12f97410ed5fd
return super.finalizeSpawn(level, difficulty, spawnReason, spawnGroupData); return super.finalizeSpawn(level, difficulty, spawnReason, spawnGroupData);
} }
@@ -185,7 +316,7 @@ public class Phantom extends Mob implements Enemy { @@ -185,7 +315,7 @@ public class Phantom extends Mob implements Enemy {
this.setPhantomSize(input.getIntOr("size", 0)); this.setPhantomSize(input.getIntOr("size", 0));
// Paper start // Paper start
this.spawningEntity = input.read("Paper.SpawningEntity", net.minecraft.core.UUIDUtil.CODEC).orElse(null); this.spawningEntity = input.read("Paper.SpawningEntity", net.minecraft.core.UUIDUtil.CODEC).orElse(null);
@@ -10104,16 +10118,16 @@ index ffcfdbc80df2a9e6c546348b86e7615e6109eb49..3b812e0860e37d30d5d12f97410ed5fd
// Paper end // Paper end
} }
@@ -196,7 +327,7 @@ public class Phantom extends Mob implements Enemy { @@ -196,7 +326,7 @@ public class Phantom extends Mob implements Enemy {
output.putInt("size", this.getPhantomSize()); output.putInt("size", this.getPhantomSize());
// Paper start // Paper start
output.storeNullable("Paper.SpawningEntity", net.minecraft.core.UUIDUtil.CODEC, this.spawningEntity); output.storeNullable("Paper.SpawningEntity", net.minecraft.core.UUIDUtil.CODEC, this.spawningEntity);
- output.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); - output.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay);
+ output.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); // Purpur - implemented in LivingEntity - API for any mob to burn daylight + //output.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); // Purpur - implemented in LivingEntity - API for any mob to burn daylight
// Paper end // Paper end
} }
@@ -266,6 +397,7 @@ public class Phantom extends Mob implements Enemy { @@ -266,6 +396,7 @@ public class Phantom extends Mob implements Enemy {
List<Player> nearbyPlayers = serverLevel.getNearbyPlayers( List<Player> nearbyPlayers = serverLevel.getNearbyPlayers(
this.attackTargeting, Phantom.this, Phantom.this.getBoundingBox().inflate(16.0, 64.0, 16.0) this.attackTargeting, Phantom.this, Phantom.this.getBoundingBox().inflate(16.0, 64.0, 16.0)
); );
@@ -10121,7 +10135,7 @@ index ffcfdbc80df2a9e6c546348b86e7615e6109eb49..3b812e0860e37d30d5d12f97410ed5fd
if (!nearbyPlayers.isEmpty()) { if (!nearbyPlayers.isEmpty()) {
nearbyPlayers.sort(Comparator.<Player, Double>comparing(Entity::getY).reversed()); nearbyPlayers.sort(Comparator.<Player, Double>comparing(Entity::getY).reversed());
@@ -415,25 +547,160 @@ public class Phantom extends Mob implements Enemy { @@ -415,25 +546,160 @@ public class Phantom extends Mob implements Enemy {
} }
} }
@@ -10285,7 +10299,7 @@ index ffcfdbc80df2a9e6c546348b86e7615e6109eb49..3b812e0860e37d30d5d12f97410ed5fd
if (Phantom.this.horizontalCollision) { if (Phantom.this.horizontalCollision) {
Phantom.this.setYRot(Phantom.this.getYRot() + 180.0F); Phantom.this.setYRot(Phantom.this.getYRot() + 180.0F);
this.speed = 0.1F; this.speed = 0.1F;
@@ -500,6 +767,12 @@ public class Phantom extends Mob implements Enemy { @@ -500,6 +766,12 @@ public class Phantom extends Mob implements Enemy {
return false; return false;
} else if (!target.isAlive()) { } else if (!target.isAlive()) {
return false; return false;
@@ -12709,7 +12723,7 @@ index fce3f0f81d3195045cdc9ad7320f1d92f033c36d..352f55882ea77e8d89942e6c58ef3b4b
blockPos = blockPos1; blockPos = blockPos1;
break; break;
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
index 1610ef636a0d93c1e07bad9e82ac4d9982c4e854..78dc237d5de38cff9f013d36da9bbb16104dec96 100644 index 19e2ba14091b2fac74ce3b94da7a627029fcd914..6c9dfd76596b2e890b0b0dad5d98e8785a68c5a1 100644
--- a/net/minecraft/world/entity/player/Player.java --- a/net/minecraft/world/entity/player/Player.java
+++ b/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java
@@ -220,17 +220,40 @@ public abstract class Player extends LivingEntity { @@ -220,17 +220,40 @@ public abstract class Player extends LivingEntity {
@@ -12802,7 +12816,7 @@ index 1610ef636a0d93c1e07bad9e82ac4d9982c4e854..78dc237d5de38cff9f013d36da9bbb16
} }
float f2 = f + f1; float f2 = f + f1;
@@ -1831,7 +1871,23 @@ public abstract class Player extends LivingEntity { @@ -1830,7 +1870,23 @@ public abstract class Player extends LivingEntity {
@Override @Override
protected int getBaseExperienceReward(ServerLevel level) { protected int getBaseExperienceReward(ServerLevel level) {
@@ -12827,7 +12841,7 @@ index 1610ef636a0d93c1e07bad9e82ac4d9982c4e854..78dc237d5de38cff9f013d36da9bbb16
} }
@Override @Override
@@ -1870,6 +1926,13 @@ public abstract class Player extends LivingEntity { @@ -1869,6 +1925,13 @@ public abstract class Player extends LivingEntity {
return this.inventory.add(stack); return this.inventory.add(stack);
} }
@@ -13315,7 +13329,7 @@ index 793e4528755fa5688efbad75418188e693ad0157..20f702c8266eb54a8835861188eb937f
} }
diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java
index f4548edae77eb86e54ba499acbb20613fd60d7bd..1f601781643945920c7522b9c6100d0a37ad535d 100644 index 96da9b8e3556e58365dc6742f44d6dfd608e2953..2305a3ef6bbb21ab77cb261f20c08ac8ce1bf9ed 100644
--- a/net/minecraft/world/inventory/AbstractContainerMenu.java --- a/net/minecraft/world/inventory/AbstractContainerMenu.java
+++ b/net/minecraft/world/inventory/AbstractContainerMenu.java +++ b/net/minecraft/world/inventory/AbstractContainerMenu.java
@@ -65,6 +65,7 @@ public abstract class AbstractContainerMenu { @@ -65,6 +65,7 @@ public abstract class AbstractContainerMenu {
@@ -13911,10 +13925,10 @@ index bd919b9a83f9736f02783b1ba3863fd1b77c7e89..eb8d2d6f9c65185f5fe16a13ab0cdbba
return optional; return optional;
} else { } else {
diff --git a/net/minecraft/world/item/BlockItem.java b/net/minecraft/world/item/BlockItem.java diff --git a/net/minecraft/world/item/BlockItem.java b/net/minecraft/world/item/BlockItem.java
index b5b53168755525eccaa0a4361172006522cf4e05..2860d49c072d4b9e473390a84e45171b984b198e 100644 index 6db566adf2d0df1d26221eda04aa01738df6d3d2..3dbdb5c30f8af89e768016bb683a4d2c1549aa0e 100644
--- a/net/minecraft/world/item/BlockItem.java --- a/net/minecraft/world/item/BlockItem.java
+++ b/net/minecraft/world/item/BlockItem.java +++ b/net/minecraft/world/item/BlockItem.java
@@ -145,7 +145,16 @@ public class BlockItem extends Item { @@ -144,7 +144,16 @@ public class BlockItem extends Item {
} }
protected boolean updateCustomBlockEntityTag(BlockPos pos, Level level, @Nullable Player player, ItemStack stack, BlockState state) { protected boolean updateCustomBlockEntityTag(BlockPos pos, Level level, @Nullable Player player, ItemStack stack, BlockState state) {
@@ -13932,7 +13946,7 @@ index b5b53168755525eccaa0a4361172006522cf4e05..2860d49c072d4b9e473390a84e45171b
} }
@Nullable @Nullable
@@ -212,6 +221,7 @@ public class BlockItem extends Item { @@ -211,6 +220,7 @@ public class BlockItem extends Item {
} }
if (!type.onlyOpCanSetNbt() || player != null && (player.canUseGameMasterBlocks() || (player.getAbilities().instabuild && player.getBukkitEntity().hasPermission("minecraft.nbt.place")))) { // Spigot - add permission if (!type.onlyOpCanSetNbt() || player != null && (player.canUseGameMasterBlocks() || (player.getAbilities().instabuild && player.getBukkitEntity().hasPermission("minecraft.nbt.place")))) { // Spigot - add permission
@@ -13940,7 +13954,7 @@ index b5b53168755525eccaa0a4361172006522cf4e05..2860d49c072d4b9e473390a84e45171b
return customData.loadInto(blockEntity, level.registryAccess()); return customData.loadInto(blockEntity, level.registryAccess());
} }
@@ -253,6 +263,7 @@ public class BlockItem extends Item { @@ -252,6 +262,7 @@ public class BlockItem extends Item {
public void onDestroyed(ItemEntity itemEntity) { public void onDestroyed(ItemEntity itemEntity) {
ItemContainerContents itemContainerContents = itemEntity.getItem().set(DataComponents.CONTAINER, ItemContainerContents.EMPTY); ItemContainerContents itemContainerContents = itemEntity.getItem().set(DataComponents.CONTAINER, ItemContainerContents.EMPTY);
if (itemContainerContents != null) { if (itemContainerContents != null) {
@@ -14017,7 +14031,7 @@ index de287715568f358dd83383d68f845df9a7b5a117..8c7be8a71348a3e66c8bf6b6cb39fe00
return true; return true;
diff --git a/net/minecraft/world/item/CrossbowItem.java b/net/minecraft/world/item/CrossbowItem.java diff --git a/net/minecraft/world/item/CrossbowItem.java b/net/minecraft/world/item/CrossbowItem.java
index 45fc973971d00c35e5b715bfa6ae5042822ed35f..2ab3da301f7edbb811c2e055f75434a799ef093a 100644 index 7c54e658acf32ba260457e32f4cc6620f80a5f3c..d49a5360d4a21e5b15bac94a823831e25d242a3d 100644
--- a/net/minecraft/world/item/CrossbowItem.java --- a/net/minecraft/world/item/CrossbowItem.java
+++ b/net/minecraft/world/item/CrossbowItem.java +++ b/net/minecraft/world/item/CrossbowItem.java
@@ -66,7 +66,7 @@ public class CrossbowItem extends ProjectileWeaponItem { @@ -66,7 +66,7 @@ public class CrossbowItem extends ProjectileWeaponItem {
@@ -14045,7 +14059,7 @@ index d9c03b5e3768146bc8bcae2f86387b62ae89450b..eceb19b432d1bf5f1931568e78ab1e25
+ // Purpur end - Shulker spawn from bullet options + // Purpur end - Shulker spawn from bullet options
} }
diff --git a/net/minecraft/world/item/EggItem.java b/net/minecraft/world/item/EggItem.java diff --git a/net/minecraft/world/item/EggItem.java b/net/minecraft/world/item/EggItem.java
index ccae6089cdc4fffca7d759252006a13c2c14691a..c4097bd6acf671ddf857350154e6e1a04e76d64b 100644 index 2dc15a06572401c22fa4b8009fa1cdc3ceef0473..75ce17c1fa8c74981c44f3dab7e82351eef3b2f3 100644
--- a/net/minecraft/world/item/EggItem.java --- a/net/minecraft/world/item/EggItem.java
+++ b/net/minecraft/world/item/EggItem.java +++ b/net/minecraft/world/item/EggItem.java
@@ -24,7 +24,7 @@ public class EggItem extends Item implements ProjectileItem { @@ -24,7 +24,7 @@ public class EggItem extends Item implements ProjectileItem {
@@ -14071,7 +14085,7 @@ index 49f94f242a0906e74eb58313cf095a0b04c304c4..0db35674726e3039f2c20aed1993d6d3
} else { } else {
BlockPos blockPos = clickedPos.above(); final BlockPos aboveBlockPos = blockPos; // Paper - OBFHELPER BlockPos blockPos = clickedPos.above(); final BlockPos aboveBlockPos = blockPos; // Paper - OBFHELPER
diff --git a/net/minecraft/world/item/EnderpearlItem.java b/net/minecraft/world/item/EnderpearlItem.java diff --git a/net/minecraft/world/item/EnderpearlItem.java b/net/minecraft/world/item/EnderpearlItem.java
index 3becd19d3264fa631497e967656cc7ca39252586..f824f155549857d5205ba67eb5916e0b0b65efb4 100644 index 0b4464b23a85c237026b31ab224f599fea42d2ee..411ddda1003ac1b9bb75735154ffe8996ab8b6f3 100644
--- a/net/minecraft/world/item/EnderpearlItem.java --- a/net/minecraft/world/item/EnderpearlItem.java
+++ b/net/minecraft/world/item/EnderpearlItem.java +++ b/net/minecraft/world/item/EnderpearlItem.java
@@ -24,7 +24,7 @@ public class EnderpearlItem extends Item { @@ -24,7 +24,7 @@ public class EnderpearlItem extends Item {
@@ -14092,7 +14106,7 @@ index 3becd19d3264fa631497e967656cc7ca39252586..f824f155549857d5205ba67eb5916e0b
if (player instanceof net.minecraft.server.level.ServerPlayer serverPlayer) { if (player instanceof net.minecraft.server.level.ServerPlayer serverPlayer) {
serverPlayer.deregisterEnderPearl(thrownEnderpearl.projectile()); serverPlayer.deregisterEnderPearl(thrownEnderpearl.projectile());
diff --git a/net/minecraft/world/item/FireworkRocketItem.java b/net/minecraft/world/item/FireworkRocketItem.java diff --git a/net/minecraft/world/item/FireworkRocketItem.java b/net/minecraft/world/item/FireworkRocketItem.java
index 83cfe63b0245f79d0873477ab3aae75f690ecb68..f32370217735b5e9556a0df7652682d89f23c595 100644 index f86b0579e707ecfa5c2074ea22bbe383b5e11841..43a6d9bd3a2e301e3957e9933663c3aff43722d6 100644
--- a/net/minecraft/world/item/FireworkRocketItem.java --- a/net/minecraft/world/item/FireworkRocketItem.java
+++ b/net/minecraft/world/item/FireworkRocketItem.java +++ b/net/minecraft/world/item/FireworkRocketItem.java
@@ -72,6 +72,17 @@ public class FireworkRocketItem extends Item implements ProjectileItem { @@ -72,6 +72,17 @@ public class FireworkRocketItem extends Item implements ProjectileItem {
@@ -14162,7 +14176,7 @@ index 3bf3d4030c4da65fa386a8b8083d259a6046d15e..77a8d5d334cd93d23149afa8e58f4114
consumer.accept(context); consumer.accept(context);
if (player != null) { if (player != null) {
diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java
index 3acc2ae8533f19a6f9b2b6a1d96271f1047384a4..793c0a380b84d246db748be7e8807f1c0fa92d65 100644 index 6ceb6cf302bad28e453fa89ec16083b0e0c5c398..8c713d90e81df61d65fa6770516afc4704bbbb6f 100644
--- a/net/minecraft/world/item/ItemStack.java --- a/net/minecraft/world/item/ItemStack.java
+++ b/net/minecraft/world/item/ItemStack.java +++ b/net/minecraft/world/item/ItemStack.java
@@ -450,6 +450,7 @@ public final class ItemStack implements DataComponentHolder { @@ -450,6 +450,7 @@ public final class ItemStack implements DataComponentHolder {
@@ -14208,7 +14222,7 @@ index 3acc2ae8533f19a6f9b2b6a1d96271f1047384a4..793c0a380b84d246db748be7e8807f1c
public int getDamageValue() { public int getDamageValue() {
return Mth.clamp(this.getOrDefault(DataComponents.DAMAGE, 0), 0, this.getMaxDamage()); return Mth.clamp(this.getOrDefault(DataComponents.DAMAGE, 0), 0, this.getMaxDamage());
} }
@@ -678,6 +700,14 @@ public final class ItemStack implements DataComponentHolder { @@ -674,6 +696,14 @@ public final class ItemStack implements DataComponentHolder {
org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerItemBreakEvent(serverPlayer, this); // Paper - Add EntityDamageItemEvent org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerItemBreakEvent(serverPlayer, this); // Paper - Add EntityDamageItemEvent
} }
// CraftBukkit end // CraftBukkit end
@@ -14223,7 +14237,7 @@ index 3acc2ae8533f19a6f9b2b6a1d96271f1047384a4..793c0a380b84d246db748be7e8807f1c
this.shrink(1); this.shrink(1);
onBreak.accept(item); onBreak.accept(item);
} }
@@ -1210,6 +1240,12 @@ public final class ItemStack implements DataComponentHolder { @@ -1206,6 +1236,12 @@ public final class ItemStack implements DataComponentHolder {
return !this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY).isEmpty(); return !this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY).isEmpty();
} }
@@ -14271,7 +14285,7 @@ index ba0b254d43651bca1f29b5272af05d068fc37ba8..780793750c99185e8139a1cd0ad52bc7
int i = 1 << savedData.scale; int i = 1 << savedData.scale;
int i1 = savedData.centerX; int i1 = savedData.centerX;
diff --git a/net/minecraft/world/item/MinecartItem.java b/net/minecraft/world/item/MinecartItem.java diff --git a/net/minecraft/world/item/MinecartItem.java b/net/minecraft/world/item/MinecartItem.java
index 620069daba04d48b57fc933328eda77f6ca9333e..0403b9b01994269d394820e8c8710ba1b9808bf0 100644 index e116ba0c2a1335ad009abc75675bd339dc034bd2..19fb2091ed57f10af52116519a5ac31dd4e9aeb0 100644
--- a/net/minecraft/world/item/MinecartItem.java --- a/net/minecraft/world/item/MinecartItem.java
+++ b/net/minecraft/world/item/MinecartItem.java +++ b/net/minecraft/world/item/MinecartItem.java
@@ -30,8 +30,9 @@ public class MinecartItem extends Item { @@ -30,8 +30,9 @@ public class MinecartItem extends Item {
@@ -14307,10 +14321,10 @@ index a928124ee46a10e9033f771970198e36712917a6..65ff8078474d5039238e9398d8cfc12e
// Paper end - Add PlayerNameEntityEvent // Paper end - Add PlayerNameEntityEvent
mob.setPersistenceRequired(); mob.setPersistenceRequired();
diff --git a/net/minecraft/world/item/ProjectileWeaponItem.java b/net/minecraft/world/item/ProjectileWeaponItem.java diff --git a/net/minecraft/world/item/ProjectileWeaponItem.java b/net/minecraft/world/item/ProjectileWeaponItem.java
index 1a9f91f3ee9c4d3902106eebd2639cc85a0dc34c..fb5077450aa9f7b7a03dd20c27a68dfdaab5ef06 100644 index f35c8b81a55a9b8dbeb7c918d657cf65189642bd..f12b9e4e8a78c713782af548d1cb15ef363305b4 100644
--- a/net/minecraft/world/item/ProjectileWeaponItem.java --- a/net/minecraft/world/item/ProjectileWeaponItem.java
+++ b/net/minecraft/world/item/ProjectileWeaponItem.java +++ b/net/minecraft/world/item/ProjectileWeaponItem.java
@@ -109,6 +109,8 @@ public abstract class ProjectileWeaponItem extends Item { @@ -106,6 +106,8 @@ public abstract class ProjectileWeaponItem extends Item {
abstractArrow.setCritArrow(true); abstractArrow.setCritArrow(true);
} }
@@ -14339,7 +14353,7 @@ index 887ac9f547ceaf76fd533ae47239a64c29a64b18..a290ad578498da07093ea31080cc3fbc
afterAction = () -> { // Paper afterAction = () -> { // Paper
if (!level.isClientSide()) { if (!level.isClientSide()) {
diff --git a/net/minecraft/world/item/SnowballItem.java b/net/minecraft/world/item/SnowballItem.java diff --git a/net/minecraft/world/item/SnowballItem.java b/net/minecraft/world/item/SnowballItem.java
index 8eec16040fb9ae6bcccbd71bbe93521cdce5ccce..38b82537209449407922491506a7ca6224229ca9 100644 index bef1a8faa8e9567c9707ffb2b34c278c75581e35..fa3a9501134226f269882a14900b924df7d25046 100644
--- a/net/minecraft/world/item/SnowballItem.java --- a/net/minecraft/world/item/SnowballItem.java
+++ b/net/minecraft/world/item/SnowballItem.java +++ b/net/minecraft/world/item/SnowballItem.java
@@ -26,7 +26,7 @@ public class SnowballItem extends Item implements ProjectileItem { @@ -26,7 +26,7 @@ public class SnowballItem extends Item implements ProjectileItem {
@@ -14380,7 +14394,7 @@ index 7a961e5ebbdac061f6e73e4ed07fe957ba759066..d48c1dedbd39770ccf3c9c3ff3351b39
level.sendBlockUpdated(clickedPos, blockState, blockState, 3); level.sendBlockUpdated(clickedPos, blockState, blockState, 3);
level.gameEvent(context.getPlayer(), GameEvent.BLOCK_CHANGE, clickedPos); level.gameEvent(context.getPlayer(), GameEvent.BLOCK_CHANGE, clickedPos);
diff --git a/net/minecraft/world/item/ThrowablePotionItem.java b/net/minecraft/world/item/ThrowablePotionItem.java diff --git a/net/minecraft/world/item/ThrowablePotionItem.java b/net/minecraft/world/item/ThrowablePotionItem.java
index 86198fb3150409b4b3e123982d8d3ba40b774621..6495c82fb88062875024c59a7c29d6d18b7a2f41 100644 index 92a2a9c84d8f0a44dffee22834f5ae6c6b4fec43..e2cdb3d43eca6e0e52fb00fbf3801f4b0983c19b 100644
--- a/net/minecraft/world/item/ThrowablePotionItem.java --- a/net/minecraft/world/item/ThrowablePotionItem.java
+++ b/net/minecraft/world/item/ThrowablePotionItem.java +++ b/net/minecraft/world/item/ThrowablePotionItem.java
@@ -24,7 +24,7 @@ public abstract class ThrowablePotionItem extends PotionItem implements Projecti @@ -24,7 +24,7 @@ public abstract class ThrowablePotionItem extends PotionItem implements Projecti
@@ -14393,7 +14407,7 @@ index 86198fb3150409b4b3e123982d8d3ba40b774621..6495c82fb88062875024c59a7c29d6d1
if (event.callEvent() && thrownPotion.attemptSpawn()) { if (event.callEvent() && thrownPotion.attemptSpawn()) {
if (event.shouldConsume()) { if (event.shouldConsume()) {
diff --git a/net/minecraft/world/item/TridentItem.java b/net/minecraft/world/item/TridentItem.java diff --git a/net/minecraft/world/item/TridentItem.java b/net/minecraft/world/item/TridentItem.java
index df629e3f2defce5e65aaf874d7c5ddff71f39c28..34d15412b8f68ed1bae45b81ecf759c9c4d7e20c 100644 index fac4c58ea5d467a8686e42676e2323fbddeb8c7b..7fe10d298a1204d87c0484f97f3767de6779c687 100644
--- a/net/minecraft/world/item/TridentItem.java --- a/net/minecraft/world/item/TridentItem.java
+++ b/net/minecraft/world/item/TridentItem.java +++ b/net/minecraft/world/item/TridentItem.java
@@ -83,7 +83,7 @@ public class TridentItem extends Item implements ProjectileItem { @@ -83,7 +83,7 @@ public class TridentItem extends Item implements ProjectileItem {
@@ -14405,7 +14419,7 @@ index df629e3f2defce5e65aaf874d7c5ddff71f39c28..34d15412b8f68ed1bae45b81ecf759c9
); );
// Paper start - PlayerLaunchProjectileEvent // Paper start - PlayerLaunchProjectileEvent
com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(stack), (org.bukkit.entity.Projectile) tridentDelayed.projectile().getBukkitEntity()); com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(stack), (org.bukkit.entity.Projectile) tridentDelayed.projectile().getBukkitEntity());
@@ -94,6 +94,7 @@ public class TridentItem extends Item implements ProjectileItem { @@ -93,6 +93,7 @@ public class TridentItem extends Item implements ProjectileItem {
return false; return false;
} }
ThrownTrident thrownTrident = tridentDelayed.projectile(); // Paper - PlayerLaunchProjectileEvent ThrownTrident thrownTrident = tridentDelayed.projectile(); // Paper - PlayerLaunchProjectileEvent
@@ -14413,7 +14427,7 @@ index df629e3f2defce5e65aaf874d7c5ddff71f39c28..34d15412b8f68ed1bae45b81ecf759c9
if (event.shouldConsume()) { if (event.shouldConsume()) {
stack.hurtWithoutBreaking(1, player); // Paper - PlayerLaunchProjectileEvent stack.hurtWithoutBreaking(1, player); // Paper - PlayerLaunchProjectileEvent
} }
@@ -126,6 +127,18 @@ public class TridentItem extends Item implements ProjectileItem { @@ -125,6 +126,18 @@ public class TridentItem extends Item implements ProjectileItem {
f1 *= tridentSpinAttackStrength / squareRoot; f1 *= tridentSpinAttackStrength / squareRoot;
f2 *= tridentSpinAttackStrength / squareRoot; f2 *= tridentSpinAttackStrength / squareRoot;
org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerRiptideEvent(player, stack, f, f1, f2); // CraftBukkit org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerRiptideEvent(player, stack, f, f1, f2); // CraftBukkit
@@ -15085,7 +15099,7 @@ index d4fbf130e23a959be8268085067b3bea1541be9a..2e79ce7e02aaa4abcef1507bba71e030
+ // Purpur end - bonemealable cactus + // Purpur end - bonemealable cactus
} }
diff --git a/net/minecraft/world/level/block/CakeBlock.java b/net/minecraft/world/level/block/CakeBlock.java diff --git a/net/minecraft/world/level/block/CakeBlock.java b/net/minecraft/world/level/block/CakeBlock.java
index 72236993ebc4fbfc8b6316577caaa9c780bd447b..7c3b5170690af3bbdc856af96c3e01b0e55d6412 100644 index cdd138a1d25a23fe3ca783383b45226154242ef0..fb820f05c5b9cbb1d4a99e26421ae639a1955365 100644
--- a/net/minecraft/world/level/block/CakeBlock.java --- a/net/minecraft/world/level/block/CakeBlock.java
+++ b/net/minecraft/world/level/block/CakeBlock.java +++ b/net/minecraft/world/level/block/CakeBlock.java
@@ -109,6 +109,7 @@ public class CakeBlock extends Block { @@ -109,6 +109,7 @@ public class CakeBlock extends Block {
@@ -16873,10 +16887,10 @@ index 84f3073444ae9e11e5d11224d6af6474ced925e2..e53398996bbb278c6e06024d8ca945b3
} }
diff --git a/org/purpurmc/purpur/PurpurConfig.java b/org/purpurmc/purpur/PurpurConfig.java diff --git a/org/purpurmc/purpur/PurpurConfig.java b/org/purpurmc/purpur/PurpurConfig.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..ed777b003140486fd5d8d1db7af770301e30bec9 index 0000000000000000000000000000000000000000..88f737304d4f4a774956a1cc39b5c01c37a3891d
--- /dev/null --- /dev/null
+++ b/org/purpurmc/purpur/PurpurConfig.java +++ b/org/purpurmc/purpur/PurpurConfig.java
@@ -0,0 +1,592 @@ @@ -0,0 +1,597 @@
+package org.purpurmc.purpur; +package org.purpurmc.purpur;
+ +
+import com.google.common.base.Throwables; +import com.google.common.base.Throwables;
@@ -17452,6 +17466,11 @@ index 0000000000000000000000000000000000000000..ed777b003140486fd5d8d1db7af77030
+ registerMinecraftDebugCommands = getBoolean("settings.register-minecraft-debug-commands", registerMinecraftDebugCommands); + registerMinecraftDebugCommands = getBoolean("settings.register-minecraft-debug-commands", registerMinecraftDebugCommands);
+ } + }
+ +
+ public static boolean registerMinecraftDisabledCommands = false;
+ private static void registerMinecraftDisabledCommands() {
+ registerMinecraftDisabledCommands = getBoolean("settings.register-minecraft-disabled-commands", registerMinecraftDebugCommands);
+ }
+
+ public static List<String> startupCommands = new ArrayList<>(); + public static List<String> startupCommands = new ArrayList<>();
+ private static void startupCommands() { + private static void startupCommands() {
+ startupCommands.clear(); + startupCommands.clear();

View File

@@ -69,7 +69,7 @@ index 12e697a626ce68127ac2157fca0e5408beb13f0b..46118a63b721d445623c4d831881652d
this.tickables.get(i).run(); this.tickables.get(i).run();
} }
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index c746d86439d45e60903248438a23cc1463154645..849428f5ad870ac93f29cec8bc7d3d335550cf14 100644 index 940d6c2b5610e7bda00267db4108866d5cba3d8a..1105b9e12600b8fc0df664bfd2fa53c7ade78da2 100644
--- a/net/minecraft/server/level/ServerPlayer.java --- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java
@@ -437,6 +437,8 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -437,6 +437,8 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -94,10 +94,10 @@ index ca9ba2a2535eab66622230778efdf941f540f6d2..95f89a415f7f7b9d4d7823744cb6bcc6
bridge.removeChannel(channel); bridge.removeChannel(channel);
} }
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 1fda5f9d285a51fd642369b4cc32826c38019c69..aefe56847cab77cfc83ef24e965a1be9d9454107 100644 index 7abe38f2c3939a2074b72f1d664ba5ad24fc591f..16e546fab3c7a025de7d04147b5b64d77b30c5a8 100644
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -3735,6 +3735,17 @@ public class ServerGamePacketListenerImpl @@ -3677,6 +3677,17 @@ public class ServerGamePacketListenerImpl
@Override @Override
public void handleCustomPayload(ServerboundCustomPayloadPacket packet) { public void handleCustomPayload(ServerboundCustomPayloadPacket packet) {

View File

@@ -7,10 +7,10 @@ AFK command & command cooldown
AFK title message AFK title message
diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java
index 1dc009e85403fe0b6a68daefecfe5cb25ad263cd..de450f9ef03944b101b483126af6a778ae8a4d1d 100644 index 287c0936930ff4f3ca6dc2a4cbfc796a120fe4c0..3f32da75ee0a8a993b54e4156f7e4be9cc922ade 100644
--- a/net/minecraft/commands/Commands.java --- a/net/minecraft/commands/Commands.java
+++ b/net/minecraft/commands/Commands.java +++ b/net/minecraft/commands/Commands.java
@@ -277,6 +277,7 @@ public class Commands { @@ -283,6 +283,7 @@ public class Commands {
StopCommand.register(this.dispatcher); StopCommand.register(this.dispatcher);
TransferCommand.register(this.dispatcher); TransferCommand.register(this.dispatcher);
WhitelistCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher);
@@ -19,7 +19,7 @@ index 1dc009e85403fe0b6a68daefecfe5cb25ad263cd..de450f9ef03944b101b483126af6a778
org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur - Add demo command org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur - Add demo command
org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur - Add ping command org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur - Add ping command
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 77ca4f505dc0a1aa6292cfcd957b734ab107f657..5f4dcb645670dd1b07ff865d50530b731f0ef769 100644 index b8f586376fe0e75fb8fb219a07849764d987cd10..f3282991e922e5e1527a374e771f437718fb2b84 100644
--- a/net/minecraft/server/level/ServerPlayer.java --- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java
@@ -2423,6 +2423,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -2423,6 +2423,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -53,7 +53,7 @@ index 77ca4f505dc0a1aa6292cfcd957b734ab107f657..5f4dcb645670dd1b07ff865d50530b73
} else { } else {
getBukkitEntity().setPlayerListName(prefix + scoreboardName + suffix, true); getBukkitEntity().setPlayerListName(prefix + scoreboardName + suffix, true);
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index c6b871037f9dea8c6cbe9d0a2acff2cb2a960c09..b3c138e78552ba348d67c37343c6684d37f2e10f 100644 index a08351fc29a06f1db491b2aa8b79f1850bc8cb19..b3f45d5e8ff92c50adfc4885349ec0d29992037d 100644
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2371,6 +2371,7 @@ public class ServerGamePacketListenerImpl @@ -2371,6 +2371,7 @@ public class ServerGamePacketListenerImpl
@@ -164,7 +164,7 @@ index e999ce4ed3a1bba81f61085ead2565f2d3e90cfa..9026b45b6ee7f53f3a3872cda1a8c3f9
player.awardStat(Stats.LEAVE_GAME); player.awardStat(Stats.LEAVE_GAME);
// CraftBukkit start - Quitting must be before we do final save of data, in case plugins need to modify it // CraftBukkit start - Quitting must be before we do final save of data, in case plugins need to modify it
diff --git a/org/purpurmc/purpur/PurpurConfig.java b/org/purpurmc/purpur/PurpurConfig.java diff --git a/org/purpurmc/purpur/PurpurConfig.java b/org/purpurmc/purpur/PurpurConfig.java
index 31450de492fbfdd83608ae668072bebd525db566..b83b4536ac756b797f6f2d14886372f01e91145c 100644 index 21fa7e0e6838bf9a81ee6faf19c944e69b1fe740..f8045ef8b800b608388fbdc31337ab349a54b8a6 100644
--- a/org/purpurmc/purpur/PurpurConfig.java --- a/org/purpurmc/purpur/PurpurConfig.java
+++ b/org/purpurmc/purpur/PurpurConfig.java +++ b/org/purpurmc/purpur/PurpurConfig.java
@@ -175,6 +175,11 @@ public class PurpurConfig { @@ -175,6 +175,11 @@ public class PurpurConfig {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable unknown command message
diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java
index de450f9ef03944b101b483126af6a778ae8a4d1d..d201c3965d5a55de740175c140bc7ee411f1be78 100644 index 3f32da75ee0a8a993b54e4156f7e4be9cc922ade..32a9d6e9b18ac1cf66c12462221ebb53f86eac3e 100644
--- a/net/minecraft/commands/Commands.java --- a/net/minecraft/commands/Commands.java
+++ b/net/minecraft/commands/Commands.java +++ b/net/minecraft/commands/Commands.java
@@ -405,31 +405,8 @@ public class Commands { @@ -411,31 +411,8 @@ public class Commands {
// Paper start - Add UnknownCommandEvent // Paper start - Add UnknownCommandEvent
final net.kyori.adventure.text.TextComponent.Builder builder = net.kyori.adventure.text.Component.text(); final net.kyori.adventure.text.TextComponent.Builder builder = net.kyori.adventure.text.Component.text();
// source.sendFailure(ComponentUtils.fromMessage(var7.getRawMessage())); // source.sendFailure(ComponentUtils.fromMessage(var7.getRawMessage()));
@@ -41,7 +41,7 @@ index de450f9ef03944b101b483126af6a778ae8a4d1d..d201c3965d5a55de740175c140bc7ee4
org.bukkit.Bukkit.getServer().getPluginManager().callEvent(event); org.bukkit.Bukkit.getServer().getPluginManager().callEvent(event);
if (event.message() != null) { if (event.message() != null) {
source.sendFailure(io.papermc.paper.adventure.PaperAdventure.asVanilla(event.message()), false); source.sendFailure(io.papermc.paper.adventure.PaperAdventure.asVanilla(event.message()), false);
@@ -663,6 +640,92 @@ public class Commands { @@ -669,6 +646,92 @@ public class Commands {
}; };
} }

View File

@@ -8,7 +8,7 @@ avoids multiple casting in Entity#distanceTo, using Math#sqrt directly instead o
these methods more able to be inlined by the JIT compiler. these methods more able to be inlined by the JIT compiler.
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 574be7359a2ad62c95a42c46c7a0f3c7a42eb44e..23b5695bf27663bbf1f2e3fd2010c0722ad425b0 100644 index 2bed05da7e5ba52e85d437460679a7b81293fe5b..fde4109b27fbafd9db1eaeedf7a6cd754a84024d 100644
--- a/net/minecraft/world/entity/Entity.java --- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java
@@ -2260,31 +2260,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -2260,31 +2260,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -43,7 +43,7 @@ index 574be7359a2ad62c95a42c46c7a0f3c7a42eb44e..23b5695bf27663bbf1f2e3fd2010c072
public void playerTouch(Player player) { public void playerTouch(Player player) {
} }
@@ -5510,4 +5485,34 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -5509,4 +5484,34 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return false; return false;
} }
// Purpur end - Ridables // Purpur end - Ridables

View File

@@ -664,7 +664,7 @@ index 498b1ab5013030c4b9fe0eca57215d93965c43b6..397ac1603c742b82e74cfb5d3e579935
// Paper start - extra debug info // Paper start - extra debug info
if (entity.valid) { if (entity.valid) {
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 42032812e3c50f3ade62a0e69cb1168d83c42a71..4140d5beb01b530e97ae308eedc639de70df696f 100644 index 74cf3d2b8681fe75564ebeeefd2111d71c77c4df..bf50cc20f0254ad4115a9db8ca633e219dcfbaa0 100644
--- a/net/minecraft/server/level/ServerPlayer.java --- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java
@@ -465,6 +465,8 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -465,6 +465,8 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -849,10 +849,10 @@ index f9e7532f86122a379692561a639a209a126e8bba..fab317d6c9a1c914f19bae11846cb576
if (isLocatorBarEnabledFor(player)) { if (isLocatorBarEnabledFor(player)) {
if (!connection.isBroken()) { if (!connection.isBroken()) {
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index fea6b829474e4fafbb9986a0c4fd73ae8fae1e09..8e4b092fb5f93cee60fc08ba08db143f2e5ab383 100644 index 129248da7e1bfa5edc1c1a43c98a400f697e735f..4be8e90dfe99663ea84dae04d9bb2b0e3bb01098 100644
--- a/net/minecraft/world/entity/Entity.java --- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java
@@ -3510,15 +3510,40 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -3509,15 +3509,40 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
if (this.portalProcess != null) { if (this.portalProcess != null) {
if (this.portalProcess.processPortalTeleportation(serverLevel, this, this.canUsePortal(false))) { if (this.portalProcess.processPortalTeleportation(serverLevel, this, this.canUsePortal(false))) {
this.setPortalCooldown(); this.setPortalCooldown();
@@ -900,7 +900,7 @@ index fea6b829474e4fafbb9986a0c4fd73ae8fae1e09..8e4b092fb5f93cee60fc08ba08db143f
} else if (this.portalProcess.hasExpired()) { } else if (this.portalProcess.hasExpired()) {
this.portalProcess = null; this.portalProcess = null;
} }
@@ -4095,6 +4120,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -4094,6 +4119,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
} }
private Entity teleportCrossDimension(ServerLevel oldLevel, ServerLevel newLevel, TeleportTransition teleportTransition) { private Entity teleportCrossDimension(ServerLevel oldLevel, ServerLevel newLevel, TeleportTransition teleportTransition) {
@@ -1090,7 +1090,7 @@ index 2258736e6f9f52efe5bd353b8949a7a0b9a4fdb8..aa71eca6cd69cfa79b84cb181c25c4be
} else { } else {
Entity entity = owner.teleport( Entity entity = owner.teleport(
diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java
index 1f601781643945920c7522b9c6100d0a37ad535d..f32148322f56f766108c6958124731a885c3bbc7 100644 index 2305a3ef6bbb21ab77cb261f20c08ac8ce1bf9ed..2e05f740943b3088fc10606bfe37417be404e747 100644
--- a/net/minecraft/world/inventory/AbstractContainerMenu.java --- a/net/minecraft/world/inventory/AbstractContainerMenu.java
+++ b/net/minecraft/world/inventory/AbstractContainerMenu.java +++ b/net/minecraft/world/inventory/AbstractContainerMenu.java
@@ -96,8 +96,14 @@ public abstract class AbstractContainerMenu { @@ -96,8 +96,14 @@ public abstract class AbstractContainerMenu {
@@ -1109,7 +1109,7 @@ index 1f601781643945920c7522b9c6100d0a37ad535d..f32148322f56f766108c6958124731a8
this.containerId = containerId; this.containerId = containerId;
} }
diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java
index 793c0a380b84d246db748be7e8807f1c0fa92d65..7cf8894b1fd6283567dca0b7d0b945b2fbae1b8c 100644 index 8c713d90e81df61d65fa6770516afc4704bbbb6f..f5ca3d6b29b11475ac56cd206464577b2d85b7dc 100644
--- a/net/minecraft/world/item/ItemStack.java --- a/net/minecraft/world/item/ItemStack.java
+++ b/net/minecraft/world/item/ItemStack.java +++ b/net/minecraft/world/item/ItemStack.java
@@ -398,8 +398,8 @@ public final class ItemStack implements DataComponentHolder { @@ -398,8 +398,8 @@ public final class ItemStack implements DataComponentHolder {

View File

@@ -27,7 +27,7 @@ index ce1ce18410fc1d47d999c918a8f880b43bf9797c..b9d31b0cbeabd5c62b810e50f6128786
level.playSound( level.playSound(
diff --git a/net/minecraft/world/item/CrossbowItem.java b/net/minecraft/world/item/CrossbowItem.java diff --git a/net/minecraft/world/item/CrossbowItem.java b/net/minecraft/world/item/CrossbowItem.java
index 2ab3da301f7edbb811c2e055f75434a799ef093a..74fd1472d6840b7106d8f424319170e2e891bbac 100644 index d49a5360d4a21e5b15bac94a823831e25d242a3d..2c2f169096fa904adb4cda0186bae7d0ab35f1e3 100644
--- a/net/minecraft/world/item/CrossbowItem.java --- a/net/minecraft/world/item/CrossbowItem.java
+++ b/net/minecraft/world/item/CrossbowItem.java +++ b/net/minecraft/world/item/CrossbowItem.java
@@ -95,7 +95,7 @@ public class CrossbowItem extends ProjectileWeaponItem { @@ -95,7 +95,7 @@ public class CrossbowItem extends ProjectileWeaponItem {
@@ -65,7 +65,7 @@ index 2ab3da301f7edbb811c2e055f75434a799ef093a..74fd1472d6840b7106d8f424319170e2
CriteriaTriggers.SHOT_CROSSBOW.trigger(serverPlayer, weapon); CriteriaTriggers.SHOT_CROSSBOW.trigger(serverPlayer, weapon);
serverPlayer.awardStat(Stats.ITEM_USED.get(weapon.getItem())); serverPlayer.awardStat(Stats.ITEM_USED.get(weapon.getItem()));
diff --git a/net/minecraft/world/item/ProjectileWeaponItem.java b/net/minecraft/world/item/ProjectileWeaponItem.java diff --git a/net/minecraft/world/item/ProjectileWeaponItem.java b/net/minecraft/world/item/ProjectileWeaponItem.java
index fb5077450aa9f7b7a03dd20c27a68dfdaab5ef06..f37fd3b9ab725e5b8eb7fccf9b35bbc09e3a2d0c 100644 index f12b9e4e8a78c713782af548d1cb15ef363305b4..d1661c9b971ba431da3f71fd6e0c3517c6625a11 100644
--- a/net/minecraft/world/item/ProjectileWeaponItem.java --- a/net/minecraft/world/item/ProjectileWeaponItem.java
+++ b/net/minecraft/world/item/ProjectileWeaponItem.java +++ b/net/minecraft/world/item/ProjectileWeaponItem.java
@@ -40,7 +40,20 @@ public abstract class ProjectileWeaponItem extends Item { @@ -40,7 +40,20 @@ public abstract class ProjectileWeaponItem extends Item {
@@ -131,10 +131,10 @@ index fb5077450aa9f7b7a03dd20c27a68dfdaab5ef06..f37fd3b9ab725e5b8eb7fccf9b35bbc0
if (event.getProjectile() == projectile.getBukkitEntity()) { if (event.getProjectile() == projectile.getBukkitEntity()) {
if (Projectile.spawnProjectile( if (Projectile.spawnProjectile(
@@ -82,7 +115,25 @@ public abstract class ProjectileWeaponItem extends Item { @@ -79,7 +112,25 @@ public abstract class ProjectileWeaponItem extends Item {
if (shooter instanceof net.minecraft.server.level.ServerPlayer serverPlayer) { level,
serverPlayer.containerMenu.sendAllDataToRemote(); itemStack
} ).isRemoved()) {
- return; - return;
+ // Paper start - prevent item consumption for cancelled events + // Paper start - prevent item consumption for cancelled events
+ continue; // call for each shot projectile + continue; // call for each shot projectile
@@ -158,7 +158,7 @@ index fb5077450aa9f7b7a03dd20c27a68dfdaab5ef06..f37fd3b9ab725e5b8eb7fccf9b35bbc0
} }
} }
// CraftBukkit end // CraftBukkit end
@@ -92,6 +143,7 @@ public abstract class ProjectileWeaponItem extends Item { @@ -89,6 +140,7 @@ public abstract class ProjectileWeaponItem extends Item {
} }
} }
} }
@@ -166,7 +166,7 @@ index fb5077450aa9f7b7a03dd20c27a68dfdaab5ef06..f37fd3b9ab725e5b8eb7fccf9b35bbc0
} }
protected int getDurabilityUse(ItemStack stack) { protected int getDurabilityUse(ItemStack stack) {
@@ -115,11 +167,21 @@ public abstract class ProjectileWeaponItem extends Item { @@ -112,11 +164,21 @@ public abstract class ProjectileWeaponItem extends Item {
} }
protected static List<ItemStack> draw(ItemStack weapon, ItemStack ammo, LivingEntity shooter) { protected static List<ItemStack> draw(ItemStack weapon, ItemStack ammo, LivingEntity shooter) {
@@ -192,7 +192,7 @@ index fb5077450aa9f7b7a03dd20c27a68dfdaab5ef06..f37fd3b9ab725e5b8eb7fccf9b35bbc0
if (ammo.isEmpty()) { if (ammo.isEmpty()) {
return List.of(); return List.of();
} else { } else {
@@ -127,8 +189,9 @@ public abstract class ProjectileWeaponItem extends Item { @@ -124,8 +186,9 @@ public abstract class ProjectileWeaponItem extends Item {
List<ItemStack> list = new ArrayList<>(i); List<ItemStack> list = new ArrayList<>(i);
ItemStack itemStack = ammo.copy(); ItemStack itemStack = ammo.copy();
@@ -203,7 +203,7 @@ index fb5077450aa9f7b7a03dd20c27a68dfdaab5ef06..f37fd3b9ab725e5b8eb7fccf9b35bbc0
if (!itemStack1.isEmpty()) { if (!itemStack1.isEmpty()) {
list.add(itemStack1); list.add(itemStack1);
} }
@@ -139,17 +202,23 @@ public abstract class ProjectileWeaponItem extends Item { @@ -136,17 +199,23 @@ public abstract class ProjectileWeaponItem extends Item {
} }
protected static ItemStack useAmmo(ItemStack weapon, ItemStack ammo, LivingEntity shooter, boolean intangable) { protected static ItemStack useAmmo(ItemStack weapon, ItemStack ammo, LivingEntity shooter, boolean intangable) {

View File

@@ -11,10 +11,10 @@ As part of: Airplane (https://github.com/TECHNOVE/Airplane)
Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 8e4b092fb5f93cee60fc08ba08db143f2e5ab383..9a13cf8460472b8d3968cd8269a2b63d0b49f1a9 100644 index 4be8e90dfe99663ea84dae04d9bb2b0e3bb01098..aa1c937f8cee164b9e832b7d155bcbcf22e95b63 100644
--- a/net/minecraft/world/entity/Entity.java --- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java
@@ -4813,10 +4813,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -4812,10 +4812,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
// Paper start - optimise collisions // Paper start - optimise collisions
public boolean updateFluidHeightAndDoFluidPushing(final TagKey<Fluid> fluid, final double flowScale) { public boolean updateFluidHeightAndDoFluidPushing(final TagKey<Fluid> fluid, final double flowScale) {
@@ -26,7 +26,7 @@ index 8e4b092fb5f93cee60fc08ba08db143f2e5ab383..9a13cf8460472b8d3968cd8269a2b63d
final AABB boundingBox = this.getBoundingBox().deflate(1.0E-3); final AABB boundingBox = this.getBoundingBox().deflate(1.0E-3);
final Level world = this.level; final Level world = this.level;
@@ -4852,7 +4849,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -4851,7 +4848,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
for (int currChunkZ = minChunkZ; currChunkZ <= maxChunkZ; ++currChunkZ) { for (int currChunkZ = minChunkZ; currChunkZ <= maxChunkZ; ++currChunkZ) {
for (int currChunkX = minChunkX; currChunkX <= maxChunkX; ++currChunkX) { for (int currChunkX = minChunkX; currChunkX <= maxChunkX; ++currChunkX) {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Flush location while knockback
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
index 78dc237d5de38cff9f013d36da9bbb16104dec96..2dcc4446f898124dfc9134f9fae892167256d724 100644 index 6c9dfd76596b2e890b0b0dad5d98e8785a68c5a1..731f50fa6786557db0a1745442b2ad61a6685375 100644
--- a/net/minecraft/world/entity/player/Player.java --- a/net/minecraft/world/entity/player/Player.java
+++ b/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java
@@ -1363,6 +1363,13 @@ public abstract class Player extends LivingEntity { @@ -1363,6 +1363,13 @@ public abstract class Player extends LivingEntity {
@@ -34,4 +34,4 @@ index 78dc237d5de38cff9f013d36da9bbb16104dec96..2dcc4446f898124dfc9134f9fae89216
+ // Leaf end - Flush location while knockback + // Leaf end - Flush location while knockback
} else { } else {
sendSoundEffect(this, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_ATTACK_NODAMAGE, this.getSoundSource(), 1.0F, 1.0F); // Paper - send while respecting visibility sendSoundEffect(this, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_ATTACK_NODAMAGE, this.getSoundSource(), 1.0F, 1.0F); // Paper - send while respecting visibility
this.containerMenu.sendAllDataToRemote(); // CraftBukkit - resync on cancelled event // CraftBukkit end

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Fix crash during parsing unknown command message
Use direct impl for unknown commands message parse to prevent crash Use direct impl for unknown commands message parse to prevent crash
diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java
index d201c3965d5a55de740175c140bc7ee411f1be78..38e3c638c8df954f62e8405883bf7a78b19691c3 100644 index 32a9d6e9b18ac1cf66c12462221ebb53f86eac3e..5f80c7b06411e0ad9b0f71f03bb4568daea3ea4d 100644
--- a/net/minecraft/commands/Commands.java --- a/net/minecraft/commands/Commands.java
+++ b/net/minecraft/commands/Commands.java +++ b/net/minecraft/commands/Commands.java
@@ -654,7 +654,7 @@ public class Commands { @@ -660,7 +660,7 @@ public class Commands {
net.kyori.adventure.text.Component detailComponent = null; net.kyori.adventure.text.Component detailComponent = null;
if (rawMessage.contains("<message>")) { if (rawMessage.contains("<message>")) {
@@ -18,7 +18,7 @@ index d201c3965d5a55de740175c140bc7ee411f1be78..38e3c638c8df954f62e8405883bf7a78
} }
final String input = commandSyntaxException.getInput(); final String input = commandSyntaxException.getInput();
@@ -697,7 +697,7 @@ public class Commands { @@ -703,7 +703,7 @@ public class Commands {
private static net.kyori.adventure.text.Component getVanillaUnknownCommandMessage( private static net.kyori.adventure.text.Component getVanillaUnknownCommandMessage(
net.kyori.adventure.text.TextComponent.Builder builder, CommandSyntaxException var7, String command net.kyori.adventure.text.TextComponent.Builder builder, CommandSyntaxException var7, String command
) { ) {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] optimize waypoint
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index eff20b8de6bddfeec4f25e6381bf914bca38e1c6..f408c1f89435b473896249834a081a0b34aa7767 100644 index bdac75d6c9805af0363d2d183330318ca2ff82da..2b29b0e5334ad9f8b3768e9b198565f093c6d3a4 100644
--- a/net/minecraft/world/entity/Entity.java --- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java
@@ -5145,6 +5145,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -5144,6 +5144,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return; return;
} }
// Paper end - Block invalid positions and bounding box // Paper end - Block invalid positions and bounding box
@@ -16,7 +16,7 @@ index eff20b8de6bddfeec4f25e6381bf914bca38e1c6..f408c1f89435b473896249834a081a0b
if (this.position.x != x || this.position.y != y || this.position.z != z) { if (this.position.x != x || this.position.y != y || this.position.z != z) {
synchronized (this.posLock) { // Paper - detailed watchdog information synchronized (this.posLock) { // Paper - detailed watchdog information
this.position = new Vec3(x, y, z); this.position = new Vec3(x, y, z);
@@ -5152,7 +5153,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -5151,7 +5152,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
int floor = Mth.floor(x); int floor = Mth.floor(x);
int floor1 = Mth.floor(y); int floor1 = Mth.floor(y);
int floor2 = Mth.floor(z); int floor2 = Mth.floor(z);
@@ -26,7 +26,7 @@ index eff20b8de6bddfeec4f25e6381bf914bca38e1c6..f408c1f89435b473896249834a081a0b
this.blockPosition = new BlockPos(floor, floor1, floor2); this.blockPosition = new BlockPos(floor, floor1, floor2);
this.inBlockState = null; this.inBlockState = null;
if (SectionPos.blockToSectionCoord(floor) != this.chunkPosition.x || SectionPos.blockToSectionCoord(floor2) != this.chunkPosition.z) { if (SectionPos.blockToSectionCoord(floor) != this.chunkPosition.x || SectionPos.blockToSectionCoord(floor2) != this.chunkPosition.z) {
@@ -5161,7 +5163,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -5160,7 +5162,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
} }
this.levelCallback.onMove(); this.levelCallback.onMove();

View File

@@ -132,7 +132,7 @@ index 307738d09dc4eb5918cbfb1153feb739fbc1cc68..0fc09b85e9d8e12f8103dcf755afa392
private void tickPassenger(Entity ridingEntity, Entity passengerEntity, final boolean isActive) { // Paper - EAR 2 private void tickPassenger(Entity ridingEntity, Entity passengerEntity, final boolean isActive) { // Paper - EAR 2
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index f408c1f89435b473896249834a081a0b34aa7767..918cb68282ce179c6c3f5455f108501f7e965068 100644 index 2b29b0e5334ad9f8b3768e9b198565f093c6d3a4..086525c31bd8167baac79a7f41e3e4d1ca783136 100644
--- a/net/minecraft/world/entity/Entity.java --- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java
@@ -1170,16 +1170,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -1170,16 +1170,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -183,7 +183,7 @@ index f408c1f89435b473896249834a081a0b34aa7767..918cb68282ce179c6c3f5455f108501f
} }
private void applyMovementEmissionAndPlaySound(Entity.MovementEmission movementEmission, Vec3 movement, BlockPos pos, BlockState state) { private void applyMovementEmissionAndPlaySound(Entity.MovementEmission movementEmission, Vec3 movement, BlockPos pos, BlockState state) {
@@ -5046,9 +5020,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -5045,9 +5019,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
} }
public void setDeltaMovement(Vec3 deltaMovement) { public void setDeltaMovement(Vec3 deltaMovement) {
@@ -193,7 +193,7 @@ index f408c1f89435b473896249834a081a0b34aa7767..918cb68282ce179c6c3f5455f108501f
} }
public void addDeltaMovement(Vec3 addend) { public void addDeltaMovement(Vec3 addend) {
@@ -5147,9 +5119,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -5146,9 +5118,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
// Paper end - Block invalid positions and bounding box // Paper end - Block invalid positions and bounding box
boolean blockUpdated; // Leaf - optimize waypoint boolean blockUpdated; // Leaf - optimize waypoint
if (this.position.x != x || this.position.y != y || this.position.z != z) { if (this.position.x != x || this.position.y != y || this.position.z != z) {

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Purpur Server Paper Changes
Original license: MIT Original license: MIT
Original project: https://github.com/PurpurMC/Purpur Original project: https://github.com/PurpurMC/Purpur
Commit: 2d8cdd15c79fce29455eaf8bedfc203bd16ca4d7 Commit: 11c030a8f81b2f845a9f2749790692c2d152f284
Patches listed below are removed in this patch, They exists in Gale or Leaf: Patches listed below are removed in this patch, They exists in Gale or Leaf:
* "Rebrand.patch" * "Rebrand.patch"
@@ -1067,6 +1067,25 @@ index 02deb9c37250144be9afa0fe55df2a49017a7070..dfb597fcb8d01ed6cf20eae57e260949
+ } + }
+ // Purpur end - Llama API + // Purpur end - Llama API
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java
index cabdcbef0e6f7ca41ff5677bc2e6a81665ca812d..c47ca9ab164b6abd28e979c94456918162e49214 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java
@@ -35,12 +35,12 @@ public class CraftPhantom extends CraftMob implements Phantom, CraftEnemy {
@Override
public boolean shouldBurnInDay() {
- return this.getHandle().shouldBurnInDay;
+ return this.getHandle().shouldBurnInDay(); // Purpur - API for any mob to burn daylight
}
@Override
public void setShouldBurnInDay(boolean shouldBurnInDay) {
- this.getHandle().shouldBurnInDay = shouldBurnInDay;
+ this.getHandle().setShouldBurnInDay(shouldBurnInDay); // Purpur - API for any mob to burn daylight
}
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 9d6235390c530b4f3780ac8d088ad8f6ee3db58e..ab454a7c53b074c8c60bab38c0544aa3b69d5c6d 100644 index 9d6235390c530b4f3780ac8d088ad8f6ee3db58e..ab454a7c53b074c8c60bab38c0544aa3b69d5c6d 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1292,7 +1311,7 @@ index 723a8e659485850632adf173e52669e6e4f3fcc0..98880f082af386f2a1dc64bc13667030
+ // Purpur end - Configurable chance for wolves to spawn rabid + // Purpur end - Configurable chance for wolves to spawn rabid
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 1d112510093d5eb5117adf16b92dd3411a610a4a..a162440a583801671787163d998d6b9546ef7e61 100644 index 183d83f023644c9c5dba0702ba2464566e74ad32..658385b2887d6debec7fc941c28621da5d263411 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -525,6 +525,15 @@ public class CraftEventFactory { @@ -525,6 +525,15 @@ public class CraftEventFactory {