9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-22 16:39:22 +00:00

Updated Upstream (Gale/Purpur)

This commit is contained in:
Dreeam
2024-05-07 08:32:10 -04:00
parent 234d7e311a
commit b81d95630e
20 changed files with 282 additions and 120 deletions

View File

@@ -1,7 +1,7 @@
group = org.dreeam.leaf group = org.dreeam.leaf
version = 1.20.6-R0.1-SNAPSHOT version = 1.20.6-R0.1-SNAPSHOT
galeCommit = 6582b9b215859997f52debf81c75dfb7aec3e2ac galeCommit = 593d73f96816716e0ef7c017140b914bf0c93279
org.gradle.caching = true org.gradle.caching = true
org.gradle.parallel = true org.gradle.parallel = true

View File

@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-rc-1-bin.zip
networkTimeout=10000 networkTimeout=10000
validateDistributionUrl=true validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME

2
gradlew vendored
View File

@@ -55,7 +55,7 @@
# Darwin, MinGW, and NonStop. # Darwin, MinGW, and NonStop.
# #
# (3) This script is generated from the Groovy template # (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project. # within the Gradle project.
# #
# You can find Gradle at https://github.com/gradle/gradle/. # You can find Gradle at https://github.com/gradle/gradle/.

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Leaf config files
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
index db539f0324f2d7c9a9bcb2738bd8eb4158f8d4b5..defa5be01d2f396a1e46c3ad9aa1d20e7c505424 100644 index 359dcc9e25a49df5b79e568bfbf7a03e79b6d645..4fefbde12a189a481efd0fd0fec06ff0bd02a57b 100644
--- a/src/main/java/org/bukkit/Server.java --- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java
@@ -2307,6 +2307,14 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi @@ -2310,6 +2310,14 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
// Paper end // Paper end

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: a90a4730d672968428e371f024c8317b64eba9af Commit: a398e71e9d559597b85108ca91b929738352582e
Patches below are removed in this patch: Patches below are removed in this patch:
Pufferfish-API-Changes.patch Pufferfish-API-Changes.patch
@@ -33,10 +33,10 @@ index a736d7bcdc5861a01b66ba36158db1c716339346..22fc165fd9c95f0f3ae1be7a0857e48c
@Override @Override
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
index 1a4eae45a9352fcc55b8c8a63a126d734604e8c6..a3c696dfb2d6b00ba3f681b74e2cd56c65cf16b2 100644 index 8dfb22c3cf06c8037ca709ebd486a37c71a5a352..76dbc19ab0b87a3b081dbc38e8185268a50f4e3e 100644
--- a/src/main/java/org/bukkit/Bukkit.java --- a/src/main/java/org/bukkit/Bukkit.java
+++ b/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java
@@ -2974,4 +2974,127 @@ public final class Bukkit { @@ -2977,4 +2977,127 @@ public final class Bukkit {
public static Server.Spigot spigot() { public static Server.Spigot spigot() {
return server.spigot(); return server.spigot();
} }
@@ -255,10 +255,10 @@ index 918a045165cdcde264bc24082b7afebb407271de..687d11619379aead7f665d4a5f8f8bcc
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
index 82d009c0bbe4b3026a535e02d6e0ed20c7bd525d..0366400fe6dea7af40badaa3335b49ff5992a516 100644 index 7a337fe908915f8ea487a0b9236c511cb07d5e66..1dd02e2782364bf25521088cf8858d3443643447 100644
--- a/src/main/java/org/bukkit/Material.java --- a/src/main/java/org/bukkit/Material.java
+++ b/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java
@@ -11653,4 +11653,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla @@ -11657,4 +11657,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
public boolean isEnabledByFeature(@NotNull World world) { public boolean isEnabledByFeature(@NotNull World world) {
return Bukkit.getDataPackManager().isEnabledByFeature(this, world); return Bukkit.getDataPackManager().isEnabledByFeature(this, world);
} }
@@ -411,10 +411,10 @@ index 30298a629b39bd43ce14b414fc697b2dfcbea89c..ce00af9121de7a910aaea4e0685a06d4
+ // Purpur end - OfflinePlayer API + // Purpur end - OfflinePlayer API
} }
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
index defa5be01d2f396a1e46c3ad9aa1d20e7c505424..20b9547f892e6da0337e1f19015fbb2d144cf871 100644 index 4fefbde12a189a481efd0fd0fec06ff0bd02a57b..5f306e9cf3ca332338a82414a420f3c7a58c31fe 100644
--- a/src/main/java/org/bukkit/Server.java --- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java
@@ -2307,6 +2307,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi @@ -2310,6 +2310,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
// Paper end // Paper end
@@ -433,7 +433,7 @@ index defa5be01d2f396a1e46c3ad9aa1d20e7c505424..20b9547f892e6da0337e1f19015fbb2d
// Leaf start // Leaf start
@NotNull @NotNull
public org.bukkit.configuration.file.YamlConfiguration getLeafConfig() public org.bukkit.configuration.file.YamlConfiguration getLeafConfig()
@@ -2624,4 +2636,104 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi @@ -2627,4 +2639,104 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
long getLastTickOversleepTime(); long getLastTickOversleepTime();
// Gale end - YAPFA - last tick time - API // Gale end - YAPFA - last tick time - API
@@ -996,10 +996,10 @@ index bc84b892cae5fe7019a3ad481e9da79956efa1fe..48eb5b00c460cccde29d327cef1d63fc
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
index 0b3a1f3285fc0d8954f4204a93d3905df01cd828..2ba39b38a97333f867bcabdf593448ca14255703 100644 index ba3edf4cb1a2fc0529465d6973ec086291bae41c..04392bebe3a0ca1cff8932610393cb3dbec1c722 100644
--- a/src/main/java/org/bukkit/entity/Player.java --- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java
@@ -3806,4 +3806,123 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @@ -3816,4 +3816,123 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
@Override @Override
Spigot spigot(); Spigot spigot();
// Spigot end // Spigot end

View File

@@ -7,10 +7,10 @@ Original license: MIT
Original project: https://github.com/KeYiMC/KeYi Original project: https://github.com/KeYiMC/KeYi
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
index 2ba39b38a97333f867bcabdf593448ca14255703..fbe4f03bec652e096c46496f1f52080ce43982eb 100644 index 04392bebe3a0ca1cff8932610393cb3dbec1c722..2d454fb1446c2d8808253b4f020c0afda341545c 100644
--- a/src/main/java/org/bukkit/entity/Player.java --- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java
@@ -3925,4 +3925,22 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @@ -3935,4 +3935,22 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
sendDeathScreen(message); sendDeathScreen(message);
} }
// Purpur end // Purpur end

View File

@@ -7,10 +7,10 @@ Original license: MIT
Original project: https://github.com/Cryptite/Slice Original project: https://github.com/Cryptite/Slice
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
index fbe4f03bec652e096c46496f1f52080ce43982eb..55a578e216cbc160d98d5f5675d8e3c52fa8c178 100644 index 2d454fb1446c2d8808253b4f020c0afda341545c..e2dbb6bf5a424d7d8b9e9b233badc2fe8cbbf28f 100644
--- a/src/main/java/org/bukkit/entity/Player.java --- a/src/main/java/org/bukkit/entity/Player.java
+++ b/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java
@@ -3628,6 +3628,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @@ -3638,6 +3638,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
String getClientBrandName(); String getClientBrandName();
// Paper end // Paper end

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Purpur generated-api Changes
Original license: MIT Original license: MIT
Original project: https://github.com/PurpurMC/Purpur Original project: https://github.com/PurpurMC/Purpur
Commit: a90a4730d672968428e371f024c8317b64eba9af Commit: a398e71e9d559597b85108ca91b929738352582e
diff --git a/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/com/destroystokyo/paper/entity/ai/VanillaGoal.java diff --git a/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/com/destroystokyo/paper/entity/ai/VanillaGoal.java
index 43f4deacef349502cbb207aafc4f9cb7a75177c5..6b692c24a62e2172116a6b9c371b1c0e2411c27e 100644 index 43f4deacef349502cbb207aafc4f9cb7a75177c5..6b692c24a62e2172116a6b9c371b1c0e2411c27e 100644

View File

@@ -9,7 +9,7 @@ Fix-pufferfish-issues.patch
Original license: MIT Original license: MIT
Original project: https://github.com/PurpurMC/Purpur Original project: https://github.com/PurpurMC/Purpur
Commit: a90a4730d672968428e371f024c8317b64eba9af Commit: a398e71e9d559597b85108ca91b929738352582e
Patches below are removed in this patch: Patches below are removed in this patch:
Metrics changes in Purpur-config-files.patch Metrics changes in Purpur-config-files.patch
@@ -657,10 +657,10 @@ index a024c697a65bbab27408da1d6a75e531d9719b47..e4fab82b369f2c2ea0d8c8acd814d061
// Paper end - Add drops to shear events // Paper end - Add drops to shear events
continue; continue;
diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java
index 6da6a7befa2dc8988900abee03d24ba894939932..8c9e214f6d77b3118750f63398a5f3881989cb42 100644 index 20dbef631bbb10285cc8060652247d00b2e1472e..364bbcd77316e781eefa5e40738b368331324d77 100644
--- a/src/main/java/net/minecraft/network/Connection.java --- a/src/main/java/net/minecraft/network/Connection.java
+++ b/src/main/java/net/minecraft/network/Connection.java +++ b/src/main/java/net/minecraft/network/Connection.java
@@ -608,11 +608,20 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> { @@ -609,11 +609,20 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
private static final int MAX_PER_TICK = io.papermc.paper.configuration.GlobalConfiguration.get().misc.maxJoinsPerTick; // Paper - Buffer joins to world private static final int MAX_PER_TICK = io.papermc.paper.configuration.GlobalConfiguration.get().misc.maxJoinsPerTick; // Paper - Buffer joins to world
private static int joinAttemptsThisTick; // Paper - Buffer joins to world private static int joinAttemptsThisTick; // Paper - Buffer joins to world
private static int currTick; // Paper - Buffer joins to world private static int currTick; // Paper - Buffer joins to world
@@ -1279,7 +1279,7 @@ index cdcbd708b7ee74002428ca8a148d857912ce14ab..bda8c6af98945d3e5fa671b9b3bc016d
} }
// Paper end - Fix merchant inventory not closing on entity removal // Paper end - Fix merchant inventory not closing on entity removal
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index f4829e31111bb640901e8143ed3afa4de3e28b7d..ada4956a0b204cb098e90979aff14db32455f481 100644 index f4829e31111bb640901e8143ed3afa4de3e28b7d..2707bc1dc8b45a239ffe0b0aeffe96a1359b9a5c 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -299,6 +299,10 @@ public class ServerPlayer extends Player { @@ -299,6 +299,10 @@ public class ServerPlayer extends Player {
@@ -1392,7 +1392,15 @@ index f4829e31111bb640901e8143ed3afa4de3e28b7d..ada4956a0b204cb098e90979aff14db3
} }
((ServerLevel) this.level()).updateSleepingPlayerList(); ((ServerLevel) this.level()).updateSleepingPlayerList();
@@ -1974,6 +2017,26 @@ public class ServerPlayer extends Player { @@ -1640,6 +1683,7 @@ public class ServerPlayer extends Player {
@Override
public void openTextEdit(SignBlockEntity sign, boolean front) {
+ if (level().purpurConfig.signAllowColors) this.connection.send(sign.getTranslatedUpdatePacket(textFilteringEnabled, front)); // Purpur
this.connection.send(new ClientboundBlockUpdatePacket(this.level(), sign.getBlockPos()));
this.connection.send(new ClientboundOpenSignEditorPacket(sign.getBlockPos(), front));
}
@@ -1974,6 +2018,26 @@ public class ServerPlayer extends Player {
this.lastSentExp = -1; // CraftBukkit - Added to reset this.lastSentExp = -1; // CraftBukkit - Added to reset
} }
@@ -1419,7 +1427,7 @@ index f4829e31111bb640901e8143ed3afa4de3e28b7d..ada4956a0b204cb098e90979aff14db3
@Override @Override
public void displayClientMessage(Component message, boolean overlay) { public void displayClientMessage(Component message, boolean overlay) {
this.sendSystemMessage(message, overlay); this.sendSystemMessage(message, overlay);
@@ -2299,8 +2362,68 @@ public class ServerPlayer extends Player { @@ -2299,8 +2363,68 @@ public class ServerPlayer extends Player {
public void resetLastActionTime() { public void resetLastActionTime() {
this.lastActionTime = Util.getMillis(); this.lastActionTime = Util.getMillis();
@@ -1488,7 +1496,7 @@ index f4829e31111bb640901e8143ed3afa4de3e28b7d..ada4956a0b204cb098e90979aff14db3
public ServerStatsCounter getStats() { public ServerStatsCounter getStats() {
return this.stats; return this.stats;
} }
@@ -2868,4 +2991,50 @@ public class ServerPlayer extends Player { @@ -2868,4 +2992,50 @@ public class ServerPlayer extends Player {
return (CraftPlayer) super.getBukkitEntity(); return (CraftPlayer) super.getBukkitEntity();
} }
// CraftBukkit end // CraftBukkit end
@@ -1614,7 +1622,7 @@ index 83196467cf7152ba756f5f6d179ee17c00a4325f..5972362c1c968dbabb799824227c6ae3
try { try {
String channels = payload.toString(com.google.common.base.Charsets.UTF_8); String channels = payload.toString(com.google.common.base.Charsets.UTF_8);
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 5d02133cffb226ea7e48f517c1414ee7933b300f..45cf2c58fac237fe169a4be75c9a445a002389dd 100644 index 79894b08d778a73336b3d265759baeb837d14ada..8432a36a7b047cf2d930735feb426233769e1931 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -336,6 +336,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -336,6 +336,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -1692,7 +1700,86 @@ index 5d02133cffb226ea7e48f517c1414ee7933b300f..45cf2c58fac237fe169a4be75c9a445a
server.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause server.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause
return; return;
} }
@@ -1315,8 +1344,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -1221,10 +1250,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
Objects.requireNonNull(list);
stream.forEach(list::add);
+ // Purpur start
+ boolean hasEditPerm = getCraftPlayer().hasPermission("purpur.book.color.edit");
+ boolean hasSignPerm = hasEditPerm || getCraftPlayer().hasPermission("purpur.book.color.sign");
+ // Purpur end
Consumer<List<FilteredText>> consumer = optional.isPresent() ? (list1) -> {
- this.signBook((FilteredText) list1.get(0), list1.subList(1, list1.size()), i);
+ this.signBook((FilteredText) list1.get(0), list1.subList(1, list1.size()), i, hasSignPerm); // Purpur
} : (list1) -> {
- this.updateBookContents(list1, i);
+ this.updateBookContents(list1, i, hasEditPerm); // Purpur
};
this.filterTextPacket((List) list).thenAcceptAsync(consumer, this.server);
@@ -1232,13 +1265,18 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
}
private void updateBookContents(List<FilteredText> pages, int slotId) {
+ // Purpur start
+ updateBookContents(pages, slotId, false);
+ }
+ private void updateBookContents(List<FilteredText> pages, int slotId, boolean hasPerm) {
+ // Purpur end
// CraftBukkit start
ItemStack handItem = this.player.getInventory().getItem(slotId);
ItemStack itemstack = handItem.copy();
// CraftBukkit end
if (itemstack.is(Items.WRITABLE_BOOK)) {
- List<Filterable<String>> list1 = pages.stream().map(this::filterableFromOutgoing).toList();
+ List<Filterable<String>> list1 = pages.stream().map(filteredText -> filterableFromOutgoing(filteredText).map(s -> color(s, hasPerm))).toList(); // Purpur
itemstack.set(DataComponents.WRITABLE_BOOK_CONTENT, new WritableBookContent(list1));
this.player.getInventory().setItem(slotId, CraftEventFactory.handleEditBookEvent(this.player, slotId, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent)
@@ -1246,6 +1284,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
}
private void signBook(FilteredText title, List<FilteredText> pages, int slotId) {
+ // Purpur start
+ signBook(title, pages, slotId, false);
+ }
+ private void signBook(FilteredText title, List<FilteredText> pages, int slotId, boolean hasPerm) {
+ // Purpur end
ItemStack itemstack = this.player.getInventory().getItem(slotId);
if (itemstack.is(Items.WRITABLE_BOOK)) {
@@ -1253,10 +1296,10 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
itemstack1.remove(DataComponents.WRITABLE_BOOK_CONTENT);
List<Filterable<Component>> list1 = (List<Filterable<Component>>) (List) pages.stream().map((filteredtext1) -> { // CraftBukkit - decompile error
- return this.filterableFromOutgoing(filteredtext1).map(Component::literal);
+ return this.filterableFromOutgoing(filteredtext1).map(s -> hexColor(s, hasPerm)); // Purpur
}).toList();
- itemstack1.set(DataComponents.WRITTEN_BOOK_CONTENT, new WrittenBookContent(this.filterableFromOutgoing(title), this.player.getName().getString(), 0, list1, true));
+ itemstack1.set(DataComponents.WRITTEN_BOOK_CONTENT, new WrittenBookContent(this.filterableFromOutgoing(title).map(s -> color(s, hasPerm)), this.player.getName().getString(), 0, list1, true)); // Purpur
CraftEventFactory.handleEditBookEvent(this.player, slotId, itemstack, itemstack1); // CraftBukkit
this.player.getInventory().setItem(slotId, itemstack); // CraftBukkit - event factory updates the hand book
}
@@ -1266,6 +1309,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
return this.player.isTextFilteringEnabled() ? Filterable.passThrough(message.filteredOrEmpty()) : Filterable.from(message);
}
+ // Purpur start
+ private Component hexColor(String str, boolean hasPerm) {
+ return hasPerm ? PaperAdventure.asVanilla(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacyAmpersand().deserialize(str)) : Component.literal(str);
+ }
+
+ private String color(String str, boolean hasPerm) {
+ return hasPerm ? org.bukkit.ChatColor.color(str, false) : str;
+ }
+ // Purpur end
+
@Override
public void handleEntityTagQuery(ServerboundEntityTagQueryPacket packet) {
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
@@ -1315,8 +1368,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@Override @Override
public void handleMovePlayer(ServerboundMovePlayerPacket packet) { public void handleMovePlayer(ServerboundMovePlayerPacket packet) {
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
@@ -1710,7 +1797,7 @@ index 5d02133cffb226ea7e48f517c1414ee7933b300f..45cf2c58fac237fe169a4be75c9a445a
} else { } else {
ServerLevel worldserver = this.player.serverLevel(); ServerLevel worldserver = this.player.serverLevel();
@@ -1503,7 +1540,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -1503,7 +1564,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
movedWrongly = true; movedWrongly = true;
if (event.getLogWarning()) if (event.getLogWarning())
// Paper end // Paper end
@@ -1719,7 +1806,7 @@ index 5d02133cffb226ea7e48f517c1414ee7933b300f..45cf2c58fac237fe169a4be75c9a445a
} // Paper } // Paper
} }
@@ -1571,6 +1608,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -1571,6 +1632,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
this.lastYaw = to.getYaw(); this.lastYaw = to.getYaw();
this.lastPitch = to.getPitch(); this.lastPitch = to.getPitch();
@@ -1728,7 +1815,7 @@ index 5d02133cffb226ea7e48f517c1414ee7933b300f..45cf2c58fac237fe169a4be75c9a445a
Location oldTo = to.clone(); Location oldTo = to.clone();
PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to);
this.cserver.getPluginManager().callEvent(event); this.cserver.getPluginManager().callEvent(event);
@@ -1612,6 +1651,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -1612,6 +1675,13 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
this.player.resetCurrentImpulseContext(); this.player.resetCurrentImpulseContext();
} }
@@ -1742,7 +1829,7 @@ index 5d02133cffb226ea7e48f517c1414ee7933b300f..45cf2c58fac237fe169a4be75c9a445a
this.player.checkMovementStatistics(this.player.getX() - d3, this.player.getY() - d4, this.player.getZ() - d5); this.player.checkMovementStatistics(this.player.getX() - d3, this.player.getY() - d4, this.player.getZ() - d5);
this.lastGoodX = this.player.getX(); this.lastGoodX = this.player.getX();
this.lastGoodY = this.player.getY(); this.lastGoodY = this.player.getY();
@@ -1651,6 +1697,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -1651,6 +1721,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
return false; return false;
} }
// Paper end - optimise out extra getCubes // Paper end - optimise out extra getCubes
@@ -1758,7 +1845,7 @@ index 5d02133cffb226ea7e48f517c1414ee7933b300f..45cf2c58fac237fe169a4be75c9a445a
private boolean isPlayerCollidingWithAnythingNew(LevelReader world, AABB box, double newX, double newY, double newZ) { private boolean isPlayerCollidingWithAnythingNew(LevelReader world, AABB box, double newX, double newY, double newZ) {
AABB axisalignedbb1 = this.player.getBoundingBox().move(newX - this.player.getX(), newY - this.player.getY(), newZ - this.player.getZ()); AABB axisalignedbb1 = this.player.getBoundingBox().move(newX - this.player.getX(), newY - this.player.getY(), newZ - this.player.getZ());
Iterable<VoxelShape> iterable = world.getCollisions(this.player, axisalignedbb1.deflate(9.999999747378752E-6D)); Iterable<VoxelShape> iterable = world.getCollisions(this.player, axisalignedbb1.deflate(9.999999747378752E-6D));
@@ -1661,7 +1716,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -1661,7 +1740,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
do { do {
if (!iterator.hasNext()) { if (!iterator.hasNext()) {
@@ -1767,7 +1854,7 @@ index 5d02133cffb226ea7e48f517c1414ee7933b300f..45cf2c58fac237fe169a4be75c9a445a
} }
voxelshape1 = (VoxelShape) iterator.next(); voxelshape1 = (VoxelShape) iterator.next();
@@ -1999,6 +2054,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -1999,6 +2078,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
boolean cancelled; boolean cancelled;
if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) {
@@ -1775,7 +1862,7 @@ index 5d02133cffb226ea7e48f517c1414ee7933b300f..45cf2c58fac237fe169a4be75c9a445a
org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemstack, enumhand); org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemstack, enumhand);
cancelled = event.useItemInHand() == Event.Result.DENY; cancelled = event.useItemInHand() == Event.Result.DENY;
} else { } else {
@@ -2783,6 +2839,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -2785,6 +2865,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
AABB axisalignedbb = entity.getBoundingBox(); AABB axisalignedbb = entity.getBoundingBox();
if (this.player.canInteractWithEntity(axisalignedbb, 1.0D)) { if (this.player.canInteractWithEntity(axisalignedbb, 1.0D)) {
@@ -1783,7 +1870,7 @@ index 5d02133cffb226ea7e48f517c1414ee7933b300f..45cf2c58fac237fe169a4be75c9a445a
packet.dispatch(new ServerboundInteractPacket.Handler() { packet.dispatch(new ServerboundInteractPacket.Handler() {
private void performInteraction(InteractionHand enumhand, ServerGamePacketListenerImpl.EntityInteraction playerconnection_a, PlayerInteractEntityEvent event) { // CraftBukkit private void performInteraction(InteractionHand enumhand, ServerGamePacketListenerImpl.EntityInteraction playerconnection_a, PlayerInteractEntityEvent event) { // CraftBukkit
ItemStack itemstack = ServerGamePacketListenerImpl.this.player.getItemInHand(enumhand); ItemStack itemstack = ServerGamePacketListenerImpl.this.player.getItemInHand(enumhand);
@@ -2796,6 +2853,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -2798,6 +2879,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event);
@@ -3607,7 +3694,7 @@ index 68bc8699a9389d118411ea7134ea0e0588adf8dc..1731147abd53ca2149683ea593e96523
if (baseEntity == null) { if (baseEntity == null) {
if (this.isCombat && (!targetEntity.canBeSeenAsEnemy() || targetEntity.level().getDifficulty() == Difficulty.PEACEFUL)) { if (this.isCombat && (!targetEntity.canBeSeenAsEnemy() || targetEntity.level().getDifficulty() == Difficulty.PEACEFUL)) {
diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
index f223e369dd8d781e32e1f06572b2ae717afd6f32..f1a3e05d993e87cb93e6916d2c5a130d7d852b6a 100644 index f223e369dd8d781e32e1f06572b2ae717afd6f32..d88bf61a864c8d2f579a43e831cfa0e1740a5317 100644
--- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java
+++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
@@ -44,12 +44,59 @@ public class Bat extends AmbientCreature { @@ -44,12 +44,59 @@ public class Bat extends AmbientCreature {
@@ -3623,7 +3710,7 @@ index f223e369dd8d781e32e1f06572b2ae717afd6f32..f1a3e05d993e87cb93e6916d2c5a130d
+ // Purpur start + // Purpur start
+ @Override + @Override
+ public boolean shouldSendAttribute(net.minecraft.world.entity.ai.attributes.Attribute attribute) { return attribute != Attributes.FLYING_SPEED; } // Fixes log spam on clients + public boolean shouldSendAttribute(net.minecraft.world.entity.ai.attributes.Attribute attribute) { return attribute != Attributes.FLYING_SPEED.value(); } // Fixes log spam on clients
+ +
+ @Override + @Override
+ public boolean isRidable() { + public boolean isRidable() {
@@ -6319,7 +6406,7 @@ index 30b87b5cb18c25cdd04eab64cfbe5acd6c1b6d84..01dc59695f295657b1cd7bb015558bfc
this.turtle.setSpeed(Mth.lerp(0.125F, this.turtle.getSpeed(), f1)); this.turtle.setSpeed(Mth.lerp(0.125F, this.turtle.getSpeed(), f1));
this.turtle.setDeltaMovement(this.turtle.getDeltaMovement().add(0.0D, (double) this.turtle.getSpeed() * d1 * 0.1D, 0.0D)); this.turtle.setDeltaMovement(this.turtle.getDeltaMovement().add(0.0D, (double) this.turtle.getSpeed() * d1 * 0.1D, 0.0D));
diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
index b5ee82e5abfecc59e2362628f288b76881855f36..b12544d1280f39b6c365317a0f4965c8d65b6497 100644 index cebbb7341f86b13dcbfc3a41cbe264e9d4b68d60..e1f6202df983be2510436538904a45beedbdc9c2 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
@@ -30,6 +30,8 @@ import net.minecraft.world.DifficultyInstance; @@ -30,6 +30,8 @@ import net.minecraft.world.DifficultyInstance;
@@ -6514,7 +6601,7 @@ index b5ee82e5abfecc59e2362628f288b76881855f36..b12544d1280f39b6c365317a0f4965c8
this.interestedAngleO = this.interestedAngle; this.interestedAngleO = this.interestedAngle;
if (this.isInterested()) { if (this.isInterested()) {
this.interestedAngle += (1.0F - this.interestedAngle) * 0.4F; this.interestedAngle += (1.0F - this.interestedAngle) * 0.4F;
@@ -505,6 +629,19 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol @@ -507,6 +631,19 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
itemstack.consume(1, player); itemstack.consume(1, player);
this.tryToTame(player); this.tryToTame(player);
return InteractionResult.SUCCESS; return InteractionResult.SUCCESS;
@@ -6534,7 +6621,7 @@ index b5ee82e5abfecc59e2362628f288b76881855f36..b12544d1280f39b6c365317a0f4965c8
} else { } else {
return super.mobInteract(player, hand); return super.mobInteract(player, hand);
} }
@@ -512,7 +649,7 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol @@ -514,7 +651,7 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
private void tryToTame(Player player) { private void tryToTame(Player player) {
// CraftBukkit - added event call and isCancelled check. // CraftBukkit - added event call and isCancelled check.
@@ -8535,10 +8622,10 @@ index aee2fa184bc5723dfd3d54f460a173982d874c8b..27db17e19dd95e99f7bd67747eba3c30
if (this.nextHeightOffsetChangeTick <= 0) { if (this.nextHeightOffsetChangeTick <= 0) {
this.nextHeightOffsetChangeTick = 100; this.nextHeightOffsetChangeTick = 100;
diff --git a/src/main/java/net/minecraft/world/entity/monster/Bogged.java b/src/main/java/net/minecraft/world/entity/monster/Bogged.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Bogged.java b/src/main/java/net/minecraft/world/entity/monster/Bogged.java
index 754eb747179d9318bc5a3883e5622cc400c4e06c..4e929539cb093d58f3311d5f6a62bd1aeb71cfb0 100644 index e9f9b041ae7195e9d23bd446454b1d8c47a1ace1..03b1023e182744a84d324bdad082cc1b9e574e30 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Bogged.java --- a/src/main/java/net/minecraft/world/entity/monster/Bogged.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Bogged.java +++ b/src/main/java/net/minecraft/world/entity/monster/Bogged.java
@@ -155,7 +155,7 @@ public class Bogged extends AbstractSkeleton implements Shearable { @@ -159,7 +159,7 @@ public class Bogged extends AbstractSkeleton implements Shearable {
// Paper start - shear drops API // Paper start - shear drops API
@Override @Override
@@ -10287,10 +10374,10 @@ index ac411202c0029052a962b51b015da191b124de5f..ae3eb87af8d3853be82c2002507141e4
this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true));
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false));
diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
index 2d7b7c949faaaaae94c0043132a4a822f55df104..9551bd7c9bed37cf17910e7f71b82ed20fb2d759 100644 index 2d7b7c949faaaaae94c0043132a4a822f55df104..dbfcca8adb7afa7a3101f22c2bc48aff6abae4a2 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
@@ -68,14 +68,54 @@ public class Ravager extends Raider { @@ -68,14 +68,55 @@ public class Ravager extends Raider {
this.setPathfindingMalus(PathType.LEAVES, 0.0F); this.setPathfindingMalus(PathType.LEAVES, 0.0F);
} }
@@ -10337,6 +10424,7 @@ index 2d7b7c949faaaaae94c0043132a4a822f55df104..9551bd7c9bed37cf17910e7f71b82ed2
super.registerGoals(); super.registerGoals();
this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(0, new FloatGoal(this));
+ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
+ if (level().purpurConfig.ravagerAvoidRabbits) this.goalSelector.addGoal(3, new net.minecraft.world.entity.ai.goal.AvoidEntityGoal<>(this, net.minecraft.world.entity.animal.Rabbit.class, 6.0F, 1.0D, 1.2D)); // Purpur
this.goalSelector.addGoal(4, new MeleeAttackGoal(this, 1.0D, true)); this.goalSelector.addGoal(4, new MeleeAttackGoal(this, 1.0D, true));
this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.4D)); this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.4D));
this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F));
@@ -10345,7 +10433,7 @@ index 2d7b7c949faaaaae94c0043132a4a822f55df104..9551bd7c9bed37cf17910e7f71b82ed2
this.targetSelector.addGoal(2, (new HurtByTargetGoal(this, new Class[]{Raider.class})).setAlertOthers()); this.targetSelector.addGoal(2, (new HurtByTargetGoal(this, new Class[]{Raider.class})).setAlertOthers());
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Player.class, true));
this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true, (entityliving) -> { this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true, (entityliving) -> {
@@ -128,7 +168,7 @@ public class Ravager extends Raider { @@ -128,7 +169,7 @@ public class Ravager extends Raider {
@Override @Override
public void aiStep() { public void aiStep() {
super.aiStep(); super.aiStep();
@@ -10354,7 +10442,7 @@ index 2d7b7c949faaaaae94c0043132a4a822f55df104..9551bd7c9bed37cf17910e7f71b82ed2
if (this.isImmobile()) { if (this.isImmobile()) {
this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(0.0D); this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(0.0D);
} else { } else {
@@ -138,7 +178,7 @@ public class Ravager extends Raider { @@ -138,7 +179,7 @@ public class Ravager extends Raider {
this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(Mth.lerp(0.1D, d1, d0)); this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(Mth.lerp(0.1D, d1, d0));
} }
@@ -10363,7 +10451,7 @@ index 2d7b7c949faaaaae94c0043132a4a822f55df104..9551bd7c9bed37cf17910e7f71b82ed2
boolean flag = false; boolean flag = false;
AABB axisalignedbb = this.getBoundingBox().inflate(0.2D); AABB axisalignedbb = this.getBoundingBox().inflate(0.2D);
Iterator iterator = BlockPos.betweenClosed(Mth.floor(axisalignedbb.minX), Mth.floor(axisalignedbb.minY), Mth.floor(axisalignedbb.minZ), Mth.floor(axisalignedbb.maxX), Mth.floor(axisalignedbb.maxY), Mth.floor(axisalignedbb.maxZ)).iterator(); Iterator iterator = BlockPos.betweenClosed(Mth.floor(axisalignedbb.minX), Mth.floor(axisalignedbb.minY), Mth.floor(axisalignedbb.minZ), Mth.floor(axisalignedbb.maxX), Mth.floor(axisalignedbb.maxY), Mth.floor(axisalignedbb.maxZ)).iterator();
@@ -148,7 +188,7 @@ public class Ravager extends Raider { @@ -148,7 +189,7 @@ public class Ravager extends Raider {
BlockState iblockdata = this.level().getBlockState(blockposition); BlockState iblockdata = this.level().getBlockState(blockposition);
Block block = iblockdata.getBlock(); Block block = iblockdata.getBlock();
@@ -13707,7 +13795,7 @@ index 49557d6f22c5725c663a231deab019d4f6fe95fa..046652e8f9c5dcdf7c90acb9391214ca
return true; return true;
diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java
index 0f6504a7160bc304b3af554f8740c65e2987cd37..9a8092602c96ddd77c8e6fcfe7a6f5ed733023a2 100644 index 1f52feb5684ee1bab710e1557cf69b43b4d4dfd4..78f124f5204e4af9318ca3eeced6b1e3353b210f 100644
--- a/src/main/java/net/minecraft/world/item/CrossbowItem.java --- a/src/main/java/net/minecraft/world/item/CrossbowItem.java
+++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java +++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java
@@ -60,7 +60,7 @@ public class CrossbowItem extends ProjectileWeaponItem { @@ -60,7 +60,7 @@ public class CrossbowItem extends ProjectileWeaponItem {
@@ -13871,7 +13959,7 @@ index 06497b5141e611cc7a1b6030a7b9c54b5c4eda06..28df1b3230762e52b5458ac93a85c9a5
return InteractionResult.PASS; return InteractionResult.PASS;
} }
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
index 028d86b7c26724b955e88373c80af5fea7869d67..1545ec1759526ab88838309133e2a16c634ce074 100644 index 1856d56b2ef1f8839bf2526133b945be637ef062..ae3e1ebb26a04e744e5db3ebd68196e0d04028f1 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java --- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java
@@ -475,6 +475,7 @@ public final class ItemStack implements DataComponentHolder { @@ -475,6 +475,7 @@ public final class ItemStack implements DataComponentHolder {
@@ -14031,7 +14119,7 @@ index 774c982f28b4f127fc3f036c19dfb47fb9ae3264..d49b60e7e643498b49c03593dc0da2f8
// Paper end - Add PlayerNameEntityEvent // Paper end - Add PlayerNameEntityEvent
mob.setPersistenceRequired(); mob.setPersistenceRequired();
diff --git a/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java b/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java diff --git a/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java b/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java
index f91ce87491b18f4f4ae6458192d1f320b308102a..aec96d297401b705ca2af97904739afdf1134574 100644 index d27e83c08c45b8514207f26e48ceb1a91ded94be..8f01772a7b06b2acf96a3f922cb9b481f634680b 100644
--- a/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java --- a/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java
+++ b/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java +++ b/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java
@@ -131,6 +131,14 @@ public abstract class ProjectileWeaponItem extends Item { @@ -131,6 +131,14 @@ public abstract class ProjectileWeaponItem extends Item {
@@ -14893,14 +14981,14 @@ index daae7fd6e0148cfba8e359d990748a0c83a3376e..0e06b1bcd906e92c083dc74d56d6d0a2
return random.nextFloat() < f1 ? this.getNext(state) : Optional.empty(); return random.nextFloat() < f1 ? this.getNext(state) : Optional.empty();
} }
diff --git a/src/main/java/net/minecraft/world/level/block/ChestBlock.java b/src/main/java/net/minecraft/world/level/block/ChestBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/ChestBlock.java b/src/main/java/net/minecraft/world/level/block/ChestBlock.java
index 491474b66856fccb038ee436968c9a5d3e4bf75c..a66499c9bd9af9da5d261a3c1aa23b1d436d4008 100644 index 8fbfd18b3caeed769396b3ffb1b1778b2f38edc0..4cdfd2d181089e0e198d7f2690d1598b54d0ac4b 100644
--- a/src/main/java/net/minecraft/world/level/block/ChestBlock.java --- a/src/main/java/net/minecraft/world/level/block/ChestBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/ChestBlock.java +++ b/src/main/java/net/minecraft/world/level/block/ChestBlock.java
@@ -343,6 +343,7 @@ public class ChestBlock extends AbstractChestBlock<ChestBlockEntity> implements @@ -343,6 +343,7 @@ public class ChestBlock extends AbstractChestBlock<ChestBlockEntity> implements
} }
private static boolean isBlockedChestByBlock(BlockGetter world, BlockPos pos) { public static boolean isBlockedChestByBlock(BlockGetter world, BlockPos pos) {
+ if (world instanceof Level && ((Level) world).purpurConfig.chestOpenWithBlockOnTop) return false; // Purpur + if(world instanceof Level && ((Level) world).purpurConfig.chestOpenWithBlockOnTop) return false; // Purpur
BlockPos blockposition1 = pos.above(); BlockPos blockposition1 = pos.above();
return world.getBlockState(blockposition1).isRedstoneConductor(world, blockposition1); return world.getBlockState(blockposition1).isRedstoneConductor(world, blockposition1);
@@ -15102,7 +15190,7 @@ index 7272d70c672b54dcf595beafd7a2ed33c96e35cb..d7f33c676bba279661583d908d3a58c8
ServerLevel worldserver = ((ServerLevel) world).getServer().getLevel(resourcekey); ServerLevel worldserver = ((ServerLevel) world).getServer().getLevel(resourcekey);
diff --git a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java
index 5f9858ef8d0ec1a74d469ab4426eb1db068873fd..d7ef772444b301d0a3f167679027195e4150b064 100644 index ca92d49ef2010ba00c623491671dcde8ebe697c1..bd65df4588584b8bb001e9dc3656a14e381a0b6d 100644
--- a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java --- a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java +++ b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java
@@ -91,7 +91,7 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i @@ -91,7 +91,7 @@ public class EnderChestBlock extends AbstractChestBlock<EnderChestBlockEntity> i
@@ -16081,7 +16169,7 @@ index 7b263fab4f0014400b3b8e7e33db32f9a125f6ba..f7a6ab35c95ffda73f17843916ddb624
private int ticksInHive; private int ticksInHive;
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
index 7963afff4b32a0e46be9bdeb413657718cfc14f5..5168e8e9ebb54b6c00acb7f2939262eb06a7426d 100644 index 6349f2e0a5ba30d250f5ffe43771f325c0999a76..8dc1436fe78759cee5247cc28e8a18999e738a1b 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java --- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
@@ -87,6 +87,12 @@ public abstract class BlockEntity { @@ -87,6 +87,12 @@ public abstract class BlockEntity {
@@ -16113,7 +16201,7 @@ index 7963afff4b32a0e46be9bdeb413657718cfc14f5..5168e8e9ebb54b6c00acb7f2939262eb
protected void saveAdditional(CompoundTag nbt, HolderLookup.Provider registryLookup) {} protected void saveAdditional(CompoundTag nbt, HolderLookup.Provider registryLookup) {}
public final CompoundTag saveWithFullMetadata(HolderLookup.Provider registryLookup) { public final CompoundTag saveWithFullMetadata(HolderLookup.Provider registryLookup) {
@@ -397,4 +412,16 @@ public abstract class BlockEntity { @@ -407,4 +422,16 @@ public abstract class BlockEntity {
<T> T getOrDefault(DataComponentType<? extends T> type, T fallback); <T> T getOrDefault(DataComponentType<? extends T> type, T fallback);
} }
@@ -16252,6 +16340,73 @@ index d47bc2f54c4722a0b8c419b99ee57eb3cb25d750..fdeabdcc781b605d6f3ee18528fd380f
+ } + }
+ // Purpur + // Purpur
} }
diff --git a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java
index a28be7a332659be655f419d969e0c64e659b6c21..8cd812a25b1cc05ea14675658bf9c1503ebebd51 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java
@@ -201,16 +201,31 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C
return this.setText((SignText) textChanger.apply(signtext), front);
}
+ // Purpur start
+ private Component translateColors(org.bukkit.entity.Player player, String line, Style style) {
+ if (level.purpurConfig.signAllowColors) {
+ if (player.hasPermission("purpur.sign.color")) line = line.replaceAll("(?i)&([0-9a-fr])", "\u00a7$1");
+ if (player.hasPermission("purpur.sign.style")) line = line.replaceAll("(?i)&([l-or])", "\u00a7$1");
+ if (player.hasPermission("purpur.sign.magic")) line = line.replaceAll("(?i)&([kr])", "\u00a7$1");
+
+ return io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(line));
+ } else {
+ return Component.literal(line).setStyle(style);
+ }
+ }
+ // Purpur end
+
private SignText setMessages(net.minecraft.world.entity.player.Player entityhuman, List<FilteredText> list, SignText signtext, boolean front) { // CraftBukkit
SignText originalText = signtext; // CraftBukkit
for (int i = 0; i < list.size(); ++i) {
FilteredText filteredtext = (FilteredText) list.get(i);
Style chatmodifier = signtext.getMessage(i, entityhuman.isTextFilteringEnabled()).getStyle();
+ org.bukkit.entity.Player player = (org.bukkit.craftbukkit.entity.CraftPlayer) entityhuman.getBukkitEntity(); // Purpur
if (entityhuman.isTextFilteringEnabled()) {
- signtext = signtext.setMessage(i, Component.literal(net.minecraft.util.StringUtil.filterText(filteredtext.filteredOrEmpty())).setStyle(chatmodifier)); // Paper - filter sign text to chat only
+ signtext = signtext.setMessage(i, translateColors(player, net.minecraft.util.StringUtil.filterText(filteredtext.filteredOrEmpty()), chatmodifier)); // Paper - filter sign text to chat only // Purpur
} else {
- signtext = signtext.setMessage(i, Component.literal(net.minecraft.util.StringUtil.filterText(filteredtext.raw())).setStyle(chatmodifier), Component.literal(net.minecraft.util.StringUtil.filterText(filteredtext.filteredOrEmpty())).setStyle(chatmodifier)); // Paper - filter sign text to chat only
+ signtext = signtext.setMessage(i, translateColors(player, net.minecraft.util.StringUtil.filterText(filteredtext.raw()), chatmodifier), translateColors(player, net.minecraft.util.StringUtil.filterText(filteredtext.filteredOrEmpty()), chatmodifier)); // Paper - filter sign text to chat only // Purpur
}
}
@@ -345,6 +360,28 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C
return new CommandSourceStack(commandSource, Vec3.atCenterOf(pos), Vec2.ZERO, (ServerLevel) world, 2, s, (Component) object, world.getServer(), player); // Paper - Fix commands from signs not firing command events
}
+ // Purpur start
+ public ClientboundBlockEntityDataPacket getTranslatedUpdatePacket(boolean filtered, boolean front) {
+ final CompoundTag nbt = new CompoundTag();
+ this.saveAdditional(nbt, this.getLevel().registryAccess());
+ final Component[] lines = front ? frontText.getMessages(filtered) : backText.getMessages(filtered);
+ final String side = front ? "front_text" : "back_text";
+ for (int i = 0; i < 4; i++) {
+ final var component = io.papermc.paper.adventure.PaperAdventure.asAdventure(lines[i]);
+ final String line = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacyAmpersand().serialize(component);
+ final var text = net.kyori.adventure.text.Component.text(line);
+ final String json = net.kyori.adventure.text.serializer.gson.GsonComponentSerializer.gson().serialize(text);
+ if (!nbt.contains(side)) nbt.put(side, new CompoundTag());
+ final CompoundTag sideNbt = nbt.getCompound(side);
+ if (!sideNbt.contains("messages")) sideNbt.put("messages", new net.minecraft.nbt.ListTag());
+ final net.minecraft.nbt.ListTag messagesNbt = sideNbt.getList("messages", Tag.TAG_STRING);
+ messagesNbt.set(i, net.minecraft.nbt.StringTag.valueOf(json));
+ }
+ nbt.putString("PurpurEditor", "true");
+ return ClientboundBlockEntityDataPacket.create(this, (blockEntity, registryAccess) -> nbt);
+ }
+ // Purpur end
+
@Override
public ClientboundBlockEntityDataPacket getUpdatePacket() {
return ClientboundBlockEntityDataPacket.create(this);
diff --git a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java diff --git a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java
index 3a3182544ca338e81edfa64fd116092775ca0c6c..0e58011d22536051a18388c2d45fd1a30c2f5ffd 100644 index 3a3182544ca338e81edfa64fd116092775ca0c6c..0e58011d22536051a18388c2d45fd1a30c2f5ffd 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java --- a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java
@@ -16761,7 +16916,7 @@ index 9d93130f23addb18b97d7f5ec013faef17a74529..29d2fb87a65778926aea2cfc7a5b486c
+ // Purpur end - OfflinePlayer API + // Purpur end - OfflinePlayer API
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 1231a1e2106a75417d1da9dc3e1488704b91a3f1..339b16641a7548d89fb15baad8edf0c5f95db635 100644 index 5f9cc88fbb05e587e022160b392e58a88b7d6fea..483e16f27cd07cc9a0276db9cb9d84d8a41f97d0 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -407,6 +407,20 @@ public final class CraftServer implements Server { @@ -407,6 +407,20 @@ public final class CraftServer implements Server {
@@ -16954,7 +17109,7 @@ index 2abe6131cc04ed397446c2aa08f77f9da00ce8c5..f27cf4efa3675cee8e6dd45c6f366cda
public Collection<GeneratedStructure> getStructures(int x, int z) { public Collection<GeneratedStructure> getStructures(int x, int z) {
return this.getStructures(x, z, struct -> true); return this.getStructures(x, z, struct -> true);
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
index cd8ca1c9c8253e54c0b34d30b08fb0c2341cc98e..42f08f65207673125b288d4a74fc6d18eb713e9e 100644 index 87a82481476e2011ed33bded68e3a5c2e9e0fd9f..49aa5493f65e6e53553290ab82f91632e9dd6d20 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java --- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -196,6 +196,14 @@ public class Main { @@ -196,6 +196,14 @@ public class Main {
@@ -17338,10 +17493,10 @@ index 0ad16ee7b33582d214dab41eeee378d52c8e38ed..16bd1294c219f15ada653ef810bc2d74
+ // Purpur end + // Purpur end
} }
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 0ff9bb5f5d312503ec4b3cf3bf8c532b09a8f08b..1c1159867c78a54984219a9d56a3838c630c58d8 100644 index 5f896948d158651cd9837364759dbfbcce6b7d21..88948526f9acf4bb2157484b80891902fd843b02 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -565,10 +565,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -574,10 +574,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override @Override
public void setPlayerListName(String name) { public void setPlayerListName(String name) {
@@ -17358,7 +17513,7 @@ index 0ff9bb5f5d312503ec4b3cf3bf8c532b09a8f08b..1c1159867c78a54984219a9d56a3838c
if (this.getHandle().connection == null) return; // Paper - Updates are possible before the player has fully joined if (this.getHandle().connection == null) return; // Paper - Updates are possible before the player has fully joined
for (ServerPlayer player : (List<ServerPlayer>) this.server.getHandle().players) { for (ServerPlayer player : (List<ServerPlayer>) this.server.getHandle().players) {
if (player.getBukkitEntity().canSee(this)) { if (player.getBukkitEntity().canSee(this)) {
@@ -1429,6 +1434,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -1438,6 +1443,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
} }
if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API
@@ -17369,7 +17524,7 @@ index 0ff9bb5f5d312503ec4b3cf3bf8c532b09a8f08b..1c1159867c78a54984219a9d56a3838c
return false; return false;
} }
@@ -2727,6 +2736,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -2736,6 +2745,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return this.getHandle().getAbilities().walkingSpeed * 2f; return this.getHandle().getAbilities().walkingSpeed * 2f;
} }
@@ -17398,7 +17553,7 @@ index 0ff9bb5f5d312503ec4b3cf3bf8c532b09a8f08b..1c1159867c78a54984219a9d56a3838c
private void validateSpeed(float value) { private void validateSpeed(float value) {
Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value);
} }
@@ -3513,4 +3544,70 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -3522,4 +3553,70 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public void setSendViewDistance(final int viewDistance) { public void setSendViewDistance(final int viewDistance) {
this.getHandle().setSendViewDistance(viewDistance); this.getHandle().setSendViewDistance(viewDistance);
} }
@@ -18291,10 +18446,10 @@ index 0000000000000000000000000000000000000000..8facd29bac314d4b8897113460f78ea7
+} +}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..dde2e82e8f3686f6b77fefdaad9beaeb90059c23 index 0000000000000000000000000000000000000000..4a385c42da7ab3be46d5e47d00daee5e0b6da88f
--- /dev/null --- /dev/null
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -0,0 +1,3284 @@ @@ -0,0 +1,3291 @@
+package org.purpurmc.purpur; +package org.purpurmc.purpur;
+ +
+import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.BuiltInRegistries;
@@ -19402,6 +19557,11 @@ index 0000000000000000000000000000000000000000..dde2e82e8f3686f6b77fefdaad9beaeb
+ sculkShriekerCanSummonDefault = getBoolean("blocks.sculk_shrieker.can-summon-default", sculkShriekerCanSummonDefault); + sculkShriekerCanSummonDefault = getBoolean("blocks.sculk_shrieker.can-summon-default", sculkShriekerCanSummonDefault);
+ } + }
+ +
+ public boolean signAllowColors = false;
+ private void signSettings() {
+ signAllowColors = getBoolean("blocks.sign.allow-colors", signAllowColors);
+ }
+
+ public boolean slabHalfBreak = false; + public boolean slabHalfBreak = false;
+ private void slabSettings() { + private void slabSettings() {
+ slabHalfBreak = getBoolean("blocks.slab.break-individual-slabs-when-sneaking", slabHalfBreak); + slabHalfBreak = getBoolean("blocks.slab.break-individual-slabs-when-sneaking", slabHalfBreak);
@@ -20689,6 +20849,7 @@ index 0000000000000000000000000000000000000000..dde2e82e8f3686f6b77fefdaad9beaeb
+ public boolean ravagerTakeDamageFromWater = false; + public boolean ravagerTakeDamageFromWater = false;
+ public List<Block> ravagerGriefableBlocks = new ArrayList<>(); + public List<Block> ravagerGriefableBlocks = new ArrayList<>();
+ public boolean ravagerAlwaysDropExp = false; + public boolean ravagerAlwaysDropExp = false;
+ public boolean ravagerAvoidRabbits = false;
+ private void ravagerSettings() { + private void ravagerSettings() {
+ ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); + ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable);
+ ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); + ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater);
@@ -20719,6 +20880,7 @@ index 0000000000000000000000000000000000000000..dde2e82e8f3686f6b77fefdaad9beaeb
+ } + }
+ }); + });
+ ravagerAlwaysDropExp = getBoolean("mobs.ravager.always-drop-exp", ravagerAlwaysDropExp); + ravagerAlwaysDropExp = getBoolean("mobs.ravager.always-drop-exp", ravagerAlwaysDropExp);
+ ravagerAvoidRabbits = getBoolean("mobs.ravager.avoid-rabbits", ravagerAvoidRabbits);
+ } + }
+ +
+ public boolean salmonRidable = false; + public boolean salmonRidable = false;

View File

@@ -829,7 +829,7 @@ index 56b07a3306e5735816c8d89601b519cb0db6379a..524d9f0e2cc9a840fdf74bfa98537b5c
return executedUnloadTask | canSaveChunk | canSaveEntities | canSavePOI ? new SaveStat(executedUnloadTask || canSaveChunk, canSaveEntities, canSavePOI): null; return executedUnloadTask | canSaveChunk | canSaveEntities | canSavePOI ? new SaveStat(executedUnloadTask || canSaveChunk, canSaveEntities, canSavePOI): null;
} }
diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
index 6db7af1f073649dc1a35e00d38e961638ca84022..1bab647e27e72bc9e94454351c86435c4e663a7e 100644 index e246171b3eb3b8d8caab2c2535f305e8af2f3701..f6dd905176605228cbd6673ca2f77431a48248ad 100644
--- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java --- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
+++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java +++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
@@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
@@ -1519,10 +1519,10 @@ index 8099bcb9e66ddd0ae4518e8a0129d72823cdcff1..2d649d98985203005f3e423d61e88a8e
} else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system } else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 45cf2c58fac237fe169a4be75c9a445a002389dd..b36daaeb6372cb217c579d0449a19a71c0c3bef1 100644 index 8432a36a7b047cf2d930735feb426233769e1931..a42431f9788fbb75eb3daae4b7be7f8261056dcc 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2529,7 +2529,6 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -2555,7 +2555,6 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
public void handleCommand(String s) { // Paper - private -> public public void handleCommand(String s) { // Paper - private -> public
org.spigotmc.AsyncCatcher.catchOp("Command Dispatched Async: " + s); // Paper - Add async catcher org.spigotmc.AsyncCatcher.catchOp("Command Dispatched Async: " + s); // Paper - Add async catcher
@@ -1530,7 +1530,7 @@ index 45cf2c58fac237fe169a4be75c9a445a002389dd..b36daaeb6372cb217c579d0449a19a71
if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot if ( org.spigotmc.SpigotConfig.logCommands ) // Spigot
this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s); this.LOGGER.info(this.player.getScoreboardName() + " issued server command: " + s);
@@ -2539,7 +2538,6 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -2565,7 +2564,6 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
this.cserver.getPluginManager().callEvent(event); this.cserver.getPluginManager().callEvent(event);
if (event.isCancelled()) { if (event.isCancelled()) {
@@ -1538,7 +1538,7 @@ index 45cf2c58fac237fe169a4be75c9a445a002389dd..b36daaeb6372cb217c579d0449a19a71
return; return;
} }
@@ -2551,8 +2549,6 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -2577,8 +2575,6 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
player.sendMessage(org.bukkit.ChatColor.RED + "An internal error occurred while attempting to perform this command"); player.sendMessage(org.bukkit.ChatColor.RED + "An internal error occurred while attempting to perform this command");
java.util.logging.Logger.getLogger(ServerGamePacketListenerImpl.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); java.util.logging.Logger.getLogger(ServerGamePacketListenerImpl.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
return; return;
@@ -1800,7 +1800,7 @@ index 14aaabb6b9595847358f65ff01c81b179d9548ea..3dc9f10f00dd982ca28a66b364e5088c
@Nullable @Nullable
private String descriptionId; private String descriptionId;
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
index 5168e8e9ebb54b6c00acb7f2939262eb06a7426d..4687526a250ef4e6f2aead29cf4ccb1e2e38c20e 100644 index 8dc1436fe78759cee5247cc28e8a18999e738a1b..ce3cc2d4b8cdfae98c02e03f7290c6115b0198d7 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java --- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
@@ -33,14 +33,9 @@ import org.bukkit.craftbukkit.persistence.CraftPersistentDataTypeRegistry; @@ -33,14 +33,9 @@ import org.bukkit.craftbukkit.persistence.CraftPersistentDataTypeRegistry;
@@ -1862,7 +1862,7 @@ index 35147d7a6649708c2b068065eb44831f40c3ab8e..1a2ef85cd8a62824b23f4212a5e2a70c
@Override @Override
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 339b16641a7548d89fb15baad8edf0c5f95db635..f17eb11741d09f9b04eac98918261680b600749a 100644 index 483e16f27cd07cc9a0276db9cb9d84d8a41f97d0..141056d003eaaee8b2a436554733e52d7d74689d 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -470,7 +470,6 @@ public final class CraftServer implements Server { @@ -470,7 +470,6 @@ public final class CraftServer implements Server {
@@ -1874,7 +1874,7 @@ index 339b16641a7548d89fb15baad8edf0c5f95db635..f17eb11741d09f9b04eac98918261680
console.autosavePeriod = this.configuration.getInt("ticks-per.autosave"); console.autosavePeriod = this.configuration.getInt("ticks-per.autosave");
this.warningState = WarningState.value(this.configuration.getString("settings.deprecated-verbose")); this.warningState = WarningState.value(this.configuration.getString("settings.deprecated-verbose"));
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
index 42f08f65207673125b288d4a74fc6d18eb713e9e..f236e7c56c6c72f3fcdba8314f258026e6561ecb 100644 index 49aa5493f65e6e53553290ab82f91632e9dd6d20..27edd8f2dec9426fb2b51641305a1c13c307a970 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java --- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -374,8 +374,6 @@ public class Main { @@ -374,8 +374,6 @@ public class Main {
@@ -2051,7 +2051,7 @@ index d67089b621f3ba07f3cf4cd64ee6ccb99ed23445..44153969844ac521cc082c9bdb3bd02e
@Override @Override
diff --git a/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java b/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java diff --git a/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java b/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java
index b4cca06a583fbb7918237de256f43ee61fd8ec6c..dd4a5f610e6e84a73051a8ed46e1961804356ca3 100644 index b1fc5368d439ef77128c77468c497dc3fbb0ccb8..b95cd1755fb9187db75eec266bf79a901d16f570 100644
--- a/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java --- a/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java
+++ b/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java +++ b/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java
@@ -80,41 +80,6 @@ public class GaleGlobalConfiguration extends ConfigurationPart { @@ -80,41 +80,6 @@ public class GaleGlobalConfiguration extends ConfigurationPart {
@@ -2095,7 +2095,7 @@ index b4cca06a583fbb7918237de256f43ee61fd8ec6c..dd4a5f610e6e84a73051a8ed46e19618
- -
public Keepalive keepalive; public Keepalive keepalive;
public class Keepalive extends ConfigurationPart { public class Keepalive extends ConfigurationPart {
public boolean sendMultiple = true; // Gale - Purpur - send multiple keep-alive packets public boolean sendMultiple = false; // Gale - Purpur - send multiple keep-alive packets
diff --git a/src/main/java/org/galemc/gale/configuration/timingsexport/GaleConfigurationTimingsExport.java b/src/main/java/org/galemc/gale/configuration/timingsexport/GaleConfigurationTimingsExport.java diff --git a/src/main/java/org/galemc/gale/configuration/timingsexport/GaleConfigurationTimingsExport.java b/src/main/java/org/galemc/gale/configuration/timingsexport/GaleConfigurationTimingsExport.java
deleted file mode 100644 deleted file mode 100644
index 579c2e69d8f6ce8398eb1297d1d1ead98c9068a5..0000000000000000000000000000000000000000 index 579c2e69d8f6ce8398eb1297d1d1ead98c9068a5..0000000000000000000000000000000000000000

View File

@@ -7,10 +7,10 @@ This Check is added in 1.17.x -> 1.18.x update by Mojang.
By removing this check, it enable hackers to use some modules of hack clients. By removing this check, it enable hackers to use some modules of hack clients.
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index a18cbed0089a845eaf31b1ac351c60bbfede7aad..bafe83f2a9b12868a7f310ab3a63c2302cbac28f 100644 index a42431f9788fbb75eb3daae4b7be7f8261056dcc..479fe0a14736a2eec61a7d50b7afbacc548c06e2 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -1984,7 +1984,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -2008,7 +2008,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
Vec3 vec3d1 = vec3d.subtract(Vec3.atCenterOf(blockposition)); Vec3 vec3d1 = vec3d.subtract(Vec3.atCenterOf(blockposition));
double d0 = 1.0000001D; double d0 = 1.0000001D;

View File

@@ -7,10 +7,10 @@ Original license: MIT
Original project: https://github.com/KeYiMC/KeYi Original project: https://github.com/KeYiMC/KeYi
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 90338017ebcb2a690dff7dad57aa6fbb95e0ff93..fd57b7f69f3a8ee490cd4fa55c0e5480e0a4a14b 100644 index 88948526f9acf4bb2157484b80891902fd843b02..1e5fb608ff04d2e9ae8db30896eb88fde914b8af 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -3610,4 +3610,27 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -3619,4 +3619,27 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundPlayerCombatKillPacket(getEntityId(), io.papermc.paper.adventure.PaperAdventure.asVanilla(message))); this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundPlayerCombatKillPacket(getEntityId(), io.papermc.paper.adventure.PaperAdventure.asVanilla(message)));
} }
// Purpur end // Purpur end

View File

@@ -7,7 +7,7 @@ Original license: MIT
Original project: https://github.com/Cryptite/Slice Original project: https://github.com/Cryptite/Slice
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index ada4956a0b204cb098e90979aff14db32455f481..31111babbb119175fa3c7b79624bb2a955b9cba3 100644 index 2707bc1dc8b45a239ffe0b0aeffe96a1359b9a5c..7fc94ec08f6bd9649ad9168ea3b9aa6ac9bf60e0 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -303,6 +303,7 @@ public class ServerPlayer extends Player { @@ -303,6 +303,7 @@ public class ServerPlayer extends Player {
@@ -36,10 +36,10 @@ index c9673051ce9f4096b981087eefe8b72bbe34819a..07b9f53d49d9ba8bbd3fa3da99bb7cd0
entityplayer1.connection.send(new ClientboundChangeDifficultyPacket(worlddata.getDifficulty(), worlddata.isDifficultyLocked())); entityplayer1.connection.send(new ClientboundChangeDifficultyPacket(worlddata.getDifficulty(), worlddata.isDifficultyLocked()));
entityplayer1.connection.send(new ClientboundSetExperiencePacket(entityplayer1.experienceProgress, entityplayer1.totalExperience, entityplayer1.experienceLevel)); entityplayer1.connection.send(new ClientboundSetExperiencePacket(entityplayer1.experienceProgress, entityplayer1.totalExperience, entityplayer1.experienceLevel));
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 fd57b7f69f3a8ee490cd4fa55c0e5480e0a4a14b..bdc69aed63d1d84a398c25ccf3dabc7ae123fad8 100644 index 1e5fb608ff04d2e9ae8db30896eb88fde914b8af..507faaf2578d49c900ed8a3d9ab995695d47142d 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1338,6 +1338,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -1347,6 +1347,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
// Paper end // Paper end
} }

View File

@@ -7,7 +7,7 @@ Original license: GPLv3
Original project: https://github.com/LeavesMC/Leaves Original project: https://github.com/LeavesMC/Leaves
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index f0886b4b63adb17ffe73b60f6ff6bdb734a4e8cf..b877dc3f82bdd9640f522e7bd2dc1dbf23610eb1 100644 index 479fe0a14736a2eec61a7d50b7afbacc548c06e2..1acac1e6288e67db00599f98fbdf8ba12702c11a 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -589,7 +589,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -589,7 +589,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@@ -28,7 +28,7 @@ index f0886b4b63adb17ffe73b60f6ff6bdb734a4e8cf..b877dc3f82bdd9640f522e7bd2dc1dbf
flag2 = true; // Paper - diff on change, this should be moved wrongly flag2 = true; // Paper - diff on change, this should be moved wrongly
ServerGamePacketListenerImpl.LOGGER.warn("{} (vehicle of {}) moved wrongly! {}", new Object[]{entity.getName().getString(), this.player.getName().getString(), Math.sqrt(d10)}); ServerGamePacketListenerImpl.LOGGER.warn("{} (vehicle of {}) moved wrongly! {}", new Object[]{entity.getName().getString(), this.player.getName().getString(), Math.sqrt(d10)});
} }
@@ -1462,7 +1462,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -1486,7 +1486,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
io.papermc.paper.event.player.PlayerFailMoveEvent event = fireFailMove(io.papermc.paper.event.player.PlayerFailMoveEvent.FailReason.MOVED_TOO_QUICKLY, io.papermc.paper.event.player.PlayerFailMoveEvent event = fireFailMove(io.papermc.paper.event.player.PlayerFailMoveEvent.FailReason.MOVED_TOO_QUICKLY,
toX, toY, toZ, toYaw, toPitch, true); toX, toY, toZ, toYaw, toPitch, true);
if (!event.isAllowed()) { if (!event.isAllowed()) {
@@ -37,7 +37,7 @@ index f0886b4b63adb17ffe73b60f6ff6bdb734a4e8cf..b877dc3f82bdd9640f522e7bd2dc1dbf
ServerGamePacketListenerImpl.LOGGER.warn("{} moved too quickly! {},{},{}", new Object[]{this.player.getName().getString(), d6, d7, d8}); ServerGamePacketListenerImpl.LOGGER.warn("{} moved too quickly! {},{},{}", new Object[]{this.player.getName().getString(), d6, d7, d8});
this.teleport(this.player.getX(), this.player.getY(), this.player.getZ(), this.player.getYRot(), this.player.getXRot()); this.teleport(this.player.getX(), this.player.getY(), this.player.getZ(), this.player.getYRot(), this.player.getXRot());
return; return;
@@ -1532,7 +1532,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -1556,7 +1556,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
d10 = d6 * d6 + d7 * d7 + d8 * d8; d10 = d6 * d6 + d7 * d7 + d8 * d8;
boolean movedWrongly = false; // Paper - Add fail move event; rename boolean movedWrongly = false; // Paper - Add fail move event; rename

View File

@@ -36,10 +36,10 @@ index a3adc109213885a193f7131405bd4a2f6a90f9be..e971ef13754402f3de118ea24cb9f83b
if (net.minecraft.world.phys.shapes.Shapes.joinIsNotEmpty(voxelshape, net.minecraft.world.phys.shapes.Shapes.create(entity.getBoundingBox()), net.minecraft.world.phys.shapes.BooleanOp.AND)) { if (net.minecraft.world.phys.shapes.Shapes.joinIsNotEmpty(voxelshape, net.minecraft.world.phys.shapes.Shapes.create(entity.getBoundingBox()), net.minecraft.world.phys.shapes.BooleanOp.AND)) {
return false; return false;
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 bdc69aed63d1d84a398c25ccf3dabc7ae123fad8..753e5a1c99e427729c4bcb5378005fc8012996ab 100644 index 507faaf2578d49c900ed8a3d9ab995695d47142d..d2e869d35bfb12fe2e0fe1c4e144446883166dd3 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -627,6 +627,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -636,6 +636,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return false; return false;
} }
OfflinePlayer other = (OfflinePlayer) obj; OfflinePlayer other = (OfflinePlayer) obj;

View File

@@ -97,10 +97,10 @@ index 5bae3215ee0bf222c3bd77b3131f3d01ac6c9c41..8a643108954698425413d14eb9a2c86c
@Override @Override
public EntityDimensions getDefaultDimensions(Pose pose) { public EntityDimensions getDefaultDimensions(Pose pose) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index dde2e82e8f3686f6b77fefdaad9beaeb90059c23..3416c6778faf56666a521a69382799bb1bee1497 100644 index 4a385c42da7ab3be46d5e47d00daee5e0b6da88f..7a3017177f68111c0de9b197b0bf8e4159fd561d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1525,6 +1525,7 @@ public class PurpurWorldConfig { @@ -1530,6 +1530,7 @@ public class PurpurWorldConfig {
public boolean drownedTakeDamageFromWater = false; public boolean drownedTakeDamageFromWater = false;
public boolean drownedBreakDoors = false; public boolean drownedBreakDoors = false;
public boolean drownedAlwaysDropExp = false; public boolean drownedAlwaysDropExp = false;
@@ -108,7 +108,7 @@ index dde2e82e8f3686f6b77fefdaad9beaeb90059c23..3416c6778faf56666a521a69382799bb
private void drownedSettings() { private void drownedSettings() {
drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable);
drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater);
@@ -1542,6 +1543,7 @@ public class PurpurWorldConfig { @@ -1547,6 +1548,7 @@ public class PurpurWorldConfig {
drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater);
drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors); drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors);
drownedAlwaysDropExp = getBoolean("mobs.drowned.always-drop-exp", drownedAlwaysDropExp); drownedAlwaysDropExp = getBoolean("mobs.drowned.always-drop-exp", drownedAlwaysDropExp);
@@ -116,7 +116,7 @@ index dde2e82e8f3686f6b77fefdaad9beaeb90059c23..3416c6778faf56666a521a69382799bb
} }
public boolean elderGuardianRidable = false; public boolean elderGuardianRidable = false;
@@ -1888,6 +1890,7 @@ public class PurpurWorldConfig { @@ -1893,6 +1895,7 @@ public class PurpurWorldConfig {
public boolean huskJockeyTryExistingChickens = true; public boolean huskJockeyTryExistingChickens = true;
public boolean huskTakeDamageFromWater = false; public boolean huskTakeDamageFromWater = false;
public boolean huskAlwaysDropExp = false; public boolean huskAlwaysDropExp = false;
@@ -124,7 +124,7 @@ index dde2e82e8f3686f6b77fefdaad9beaeb90059c23..3416c6778faf56666a521a69382799bb
private void huskSettings() { private void huskSettings() {
huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidable = getBoolean("mobs.husk.ridable", huskRidable);
huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater);
@@ -1904,6 +1907,7 @@ public class PurpurWorldConfig { @@ -1909,6 +1912,7 @@ public class PurpurWorldConfig {
huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens);
huskTakeDamageFromWater = getBoolean("mobs.husk.takes-damage-from-water", huskTakeDamageFromWater); huskTakeDamageFromWater = getBoolean("mobs.husk.takes-damage-from-water", huskTakeDamageFromWater);
huskAlwaysDropExp = getBoolean("mobs.husk.always-drop-exp", huskAlwaysDropExp); huskAlwaysDropExp = getBoolean("mobs.husk.always-drop-exp", huskAlwaysDropExp);
@@ -132,7 +132,7 @@ index dde2e82e8f3686f6b77fefdaad9beaeb90059c23..3416c6778faf56666a521a69382799bb
} }
public boolean illusionerRidable = false; public boolean illusionerRidable = false;
@@ -3118,6 +3122,7 @@ public class PurpurWorldConfig { @@ -3125,6 +3129,7 @@ public class PurpurWorldConfig {
public boolean zombieTakeDamageFromWater = false; public boolean zombieTakeDamageFromWater = false;
public boolean zombieAlwaysDropExp = false; public boolean zombieAlwaysDropExp = false;
public double zombieHeadVisibilityPercent = 0.5D; public double zombieHeadVisibilityPercent = 0.5D;
@@ -140,7 +140,7 @@ index dde2e82e8f3686f6b77fefdaad9beaeb90059c23..3416c6778faf56666a521a69382799bb
private void zombieSettings() { private void zombieSettings() {
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
@@ -3137,6 +3142,7 @@ public class PurpurWorldConfig { @@ -3144,6 +3149,7 @@ public class PurpurWorldConfig {
zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater);
zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp); zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp);
zombieHeadVisibilityPercent = getDouble("mobs.zombie.head-visibility-percent", zombieHeadVisibilityPercent); zombieHeadVisibilityPercent = getDouble("mobs.zombie.head-visibility-percent", zombieHeadVisibilityPercent);
@@ -148,7 +148,7 @@ index dde2e82e8f3686f6b77fefdaad9beaeb90059c23..3416c6778faf56666a521a69382799bb
} }
public boolean zombieHorseRidable = false; public boolean zombieHorseRidable = false;
@@ -3185,6 +3191,7 @@ public class PurpurWorldConfig { @@ -3192,6 +3198,7 @@ public class PurpurWorldConfig {
public int zombieVillagerCuringTimeMax = 6000; public int zombieVillagerCuringTimeMax = 6000;
public boolean zombieVillagerCureEnabled = true; public boolean zombieVillagerCureEnabled = true;
public boolean zombieVillagerAlwaysDropExp = false; public boolean zombieVillagerAlwaysDropExp = false;
@@ -156,7 +156,7 @@ index dde2e82e8f3686f6b77fefdaad9beaeb90059c23..3416c6778faf56666a521a69382799bb
private void zombieVillagerSettings() { private void zombieVillagerSettings() {
zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable);
zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater);
@@ -3204,6 +3211,7 @@ public class PurpurWorldConfig { @@ -3211,6 +3218,7 @@ public class PurpurWorldConfig {
zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax);
zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled); zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled);
zombieVillagerAlwaysDropExp = getBoolean("mobs.zombie_villager.always-drop-exp", zombieVillagerAlwaysDropExp); zombieVillagerAlwaysDropExp = getBoolean("mobs.zombie_villager.always-drop-exp", zombieVillagerAlwaysDropExp);
@@ -164,7 +164,7 @@ index dde2e82e8f3686f6b77fefdaad9beaeb90059c23..3416c6778faf56666a521a69382799bb
} }
public boolean zombifiedPiglinRidable = false; public boolean zombifiedPiglinRidable = false;
@@ -3217,6 +3225,7 @@ public class PurpurWorldConfig { @@ -3224,6 +3232,7 @@ public class PurpurWorldConfig {
public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true;
public boolean zombifiedPiglinTakeDamageFromWater = false; public boolean zombifiedPiglinTakeDamageFromWater = false;
public boolean zombifiedPiglinAlwaysDropExp = false; public boolean zombifiedPiglinAlwaysDropExp = false;
@@ -172,7 +172,7 @@ index dde2e82e8f3686f6b77fefdaad9beaeb90059c23..3416c6778faf56666a521a69382799bb
private void zombifiedPiglinSettings() { private void zombifiedPiglinSettings() {
zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable);
zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater);
@@ -3234,6 +3243,7 @@ public class PurpurWorldConfig { @@ -3241,6 +3250,7 @@ public class PurpurWorldConfig {
zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry);
zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater);
zombifiedPiglinAlwaysDropExp = getBoolean("mobs.zombified_piglin.always-drop-exp", zombifiedPiglinAlwaysDropExp); zombifiedPiglinAlwaysDropExp = getBoolean("mobs.zombified_piglin.always-drop-exp", zombifiedPiglinAlwaysDropExp);

View File

@@ -236,10 +236,10 @@ index 8facd29bac314d4b8897113460f78ea7ed3e82b6..300d5144d828330e3de934b1026a0f1b
org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27); org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27);
enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 3416c6778faf56666a521a69382799bb1bee1497..92e41dab573e8c979564c83377e460cd93ec2865 100644 index 7a3017177f68111c0de9b197b0bf8e4159fd561d..fb7bead916b9ed069b3a3351625393958da5cd83 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1165,10 +1165,20 @@ public class PurpurWorldConfig { @@ -1170,10 +1170,20 @@ public class PurpurWorldConfig {
public boolean allayRidable = false; public boolean allayRidable = false;
public boolean allayRidableInWater = true; public boolean allayRidableInWater = true;
public boolean allayControllable = true; public boolean allayControllable = true;
@@ -260,7 +260,7 @@ index 3416c6778faf56666a521a69382799bb1bee1497..92e41dab573e8c979564c83377e460cd
} }
public boolean axolotlRidable = false; public boolean axolotlRidable = false;
@@ -1282,6 +1292,10 @@ public class PurpurWorldConfig { @@ -1287,6 +1297,10 @@ public class PurpurWorldConfig {
public double camelMovementSpeedMin = 0.09D; public double camelMovementSpeedMin = 0.09D;
public double camelMovementSpeedMax = 0.09D; public double camelMovementSpeedMax = 0.09D;
public int camelBreedingTicks = 6000; public int camelBreedingTicks = 6000;
@@ -271,7 +271,7 @@ index 3416c6778faf56666a521a69382799bb1bee1497..92e41dab573e8c979564c83377e460cd
private void camelSettings() { private void camelSettings() {
camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater); camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater);
camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin); camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin);
@@ -1291,6 +1305,10 @@ public class PurpurWorldConfig { @@ -1296,6 +1310,10 @@ public class PurpurWorldConfig {
camelMovementSpeedMin = getDouble("mobs.camel.attributes.movement_speed.min", camelMovementSpeedMin); camelMovementSpeedMin = getDouble("mobs.camel.attributes.movement_speed.min", camelMovementSpeedMin);
camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax); camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax);
camelBreedingTicks = getInt("mobs.camel.breeding-delay-ticks", camelBreedingTicks); camelBreedingTicks = getInt("mobs.camel.breeding-delay-ticks", camelBreedingTicks);
@@ -282,7 +282,7 @@ index 3416c6778faf56666a521a69382799bb1bee1497..92e41dab573e8c979564c83377e460cd
} }
public boolean catRidable = false; public boolean catRidable = false;
@@ -1712,12 +1730,22 @@ public class PurpurWorldConfig { @@ -1717,12 +1735,22 @@ public class PurpurWorldConfig {
public boolean frogControllable = true; public boolean frogControllable = true;
public float frogRidableJumpHeight = 0.65F; public float frogRidableJumpHeight = 0.65F;
public int frogBreedingTicks = 6000; public int frogBreedingTicks = 6000;
@@ -305,7 +305,7 @@ index 3416c6778faf56666a521a69382799bb1bee1497..92e41dab573e8c979564c83377e460cd
} }
public boolean ghastRidable = false; public boolean ghastRidable = false;
@@ -2658,12 +2686,20 @@ public class PurpurWorldConfig { @@ -2665,12 +2693,20 @@ public class PurpurWorldConfig {
public boolean snifferControllable = true; public boolean snifferControllable = true;
public double snifferMaxHealth = 14.0D; public double snifferMaxHealth = 14.0D;
public int snifferBreedingTicks = 6000; public int snifferBreedingTicks = 6000;
@@ -326,7 +326,7 @@ index 3416c6778faf56666a521a69382799bb1bee1497..92e41dab573e8c979564c83377e460cd
} }
public boolean squidRidable = false; public boolean squidRidable = false;
@@ -2757,10 +2793,20 @@ public class PurpurWorldConfig { @@ -2764,10 +2800,20 @@ public class PurpurWorldConfig {
public boolean tadpoleRidable = false; public boolean tadpoleRidable = false;
public boolean tadpoleRidableInWater = true; public boolean tadpoleRidableInWater = true;
public boolean tadpoleControllable = true; public boolean tadpoleControllable = true;
@@ -347,7 +347,7 @@ index 3416c6778faf56666a521a69382799bb1bee1497..92e41dab573e8c979564c83377e460cd
} }
public boolean traderLlamaRidable = false; public boolean traderLlamaRidable = false;
@@ -2973,10 +3019,20 @@ public class PurpurWorldConfig { @@ -2980,10 +3026,20 @@ public class PurpurWorldConfig {
public boolean wardenRidable = false; public boolean wardenRidable = false;
public boolean wardenRidableInWater = true; public boolean wardenRidableInWater = true;
public boolean wardenControllable = true; public boolean wardenControllable = true;

View File

@@ -29,7 +29,7 @@ index 3852985ebf9643f6b1b17a3d090175800bcdd079..4f2f652cf7403221226e524586aa73fe
} }
// CraftBukkit end // CraftBukkit end
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 753e5a1c99e427729c4bcb5378005fc8012996ab..ea784b6c5aeb156147900ad6161c52cc185825dd 100644 index d2e869d35bfb12fe2e0fe1c4e144446883166dd3..65105a4fc797c9d7767fa9f837d9cef08f3f46ab 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -198,7 +198,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -198,7 +198,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -41,7 +41,7 @@ index 753e5a1c99e427729c4bcb5378005fc8012996ab..ea784b6c5aeb156147900ad6161c52cc
private final Set<UUID> unlistedEntities = new HashSet<>(); // Paper - Add Listing API for Player private final Set<UUID> unlistedEntities = new HashSet<>(); // Paper - Add Listing API for Player
private static final WeakHashMap<Plugin, WeakReference<Plugin>> pluginWeakReferences = new WeakHashMap<>(); private static final WeakHashMap<Plugin, WeakReference<Plugin>> pluginWeakReferences = new WeakHashMap<>();
private int hash = 0; private int hash = 0;
@@ -2238,9 +2238,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -2247,9 +2247,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@Override @Override
public boolean canSee(org.bukkit.entity.Entity entity) { public boolean canSee(org.bukkit.entity.Entity entity) {

View File

@@ -21,10 +21,10 @@ index 6ad5245aebba43abf10fe980e63a8872e3e15484..9f48fc9bc38e0138c45000456a49c78d
org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur
org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 31111babbb119175fa3c7b79624bb2a955b9cba3..bd7f40e04f8b0117eeaa12f62c7e61d4a41d3d82 100644 index 7fc94ec08f6bd9649ad9168ea3b9aa6ac9bf60e0..2fac364c8ce66a4c00b65adc4c723b734e165ddc 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -2368,6 +2368,8 @@ public class ServerPlayer extends Player { @@ -2369,6 +2369,8 @@ public class ServerPlayer extends Player {
// Purpur Start // Purpur Start
private boolean isAfk = false; private boolean isAfk = false;
@@ -33,7 +33,7 @@ index 31111babbb119175fa3c7b79624bb2a955b9cba3..bd7f40e04f8b0117eeaa12f62c7e61d4
@Override @Override
public void setAfk(boolean afk) { public void setAfk(boolean afk) {
@@ -2405,6 +2407,9 @@ public class ServerPlayer extends Player { @@ -2406,6 +2408,9 @@ public class ServerPlayer extends Player {
String prefix = (split.length > 0 ? split[0] : "").replace(org.purpurmc.purpur.PurpurConfig.afkTabListPrefix, ""); String prefix = (split.length > 0 ? split[0] : "").replace(org.purpurmc.purpur.PurpurConfig.afkTabListPrefix, "");
String suffix = (split.length > 1 ? split[1] : "").replace(org.purpurmc.purpur.PurpurConfig.afkTabListSuffix, ""); String suffix = (split.length > 1 ? split[1] : "").replace(org.purpurmc.purpur.PurpurConfig.afkTabListSuffix, "");
if (afk) { if (afk) {
@@ -44,10 +44,10 @@ index 31111babbb119175fa3c7b79624bb2a955b9cba3..bd7f40e04f8b0117eeaa12f62c7e61d4
} else { } else {
getBukkitEntity().setPlayerListName(prefix + scoreboardName + suffix); getBukkitEntity().setPlayerListName(prefix + scoreboardName + suffix);
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index b877dc3f82bdd9640f522e7bd2dc1dbf23610eb1..492de69a877318bad5e49fb57ee461974ad562b6 100644 index 1acac1e6288e67db00599f98fbdf8ba12702c11a..5fe21ffe8a868184b909e444798701fab52e91c1 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2230,8 +2230,34 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -2254,8 +2254,34 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
} }
} }

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Block log4j rce exploit in chat
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 492de69a877318bad5e49fb57ee461974ad562b6..7aa64742d7967a74e4078af168b6b2bac005ccd1 100644 index 5fe21ffe8a868184b909e444798701fab52e91c1..b4bab818c53c31bba220996696406a05cb57db8b 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2418,6 +2418,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -2444,6 +2444,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
} }
private void tryHandleChat(String s, Runnable runnable, boolean sync) { // CraftBukkit private void tryHandleChat(String s, Runnable runnable, boolean sync) { // CraftBukkit
@@ -17,7 +17,7 @@ index 492de69a877318bad5e49fb57ee461974ad562b6..7aa64742d7967a74e4078af168b6b2ba
if (ServerGamePacketListenerImpl.isChatMessageIllegal(s)) { if (ServerGamePacketListenerImpl.isChatMessageIllegal(s)) {
this.disconnect(Component.translatable("multiplayer.disconnect.illegal_characters"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_CHARACTERS); // Paper this.disconnect(Component.translatable("multiplayer.disconnect.illegal_characters"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_CHARACTERS); // Paper
} else if (this.player.isRemoved() || this.player.getChatVisibility() == ChatVisiblity.HIDDEN) { // CraftBukkit - dead men tell no tales } else if (this.player.isRemoved() || this.player.getChatVisibility() == ChatVisiblity.HIDDEN) { // CraftBukkit - dead men tell no tales
@@ -2449,6 +2451,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -2475,6 +2477,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
} }
} }
@@ -34,10 +34,10 @@ index 492de69a877318bad5e49fb57ee461974ad562b6..7aa64742d7967a74e4078af168b6b2ba
for (int i = 0; i < message.length(); ++i) { for (int i = 0; i < message.length(); ++i) {
if (!StringUtil.isAllowedChatCharacter(message.charAt(i))) { if (!StringUtil.isAllowedChatCharacter(message.charAt(i))) {
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 ea784b6c5aeb156147900ad6161c52cc185825dd..f4e916c3f38900576df974269ec5c88648a29eac 100644 index 65105a4fc797c9d7767fa9f837d9cef08f3f46ab..059aebbe2173bfc77071fad0884d92ebe756f848 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -742,6 +742,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -751,6 +751,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
if (this.getHandle().connection == null) return; if (this.getHandle().connection == null) return;