From 4eac4ddb150cbe7c3c55b28ac58ebe3a1f307525 Mon Sep 17 00:00:00 2001 From: Ben Kerllenevich Date: Mon, 29 Nov 2021 16:37:07 -0500 Subject: [PATCH] fix repackage --- patches/api/0005-Ridables.patch | 88 +-- patches/api/0007-Llama-API.patch | 214 +++---- patches/api/0008-AFK-API.patch | 62 +- patches/api/0010-ExecuteCommandEvent.patch | 70 +-- ...013-PlayerSetSpawnerTypeWithEggEvent.patch | 4 +- .../api/0014-EMC-MonsterEggSpawnEvent.patch | 4 +- patches/api/0016-Anvil-API.patch | 46 +- .../api/0028-PlayerBookTooLargeEvent.patch | 4 +- ...0030-Add-EntityTeleportHinderedEvent.patch | 4 +- patches/server/0002-Rebrand.patch | 4 +- patches/server/0003-Purpur-config-files.patch | 172 +++--- patches/server/0006-Ridables.patch | 542 +++++++++--------- ...-Configurable-entity-base-attributes.patch | 108 ++-- .../0009-Barrels-and-enderchests-6-rows.patch | 98 ++-- patches/server/0010-Llama-API.patch | 6 +- patches/server/0011-AFK-API.patch | 108 ++-- .../0013-Configurable-server-mod-name.patch | 6 +- patches/server/0015-Lagging-threshold.patch | 36 +- ...016-PlayerSetSpawnerTypeWithEggEvent.patch | 4 +- .../0017-EMC-MonsterEggSpawnEvent.patch | 4 +- .../0018-Player-invulnerabilities.patch | 46 +- patches/server/0019-Anvil-API.patch | 6 +- .../0021-Alternative-Keepalive-Handling.patch | 8 +- patches/server/0022-Silk-touch-spawners.patch | 10 +- ...-settings-suppressing-pointless-logs.patch | 34 +- patches/server/0027-Giants-AI-settings.patch | 12 +- .../server/0033-Breedable-Polar-Bears.patch | 6 +- .../server/0034-Chickens-can-retaliate.patch | 6 +- patches/server/0038-Cows-eat-mushrooms.patch | 6 +- .../0052-Configurable-TPS-Catchup.patch | 6 +- ...0055-Villagers-follow-emerald-blocks.patch | 6 +- ...0066-Add-5-second-tps-average-in-tps.patch | 6 +- .../server/0068-Item-entity-immunities.patch | 104 ++-- patches/server/0069-Add-ping-command.patch | 12 +- patches/server/0070-Add-demo-command.patch | 14 +- patches/server/0071-Add-credits-command.patch | 16 +- ...ed-to-crystals-and-crystals-shoot-ph.patch | 14 +- ...-Add-allow-water-in-end-world-option.patch | 14 +- ...ion-to-disable-certain-block-updates.patch | 26 +- .../server/0091-Short-enderman-height.patch | 8 +- ...ing-obsidian-valid-for-portal-frames.patch | 6 +- ...te-and-mending-enchantments-together.patch | 6 +- ...justable-breeding-cooldown-to-config.patch | 8 +- .../0120-Snow-Golem-rate-of-fire-config.patch | 6 +- ...C-Configurable-disable-give-dropping.patch | 6 +- ...ble-chance-for-wolves-to-spawn-rabid.patch | 48 +- patches/server/0129-Implement-TPSBar.patch | 44 +- .../server/0131-PlayerBookTooLargeEvent.patch | 6 +- ...0136-Add-EntityTeleportHinderedEvent.patch | 74 +-- .../server/0144-Dont-run-with-scissors.patch | 8 +- ...an-aggressiveness-towards-Endermites.patch | 6 +- ...153-Config-to-disable-Llama-caravans.patch | 8 +- .../0159-Allow-infinity-on-crossbows.patch | 36 +- ...-Config-to-allow-for-unsafe-enchants.patch | 16 +- ...-Config-to-change-max-number-of-bees.patch | 6 +- .../0173-Gamemode-extra-permissions.patch | 44 +- ...0176-Configurable-broadcast-settings.patch | 10 +- ...-hidden-players-from-entity-selector.patch | 6 +- .../0181-Iron-golem-poppy-calms-anger.patch | 12 +- patches/server/0182-Breedable-parrots.patch | 6 +- ...nfig-for-unverified-username-message.patch | 6 +- ...e-anvil-cumulative-cost-configurable.patch | 6 +- ...ake-lightning-rod-range-configurable.patch | 6 +- ...Eating-glow-berries-adds-glow-effect.patch | 10 +- ...t-System.out-calls-to-plugin-loggers.patch | 36 +- patches/server/0207-Add-uptime-command.patch | 22 +- .../server/0208-Structure-seed-options.patch | 16 +- .../server/0209-Tool-actionable-options.patch | 34 +- ...omizable-sleeping-actionbar-messages.patch | 16 +- ...e-Enderman-teleport-on-projectile-hi.patch | 6 +- patches/server/0218-Add-compass-command.patch | 34 +- ...turally-aggressive-to-players-chance.patch | 8 +- ...turally-aggressive-to-players-chance.patch | 6 +- ...nfig-for-Grindstones-ignoring-curses.patch | 10 +- .../server/0242-UPnP-Port-Forwarding.patch | 8 +- .../api/0031-Add-StructureGenerateEvent.patch | 2 +- .../0139-Add-StructureGenerateEvent.patch | 2 +- 77 files changed, 1267 insertions(+), 1267 deletions(-) diff --git a/patches/api/0005-Ridables.patch b/patches/api/0005-Ridables.patch index 2c27f5766..e1e29bfa9 100644 --- a/patches/api/0005-Ridables.patch +++ b/patches/api/0005-Ridables.patch @@ -20,13 +20,53 @@ index 2405254739a83b2fb517da7fa4ea0721c68f9f6d..825c02793e3aaff45a8a0a9da01d72da /** * @deprecated removed in 1.16 */ +diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java +index bafad5764cc3933fcd9602d37bd2e68424cbd575..f1740d0d50e251fa029f22eeaacf2a68b3cd2e96 100644 +--- a/src/main/java/org/bukkit/entity/Entity.java ++++ b/src/main/java/org/bukkit/entity/Entity.java +@@ -795,4 +795,35 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent + */ + public boolean spawnAt(@NotNull Location location, @NotNull org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason reason); + // Paper end ++ ++ // Purpur start ++ /** ++ * Get the riding player ++ * ++ * @return Riding player ++ */ ++ @Nullable ++ Player getRider(); ++ ++ /** ++ * Check if entity is being ridden ++ * ++ * @return True if being ridden ++ */ ++ boolean hasRider(); ++ ++ /** ++ * Check if entity is ridable ++ * ++ * @return True if ridable ++ */ ++ boolean isRidable(); ++ ++ /** ++ * Check if entity is ridable in water ++ * ++ * @return True if ridable in water ++ */ ++ boolean isRidableInWater(); ++ // Purpur end + } diff --git a/src/main/java/org/purpurmc/purpur/event/entity/RidableMoveEvent.java b/src/main/java/org/purpurmc/purpur/event/entity/RidableMoveEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..48e7ac392fe5efac8a4ce549e31a05ed817417e4 +index 0000000000000000000000000000000000000000..a037df01b07af9ffb98b67aca412c1d34fade03b --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/event/entity/RidableMoveEvent.java @@ -0,0 +1,103 @@ -+package net.pl3x.purpur.event.entity; ++package org.purpurmc.purpur.event.entity; + +import com.google.common.base.Preconditions; +import org.bukkit.Location; @@ -131,11 +171,11 @@ index 0000000000000000000000000000000000000000..48e7ac392fe5efac8a4ce549e31a05ed +} diff --git a/src/main/java/org/purpurmc/purpur/event/entity/RidableSpacebarEvent.java b/src/main/java/org/purpurmc/purpur/event/entity/RidableSpacebarEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..c0ec5a130985e8da4cc9e596a6b70503d2550f77 +index 0000000000000000000000000000000000000000..3d3a7d898e3278ce998d713dafbb4b354dad7fc7 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/event/entity/RidableSpacebarEvent.java @@ -0,0 +1,37 @@ -+package net.pl3x.purpur.event.entity; ++package org.purpurmc.purpur.event.entity; + +import org.bukkit.entity.Entity; +import org.bukkit.event.Cancellable; @@ -172,43 +212,3 @@ index 0000000000000000000000000000000000000000..c0ec5a130985e8da4cc9e596a6b70503 + return handlers; + } +} -diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index bafad5764cc3933fcd9602d37bd2e68424cbd575..f1740d0d50e251fa029f22eeaacf2a68b3cd2e96 100644 ---- a/src/main/java/org/bukkit/entity/Entity.java -+++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -795,4 +795,35 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent - */ - public boolean spawnAt(@NotNull Location location, @NotNull org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason reason); - // Paper end -+ -+ // Purpur start -+ /** -+ * Get the riding player -+ * -+ * @return Riding player -+ */ -+ @Nullable -+ Player getRider(); -+ -+ /** -+ * Check if entity is being ridden -+ * -+ * @return True if being ridden -+ */ -+ boolean hasRider(); -+ -+ /** -+ * Check if entity is ridable -+ * -+ * @return True if ridable -+ */ -+ boolean isRidable(); -+ -+ /** -+ * Check if entity is ridable in water -+ * -+ * @return True if ridable in water -+ */ -+ boolean isRidableInWater(); -+ // Purpur end - } diff --git a/patches/api/0007-Llama-API.patch b/patches/api/0007-Llama-API.patch index 500d25cac..814d2bc25 100644 --- a/patches/api/0007-Llama-API.patch +++ b/patches/api/0007-Llama-API.patch @@ -4,113 +4,6 @@ Date: Fri, 18 Oct 2019 22:50:05 -0500 Subject: [PATCH] Llama API -diff --git a/src/main/java/org/purpurmc/purpur/event/entity/LlamaJoinCaravanEvent.java b/src/main/java/org/purpurmc/purpur/event/entity/LlamaJoinCaravanEvent.java -new file mode 100644 -index 0000000000000000000000000000000000000000..6e68c1399bf30eeef6ce0385867f0cf258698eae ---- /dev/null -+++ b/src/main/java/org/purpurmc/purpur/event/entity/LlamaJoinCaravanEvent.java -@@ -0,0 +1,61 @@ -+package net.pl3x.purpur.event.entity; -+ -+import org.bukkit.entity.Llama; -+import org.bukkit.event.Cancellable; -+import org.bukkit.event.HandlerList; -+import org.bukkit.event.entity.EntityEvent; -+import org.jetbrains.annotations.NotNull; -+ -+/** -+ * Called when a Llama tries to join a caravan. -+ *

-+ * Cancelling the event will not let the Llama join. To prevent future attempts -+ * at joining a caravan use {@link Llama#setShouldJoinCaravan(boolean)}. -+ */ -+public class LlamaJoinCaravanEvent extends EntityEvent implements Cancellable { -+ private static final HandlerList handlers = new HandlerList(); -+ private boolean canceled; -+ private final Llama head; -+ -+ public LlamaJoinCaravanEvent(@NotNull Llama llama, @NotNull Llama head) { -+ super(llama); -+ this.head = head; -+ } -+ -+ @Override -+ @NotNull -+ public Llama getEntity() { -+ return (Llama) entity; -+ } -+ -+ /** -+ * Get the Llama that this Llama is about to follow -+ * -+ * @return Llama about to be followed -+ */ -+ @NotNull -+ public Llama getHead() { -+ return head; -+ } -+ -+ @Override -+ public boolean isCancelled() { -+ return canceled; -+ } -+ -+ @Override -+ public void setCancelled(boolean cancel) { -+ canceled = cancel; -+ } -+ -+ @Override -+ @NotNull -+ public HandlerList getHandlers() { -+ return handlers; -+ } -+ -+ @NotNull -+ public static HandlerList getHandlerList() { -+ return handlers; -+ } -+} -diff --git a/src/main/java/org/purpurmc/purpur/event/entity/LlamaLeaveCaravanEvent.java b/src/main/java/org/purpurmc/purpur/event/entity/LlamaLeaveCaravanEvent.java -new file mode 100644 -index 0000000000000000000000000000000000000000..ec8d978c22835e2789ebaaeddf0d13588ed1122a ---- /dev/null -+++ b/src/main/java/org/purpurmc/purpur/event/entity/LlamaLeaveCaravanEvent.java -@@ -0,0 +1,34 @@ -+package net.pl3x.purpur.event.entity; -+ -+import org.bukkit.entity.Llama; -+import org.bukkit.event.HandlerList; -+import org.bukkit.event.entity.EntityEvent; -+import org.jetbrains.annotations.NotNull; -+ -+/** -+ * Called when a Llama leaves a caravan -+ */ -+public class LlamaLeaveCaravanEvent extends EntityEvent { -+ private static final HandlerList handlers = new HandlerList(); -+ -+ public LlamaLeaveCaravanEvent(@NotNull Llama llama) { -+ super(llama); -+ } -+ -+ @Override -+ @NotNull -+ public Llama getEntity() { -+ return (Llama) entity; -+ } -+ -+ @Override -+ @NotNull -+ public HandlerList getHandlers() { -+ return handlers; -+ } -+ -+ @NotNull -+ public static HandlerList getHandlerList() { -+ return handlers; -+ } -+} diff --git a/src/main/java/org/bukkit/entity/Llama.java b/src/main/java/org/bukkit/entity/Llama.java index d23226ccb0f6c25028f000ce31346cd0a8898e6a..1ef9479c962b3f4f6fed46671a1209c34040d16d 100644 --- a/src/main/java/org/bukkit/entity/Llama.java @@ -189,3 +82,110 @@ index d23226ccb0f6c25028f000ce31346cd0a8898e6a..1ef9479c962b3f4f6fed46671a1209c3 + Llama getCaravanTail(); + // Purpur end } +diff --git a/src/main/java/org/purpurmc/purpur/event/entity/LlamaJoinCaravanEvent.java b/src/main/java/org/purpurmc/purpur/event/entity/LlamaJoinCaravanEvent.java +new file mode 100644 +index 0000000000000000000000000000000000000000..8849bb0becb16db907fa648cca2e98ab9d957c75 +--- /dev/null ++++ b/src/main/java/org/purpurmc/purpur/event/entity/LlamaJoinCaravanEvent.java +@@ -0,0 +1,61 @@ ++package org.purpurmc.purpur.event.entity; ++ ++import org.bukkit.entity.Llama; ++import org.bukkit.event.Cancellable; ++import org.bukkit.event.HandlerList; ++import org.bukkit.event.entity.EntityEvent; ++import org.jetbrains.annotations.NotNull; ++ ++/** ++ * Called when a Llama tries to join a caravan. ++ *

++ * Cancelling the event will not let the Llama join. To prevent future attempts ++ * at joining a caravan use {@link Llama#setShouldJoinCaravan(boolean)}. ++ */ ++public class LlamaJoinCaravanEvent extends EntityEvent implements Cancellable { ++ private static final HandlerList handlers = new HandlerList(); ++ private boolean canceled; ++ private final Llama head; ++ ++ public LlamaJoinCaravanEvent(@NotNull Llama llama, @NotNull Llama head) { ++ super(llama); ++ this.head = head; ++ } ++ ++ @Override ++ @NotNull ++ public Llama getEntity() { ++ return (Llama) entity; ++ } ++ ++ /** ++ * Get the Llama that this Llama is about to follow ++ * ++ * @return Llama about to be followed ++ */ ++ @NotNull ++ public Llama getHead() { ++ return head; ++ } ++ ++ @Override ++ public boolean isCancelled() { ++ return canceled; ++ } ++ ++ @Override ++ public void setCancelled(boolean cancel) { ++ canceled = cancel; ++ } ++ ++ @Override ++ @NotNull ++ public HandlerList getHandlers() { ++ return handlers; ++ } ++ ++ @NotNull ++ public static HandlerList getHandlerList() { ++ return handlers; ++ } ++} +diff --git a/src/main/java/org/purpurmc/purpur/event/entity/LlamaLeaveCaravanEvent.java b/src/main/java/org/purpurmc/purpur/event/entity/LlamaLeaveCaravanEvent.java +new file mode 100644 +index 0000000000000000000000000000000000000000..c268c35b541a222d50875c29770c846a8ffcc4f8 +--- /dev/null ++++ b/src/main/java/org/purpurmc/purpur/event/entity/LlamaLeaveCaravanEvent.java +@@ -0,0 +1,34 @@ ++package org.purpurmc.purpur.event.entity; ++ ++import org.bukkit.entity.Llama; ++import org.bukkit.event.HandlerList; ++import org.bukkit.event.entity.EntityEvent; ++import org.jetbrains.annotations.NotNull; ++ ++/** ++ * Called when a Llama leaves a caravan ++ */ ++public class LlamaLeaveCaravanEvent extends EntityEvent { ++ private static final HandlerList handlers = new HandlerList(); ++ ++ public LlamaLeaveCaravanEvent(@NotNull Llama llama) { ++ super(llama); ++ } ++ ++ @Override ++ @NotNull ++ public Llama getEntity() { ++ return (Llama) entity; ++ } ++ ++ @Override ++ @NotNull ++ public HandlerList getHandlers() { ++ return handlers; ++ } ++ ++ @NotNull ++ public static HandlerList getHandlerList() { ++ return handlers; ++ } ++} diff --git a/patches/api/0008-AFK-API.patch b/patches/api/0008-AFK-API.patch index 3ac2b8ed9..f8c3c61fd 100644 --- a/patches/api/0008-AFK-API.patch +++ b/patches/api/0008-AFK-API.patch @@ -4,13 +4,42 @@ Date: Sat, 10 Aug 2019 22:19:56 -0500 Subject: [PATCH] AFK API +diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java +index ccd12268d9c1b2c889a68735831a9b26a80dbf53..af0c24d79251ba032b8ca3051fb451b00a5986e4 100644 +--- a/src/main/java/org/bukkit/entity/Player.java ++++ b/src/main/java/org/bukkit/entity/Player.java +@@ -2339,5 +2339,24 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM + * @return True if Player uses Purpur Client + */ + public boolean usesPurpurClient(); ++ ++ /** ++ * Check if player is AFK ++ * ++ * @return True if AFK ++ */ ++ boolean isAfk(); ++ ++ /** ++ * Set player as AFK ++ * ++ * @param setAfk Whether to set AFK or not ++ */ ++ void setAfk(boolean setAfk); ++ ++ /** ++ * Reset the idle timer back to 0 ++ */ ++ void resetIdleTimer(); + // Purpur end + } diff --git a/src/main/java/org/purpurmc/purpur/event/PlayerAFKEvent.java b/src/main/java/org/purpurmc/purpur/event/PlayerAFKEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..0c8b3e5e4ba412624357ea5662a78862bd9fc4be +index 0000000000000000000000000000000000000000..25e92af7710316ed2afedf846a59dbd672869b51 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/event/PlayerAFKEvent.java @@ -0,0 +1,70 @@ -+package net.pl3x.purpur.event; ++package org.purpurmc.purpur.event; + +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; @@ -80,32 +109,3 @@ index 0000000000000000000000000000000000000000..0c8b3e5e4ba412624357ea5662a78862 + return handlers; + } +} -diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index ccd12268d9c1b2c889a68735831a9b26a80dbf53..af0c24d79251ba032b8ca3051fb451b00a5986e4 100644 ---- a/src/main/java/org/bukkit/entity/Player.java -+++ b/src/main/java/org/bukkit/entity/Player.java -@@ -2339,5 +2339,24 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM - * @return True if Player uses Purpur Client - */ - public boolean usesPurpurClient(); -+ -+ /** -+ * Check if player is AFK -+ * -+ * @return True if AFK -+ */ -+ boolean isAfk(); -+ -+ /** -+ * Set player as AFK -+ * -+ * @param setAfk Whether to set AFK or not -+ */ -+ void setAfk(boolean setAfk); -+ -+ /** -+ * Reset the idle timer back to 0 -+ */ -+ void resetIdleTimer(); - // Purpur end - } diff --git a/patches/api/0010-ExecuteCommandEvent.patch b/patches/api/0010-ExecuteCommandEvent.patch index e8c8cc8ad..8b83d17e9 100644 --- a/patches/api/0010-ExecuteCommandEvent.patch +++ b/patches/api/0010-ExecuteCommandEvent.patch @@ -4,13 +4,46 @@ Date: Fri, 31 May 2019 00:08:28 -0500 Subject: [PATCH] ExecuteCommandEvent +diff --git a/src/main/java/org/bukkit/command/SimpleCommandMap.java b/src/main/java/org/bukkit/command/SimpleCommandMap.java +index 74252236b138969560e6513f24e7ecc6dc4a4127..9c3d02b949fe806e17200d0ff6127fc367ef2abc 100644 +--- a/src/main/java/org/bukkit/command/SimpleCommandMap.java ++++ b/src/main/java/org/bukkit/command/SimpleCommandMap.java +@@ -147,6 +147,19 @@ public class SimpleCommandMap implements CommandMap { + return false; + } + ++ // Purpur start ++ String[] parsedArgs = Arrays.copyOfRange(args, 1, args.length); ++ org.purpurmc.purpur.event.ExecuteCommandEvent event = new org.purpurmc.purpur.event.ExecuteCommandEvent(sender, target, sentCommandLabel, parsedArgs); ++ if (!event.callEvent()) { ++ return true; // cancelled ++ } ++ ++ sender = event.getSender(); ++ target = event.getCommand(); ++ sentCommandLabel = event.getLabel(); ++ parsedArgs = event.getArgs(); ++ // Purpur end ++ + // Paper start - Plugins do weird things to workaround normal registration + if (target.timings == null) { + target.timings = co.aikar.timings.TimingsManager.getCommandTiming(null, target); +@@ -156,7 +169,7 @@ public class SimpleCommandMap implements CommandMap { + try { + try (co.aikar.timings.Timing ignored = target.timings.startTiming()) { // Paper - use try with resources + // Note: we don't return the result of target.execute as thats success / failure, we return handled (true) or not handled (false) +- target.execute(sender, sentCommandLabel, Arrays.copyOfRange(args, 1, args.length)); ++ target.execute(sender, sentCommandLabel, parsedArgs); // Purpur + } // target.timings.stopTiming(); // Spigot // Paper + } catch (CommandException ex) { + server.getPluginManager().callEvent(new ServerExceptionEvent(new ServerCommandException(ex, target, sender, args))); // Paper diff --git a/src/main/java/org/purpurmc/purpur/event/ExecuteCommandEvent.java b/src/main/java/org/purpurmc/purpur/event/ExecuteCommandEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..3250bd4dc29a0cf79b08833d95a3321d1a6733f6 +index 0000000000000000000000000000000000000000..103d5699d0993f358749b3d288b924e48b734693 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/event/ExecuteCommandEvent.java @@ -0,0 +1,130 @@ -+package net.pl3x.purpur.event; ++package org.purpurmc.purpur.event; + +import org.apache.commons.lang.Validate; +import org.bukkit.command.Command; @@ -140,36 +173,3 @@ index 0000000000000000000000000000000000000000..3250bd4dc29a0cf79b08833d95a3321d + return handlers; + } +} -diff --git a/src/main/java/org/bukkit/command/SimpleCommandMap.java b/src/main/java/org/bukkit/command/SimpleCommandMap.java -index 74252236b138969560e6513f24e7ecc6dc4a4127..c12de7917ab074083c9758645a403b501455a49d 100644 ---- a/src/main/java/org/bukkit/command/SimpleCommandMap.java -+++ b/src/main/java/org/bukkit/command/SimpleCommandMap.java -@@ -147,6 +147,19 @@ public class SimpleCommandMap implements CommandMap { - return false; - } - -+ // Purpur start -+ String[] parsedArgs = Arrays.copyOfRange(args, 1, args.length); -+ net.pl3x.purpur.event.ExecuteCommandEvent event = new net.pl3x.purpur.event.ExecuteCommandEvent(sender, target, sentCommandLabel, parsedArgs); -+ if (!event.callEvent()) { -+ return true; // cancelled -+ } -+ -+ sender = event.getSender(); -+ target = event.getCommand(); -+ sentCommandLabel = event.getLabel(); -+ parsedArgs = event.getArgs(); -+ // Purpur end -+ - // Paper start - Plugins do weird things to workaround normal registration - if (target.timings == null) { - target.timings = co.aikar.timings.TimingsManager.getCommandTiming(null, target); -@@ -156,7 +169,7 @@ public class SimpleCommandMap implements CommandMap { - try { - try (co.aikar.timings.Timing ignored = target.timings.startTiming()) { // Paper - use try with resources - // Note: we don't return the result of target.execute as thats success / failure, we return handled (true) or not handled (false) -- target.execute(sender, sentCommandLabel, Arrays.copyOfRange(args, 1, args.length)); -+ target.execute(sender, sentCommandLabel, parsedArgs); // Purpur - } // target.timings.stopTiming(); // Spigot // Paper - } catch (CommandException ex) { - server.getPluginManager().callEvent(new ServerExceptionEvent(new ServerCommandException(ex, target, sender, args))); // Paper diff --git a/patches/api/0013-PlayerSetSpawnerTypeWithEggEvent.patch b/patches/api/0013-PlayerSetSpawnerTypeWithEggEvent.patch index 99ac65d7d..fa03a99a9 100644 --- a/patches/api/0013-PlayerSetSpawnerTypeWithEggEvent.patch +++ b/patches/api/0013-PlayerSetSpawnerTypeWithEggEvent.patch @@ -6,11 +6,11 @@ Subject: [PATCH] PlayerSetSpawnerTypeWithEggEvent diff --git a/src/main/java/org/purpurmc/purpur/event/PlayerSetSpawnerTypeWithEggEvent.java b/src/main/java/org/purpurmc/purpur/event/PlayerSetSpawnerTypeWithEggEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..c050b75e9a11ac728868fe95e3f89e6b99de6ad2 +index 0000000000000000000000000000000000000000..519809eab5d926dc7b0a7bad5d446d0defc099dc --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/event/PlayerSetSpawnerTypeWithEggEvent.java @@ -0,0 +1,85 @@ -+package net.pl3x.purpur.event; ++package org.purpurmc.purpur.event; + +import org.bukkit.block.Block; +import org.bukkit.block.CreatureSpawner; diff --git a/patches/api/0014-EMC-MonsterEggSpawnEvent.patch b/patches/api/0014-EMC-MonsterEggSpawnEvent.patch index 7a501fa0c..445f4a940 100644 --- a/patches/api/0014-EMC-MonsterEggSpawnEvent.patch +++ b/patches/api/0014-EMC-MonsterEggSpawnEvent.patch @@ -6,11 +6,11 @@ Subject: [PATCH] EMC - MonsterEggSpawnEvent diff --git a/src/main/java/org/purpurmc/purpur/event/entity/MonsterEggSpawnEvent.java b/src/main/java/org/purpurmc/purpur/event/entity/MonsterEggSpawnEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..8f1c9c421aeeb0ddf331f076a9b646c510ea4337 +index 0000000000000000000000000000000000000000..82f8a0ea22f07954d516935fc9f73f6aa0f65aa6 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/event/entity/MonsterEggSpawnEvent.java @@ -0,0 +1,67 @@ -+package net.pl3x.purpur.event.entity; ++package org.purpurmc.purpur.event.entity; + +import org.bukkit.entity.Entity; +import org.bukkit.entity.HumanEntity; diff --git a/patches/api/0016-Anvil-API.patch b/patches/api/0016-Anvil-API.patch index 33843a392..a834271b3 100644 --- a/patches/api/0016-Anvil-API.patch +++ b/patches/api/0016-Anvil-API.patch @@ -4,13 +4,32 @@ Date: Sun, 19 Apr 2020 00:25:09 -0500 Subject: [PATCH] Anvil API +diff --git a/src/main/java/org/bukkit/inventory/AnvilInventory.java b/src/main/java/org/bukkit/inventory/AnvilInventory.java +index b95e563b5454306a9188ae3295309ee86a756477..435026e533ea9edb8c1800d35c63543ca023a904 100644 +--- a/src/main/java/org/bukkit/inventory/AnvilInventory.java ++++ b/src/main/java/org/bukkit/inventory/AnvilInventory.java +@@ -109,4 +109,14 @@ public interface AnvilInventory extends Inventory { + setItem(2, result); + } + // Paper end ++ ++ // Purpur start ++ boolean canBypassCost(); ++ ++ void setBypassCost(boolean bypassCost); ++ ++ boolean canDoUnsafeEnchants(); ++ ++ void setDoUnsafeEnchants(boolean canDoUnsafeEnchants); ++ // Purpur end + } diff --git a/src/main/java/org/purpurmc/purpur/event/inventory/AnvilTakeResultEvent.java b/src/main/java/org/purpurmc/purpur/event/inventory/AnvilTakeResultEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..85663c0a44695f7b7f01a68693cac3d99f4b56ca +index 0000000000000000000000000000000000000000..b363c91a29f826910db22f2643decf996a067ab5 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/event/inventory/AnvilTakeResultEvent.java @@ -0,0 +1,52 @@ -+package net.pl3x.purpur.event.inventory; ++package org.purpurmc.purpur.event.inventory; + +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Player; @@ -64,11 +83,11 @@ index 0000000000000000000000000000000000000000..85663c0a44695f7b7f01a68693cac3d9 +} diff --git a/src/main/java/org/purpurmc/purpur/event/inventory/AnvilUpdateResultEvent.java b/src/main/java/org/purpurmc/purpur/event/inventory/AnvilUpdateResultEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..2717ad82ccc0d39c5a69b8890303c245e9a17f83 +index 0000000000000000000000000000000000000000..fd6a5a3589d436c2aaf988fd305899695799d3bb --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/event/inventory/AnvilUpdateResultEvent.java @@ -0,0 +1,35 @@ -+package net.pl3x.purpur.event.inventory; ++package org.purpurmc.purpur.event.inventory; + +import org.bukkit.event.HandlerList; +import org.bukkit.event.inventory.InventoryEvent; @@ -103,22 +122,3 @@ index 0000000000000000000000000000000000000000..2717ad82ccc0d39c5a69b8890303c245 + return handlers; + } +} -diff --git a/src/main/java/org/bukkit/inventory/AnvilInventory.java b/src/main/java/org/bukkit/inventory/AnvilInventory.java -index b95e563b5454306a9188ae3295309ee86a756477..435026e533ea9edb8c1800d35c63543ca023a904 100644 ---- a/src/main/java/org/bukkit/inventory/AnvilInventory.java -+++ b/src/main/java/org/bukkit/inventory/AnvilInventory.java -@@ -109,4 +109,14 @@ public interface AnvilInventory extends Inventory { - setItem(2, result); - } - // Paper end -+ -+ // Purpur start -+ boolean canBypassCost(); -+ -+ void setBypassCost(boolean bypassCost); -+ -+ boolean canDoUnsafeEnchants(); -+ -+ void setDoUnsafeEnchants(boolean canDoUnsafeEnchants); -+ // Purpur end - } diff --git a/patches/api/0028-PlayerBookTooLargeEvent.patch b/patches/api/0028-PlayerBookTooLargeEvent.patch index 9c9cc787e..937bb73c4 100644 --- a/patches/api/0028-PlayerBookTooLargeEvent.patch +++ b/patches/api/0028-PlayerBookTooLargeEvent.patch @@ -6,11 +6,11 @@ Subject: [PATCH] PlayerBookTooLargeEvent diff --git a/src/main/java/org/purpurmc/purpur/event/player/PlayerBookTooLargeEvent.java b/src/main/java/org/purpurmc/purpur/event/player/PlayerBookTooLargeEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..39378ee2bfadf42ff358cc7b42dd75ac61615e15 +index 0000000000000000000000000000000000000000..c88394336bc9ab0f66a2af24d393f4a176a234d5 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/event/player/PlayerBookTooLargeEvent.java @@ -0,0 +1,65 @@ -+package net.pl3x.purpur.event.player; ++package org.purpurmc.purpur.event.player; + +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; diff --git a/patches/api/0030-Add-EntityTeleportHinderedEvent.patch b/patches/api/0030-Add-EntityTeleportHinderedEvent.patch index 428b3b762..a172c1de1 100644 --- a/patches/api/0030-Add-EntityTeleportHinderedEvent.patch +++ b/patches/api/0030-Add-EntityTeleportHinderedEvent.patch @@ -18,11 +18,11 @@ along with this program. If not, see . diff --git a/src/main/java/org/purpurmc/purpur/event/entity/EntityTeleportHinderedEvent.java b/src/main/java/org/purpurmc/purpur/event/entity/EntityTeleportHinderedEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..e6fcc4027cb70061b804460b39e00cca273d35ad +index 0000000000000000000000000000000000000000..c66eb163877e872f234d86dc244cab7efeb818cd --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/event/entity/EntityTeleportHinderedEvent.java @@ -0,0 +1,117 @@ -+package net.pl3x.purpur.event.entity; ++package org.purpurmc.purpur.event.entity; + +import org.bukkit.entity.Entity; +import org.bukkit.event.HandlerList; diff --git a/patches/server/0002-Rebrand.patch b/patches/server/0002-Rebrand.patch index f6376dbd0..bac1852f2 100644 --- a/patches/server/0002-Rebrand.patch +++ b/patches/server/0002-Rebrand.patch @@ -158,7 +158,7 @@ index 1d7d3dbf7f6857d9853112844b70692e92e9c89d..77984134e53755caf45b8217a912ef0d private final String bukkitVersion = Versioning.getBukkitVersion(); private final Logger logger = Logger.getLogger("Minecraft"); diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java -index 774556a62eb240da42e84db4502e2ed43495be17..e9aee2d8a929bded46c79c3ea0f1fcfd172af438 100644 +index 774556a62eb240da42e84db4502e2ed43495be17..fb87620c742ff7912f5e8ccd2a7930dd605576d9 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java +++ b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java @@ -11,7 +11,7 @@ public final class Versioning { @@ -166,7 +166,7 @@ index 774556a62eb240da42e84db4502e2ed43495be17..e9aee2d8a929bded46c79c3ea0f1fcfd String result = "Unknown-Version"; - InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/io.papermc.paper/paper-api/pom.properties"); -+ InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/net.pl3x.purpur/purpur-api/pom.properties"); // Purpur ++ InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/org.purpurmc.purpur/purpur-api/pom.properties"); // Purpur Properties properties = new Properties(); if (stream != null) { diff --git a/patches/server/0003-Purpur-config-files.patch b/patches/server/0003-Purpur-config-files.patch index 4c0d78bc7..a7161db36 100644 --- a/patches/server/0003-Purpur-config-files.patch +++ b/patches/server/0003-Purpur-config-files.patch @@ -65,7 +65,7 @@ index cb0045fc4ddd738c45dee89d57b213a633b9a136..6e8111ef16439d2b3025ebe2a0418b24 if (this.source.acceptsSuccess() && !this.silent) { this.source.sendMessage(message, Util.NIL_UUID); diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index fd3d3e22613511a42f7fc343079b081c72ff3f61..fe029ec70afad56bb7a7361f347e9b9aef5e00ba 100644 +index fd3d3e22613511a42f7fc343079b081c72ff3f61..8bf98d8f8e9f0baaf203a9e8d18683236856eab7 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -228,6 +228,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -74,25 +74,25 @@ index fd3d3e22613511a42f7fc343079b081c72ff3f61..fe029ec70afad56bb7a7361f347e9b9a com.destroystokyo.paper.PaperConfig.registerCommands(); + // Purpur start + try { -+ net.pl3x.purpur.PurpurConfig.init((java.io.File) options.valueOf("purpur-settings")); ++ org.purpurmc.purpur.PurpurConfig.init((java.io.File) options.valueOf("purpur-settings")); + } catch (Exception e) { + DedicatedServer.LOGGER.error("Unable to load server configuration", e); + return false; + } -+ net.pl3x.purpur.PurpurConfig.registerCommands(); ++ org.purpurmc.purpur.PurpurConfig.registerCommands(); + // Purpur end com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // load version history now io.papermc.paper.util.ObfHelper.INSTANCE.getClass(); // load mappings for stacktrace deobf and etc. io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // init PaperBrigadierProvider diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index c2220d5157d3065a256cd17410760c6aedf24987..476c60176f10ad656c6c0676f8d43f7ae8104430 100644 +index c2220d5157d3065a256cd17410760c6aedf24987..729d11569e59e78a0fda67697fe9e27adefff730 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -169,6 +169,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { public final com.destroystokyo.paper.PaperWorldConfig paperConfig; // Paper public final com.destroystokyo.paper.antixray.ChunkPacketBlockController chunkPacketBlockController; // Paper - Anti-Xray -+ public final net.pl3x.purpur.PurpurWorldConfig purpurConfig; // Purpur ++ public final org.purpurmc.purpur.PurpurWorldConfig purpurConfig; // Purpur + public final co.aikar.timings.WorldTimingsHandler timings; // Paper public static BlockPos lastPhysicsProblem; // Spigot @@ -101,17 +101,83 @@ index c2220d5157d3065a256cd17410760c6aedf24987..476c60176f10ad656c6c0676f8d43f7a protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, final DimensionType dimensionmanager, Supplier supplier, boolean flag, boolean flag1, long i, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), this.spigotConfig); // Paper -+ this.purpurConfig = new net.pl3x.purpur.PurpurWorldConfig((ServerLevel) this, ((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur ++ this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig((ServerLevel) this, ((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur this.generator = gen; this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); this.ticksPerAnimalSpawns = this.getCraftServer().getTicksPerAnimalSpawns(); // CraftBukkit +diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +index 77984134e53755caf45b8217a912ef0df645de59..272606ec908ef41e24cf8f43e4df05976597930d 100644 +--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java ++++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +@@ -933,6 +933,7 @@ public final class CraftServer implements Server { + + org.spigotmc.SpigotConfig.init((File) console.options.valueOf("spigot-settings")); // Spigot + com.destroystokyo.paper.PaperConfig.init((File) console.options.valueOf("paper-settings")); // Paper ++ org.purpurmc.purpur.PurpurConfig.init((File) console.options.valueOf("purpur-settings")); // Purpur + for (ServerLevel world : this.console.getAllLevels()) { + // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty + world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) +@@ -973,6 +974,7 @@ public final class CraftServer implements Server { + } + world.spigotConfig.init(); // Spigot + world.paperConfig.init(); // Paper ++ world.purpurConfig.init(); // Purpur + } + + Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper +@@ -988,6 +990,7 @@ public final class CraftServer implements Server { + this.reloadData(); + org.spigotmc.SpigotConfig.registerCommands(); // Spigot + com.destroystokyo.paper.PaperConfig.registerCommands(); // Paper ++ org.purpurmc.purpur.PurpurConfig.registerCommands(); // Purpur + this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); + this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); + +@@ -2549,6 +2552,18 @@ public final class CraftServer implements Server { + return com.destroystokyo.paper.PaperConfig.config; + } + ++ // Purpur start ++ @Override ++ public YamlConfiguration getPurpurConfig() { ++ return org.purpurmc.purpur.PurpurConfig.config; ++ } ++ ++ @Override ++ public java.util.Properties getServerProperties() { ++ return getProperties().properties; ++ } ++ // Purpur end ++ + @Override + public void restart() { + org.spigotmc.RestartCommand.restart(); +diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java +index 450518903c0a10301b177d8dd7fe05aca3b8b37e..a10cebac752fdf5186eb86bd314f19313864fee0 100644 +--- a/src/main/java/org/bukkit/craftbukkit/Main.java ++++ b/src/main/java/org/bukkit/craftbukkit/Main.java +@@ -153,6 +153,14 @@ public class Main { + .describedAs("Jar file"); + // Paper end + ++ // Purpur Start ++ acceptsAll(asList("purpur", "purpur-settings"), "File for purpur settings") ++ .withRequiredArg() ++ .ofType(File.class) ++ .defaultsTo(new File("purpur.yml")) ++ .describedAs("Yml file"); ++ // Purpur end ++ + // Paper start + acceptsAll(asList("server-name"), "Name of the server") + .withRequiredArg() diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..f589e4376f88c7774a7fe999cad4d11a59379cd9 +index 0000000000000000000000000000000000000000..45a99a5fc63ee4d4f166cd47b1db4d412170dbe2 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -0,0 +1,159 @@ -+package net.pl3x.purpur; ++package org.purpurmc.purpur; + +import co.aikar.timings.TimingsManager; +import com.google.common.base.Throwables; @@ -120,8 +186,8 @@ index 0000000000000000000000000000000000000000..f589e4376f88c7774a7fe999cad4d11a +import net.minecraft.server.MinecraftServer; +import net.minecraft.world.entity.EntityDimensions; +import net.minecraft.world.entity.EntityType; -+import net.pl3x.purpur.command.PurpurCommand; -+import net.pl3x.purpur.task.TPSBarTask; ++import org.purpurmc.purpur.command.PurpurCommand; ++import org.purpurmc.purpur.task.TPSBarTask; +import org.bukkit.Bukkit; +import org.bukkit.command.Command; +import org.bukkit.configuration.ConfigurationSection; @@ -272,11 +338,11 @@ index 0000000000000000000000000000000000000000..f589e4376f88c7774a7fe999cad4d11a +} diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..8bc89d48695c816a1db77f9cdffd05f35afea92a +index 0000000000000000000000000000000000000000..41e1c1c801f7734d123e7e8fb68b84167d49ff6c --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -0,0 +1,96 @@ -+package net.pl3x.purpur; ++package org.purpurmc.purpur; + +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceLocation; @@ -289,10 +355,10 @@ index 0000000000000000000000000000000000000000..8bc89d48695c816a1db77f9cdffd05f3 +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.properties.Tilt; -+import net.pl3x.purpur.tool.Strippable; -+import net.pl3x.purpur.tool.Tillable; -+import net.pl3x.purpur.tool.Waxable; -+import net.pl3x.purpur.tool.Weatherable; ++import org.purpurmc.purpur.tool.Strippable; ++import org.purpurmc.purpur.tool.Tillable; ++import org.purpurmc.purpur.tool.Waxable; ++import org.purpurmc.purpur.tool.Weatherable; +import org.apache.commons.lang.BooleanUtils; +import org.bukkit.ChatColor; +import org.bukkit.World; @@ -306,7 +372,7 @@ index 0000000000000000000000000000000000000000..8bc89d48695c816a1db77f9cdffd05f3 +import java.util.Set; +import java.util.function.Predicate; +import java.util.logging.Level; -+import static net.pl3x.purpur.PurpurConfig.log; ++import static org.purpurmc.purpur.PurpurConfig.log; + +@SuppressWarnings("unused") +public class PurpurWorldConfig { @@ -374,15 +440,15 @@ index 0000000000000000000000000000000000000000..8bc89d48695c816a1db77f9cdffd05f3 +} diff --git a/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java b/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java new file mode 100644 -index 0000000000000000000000000000000000000000..6e7f56fe2b78d7a09d5d130f2c88338fb8ae628e +index 0000000000000000000000000000000000000000..afdf04f8b22ad0b7c0b41675e44687b49c2f86d6 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java @@ -0,0 +1,65 @@ -+package net.pl3x.purpur.command; ++package org.purpurmc.purpur.command; + +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.level.ServerLevel; -+import net.pl3x.purpur.PurpurConfig; ++import org.purpurmc.purpur.PurpurConfig; +import org.bukkit.ChatColor; +import org.bukkit.Location; +import org.bukkit.command.Command; @@ -443,69 +509,3 @@ index 0000000000000000000000000000000000000000..6e7f56fe2b78d7a09d5d130f2c88338f + return true; + } +} -diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 77984134e53755caf45b8217a912ef0df645de59..e08b48b13ee40c701094c897b50c08dd64b6d31a 100644 ---- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java -+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -933,6 +933,7 @@ public final class CraftServer implements Server { - - org.spigotmc.SpigotConfig.init((File) console.options.valueOf("spigot-settings")); // Spigot - com.destroystokyo.paper.PaperConfig.init((File) console.options.valueOf("paper-settings")); // Paper -+ net.pl3x.purpur.PurpurConfig.init((File) console.options.valueOf("purpur-settings")); // Purpur - for (ServerLevel world : this.console.getAllLevels()) { - // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty - world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -973,6 +974,7 @@ public final class CraftServer implements Server { - } - world.spigotConfig.init(); // Spigot - world.paperConfig.init(); // Paper -+ world.purpurConfig.init(); // Purpur - } - - Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -988,6 +990,7 @@ public final class CraftServer implements Server { - this.reloadData(); - org.spigotmc.SpigotConfig.registerCommands(); // Spigot - com.destroystokyo.paper.PaperConfig.registerCommands(); // Paper -+ net.pl3x.purpur.PurpurConfig.registerCommands(); // Purpur - this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); - this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); - -@@ -2549,6 +2552,18 @@ public final class CraftServer implements Server { - return com.destroystokyo.paper.PaperConfig.config; - } - -+ // Purpur start -+ @Override -+ public YamlConfiguration getPurpurConfig() { -+ return net.pl3x.purpur.PurpurConfig.config; -+ } -+ -+ @Override -+ public java.util.Properties getServerProperties() { -+ return getProperties().properties; -+ } -+ // Purpur end -+ - @Override - public void restart() { - org.spigotmc.RestartCommand.restart(); -diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 450518903c0a10301b177d8dd7fe05aca3b8b37e..a10cebac752fdf5186eb86bd314f19313864fee0 100644 ---- a/src/main/java/org/bukkit/craftbukkit/Main.java -+++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -153,6 +153,14 @@ public class Main { - .describedAs("Jar file"); - // Paper end - -+ // Purpur Start -+ acceptsAll(asList("purpur", "purpur-settings"), "File for purpur settings") -+ .withRequiredArg() -+ .ofType(File.class) -+ .defaultsTo(new File("purpur.yml")) -+ .describedAs("Yml file"); -+ // Purpur end -+ - // Paper start - acceptsAll(asList("server-name"), "Name of the server") - .withRequiredArg() diff --git a/patches/server/0006-Ridables.patch b/patches/server/0006-Ridables.patch index 99de3ab90..a37993d83 100644 --- a/patches/server/0006-Ridables.patch +++ b/patches/server/0006-Ridables.patch @@ -22,14 +22,14 @@ index 14610e6144ec144ebbec6fb0945c67bb0ea86795..6833eb5dc7aa64bef1b3b38de5e282bd super(x, y, z); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index f1fbd740706fd0679643be466bf5fa4905dbe453..5072cb76e0793ee6c47800628daa65906bde8577 100644 +index f1fbd740706fd0679643be466bf5fa4905dbe453..433953fb505b1bfaf18e9afdcfa9577a6f18655c 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1586,6 +1586,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper worldserver.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper -+ worldserver.hasRidableMoveEvent = net.pl3x.purpur.event.entity.RidableMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur ++ worldserver.hasRidableMoveEvent = org.purpurmc.purpur.event.entity.RidableMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig.disableHopperMoveEvents || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper this.profiler.push(() -> { @@ -201,7 +201,7 @@ index 645c1dc9bd09b135a641759c76ce8d957b9bd488..03adc3b746e05bb4b0514ba4a66c101b protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 62daf918d4ab00963041ca869ae718f14f2e3337..0dfd5a179fe3e409c159e2a79be58ad942be06a8 100644 +index 62daf918d4ab00963041ca869ae718f14f2e3337..c455a43a87b07ba5f7787bb9f3bbd0caf8095151 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -217,9 +217,9 @@ public abstract class LivingEntity extends Entity { @@ -249,7 +249,7 @@ index 62daf918d4ab00963041ca869ae718f14f2e3337..0dfd5a179fe3e409c159e2a79be58ad9 + if (((ServerLevel) level).hasRidableMoveEvent && this instanceof Mob) { + Location from = new Location(level.getWorld(), xo, yo, zo, this.yRotO, this.xRotO); + Location to = new Location(level.getWorld(), getX(), getY(), getZ(), this.getYRot(), this.getXRot()); -+ net.pl3x.purpur.event.entity.RidableMoveEvent event = new net.pl3x.purpur.event.entity.RidableMoveEvent((org.bukkit.entity.Mob) getBukkitLivingEntity(), (Player) getRider().getBukkitEntity(), from, to.clone()); ++ org.purpurmc.purpur.event.entity.RidableMoveEvent event = new org.purpurmc.purpur.event.entity.RidableMoveEvent((org.bukkit.entity.Mob) getBukkitLivingEntity(), (Player) getRider().getBukkitEntity(), from, to.clone()); + if (!event.callEvent()) { + absMoveTo(from.getX(), from.getY(), from.getZ(), from.getYaw(), from.getPitch()); + } else if (!to.equals(event.getTo())) { @@ -262,15 +262,15 @@ index 62daf918d4ab00963041ca869ae718f14f2e3337..0dfd5a179fe3e409c159e2a79be58ad9 // Paper end if (!this.level.isClientSide && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 0b46066d35d9bb38d98a9d6e5ca8dbdc0ba1dc5a..79719f259090da6f41a75ac4910e925ce66d067b 100644 +index 0b46066d35d9bb38d98a9d6e5ca8dbdc0ba1dc5a..2b8c33fe5a34f2ed66630e2d6fc06caf2cd769a1 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -143,6 +143,8 @@ public abstract class Mob extends LivingEntity { this.targetSelector = new GoalSelector(world.getProfilerSupplier()); this.lookControl = new LookControl(this); this.moveControl = new MoveControl(this); -+ this.lookControl = new net.pl3x.purpur.controller.LookControllerWASD(this); // Purpur -+ this.moveControl = new net.pl3x.purpur.controller.MoveControllerWASD(this); // Purpur ++ this.lookControl = new org.purpurmc.purpur.controller.LookControllerWASD(this); // Purpur ++ this.moveControl = new org.purpurmc.purpur.controller.MoveControllerWASD(this); // Purpur this.jumpControl = new JumpControl(this); this.bodyRotationControl = this.createBodyControl(); this.navigation = this.createNavigation(world); @@ -323,7 +323,7 @@ index 0b46066d35d9bb38d98a9d6e5ca8dbdc0ba1dc5a..79719f259090da6f41a75ac4910e925c + } + } + if (!player.getBukkitEntity().hasPermission("allow.ride." + getType().id)) { -+ player.sendMessage(net.pl3x.purpur.PurpurConfig.cannotRideMob); ++ player.sendMessage(org.purpurmc.purpur.PurpurConfig.cannotRideMob); + return InteractionResult.PASS; + } + player.setYRot(this.getYRot()); @@ -454,7 +454,7 @@ index e3028cf5f88da6ab6d6d762e8011d45fd1d8eff8..5af8786692d3e978b3cb939d0a24bf7e return this.operation == MoveControl.Operation.MOVE_TO; } diff --git a/src/main/java/net/minecraft/world/entity/ai/control/SmoothSwimmingLookControl.java b/src/main/java/net/minecraft/world/entity/ai/control/SmoothSwimmingLookControl.java -index 7df56705a4a0de2dc4ff7ab133fc26612c219162..ed113e646108e591652d2f5fd88a08bf842bd0a0 100644 +index 7df56705a4a0de2dc4ff7ab133fc26612c219162..60d21d6171b9af20a4c6fcc0d564a31aaa4ecdba 100644 --- a/src/main/java/net/minecraft/world/entity/ai/control/SmoothSwimmingLookControl.java +++ b/src/main/java/net/minecraft/world/entity/ai/control/SmoothSwimmingLookControl.java @@ -3,7 +3,7 @@ package net.minecraft.world.entity.ai.control; @@ -462,7 +462,7 @@ index 7df56705a4a0de2dc4ff7ab133fc26612c219162..ed113e646108e591652d2f5fd88a08bf import net.minecraft.world.entity.Mob; -public class SmoothSwimmingLookControl extends LookControl { -+public class SmoothSwimmingLookControl extends net.pl3x.purpur.controller.LookControllerWASD { // Purpur ++public class SmoothSwimmingLookControl extends org.purpurmc.purpur.controller.LookControllerWASD { // Purpur private final int maxYRotFromCenter; private static final int HEAD_TILT_X = 10; private static final int HEAD_TILT_Y = 20; @@ -488,7 +488,7 @@ index 7df56705a4a0de2dc4ff7ab133fc26612c219162..ed113e646108e591652d2f5fd88a08bf } 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 29dfbcecfbb2560e6ecde997abd5224a16c08c94..4a534357889892b57cff818f4dbd000795e74e34 100644 +index 29dfbcecfbb2560e6ecde997abd5224a16c08c94..45dd82005ff4d03041a9c42e6eacaa2b8a7dc9f8 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java @@ -19,6 +19,7 @@ import net.minecraft.world.entity.EntityDimensions; @@ -503,7 +503,7 @@ index 29dfbcecfbb2560e6ecde997abd5224a16c08c94..4a534357889892b57cff818f4dbd0007 public Bat(EntityType type, Level world) { super(type, world); -+ this.moveControl = new net.pl3x.purpur.controller.FlyingWithSpacebarMoveControllerWASD(this, 0.075F); // Purpur ++ this.moveControl = new org.purpurmc.purpur.controller.FlyingWithSpacebarMoveControllerWASD(this, 0.075F); // Purpur this.setResting(true); } @@ -573,14 +573,14 @@ index 29dfbcecfbb2560e6ecde997abd5224a16c08c94..4a534357889892b57cff818f4dbd0007 BlockPos blockposition = this.blockPosition(); BlockPos blockposition1 = blockposition.above(); diff --git a/src/main/java/net/minecraft/world/entity/animal/AbstractFish.java b/src/main/java/net/minecraft/world/entity/animal/AbstractFish.java -index 3484defdfd5a487b11917310d7b1d1543291eee1..ffdb9d3bf5bb3f88b0d8c89be5d19cc0225b5544 100644 +index 3484defdfd5a487b11917310d7b1d1543291eee1..2ae0296b0a2e9585caf81b819742a0a8c1312545 100644 --- a/src/main/java/net/minecraft/world/entity/animal/AbstractFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/AbstractFish.java @@ -99,12 +99,9 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { @Override protected void registerGoals() { super.registerGoals(); -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(0, new PanicGoal(this, 1.25D)); - GoalSelector pathfindergoalselector = this.goalSelector; - Predicate predicate = EntitySelector.NO_SPECTATORS; @@ -605,7 +605,7 @@ index 3484defdfd5a487b11917310d7b1d1543291eee1..ffdb9d3bf5bb3f88b0d8c89be5d19cc0 protected void playStepSound(BlockPos pos, BlockState state) {} - private static class FishMoveControl extends MoveControl { -+ private static class FishMoveControl extends net.pl3x.purpur.controller.WaterMoveControllerWASD { // Purpur ++ private static class FishMoveControl extends org.purpurmc.purpur.controller.WaterMoveControllerWASD { // Purpur private final AbstractFish fish; @@ -635,7 +635,7 @@ index 3484defdfd5a487b11917310d7b1d1543291eee1..ffdb9d3bf5bb3f88b0d8c89be5d19cc0 this.fish.setSpeed(Mth.lerp(0.125F, this.fish.getSpeed(), f)); double d0 = this.wantedX - this.fish.getX(); diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index 5a9d9926fb6fc356ee250d4e38f3bc303e280d45..1163bb36350097557851eaa95b0cf53da79b6a6d 100644 +index 5a9d9926fb6fc356ee250d4e38f3bc303e280d45..0d47db2163ef01365513af2ccec8ea74bfc838c9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java @@ -44,6 +44,7 @@ import net.minecraft.world.entity.EntityType; @@ -650,7 +650,7 @@ index 5a9d9926fb6fc356ee250d4e38f3bc303e280d45..1163bb36350097557851eaa95b0cf53d public Bee(EntityType type, Level world) { super(type, world); this.remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(this.random, 20, 60); -+ final net.pl3x.purpur.controller.FlyingMoveControllerWASD flyingController = new net.pl3x.purpur.controller.FlyingMoveControllerWASD(this, 0.25F, false); // Purpur ++ final org.purpurmc.purpur.controller.FlyingMoveControllerWASD flyingController = new org.purpurmc.purpur.controller.FlyingMoveControllerWASD(this, 0.25F, false); // Purpur // Paper start - apply gravity to bees when they get stuck in the void, fixes MC-167279 class BeeFlyingMoveControl extends FlyingMoveControl { public BeeFlyingMoveControl(final Mob entity, final int maxPitchChange, final boolean noGravity) { @@ -719,7 +719,7 @@ index 5a9d9926fb6fc356ee250d4e38f3bc303e280d45..1163bb36350097557851eaa95b0cf53d @Override protected void registerGoals() { -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(0, new Bee.BeeAttackGoal(this, 1.399999976158142D, true)); this.goalSelector.addGoal(1, new Bee.BeeEnterHiveGoal()); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); @@ -727,7 +727,7 @@ index 5a9d9926fb6fc356ee250d4e38f3bc303e280d45..1163bb36350097557851eaa95b0cf53d this.goalSelector.addGoal(7, new Bee.BeeGrowCropGoal()); this.goalSelector.addGoal(8, new Bee.BeeWanderGoal()); this.goalSelector.addGoal(9, new FloatGoal(this)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, (new Bee.BeeHurtByOtherGoal(this)).setAlertOthers(new Class[0])); this.targetSelector.addGoal(2, new Bee.BeeBecomeAngryTargetGoal(this)); this.targetSelector.addGoal(3, new ResetUniversalAngerTargetGoal<>(this, true)); @@ -736,7 +736,7 @@ index 5a9d9926fb6fc356ee250d4e38f3bc303e280d45..1163bb36350097557851eaa95b0cf53d } - private class BeeLookControl extends LookControl { -+ private class BeeLookControl extends net.pl3x.purpur.controller.LookControllerWASD { // Purpur ++ private class BeeLookControl extends org.purpurmc.purpur.controller.LookControllerWASD { // Purpur BeeLookControl(Mob entity) { super(entity); @@ -752,7 +752,7 @@ index 5a9d9926fb6fc356ee250d4e38f3bc303e280d45..1163bb36350097557851eaa95b0cf53d } diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java -index b0d3444c721765e10217474ca57f703531e69260..88362a02776f481fc8c17cf8a20805e5c28fca5e 100644 +index b0d3444c721765e10217474ca57f703531e69260..a63a18eb2c87d01b2fca460f40bc2848f9a4b9cb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java @@ -122,6 +122,26 @@ public class Cat extends TamableAnimal { @@ -786,7 +786,7 @@ index b0d3444c721765e10217474ca57f703531e69260..88362a02776f481fc8c17cf8a20805e5 protected void registerGoals() { this.temptGoal = new Cat.CatTemptGoal(this, 0.6D, Cat.TEMPT_INGREDIENT, true); this.goalSelector.addGoal(1, new FloatGoal(this)); -+ this.goalSelector.addGoal(1, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(1, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(2, new Cat.CatRelaxOnOwnerGoal(this)); this.goalSelector.addGoal(3, this.temptGoal); @@ -794,7 +794,7 @@ index b0d3444c721765e10217474ca57f703531e69260..88362a02776f481fc8c17cf8a20805e5 this.goalSelector.addGoal(10, new BreedGoal(this, 0.8D)); this.goalSelector.addGoal(11, new WaterAvoidingRandomStrollGoal(this, 0.8D, 1.0000001E-5F)); this.goalSelector.addGoal(12, new LookAtPlayerGoal(this, Player.class, 10.0F)); -+ this.targetSelector.addGoal(1, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(1, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new NonTameRandomTargetGoal<>(this, Rabbit.class, false, (Predicate) null)); this.targetSelector.addGoal(1, new NonTameRandomTargetGoal<>(this, Turtle.class, false, Turtle.BABY_ON_LAND_SELECTOR)); } @@ -807,7 +807,7 @@ index b0d3444c721765e10217474ca57f703531e69260..88362a02776f481fc8c17cf8a20805e5 Item item = itemstack.getItem(); diff --git a/src/main/java/net/minecraft/world/entity/animal/Chicken.java b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -index aa373560120684a037ac02d8df196b97b791bd85..cdb6e71f62294e48aa20a1ac0a38e208ce8e7e4c 100644 +index aa373560120684a037ac02d8df196b97b791bd85..a64b7bd9b8a3cf0d79689b71b84ca1cad7bde2f1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java @@ -52,9 +52,22 @@ public class Chicken extends Animal { @@ -829,7 +829,7 @@ index aa373560120684a037ac02d8df196b97b791bd85..cdb6e71f62294e48aa20a1ac0a38e208 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new PanicGoal(this, 1.4D)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); this.goalSelector.addGoal(3, new TemptGoal(this, 1.0D, Chicken.FOOD_ITEMS, false)); @@ -857,7 +857,7 @@ index 824e5e4fe7619ae46061c3c978c9a044db8c84ab..ea7227ade90a713242290cadb13692f3 public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 425c6da0de40983b0870c9fd1b53f16b6a11c34c..ec20c082f545f350927d980c7e0b0d0b742ed791 100644 +index 425c6da0de40983b0870c9fd1b53f16b6a11c34c..f1f333892fa539ad96b7ecb5b7c4be03c8720f47 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -40,9 +40,22 @@ public class Cow extends Animal { @@ -879,7 +879,7 @@ index 425c6da0de40983b0870c9fd1b53f16b6a11c34c..ec20c082f545f350927d980c7e0b0d0b @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new PanicGoal(this, 2.0D)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT), false)); @@ -901,7 +901,7 @@ index 425c6da0de40983b0870c9fd1b53f16b6a11c34c..ec20c082f545f350927d980c7e0b0d0b // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -index 7283a4f216d5d915f21c481bbe43f2598915ca6d..827872f57914b3d8d8b8ba388a05f4c5ea49aa0e 100644 +index 7283a4f216d5d915f21c481bbe43f2598915ca6d..9e12331583db172cf54798656bd6a4c0d38fa66c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java @@ -74,14 +74,82 @@ public class Dolphin extends WaterAnimal { @@ -915,13 +915,13 @@ index 7283a4f216d5d915f21c481bbe43f2598915ca6d..827872f57914b3d8d8b8ba388a05f4c5 - this.moveControl = new SmoothSwimmingMoveControl(this, 85, 10, 0.02F, 0.1F, true); + // Purpur start + class DolphinMoveControl extends SmoothSwimmingMoveControl { -+ private final net.pl3x.purpur.controller.WaterMoveControllerWASD waterMoveControllerWASD; ++ private final org.purpurmc.purpur.controller.WaterMoveControllerWASD waterMoveControllerWASD; + private final Dolphin dolphin; + + public DolphinMoveControl(Dolphin dolphin, int pitchChange, int yawChange, float speedInWater, float speedInAir, boolean buoyant) { + super(dolphin, pitchChange, yawChange, speedInWater, speedInAir, buoyant); + this.dolphin = dolphin; -+ this.waterMoveControllerWASD = new net.pl3x.purpur.controller.WaterMoveControllerWASD(dolphin); ++ this.waterMoveControllerWASD = new org.purpurmc.purpur.controller.WaterMoveControllerWASD(dolphin); + } + + @Override @@ -974,7 +974,7 @@ index 7283a4f216d5d915f21c481bbe43f2598915ca6d..827872f57914b3d8d8b8ba388a05f4c5 + loc.setPitch(loc.getPitch() - 10); + org.bukkit.util.Vector target = loc.getDirection().normalize().multiply(10).add(loc.toVector()); + -+ net.pl3x.purpur.entity.DolphinSpit spit = new net.pl3x.purpur.entity.DolphinSpit(level, this); ++ org.purpurmc.purpur.entity.DolphinSpit spit = new org.purpurmc.purpur.entity.DolphinSpit(level, this); + spit.shoot(target.getX() - getX(), target.getY() - getY(), target.getZ() - getZ(), level.purpurConfig.dolphinSpitSpeed, 5.0F); + + level.addFreshEntity(spit); @@ -992,7 +992,7 @@ index 7283a4f216d5d915f21c481bbe43f2598915ca6d..827872f57914b3d8d8b8ba388a05f4c5 protected void registerGoals() { this.goalSelector.addGoal(0, new BreathAirGoal(this)); this.goalSelector.addGoal(0, new TryFindWaterGoal(this)); -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new Dolphin.DolphinSwimToTreasureGoal(this)); this.goalSelector.addGoal(2, new Dolphin.DolphinSwimWithPlayerGoal(this, 4.0D)); this.goalSelector.addGoal(4, new RandomSwimmingGoal(this, 1.0D, 10)); @@ -1000,7 +1000,7 @@ index 7283a4f216d5d915f21c481bbe43f2598915ca6d..827872f57914b3d8d8b8ba388a05f4c5 this.goalSelector.addGoal(8, new Dolphin.PlayWithItemsGoal()); this.goalSelector.addGoal(8, new FollowBoatGoal(this)); this.goalSelector.addGoal(9, new AvoidEntityGoal<>(this, Guardian.class, 8.0F, 1.0D, 1.0D)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{Guardian.class})).setAlertOthers()); } @@ -1026,7 +1026,7 @@ index 7283a4f216d5d915f21c481bbe43f2598915ca6d..827872f57914b3d8d8b8ba388a05f4c5 this.setAirSupply(this.getMaxAirSupply()); } else { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 63f0ed4c80b7afa091c4a835eefd6d709428f984..61fd332a91625cc1101fde5b66c759f5e44522fc 100644 +index 63f0ed4c80b7afa091c4a835eefd6d709428f984..49ffee9ce88d2f871b7f179835c7520d1c188070 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -139,6 +139,39 @@ public class Fox extends Animal { @@ -1073,7 +1073,7 @@ index 63f0ed4c80b7afa091c4a835eefd6d709428f984..61fd332a91625cc1101fde5b66c759f5 return entityliving instanceof AbstractSchoolingFish; }); this.goalSelector.addGoal(0, new Fox.FoxFloatGoal()); -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new Fox.FaceplantGoal()); this.goalSelector.addGoal(2, new Fox.FoxPanicGoal(2.2D)); this.goalSelector.addGoal(3, new Fox.FoxBreedGoal(1.0D)); @@ -1081,7 +1081,7 @@ index 63f0ed4c80b7afa091c4a835eefd6d709428f984..61fd332a91625cc1101fde5b66c759f5 this.goalSelector.addGoal(11, new Fox.FoxSearchForItemsGoal()); this.goalSelector.addGoal(12, new Fox.FoxLookAtPlayerGoal(this, Player.class, 24.0F)); this.goalSelector.addGoal(13, new Fox.PerchAndSearchGoal()); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(3, new Fox.DefendTrustedTargetGoal(LivingEntity.class, false, false, (entityliving) -> { return Fox.TRUSTED_TARGET_SELECTOR.test(entityliving) && !this.trusts(entityliving.getUUID()); })); @@ -1090,7 +1090,7 @@ index 63f0ed4c80b7afa091c4a835eefd6d709428f984..61fd332a91625cc1101fde5b66c759f5 } - public class FoxLookControl extends LookControl { -+ public class FoxLookControl extends net.pl3x.purpur.controller.LookControllerWASD { // Purpur ++ public class FoxLookControl extends org.purpurmc.purpur.controller.LookControllerWASD { // Purpur public FoxLookControl() { super(Fox.this); @@ -1110,7 +1110,7 @@ index 63f0ed4c80b7afa091c4a835eefd6d709428f984..61fd332a91625cc1101fde5b66c759f5 } - private class FoxMoveControl extends MoveControl { -+ private class FoxMoveControl extends net.pl3x.purpur.controller.MoveControllerWASD { // Purpur ++ private class FoxMoveControl extends org.purpurmc.purpur.controller.MoveControllerWASD { // Purpur public FoxMoveControl() { super(Fox.this); @@ -1126,7 +1126,7 @@ index 63f0ed4c80b7afa091c4a835eefd6d709428f984..61fd332a91625cc1101fde5b66c759f5 } diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -index d6bff18a60e1b0b507a3797742bfafff2fad10d2..1e8d4985998cfbe862028228bc1f5c411899ff3f 100644 +index d6bff18a60e1b0b507a3797742bfafff2fad10d2..78387bc4020ce06dfbdb0cc4af978b5a4f2645b3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java @@ -70,8 +70,22 @@ public class IronGolem extends AbstractGolem implements NeutralMob { @@ -1148,7 +1148,7 @@ index d6bff18a60e1b0b507a3797742bfafff2fad10d2..1e8d4985998cfbe862028228bc1f5c41 @Override protected void registerGoals() { + if (level.purpurConfig.ironGolemCanSwim) this.goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.0D, true)); this.goalSelector.addGoal(2, new MoveTowardsTargetGoal(this, 0.9D, 32.0F)); this.goalSelector.addGoal(2, new MoveBackToVillageGoal(this, 0.6D, false)); @@ -1156,7 +1156,7 @@ index d6bff18a60e1b0b507a3797742bfafff2fad10d2..1e8d4985998cfbe862028228bc1f5c41 this.goalSelector.addGoal(5, new OfferFlowerGoal(this)); this.goalSelector.addGoal(7, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new DefendVillageTargetGoal(this)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0])); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::isAngryAt)); @@ -1218,7 +1218,7 @@ index a91c8d37b818161fb7e2dc0def82a56d7db04fc1..66e146b92348b48fd53cc2aabd5335da Pair pair = (Pair) optional.get(); diff --git a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -index a781048b0c43e63e441e6afecec125d7f838c342..152cd9e2169d25e475f36a618c63aad10e878ee9 100644 +index a781048b0c43e63e441e6afecec125d7f838c342..d3311df20c37517e7c4ae1b8fbee6add6d32332e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java @@ -69,6 +69,18 @@ public class Ocelot extends Animal { @@ -1244,19 +1244,19 @@ index a781048b0c43e63e441e6afecec125d7f838c342..152cd9e2169d25e475f36a618c63aad1 protected void registerGoals() { this.temptGoal = new Ocelot.OcelotTemptGoal(this, 0.6D, Ocelot.TEMPT_INGREDIENT, true); this.goalSelector.addGoal(1, new FloatGoal(this)); -+ this.goalSelector.addGoal(1, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(1, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(3, this.temptGoal); this.goalSelector.addGoal(7, new LeapAtTargetGoal(this, 0.3F)); this.goalSelector.addGoal(8, new OcelotAttackGoal(this)); this.goalSelector.addGoal(9, new BreedGoal(this, 0.8D)); this.goalSelector.addGoal(10, new WaterAvoidingRandomStrollGoal(this, 0.8D, 1.0000001E-5F)); this.goalSelector.addGoal(11, new LookAtPlayerGoal(this, Player.class, 10.0F)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Chicken.class, false)); this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, false, false, Turtle.BABY_ON_LAND_SELECTOR)); } diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index f9be50049325a1139d67ccf590caeeceadb2fd23..ce63fcbe48d3bab8a8a9e4b283fc561b30399e21 100644 +index f9be50049325a1139d67ccf590caeeceadb2fd23..ed8890d6a5431412248722182c697844f7792c6e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -107,6 +107,27 @@ public class Panda extends Animal { @@ -1291,7 +1291,7 @@ index f9be50049325a1139d67ccf590caeeceadb2fd23..ce63fcbe48d3bab8a8a9e4b283fc561b @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(2, new Panda.PandaPanicGoal(this, 2.0D)); this.goalSelector.addGoal(2, new Panda.PandaBreedGoal(this, 1.0D)); this.goalSelector.addGoal(3, new Panda.PandaAttackGoal(this, 1.2000000476837158D, true)); @@ -1299,7 +1299,7 @@ index f9be50049325a1139d67ccf590caeeceadb2fd23..ce63fcbe48d3bab8a8a9e4b283fc561b this.goalSelector.addGoal(12, new Panda.PandaRollGoal(this)); this.goalSelector.addGoal(13, new FollowParentGoal(this, 1.25D)); this.goalSelector.addGoal(14, new WaterAvoidingRandomStrollGoal(this, 1.0D)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, (new Panda.PandaHurtByTargetGoal(this, new Class[0])).setAlertOthers(new Class[0])); } @@ -1335,7 +1335,7 @@ index f9be50049325a1139d67ccf590caeeceadb2fd23..ce63fcbe48d3bab8a8a9e4b283fc561b } - private static class PandaMoveControl extends MoveControl { -+ private static class PandaMoveControl extends net.pl3x.purpur.controller.MoveControllerWASD { // Purpur ++ private static class PandaMoveControl extends org.purpurmc.purpur.controller.MoveControllerWASD { // Purpur private final Panda panda; @@ -1352,7 +1352,7 @@ index f9be50049325a1139d67ccf590caeeceadb2fd23..ce63fcbe48d3bab8a8a9e4b283fc561b } } diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index dd80d9e0614445ba088c295784dc30584dedaa2b..8deca54f90e1ec7baa8caf59cca0c4b3e705e977 100644 +index dd80d9e0614445ba088c295784dc30584dedaa2b..ae436398af6d9b86518d21fca27d2acb6e37dc77 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -126,12 +126,63 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { @@ -1361,7 +1361,7 @@ index dd80d9e0614445ba088c295784dc30584dedaa2b..8deca54f90e1ec7baa8caf59cca0c4b3 super(type, world); - this.moveControl = new FlyingMoveControl(this, 10, false); + // Purpur start -+ final net.pl3x.purpur.controller.FlyingWithSpacebarMoveControllerWASD flyingController = new net.pl3x.purpur.controller.FlyingWithSpacebarMoveControllerWASD(this, 0.3F); ++ final org.purpurmc.purpur.controller.FlyingWithSpacebarMoveControllerWASD flyingController = new org.purpurmc.purpur.controller.FlyingWithSpacebarMoveControllerWASD(this, 0.3F); + class ParrotMoveControl extends FlyingMoveControl { + public ParrotMoveControl(Mob entity, int maxPitchChange, boolean noGravity) { + super(entity, maxPitchChange, noGravity); @@ -1427,13 +1427,13 @@ index dd80d9e0614445ba088c295784dc30584dedaa2b..8deca54f90e1ec7baa8caf59cca0c4b3 - this.goalSelector.addGoal(0, new PanicGoal(this, 1.25D)); + //this.goalSelector.addGoal(0, new PanicGoal(this, 1.25D)); // Purpur - move down this.goalSelector.addGoal(0, new FloatGoal(this)); -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur + this.goalSelector.addGoal(1, new PanicGoal(this, 1.25D)); // Purpur this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(2, new FollowOwnerGoal(this, 1.0D, 5.0F, 1.0F, true)); diff --git a/src/main/java/net/minecraft/world/entity/animal/Pig.java b/src/main/java/net/minecraft/world/entity/animal/Pig.java -index f24b87ff18d4255289c8130f32fd205014ee2747..0d1cfb973efb3fb472a0c57e75bad00dea769357 100644 +index f24b87ff18d4255289c8130f32fd205014ee2747..32139ede373d72fd8745827052daf5c9a51cdcb9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Pig.java +++ b/src/main/java/net/minecraft/world/entity/animal/Pig.java @@ -64,9 +64,22 @@ public class Pig extends Animal implements ItemSteerable, Saddleable { @@ -1455,12 +1455,12 @@ index f24b87ff18d4255289c8130f32fd205014ee2747..0d1cfb973efb3fb472a0c57e75bad00d @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new PanicGoal(this, 1.25D)); this.goalSelector.addGoal(3, new BreedGoal(this, 1.0D)); this.goalSelector.addGoal(4, new TemptGoal(this, 1.2D, Ingredient.of(Items.CARROT_ON_A_STICK), false)); diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -index 75b8c36f8616cf9f4c751c4a5285cad06be1631d..a2361524dcc9dcffe28a4c30026ac0540146c989 100644 +index 75b8c36f8616cf9f4c751c4a5285cad06be1631d..11714497f323350d8244962517d8bb887d35dd0a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java @@ -62,11 +62,35 @@ public class PolarBear extends Animal implements NeutralMob { @@ -1503,14 +1503,14 @@ index 75b8c36f8616cf9f4c751c4a5285cad06be1631d..a2361524dcc9dcffe28a4c30026ac054 protected void registerGoals() { super.registerGoals(); this.goalSelector.addGoal(0, new FloatGoal(this)); -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new PolarBear.PolarBearMeleeAttackGoal()); this.goalSelector.addGoal(1, new PolarBear.PolarBearPanicGoal()); this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25D)); this.goalSelector.addGoal(5, new RandomStrollGoal(this, 1.0D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(7, new RandomLookAroundGoal(this)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new PolarBear.PolarBearHurtByTargetGoal()); this.targetSelector.addGoal(2, new PolarBear.PolarBearAttackPlayersGoal()); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::isAngryAt)); @@ -1558,7 +1558,7 @@ index f576e602f2fce87cdebc194b474dced64952178b..bc1cf0e63c9a1df534017246687f6a13 protected void defineSynchedData() { super.defineSynchedData(); diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -index 518f48bdd35d1b351c49771b1c98717fb2696685..3d8dfab5c7dfa8a506f40379aa36e6963de4e35a 100644 +index 518f48bdd35d1b351c49771b1c98717fb2696685..373bf90cc838fe7317ef8458552eefeeea05b6d6 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java @@ -83,6 +83,7 @@ public class Rabbit extends Animal { @@ -1620,7 +1620,7 @@ index 518f48bdd35d1b351c49771b1c98717fb2696685..3d8dfab5c7dfa8a506f40379aa36e696 @Override public void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); -+ this.goalSelector.addGoal(1, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(1, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new Rabbit.RabbitPanicGoal(this, 2.2D)); this.goalSelector.addGoal(2, new BreedGoal(this, 0.8D)); this.goalSelector.addGoal(3, new TemptGoal(this, 1.0D, Ingredient.of(Items.CARROT, Items.GOLDEN_CARROT, Blocks.DANDELION), false)); @@ -1666,7 +1666,7 @@ index 518f48bdd35d1b351c49771b1c98717fb2696685..3d8dfab5c7dfa8a506f40379aa36e696 } - private static class RabbitMoveControl extends MoveControl { -+ private static class RabbitMoveControl extends net.pl3x.purpur.controller.MoveControllerWASD { // Purpur ++ private static class RabbitMoveControl extends org.purpurmc.purpur.controller.MoveControllerWASD { // Purpur private final Rabbit rabbit; private double nextJumpSpeed; @@ -1711,7 +1711,7 @@ index 0af79daa357f53a8871e293b57e16c099e5d3f64..cf88c1d95a866853568d4fa5f67850bc public int getMaxSchoolSize() { return 5; diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -index 1d4e504434ba9730101588c0bb0aab8f1ef6a7db..8922ce00b1a4acd42434fa4681c8d56a39cf9348 100644 +index 1d4e504434ba9730101588c0bb0aab8f1ef6a7db..b0fb05dcb63d132071274ae2de0c105dc55420d0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java @@ -116,10 +116,23 @@ public class Sheep extends Animal implements Shearable { @@ -1734,12 +1734,12 @@ index 1d4e504434ba9730101588c0bb0aab8f1ef6a7db..8922ce00b1a4acd42434fa4681c8d56a protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); this.goalSelector.addGoal(0, new FloatGoal(this)); -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new PanicGoal(this, 1.25D)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); this.goalSelector.addGoal(3, new TemptGoal(this, 1.1D, Ingredient.of(Items.WHEAT), false)); diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index dbc0ebf7e1d7ae7c89bafad19b0d9f209674b2c9..2ec2d957d5db56ea0067e917e5b445d8619bb87b 100644 +index dbc0ebf7e1d7ae7c89bafad19b0d9f209674b2c9..e091170d1ed24ab1bee4fc17337643ddc2bf5685 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -54,12 +54,26 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -1760,12 +1760,12 @@ index dbc0ebf7e1d7ae7c89bafad19b0d9f209674b2c9..2ec2d957d5db56ea0067e917e5b445d8 + @Override protected void registerGoals() { -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new RangedAttackGoal(this, 1.25D, 20, 10.0F)); this.goalSelector.addGoal(2, new WaterAvoidingRandomStrollGoal(this, 1.0D, 1.0000001E-5F)); this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Mob.class, 10, true, false, (entityliving) -> { return entityliving instanceof Enemy; })); @@ -1796,7 +1796,7 @@ index dbc0ebf7e1d7ae7c89bafad19b0d9f209674b2c9..2ec2d957d5db56ea0067e917e5b445d8 } diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index 370513fbc39f178f903ce140ced1a97029dd39db..998f659aeff304dd481fa5e9c4b7e925d3cc019d 100644 +index 370513fbc39f178f903ce140ced1a97029dd39db..6045c6e6388a0ad2aceabe6586abc85326807524 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -51,9 +51,32 @@ public class Squid extends WaterAnimal { @@ -1828,7 +1828,7 @@ index 370513fbc39f178f903ce140ced1a97029dd39db..998f659aeff304dd481fa5e9c4b7e925 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new Squid.SquidFleeGoal()); } @@ -1895,7 +1895,7 @@ index 4745086ccacfb9863df1979c2d098cb5d81f1535..d78947aa30e4eebca67b94614ec0e2ac return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 56e9c0d15249562ebea8eb451d4bcc9ff5e7d594..320f02f310fc1da2e5f41d0febd1ccfb48e0c4ea 100644 +index 56e9c0d15249562ebea8eb451d4bcc9ff5e7d594..43dea015a6a9093c98e8ff5a18e6a8360c30d59a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -86,6 +86,18 @@ public class Turtle extends Animal { @@ -1921,7 +1921,7 @@ index 56e9c0d15249562ebea8eb451d4bcc9ff5e7d594..320f02f310fc1da2e5f41d0febd1ccfb @Override protected void registerGoals() { -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(0, new Turtle.TurtlePanicGoal(this, 1.2D)); this.goalSelector.addGoal(1, new Turtle.TurtleBreedGoal(this, 1.0D)); this.goalSelector.addGoal(1, new Turtle.TurtleLayEggGoal(this, 1.0D)); @@ -1930,15 +1930,15 @@ index 56e9c0d15249562ebea8eb451d4bcc9ff5e7d594..320f02f310fc1da2e5f41d0febd1ccfb } - private static class TurtleMoveControl extends MoveControl { -+ private static class TurtleMoveControl extends net.pl3x.purpur.controller.MoveControllerWASD { // Purpur ++ private static class TurtleMoveControl extends org.purpurmc.purpur.controller.MoveControllerWASD { // Purpur private final Turtle turtle; -+ private final net.pl3x.purpur.controller.WaterMoveControllerWASD waterController; // Purpur ++ private final org.purpurmc.purpur.controller.WaterMoveControllerWASD waterController; // Purpur TurtleMoveControl(Turtle turtle) { super(turtle); this.turtle = turtle; -+ waterController = new net.pl3x.purpur.controller.WaterMoveControllerWASD(turtle, 0.25D); // Purpur ++ waterController = new org.purpurmc.purpur.controller.WaterMoveControllerWASD(turtle, 0.25D); // Purpur } private void updateSpeed() { @@ -1972,7 +1972,7 @@ index 56e9c0d15249562ebea8eb451d4bcc9ff5e7d594..320f02f310fc1da2e5f41d0febd1ccfb 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)); 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 4797c34872f8fa2fba00172357c4f45e45cfe27f..3240a1b0759e4d1f189ff769519b4496af0657be 100644 +index 4797c34872f8fa2fba00172357c4f45e45cfe27f..4187d8fdb950781de8b414ed6928a3df4a89ba67 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java @@ -99,9 +99,27 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -1999,7 +1999,7 @@ index 4797c34872f8fa2fba00172357c4f45e45cfe27f..3240a1b0759e4d1f189ff769519b4496 @Override protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); -+ this.goalSelector.addGoal(1, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(1, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(3, new Wolf.WolfAvoidEntityGoal<>(this, Llama.class, 24.0F, 1.5D, 1.5D)); this.goalSelector.addGoal(4, new LeapAtTargetGoal(this, 0.4F)); @@ -2007,12 +2007,12 @@ index 4797c34872f8fa2fba00172357c4f45e45cfe27f..3240a1b0759e4d1f189ff769519b4496 this.goalSelector.addGoal(9, new BegGoal(this, 8.0F)); this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(10, new RandomLookAroundGoal(this)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new OwnerHurtByTargetGoal(this)); this.targetSelector.addGoal(2, new OwnerHurtTargetGoal(this)); this.targetSelector.addGoal(3, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers()); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 86acf89ce875e215da8469947b382f70e42314b0..0667003613d3205eab3e729a297ba14d37ba3d22 100644 +index 86acf89ce875e215da8469947b382f70e42314b0..09a3ed5cd02e38eab3a66ada03b2651b8cbe1751 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -91,6 +91,23 @@ public class Axolotl extends Animal implements LerpingModel, Bucketable { @@ -2032,7 +2032,7 @@ index 86acf89ce875e215da8469947b382f70e42314b0..0667003613d3205eab3e729a297ba14d + + @Override + protected void registerGoals() { -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur + } + // Purpur end + @@ -2043,12 +2043,12 @@ index 86acf89ce875e215da8469947b382f70e42314b0..0667003613d3205eab3e729a297ba14d private static class AxolotlMoveControl extends SmoothSwimmingMoveControl { private final Axolotl axolotl; -+ private final net.pl3x.purpur.controller.WaterMoveControllerWASD waterController; // Purpur ++ private final org.purpurmc.purpur.controller.WaterMoveControllerWASD waterController; // Purpur public AxolotlMoveControl(Axolotl axolotl) { super(axolotl, 85, 10, 0.1F, 0.5F, false); this.axolotl = axolotl; -+ waterController = new net.pl3x.purpur.controller.WaterMoveControllerWASD(axolotl, 0.5D); // Purpur ++ waterController = new org.purpurmc.purpur.controller.WaterMoveControllerWASD(axolotl, 0.5D); // Purpur } @Override @@ -2106,7 +2106,7 @@ index cc5687f43f8ac99995667fdc53c5c0586f70f367..563ead054aa41c8420d9b3f8c335dce2 this.level.getProfiler().pop(); this.level.getProfiler().push("goatActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index a726006888bbbdb290bcda3ac4fd45d68ba51b79..5b797d33252488bd242913b862eb599f7c8e7edc 100644 +index a726006888bbbdb290bcda3ac4fd45d68ba51b79..e73045a7046850f10d79809c53b6cdd9ceb8775a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java @@ -114,12 +114,22 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, @@ -2128,7 +2128,7 @@ index a726006888bbbdb290bcda3ac4fd45d68ba51b79..5b797d33252488bd242913b862eb599f + @Override protected void registerGoals() { -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HorseHasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HorseHasRider(this)); // Purpur this.goalSelector.addGoal(1, new PanicGoal(this, 1.2D)); this.goalSelector.addGoal(1, new RunAroundLikeCrazyGoal(this, 1.2D)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D, AbstractHorse.class)); @@ -2136,7 +2136,7 @@ index a726006888bbbdb290bcda3ac4fd45d68ba51b79..5b797d33252488bd242913b862eb599f this.goalSelector.addGoal(6, new WaterAvoidingRandomStrollGoal(this, 0.7D)); this.goalSelector.addGoal(7, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HorseHasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HorseHasRider(this)); // Purpur this.addBehaviourGoals(); } @@ -2177,7 +2177,7 @@ index 7af7ff4accbcc1b28d96c94e9c3301142541f4f0..a91152df3d443d70b1aa9aff97b3746e protected void randomizeAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)this.generateRandomMaxHealth()); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index c4b4adc11179682d19be69d01ebd5f45e5f0e193..b9a7f5e536afe6409f517133db7f0d6f3b481640 100644 +index c4b4adc11179682d19be69d01ebd5f45e5f0e193..fb4af69075323a1d6c5e252115d5973dbdcadcd2 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -69,7 +69,46 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { @@ -2185,7 +2185,7 @@ index c4b4adc11179682d19be69d01ebd5f45e5f0e193..b9a7f5e536afe6409f517133db7f0d6f public Llama(EntityType type, Level world) { super(type, world); + // Purpur start -+ this.moveControl = new net.pl3x.purpur.controller.MoveControllerWASD(this) { ++ this.moveControl = new org.purpurmc.purpur.controller.MoveControllerWASD(this) { + @Override + public void tick() { + if (entity.getRider() != null && isSaddled()) { @@ -2195,7 +2195,7 @@ index c4b4adc11179682d19be69d01ebd5f45e5f0e193..b9a7f5e536afe6409f517133db7f0d6f + } + } + }; -+ this.lookControl = new net.pl3x.purpur.controller.LookControllerWASD(this) { ++ this.lookControl = new org.purpurmc.purpur.controller.LookControllerWASD(this) { + @Override + public void tick() { + if (entity.getRider() != null && isSaddled()) { @@ -2231,7 +2231,7 @@ index c4b4adc11179682d19be69d01ebd5f45e5f0e193..b9a7f5e536afe6409f517133db7f0d6f @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HorseHasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HorseHasRider(this)); // Purpur this.goalSelector.addGoal(1, new RunAroundLikeCrazyGoal(this, 1.2D)); this.goalSelector.addGoal(2, new LlamaFollowCaravanGoal(this, (double)2.1F)); this.goalSelector.addGoal(3, new RangedAttackGoal(this, 1.25D, 40, 20.0F)); @@ -2239,7 +2239,7 @@ index c4b4adc11179682d19be69d01ebd5f45e5f0e193..b9a7f5e536afe6409f517133db7f0d6f this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 0.7D)); this.goalSelector.addGoal(8, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(9, new RandomLookAroundGoal(this)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HorseHasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HorseHasRider(this)); // Purpur this.targetSelector.addGoal(1, new Llama.LlamaHurtByTargetGoal(this)); this.targetSelector.addGoal(2, new Llama.LlamaAttackWolfGoal(this)); } @@ -2373,7 +2373,7 @@ index 305a891e4b51d1031d9e9238ff00e2ea7de8d954..84625d09df800fcfd477fc493fb5f824 protected void defineSynchedData() { } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index e17a3afa41fd628d2c4a3637ae19418e258a99b8..6a39bd861f27d517f8de9fc3f589c7e20b43d706 100644 +index e17a3afa41fd628d2c4a3637ae19418e258a99b8..5e81df114108fa3f8ad8dc5e211737ee9f73290c 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -102,6 +102,7 @@ public class EnderDragon extends Mob implements Enemy { @@ -2390,13 +2390,13 @@ index e17a3afa41fd628d2c4a3637ae19418e258a99b8..6a39bd861f27d517f8de9fc3f589c7e2 this.phaseManager = new EnderDragonPhaseManager(this); + + // Purpur start -+ this.moveControl = new net.pl3x.purpur.controller.FlyingMoveControllerWASD(this) { ++ this.moveControl = new org.purpurmc.purpur.controller.FlyingMoveControllerWASD(this) { + @Override + public void vanillaTick() { + // dragon doesn't use the controller. do nothing + } + }; -+ this.lookControl = new net.pl3x.purpur.controller.LookControllerWASD(this) { ++ this.lookControl = new org.purpurmc.purpur.controller.LookControllerWASD(this) { + @Override + public void vanillaTick() { + // dragon doesn't use the controller. do nothing @@ -2517,7 +2517,7 @@ index e17a3afa41fd628d2c4a3637ae19418e258a99b8..6a39bd861f27d517f8de9fc3f589c7e2 this.dragonFight.updateDragon(this); } diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index ede0ced64d74d71547d1b8bb6853c5aacc1b486a..ba20d4bddf965a9207fa0f12f7337f51a8aff301 100644 +index ede0ced64d74d71547d1b8bb6853c5aacc1b486a..5d7623a5ef12ec3151cbc4ac0a59959d8976b9ea 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -85,6 +85,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -2532,7 +2532,7 @@ index ede0ced64d74d71547d1b8bb6853c5aacc1b486a..ba20d4bddf965a9207fa0f12f7337f51 navigationflying.setCanOpenDoors(false); navigationflying.setCanFloat(true); navigationflying.setCanPassDoors(true); -+ this.moveControl = new net.pl3x.purpur.controller.FlyingWithSpacebarMoveControllerWASD(this, 0.1F); // Purpur ++ this.moveControl = new org.purpurmc.purpur.controller.FlyingWithSpacebarMoveControllerWASD(this, 0.1F); // Purpur return navigationflying; } @@ -2637,13 +2637,13 @@ index ede0ced64d74d71547d1b8bb6853c5aacc1b486a..ba20d4bddf965a9207fa0f12f7337f51 + @Override protected void registerGoals() { -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(0, new WitherBoss.WitherDoNothingGoal()); this.goalSelector.addGoal(2, new RangedAttackGoal(this, 1.0D, 40, 20.0F)); this.goalSelector.addGoal(5, new WaterAvoidingRandomFlyingGoal(this, 1.0D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(7, new RandomLookAroundGoal(this)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new HurtByTargetGoal(this, new Class[0])); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, LivingEntity.class, 0, false, false, WitherBoss.LIVING_ENTITY_SELECTOR)); } @@ -2679,33 +2679,33 @@ index ede0ced64d74d71547d1b8bb6853c5aacc1b486a..ba20d4bddf965a9207fa0f12f7337f51 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -index e23fe546291e670f89447398507d08a0a07efa85..8869c32392383028128d6aa3eeaa474b7301cc0c 100644 +index e23fe546291e670f89447398507d08a0a07efa85..a60ca5d69a9734c7979f953bd56c05c7016356d2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -68,12 +68,14 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @Override protected void registerGoals() { -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(2, new RestrictSunGoal(this)); this.goalSelector.addGoal(3, new FleeSunGoal(this, 1.0D)); this.goalSelector.addGoal(3, new AvoidEntityGoal<>(this, Wolf.class, 6.0F, 1.0D, 1.2D)); this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 1.0D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(6, new RandomLookAroundGoal(this)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new HurtByTargetGoal(this, new Class[0])); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Blaze.java b/src/main/java/net/minecraft/world/entity/monster/Blaze.java -index 40b387bfa1dbdb8dd2b4d23e9c130645469e1af0..5b49aed3f4998d7f02303da49ec3b960b6b00bd8 100644 +index 40b387bfa1dbdb8dd2b4d23e9c130645469e1af0..96912be8e98abf7b09b85a0830cd3e10c9225a0e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Blaze.java +++ b/src/main/java/net/minecraft/world/entity/monster/Blaze.java @@ -32,6 +32,7 @@ public class Blaze extends Monster { public Blaze(EntityType type, Level world) { super(type, world); -+ this.moveControl = new net.pl3x.purpur.controller.FlyingWithSpacebarMoveControllerWASD(this, 0.3F); // Purpur ++ this.moveControl = new org.purpurmc.purpur.controller.FlyingWithSpacebarMoveControllerWASD(this, 0.3F); // Purpur this.setPathfindingMalus(BlockPathTypes.WATER, -1.0F); this.setPathfindingMalus(BlockPathTypes.LAVA, 8.0F); this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, 0.0F); @@ -2744,13 +2744,13 @@ index 40b387bfa1dbdb8dd2b4d23e9c130645469e1af0..5b49aed3f4998d7f02303da49ec3b960 + @Override protected void registerGoals() { -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(4, new Blaze.BlazeAttackGoal(this)); this.goalSelector.addGoal(5, new MoveTowardsRestrictionGoal(this, 1.0D)); this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0D, 0.0F)); this.goalSelector.addGoal(8, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, (new HurtByTargetGoal(this)).setAlertOthers()); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); } @@ -2800,7 +2800,7 @@ index d980b906d9206560741576fa4153c57212f307a0..dd05c5f35d78d1385f793f4e34333ff2 public boolean doHurtTarget(Entity target) { if (super.doHurtTarget(target)) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index c2dbe53f504327f153efe195c74ad28c1b89791f..65844015acca05df42396822446e8105b4a01287 100644 +index c2dbe53f504327f153efe195c74ad28c1b89791f..aa92e5a46078b10da6d51d65434d6163428583bb 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -60,21 +60,93 @@ public class Creeper extends Monster implements PowerableMob { @@ -2886,14 +2886,14 @@ index c2dbe53f504327f153efe195c74ad28c1b89791f..65844015acca05df42396822446e8105 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); this.goalSelector.addGoal(2, new SwellGoal(this)); -+ this.goalSelector.addGoal(3, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(3, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(3, new AvoidEntityGoal<>(this, Ocelot.class, 6.0F, 1.0D, 1.2D)); this.goalSelector.addGoal(3, new AvoidEntityGoal<>(this, Cat.class, 6.0F, 1.0D, 1.2D)); this.goalSelector.addGoal(4, new MeleeAttackGoal(this, 1.0D, false)); this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.8D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(6, new RandomLookAroundGoal(this)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0])); } @@ -2906,7 +2906,7 @@ index c2dbe53f504327f153efe195c74ad28c1b89791f..65844015acca05df42396822446e8105 } // Paper end diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -index ccaa50d1ba9151bd94333b6b8fc0e77bc4324990..af235aefbcff818d39297c3fb0a90a8e8f5a5d4b 100644 +index ccaa50d1ba9151bd94333b6b8fc0e77bc4324990..6f8a1b1ec0de5c61a9fcadf4b6eb47a1bb2846c2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java @@ -69,6 +69,18 @@ public class Drowned extends Zombie implements RangedAttackMob { @@ -2933,7 +2933,7 @@ index ccaa50d1ba9151bd94333b6b8fc0e77bc4324990..af235aefbcff818d39297c3fb0a90a8e } - static class DrownedMoveControl extends MoveControl { -+ static class DrownedMoveControl extends net.pl3x.purpur.controller.MoveControllerWASD { // Purpur ++ static class DrownedMoveControl extends org.purpurmc.purpur.controller.MoveControllerWASD { // Purpur private final Drowned drowned; public DrownedMoveControl(Drowned drowned) { @@ -2988,7 +2988,7 @@ index ee9194ffb3cc6d660d4f99a3914ede7e4a3643fe..1f789b1d481234cafaa6e75c36a272bb return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D); } diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index cfdb631500962ec19007db55bd4453687b91c2f8..841d6846a7607c787f3ea12bc438023a832e0886 100644 +index cfdb631500962ec19007db55bd4453687b91c2f8..3ab601ded08c435825202b295bbdb06eb26ce730 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -88,9 +88,22 @@ public class EnderMan extends Monster implements NeutralMob { @@ -3010,7 +3010,7 @@ index cfdb631500962ec19007db55bd4453687b91c2f8..841d6846a7607c787f3ea12bc438023a @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new EnderMan.EndermanFreezeWhenLookedAt(this)); this.goalSelector.addGoal(2, new MeleeAttackGoal(this, 1.0D, false)); this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0D, 0.0F)); @@ -3018,7 +3018,7 @@ index cfdb631500962ec19007db55bd4453687b91c2f8..841d6846a7607c787f3ea12bc438023a this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); this.goalSelector.addGoal(10, new EnderMan.EndermanLeaveBlockGoal(this)); this.goalSelector.addGoal(11, new EnderMan.EndermanTakeBlockGoal(this)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0])); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Endermite.class, true, false)); @@ -3040,7 +3040,7 @@ index cfdb631500962ec19007db55bd4453687b91c2f8..841d6846a7607c787f3ea12bc438023a Entity entity = source.getDirectEntity(); boolean flag; diff --git a/src/main/java/net/minecraft/world/entity/monster/Endermite.java b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -index 56d313c2c4a98eac7f4f594d2c29dcd82a4753ac..a7eb3bdb45cfefbe290fdb26bc1444eb46ee8ae6 100644 +index 56d313c2c4a98eac7f4f594d2c29dcd82a4753ac..1cb9d71c89f36b0c01d3e44388794d9ff745ba2c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java +++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java @@ -36,13 +36,27 @@ public class Endermite extends Monster { @@ -3062,17 +3062,17 @@ index 56d313c2c4a98eac7f4f594d2c29dcd82a4753ac..a7eb3bdb45cfefbe290fdb26bc1444eb @Override protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); -+ this.goalSelector.addGoal(1, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(1, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(2, new MeleeAttackGoal(this, 1.0D, false)); this.goalSelector.addGoal(3, new WaterAvoidingRandomStrollGoal(this, 1.0D)); this.goalSelector.addGoal(7, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, (new HurtByTargetGoal(this)).setAlertOthers()); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Evoker.java b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -index 74e6216366afcc4d3e751b911042fcb5a05a283f..01c8ca72ff84f2beab0822247b0c44dc06b45ea0 100644 +index 74e6216366afcc4d3e751b911042fcb5a05a283f..42da0e32be040bce2fd712b31aff1fe74d7de8e9 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java @@ -47,10 +47,23 @@ public class Evoker extends SpellcasterIllager { @@ -3095,7 +3095,7 @@ index 74e6216366afcc4d3e751b911042fcb5a05a283f..01c8ca72ff84f2beab0822247b0c44dc protected void registerGoals() { super.registerGoals(); this.goalSelector.addGoal(0, new FloatGoal(this)); -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new Evoker.EvokerCastingSpellGoal()); this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Player.class, 8.0F, 0.6D, 1.0D)); this.goalSelector.addGoal(4, new Evoker.EvokerSummonSpellGoal()); @@ -3103,12 +3103,12 @@ index 74e6216366afcc4d3e751b911042fcb5a05a283f..01c8ca72ff84f2beab0822247b0c44dc this.goalSelector.addGoal(8, new RandomStrollGoal(this, 0.6D)); this.goalSelector.addGoal(9, new LookAtPlayerGoal(this, Player.class, 3.0F, 1.0F)); this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Mob.class, 8.0F)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, Raider.class)).setAlertOthers()); this.targetSelector.addGoal(2, (new NearestAttackableTargetGoal<>(this, Player.class, true)).setUnseenMemoryTicks(300)); this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)).setUnseenMemoryTicks(300)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Ghast.java b/src/main/java/net/minecraft/world/entity/monster/Ghast.java -index f834e96c48cce6af65a65dafcdeb2cf0ea12763a..31c3ad9c9fa42be535fd80b696c781f961e83ee1 100644 +index f834e96c48cce6af65a65dafcdeb2cf0ea12763a..3429e259f7bd25a3032822b52bf2c4d9d3342f22 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ghast.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ghast.java @@ -44,11 +44,42 @@ public class Ghast extends FlyingMob implements Enemy { @@ -3146,11 +3146,11 @@ index f834e96c48cce6af65a65dafcdeb2cf0ea12763a..31c3ad9c9fa42be535fd80b696c781f9 + @Override protected void registerGoals() { -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(5, new Ghast.RandomFloatAroundGoal(this)); this.goalSelector.addGoal(7, new Ghast.GhastLookGoal(this)); this.goalSelector.addGoal(7, new Ghast.GhastShootFireballGoal(this)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (entityliving) -> { return Math.abs(entityliving.getY() - this.getY()) <= 4.0D; })); @@ -3168,7 +3168,7 @@ index f834e96c48cce6af65a65dafcdeb2cf0ea12763a..31c3ad9c9fa42be535fd80b696c781f9 } - private static class GhastMoveControl extends MoveControl { -+ private static class GhastMoveControl extends net.pl3x.purpur.controller.FlyingMoveControllerWASD { // Purpur ++ private static class GhastMoveControl extends org.purpurmc.purpur.controller.FlyingMoveControllerWASD { // Purpur private final Ghast ghast; private int floatDuration; @@ -3182,7 +3182,7 @@ index f834e96c48cce6af65a65dafcdeb2cf0ea12763a..31c3ad9c9fa42be535fd80b696c781f9 if (this.floatDuration-- <= 0) { this.floatDuration += this.ghast.getRandom().nextInt(5) + 2; diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java -index 0d578ab12c874bd2daccc4322a3fe1abafa4bc18..d95b110a025d48e7ab18f172e455593740e45252 100644 +index 0d578ab12c874bd2daccc4322a3fe1abafa4bc18..6350749549298df1f4abf5a4ac62f254729c5917 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java @@ -14,6 +14,24 @@ public class Giant extends Monster { @@ -3202,8 +3202,8 @@ index 0d578ab12c874bd2daccc4322a3fe1abafa4bc18..d95b110a025d48e7ab18f172e4555937 + + @Override + protected void registerGoals() { -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); + } + // Purpur end + @@ -3211,7 +3211,7 @@ index 0d578ab12c874bd2daccc4322a3fe1abafa4bc18..d95b110a025d48e7ab18f172e4555937 protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) { return 10.440001F; diff --git a/src/main/java/net/minecraft/world/entity/monster/Guardian.java b/src/main/java/net/minecraft/world/entity/monster/Guardian.java -index 8377fa2f583e88082ac5e908951e1ffc1ff973d3..5023a117483de9c95c861bb075f0d2e689bf6289 100644 +index 8377fa2f583e88082ac5e908951e1ffc1ff973d3..8571da53ae382d418608d1beb722a0d1b5606ed6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Guardian.java +++ b/src/main/java/net/minecraft/world/entity/monster/Guardian.java @@ -65,14 +65,35 @@ public class Guardian extends Monster { @@ -3219,7 +3219,7 @@ index 8377fa2f583e88082ac5e908951e1ffc1ff973d3..5023a117483de9c95c861bb075f0d2e6 this.setPathfindingMalus(BlockPathTypes.WATER, 0.0F); this.moveControl = new Guardian.GuardianMoveControl(this); + // Purpur start -+ this.lookControl = new net.pl3x.purpur.controller.LookControllerWASD(this) { ++ this.lookControl = new org.purpurmc.purpur.controller.LookControllerWASD(this) { + @Override + public void setYawPitch(float yaw, float pitch) { + super.setYawPitch(yaw, pitch * 0.35F); @@ -3246,7 +3246,7 @@ index 8377fa2f583e88082ac5e908951e1ffc1ff973d3..5023a117483de9c95c861bb075f0d2e6 protected void registerGoals() { MoveTowardsRestrictionGoal moveTowardsRestrictionGoal = new MoveTowardsRestrictionGoal(this, 1.0D); this.randomStrollGoal = new RandomStrollGoal(this, 1.0D, 80); -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(4, new Guardian.GuardianAttackGoal(this)); this.goalSelector.addGoal(5, moveTowardsRestrictionGoal); this.goalSelector.addGoal(7, this.randomStrollGoal); @@ -3254,7 +3254,7 @@ index 8377fa2f583e88082ac5e908951e1ffc1ff973d3..5023a117483de9c95c861bb075f0d2e6 this.goalSelector.addGoal(9, new RandomLookAroundGoal(this)); this.randomStrollGoal.setFlags(EnumSet.of(Goal.Flag.MOVE, Goal.Flag.LOOK)); moveTowardsRestrictionGoal.setFlags(EnumSet.of(Goal.Flag.MOVE, Goal.Flag.LOOK)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, LivingEntity.class, 10, true, false, new Guardian.GuardianAttackSelector(this))); } @@ -3272,7 +3272,7 @@ index 8377fa2f583e88082ac5e908951e1ffc1ff973d3..5023a117483de9c95c861bb075f0d2e6 } - static class GuardianMoveControl extends MoveControl { -+ static class GuardianMoveControl extends net.pl3x.purpur.controller.WaterMoveControllerWASD { // Purpur ++ static class GuardianMoveControl extends org.purpurmc.purpur.controller.WaterMoveControllerWASD { // Purpur private final Guardian guardian; public GuardianMoveControl(Guardian guardian) { @@ -3328,7 +3328,7 @@ index 4f683b4d35b5b07fffe344fab6ae15f5ccb6baf2..82a14d717e8f2ee005c2c410625b811c return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (spawnReason == MobSpawnType.SPAWNER || world.canSeeSky(pos)); } diff --git a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java -index 86f7fdd42461db151221d2c0d5cff6953392fa80..d879310fddd27374c18dd77dee5b594c1939fce8 100644 +index 86f7fdd42461db151221d2c0d5cff6953392fa80..647796e6f3352582c49c780a860a617ce7b44ddd 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java +++ b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java @@ -59,10 +59,23 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { @@ -3351,7 +3351,7 @@ index 86f7fdd42461db151221d2c0d5cff6953392fa80..d879310fddd27374c18dd77dee5b594c protected void registerGoals() { super.registerGoals(); this.goalSelector.addGoal(0, new FloatGoal(this)); -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new SpellcasterIllager.SpellcasterCastingSpellGoal()); this.goalSelector.addGoal(4, new Illusioner.IllusionerMirrorSpellGoal()); this.goalSelector.addGoal(5, new Illusioner.IllusionerBlindnessSpellGoal()); @@ -3359,7 +3359,7 @@ index 86f7fdd42461db151221d2c0d5cff6953392fa80..d879310fddd27374c18dd77dee5b594c this.goalSelector.addGoal(8, new RandomStrollGoal(this, 0.6D)); this.goalSelector.addGoal(9, new LookAtPlayerGoal(this, Player.class, 3.0F, 1.0F)); this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Mob.class, 8.0F)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{Raider.class})).setAlertOthers()); this.targetSelector.addGoal(2, (new NearestAttackableTargetGoal<>(this, Player.class, true)).setUnseenMemoryTicks(300)); this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)).setUnseenMemoryTicks(300)); @@ -3414,7 +3414,7 @@ index 2ffe85ee5565bcae56b8a64567c34eeed71e4e4b..95741b63d68bdf815212d718c3cc0fc6 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index 5c35b73c13c3826be9705e05154076810a78d147..81104c73dfb9d0a2dd962c5f450e732f27a583d8 100644 +index 5c35b73c13c3826be9705e05154076810a78d147..e4401125da58e0a82a30f9b4a137f5804ae2a8dc 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -60,6 +60,59 @@ public class Phantom extends FlyingMob implements Enemy { @@ -3466,7 +3466,7 @@ index 5c35b73c13c3826be9705e05154076810a78d147..81104c73dfb9d0a2dd962c5f450e732f + loc.setPitch(-loc.getPitch()); + org.bukkit.util.Vector target = loc.getDirection().normalize().multiply(100).add(loc.toVector()); + -+ net.pl3x.purpur.entity.PhantomFlames flames = new net.pl3x.purpur.entity.PhantomFlames(level, this); ++ org.purpurmc.purpur.entity.PhantomFlames flames = new org.purpurmc.purpur.entity.PhantomFlames(level, this); + flames.canGrief = level.purpurConfig.phantomAllowGriefing; + flames.shoot(target.getX() - getX(), target.getY() - getY(), target.getZ() - getZ(), 1.0F, 5.0F); + level.addFreshEntity(flames); @@ -3481,11 +3481,11 @@ index 5c35b73c13c3826be9705e05154076810a78d147..81104c73dfb9d0a2dd962c5f450e732f @Override protected void registerGoals() { -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new Phantom.PhantomAttackStrategyGoal()); this.goalSelector.addGoal(2, new Phantom.PhantomSweepAttackGoal()); this.goalSelector.addGoal(3, new Phantom.PhantomCircleAroundAnchorGoal()); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new Phantom.PhantomAttackPlayerTargetGoal()); } @@ -3503,7 +3503,7 @@ index 5c35b73c13c3826be9705e05154076810a78d147..81104c73dfb9d0a2dd962c5f450e732f } - private class PhantomMoveControl extends MoveControl { -+ private class PhantomMoveControl extends net.pl3x.purpur.controller.FlyingMoveControllerWASD { // Purpur ++ private class PhantomMoveControl extends org.purpurmc.purpur.controller.FlyingMoveControllerWASD { // Purpur private float speed = 0.1F; @@ -3533,7 +3533,7 @@ index 5c35b73c13c3826be9705e05154076810a78d147..81104c73dfb9d0a2dd962c5f450e732f } - private class PhantomLookControl extends LookControl { -+ private class PhantomLookControl extends net.pl3x.purpur.controller.LookControllerWASD { // Purpur ++ private class PhantomLookControl extends org.purpurmc.purpur.controller.LookControllerWASD { // Purpur public PhantomLookControl(Mob entity) { super(entity); @@ -3552,7 +3552,7 @@ index 5c35b73c13c3826be9705e05154076810a78d147..81104c73dfb9d0a2dd962c5f450e732f private class PhantomBodyRotationControl extends BodyRotationControl { diff --git a/src/main/java/net/minecraft/world/entity/monster/Pillager.java b/src/main/java/net/minecraft/world/entity/monster/Pillager.java -index d77e6d1722bbaeaa921d56fbcb2fdf9757fe74fe..472ca632d9d2c9b8d58925792ee99a7dccc1ab4d 100644 +index d77e6d1722bbaeaa921d56fbcb2fdf9757fe74fe..1457c0eda11000a0513e601ea60b6ca4a5b463b6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Pillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Pillager.java @@ -63,15 +63,29 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve @@ -3575,18 +3575,18 @@ index d77e6d1722bbaeaa921d56fbcb2fdf9757fe74fe..472ca632d9d2c9b8d58925792ee99a7d protected void registerGoals() { super.registerGoals(); this.goalSelector.addGoal(0, new FloatGoal(this)); -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(2, new Raider.HoldGroundAttackGoal(this, 10.0F)); this.goalSelector.addGoal(3, new RangedCrossbowAttackGoal<>(this, 1.0D, 8.0F)); this.goalSelector.addGoal(8, new RandomStrollGoal(this, 0.6D)); this.goalSelector.addGoal(9, new LookAtPlayerGoal(this, Player.class, 15.0F, 1.0F)); this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Mob.class, 15.0F)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, Raider.class)).setAlertOthers()); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); 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 -index 4a7c6277301aacf83ee1ff5678c97d001e0cb2b9..73a13cc8fe730ff88583d9af61ca581bd8aab99b 100644 +index 4a7c6277301aacf83ee1ff5678c97d001e0cb2b9..ef09b5c6f52f342801213c701d8dbe68063129b9 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java @@ -69,14 +69,34 @@ public class Ravager extends Raider { @@ -3615,12 +3615,12 @@ index 4a7c6277301aacf83ee1ff5678c97d001e0cb2b9..73a13cc8fe730ff88583d9af61ca581b protected void registerGoals() { super.registerGoals(); this.goalSelector.addGoal(0, new FloatGoal(this)); -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(4, new Ravager.RavagerMeleeAttackGoal()); this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.4D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Mob.class, 8.0F)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur 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(4, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true, (entityliving) -> { @@ -3634,7 +3634,7 @@ index 4a7c6277301aacf83ee1ff5678c97d001e0cb2b9..73a13cc8fe730ff88583d9af61ca581b this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(0.0D); } else { diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index a9dfe190f46230077e2e1bf9aacbf5375651f216..65dd85729822e3bfa2344b2d4a37e9de2913ed85 100644 +index a9dfe190f46230077e2e1bf9aacbf5375651f216..d61488d80c10c75698424698c8c6a08315e948bc 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java @@ -92,12 +92,26 @@ public class Shulker extends AbstractGolem implements Enemy { @@ -3655,12 +3655,12 @@ index a9dfe190f46230077e2e1bf9aacbf5375651f216..65dd85729822e3bfa2344b2d4a37e9de + @Override protected void registerGoals() { -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 8.0F, 0.02F, true)); this.goalSelector.addGoal(4, new Shulker.ShulkerAttackGoal()); this.goalSelector.addGoal(7, new Shulker.ShulkerPeekGoal()); this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{this.getClass()})).setAlertOthers()); this.targetSelector.addGoal(2, new Shulker.ShulkerNearestAttackGoal(this)); this.targetSelector.addGoal(3, new Shulker.ShulkerDefenseAttackGoal(this)); @@ -3669,12 +3669,12 @@ index a9dfe190f46230077e2e1bf9aacbf5375651f216..65dd85729822e3bfa2344b2d4a37e9de } - private class ShulkerLookControl extends LookControl { -+ private class ShulkerLookControl extends net.pl3x.purpur.controller.LookControllerWASD { // Purpur ++ private class ShulkerLookControl extends org.purpurmc.purpur.controller.LookControllerWASD { // Purpur public ShulkerLookControl(Mob entity) { super(entity); diff --git a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -index 195cdae3f3a9fe8ecab2895a6000f6f855e9a9b8..e597b85a6dee0671c00d7481558cdb8419531682 100644 +index 195cdae3f3a9fe8ecab2895a6000f6f855e9a9b8..b72866283e92433e95f0140037a1fd3182b0577a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java +++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java @@ -41,13 +41,27 @@ public class Silverfish extends Monster { @@ -3697,11 +3697,11 @@ index 195cdae3f3a9fe8ecab2895a6000f6f855e9a9b8..e597b85a6dee0671c00d7481558cdb84 protected void registerGoals() { this.friendsGoal = new Silverfish.SilverfishWakeUpFriendsGoal(this); this.goalSelector.addGoal(1, new FloatGoal(this)); -+ this.goalSelector.addGoal(1, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(1, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(3, this.friendsGoal); this.goalSelector.addGoal(4, new MeleeAttackGoal(this, 1.0D, false)); this.goalSelector.addGoal(5, new Silverfish.SilverfishMergeWithStoneGoal(this)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers()); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); } @@ -3729,7 +3729,7 @@ index 1eeaf0cc9b00afd54f38f9cb50404ec9f9ba51f8..909a7bffcd0d7432f0714417c286fb75 protected void defineSynchedData() { super.defineSynchedData(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java -index 5722d9b30223fb229b80f54d7fb9edf41254a7f7..76546a356d34546099180a9c825d38c7297dec07 100644 +index 5722d9b30223fb229b80f54d7fb9edf41254a7f7..8a3fcf98e4cb0a7473b198102c334e08696ab05c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Slime.java +++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java @@ -67,18 +67,50 @@ public class Slime extends Mob implements Enemy { @@ -3774,12 +3774,12 @@ index 5722d9b30223fb229b80f54d7fb9edf41254a7f7..76546a356d34546099180a9c825d38c7 + @Override protected void registerGoals() { -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new Slime.SlimeFloatGoal(this)); this.goalSelector.addGoal(2, new Slime.SlimeAttackGoal(this)); this.goalSelector.addGoal(3, new Slime.SlimeRandomDirectionGoal(this)); this.goalSelector.addGoal(5, new Slime.SlimeKeepOnJumpingGoal(this)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (entityliving) -> { return Math.abs(entityliving.getY() - this.getY()) <= 4.0D; })); @@ -3802,7 +3802,7 @@ index 5722d9b30223fb229b80f54d7fb9edf41254a7f7..76546a356d34546099180a9c825d38c7 } - private static class SlimeMoveControl extends MoveControl { -+ private static class SlimeMoveControl extends net.pl3x.purpur.controller.MoveControllerWASD { // Purpur ++ private static class SlimeMoveControl extends org.purpurmc.purpur.controller.MoveControllerWASD { // Purpur private float yRot; private int jumpDelay; @@ -3853,7 +3853,7 @@ index 5722d9b30223fb229b80f54d7fb9edf41254a7f7..76546a356d34546099180a9c825d38c7 } diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java -index 05b6c07c0705c7d8741c77baa87982e8e278dc97..50c4fc838eba31e5f34e71a6fbafbb366ec17d06 100644 +index 05b6c07c0705c7d8741c77baa87982e8e278dc97..a31a5186a48e6ba90c2a87bec104d10bdc3c50d5 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Spider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java @@ -51,14 +51,28 @@ public class Spider extends Monster { @@ -3875,13 +3875,13 @@ index 05b6c07c0705c7d8741c77baa87982e8e278dc97..50c4fc838eba31e5f34e71a6fbafbb36 @Override protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); -+ this.goalSelector.addGoal(1, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(1, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(3, new LeapAtTargetGoal(this, 0.4F)); this.goalSelector.addGoal(4, new Spider.SpiderAttackGoal(this)); this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.8D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(6, new RandomLookAroundGoal(this)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new HurtByTargetGoal(this, new Class[0])); this.targetSelector.addGoal(2, new Spider.SpiderTargetGoal<>(this, Player.class)); this.targetSelector.addGoal(3, new Spider.SpiderTargetGoal<>(this, IronGolem.class)); @@ -3909,7 +3909,7 @@ index baf614d2dbfb54d25fe06b28709ba2b7176c5213..8480687e452b7cad0d3e434cebe17e15 BlockPos blockPos = pos; diff --git a/src/main/java/net/minecraft/world/entity/monster/Strider.java b/src/main/java/net/minecraft/world/entity/monster/Strider.java -index 0380f8800f87afa3f8ee2b4be508b5f08e35a6ac..f6dd5e7710ad26d843c986ce068d4b30d5586ce4 100644 +index 0380f8800f87afa3f8ee2b4be508b5f08e35a6ac..07c3191f72520086dcf7ed7a00005003b773e08d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Strider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java @@ -97,6 +97,18 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { @@ -3935,7 +3935,7 @@ index 0380f8800f87afa3f8ee2b4be508b5f08e35a6ac..f6dd5e7710ad26d843c986ce068d4b30 @Override protected void registerGoals() { this.panicGoal = new PanicGoal(this, 1.65D); -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, this.panicGoal); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); this.temptGoal = new TemptGoal(this, 1.4D, Strider.TEMPT_ITEMS, false); @@ -3949,7 +3949,7 @@ index 0380f8800f87afa3f8ee2b4be508b5f08e35a6ac..f6dd5e7710ad26d843c986ce068d4b30 if (flag && !this.isSilent()) { this.level.playSound((Player) null, this.getX(), this.getY(), this.getZ(), SoundEvents.STRIDER_EAT, this.getSoundSource(), 1.0F, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F); diff --git a/src/main/java/net/minecraft/world/entity/monster/Vex.java b/src/main/java/net/minecraft/world/entity/monster/Vex.java -index 8ff606567297296e30e7e543890d9971d6c165b0..90963e11e1c75e17a38ef0b3c4918c306b0ed448 100644 +index 8ff606567297296e30e7e543890d9971d6c165b0..660b12722adbad6d80ed447b23e4718a1a21d706 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vex.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vex.java @@ -58,6 +58,45 @@ public class Vex extends Monster { @@ -4011,12 +4011,12 @@ index 8ff606567297296e30e7e543890d9971d6c165b0..90963e11e1c75e17a38ef0b3c4918c30 protected void registerGoals() { super.registerGoals(); this.goalSelector.addGoal(0, new FloatGoal(this)); -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(4, new Vex.VexChargeAttackGoal()); this.goalSelector.addGoal(8, new Vex.VexRandomMoveGoal()); this.goalSelector.addGoal(9, new LookAtPlayerGoal(this, Player.class, 3.0F, 1.0F)); this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Mob.class, 8.0F)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{Raider.class})).setAlertOthers()); this.targetSelector.addGoal(2, new Vex.VexCopyOwnerTargetGoal(this)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Player.class, true)); @@ -4033,7 +4033,7 @@ index 8ff606567297296e30e7e543890d9971d6c165b0..90963e11e1c75e17a38ef0b3c4918c30 } - private class VexMoveControl extends MoveControl { -+ private class VexMoveControl extends net.pl3x.purpur.controller.FlyingMoveControllerWASD { // Purpur ++ private class VexMoveControl extends org.purpurmc.purpur.controller.FlyingMoveControllerWASD { // Purpur public VexMoveControl(Vex entityvex) { super(entityvex); @@ -4055,7 +4055,7 @@ index 8ff606567297296e30e7e543890d9971d6c165b0..90963e11e1c75e17a38ef0b3c4918c30 Vec3 vec3d1 = Vex.this.getDeltaMovement(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -index 85294ab8eaa654be9358f489cec7e1ae665fc34b..6419deb7a712c1b2562259bc2e8e188170afac84 100644 +index 85294ab8eaa654be9358f489cec7e1ae665fc34b..84af15aae78f9f50f358a3aee43eba683bd418dd 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java @@ -57,14 +57,28 @@ public class Vindicator extends AbstractIllager { @@ -4078,17 +4078,17 @@ index 85294ab8eaa654be9358f489cec7e1ae665fc34b..6419deb7a712c1b2562259bc2e8e1881 protected void registerGoals() { super.registerGoals(); this.goalSelector.addGoal(0, new FloatGoal(this)); -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new Vindicator.VindicatorBreakDoorGoal(this)); this.goalSelector.addGoal(2, new AbstractIllager.RaiderOpenDoorGoal(this)); this.goalSelector.addGoal(3, new Raider.HoldGroundAttackGoal(this, 10.0F)); this.goalSelector.addGoal(4, new Vindicator.VindicatorMeleeAttackGoal(this)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, Raider.class)).setAlertOthers()); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Witch.java b/src/main/java/net/minecraft/world/entity/monster/Witch.java -index 43e4562dcb0de8db42ff556134f649b5e0aa4284..32c64dc093f6dcebcb903295fc71a8f95ed752b7 100644 +index 43e4562dcb0de8db42ff556134f649b5e0aa4284..75bc4ade487e92aa939b7a04bf3d22170bc6ea9e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Witch.java +++ b/src/main/java/net/minecraft/world/entity/monster/Witch.java @@ -59,6 +59,18 @@ public class Witch extends Raider implements RangedAttackMob { @@ -4114,12 +4114,12 @@ index 43e4562dcb0de8db42ff556134f649b5e0aa4284..32c64dc093f6dcebcb903295fc71a8f9 }); this.attackPlayersGoal = new NearestAttackableWitchTargetGoal<>(this, Player.class, 10, true, false, (Predicate) null); this.goalSelector.addGoal(1, new FloatGoal(this)); -+ this.goalSelector.addGoal(1, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(1, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(2, new RangedAttackGoal(this, 1.0D, 60, 10.0F)); this.goalSelector.addGoal(2, new WaterAvoidingRandomStrollGoal(this, 1.0D)); this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(3, new RandomLookAroundGoal(this)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new HurtByTargetGoal(this, new Class[]{Raider.class})); this.targetSelector.addGoal(2, this.healRaidersGoal); this.targetSelector.addGoal(3, this.attackPlayersGoal); @@ -4201,7 +4201,7 @@ index 056e4c2f7f632dadc0015710c032a0b718d46ff9..54a545836f3c318e7f90d43aca7fea8a this.level.getProfiler().pop(); this.updateActivity(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index e72e9b748b3f3e34baddf01366c703efba50c67c..a110b65e0bf1f2e1b69343a6ac6bbfabeab22bb4 100644 +index e72e9b748b3f3e34baddf01366c703efba50c67c..d6ae8468f5d507b8278fa887d1d1770db212da0c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -104,11 +104,25 @@ public class Zombie extends Monster { @@ -4222,11 +4222,11 @@ index e72e9b748b3f3e34baddf01366c703efba50c67c..a110b65e0bf1f2e1b69343a6ac6bbfab + @Override protected void registerGoals() { -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur if (level.paperConfig.zombiesTargetTurtleEggs) this.goalSelector.addGoal(4, new Zombie.ZombieAttackTurtleEggGoal(this, 1.0D, 3)); // Paper this.goalSelector.addGoal(8, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.addBehaviourGoals(); } @@ -4379,7 +4379,7 @@ index ea0040a3494709efb4819c7530dbcc37aa62e86a..5025d4571a34fe9e0e58ada6b81b0647 this.level.getProfiler().pop(); PiglinBruteAi.updateActivity(this); diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index dbd17107f08c218d88ef075fc04823b83083648b..787d4def6227fa64a8938e5cc291d60eeef7a3bb 100644 +index dbd17107f08c218d88ef075fc04823b83083648b..033c64fb98e08a67636c1c5e3d67b15ba0c0098b 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -151,6 +151,23 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -4399,7 +4399,7 @@ index dbd17107f08c218d88ef075fc04823b83083648b..787d4def6227fa64a8938e5cc291d60e + + @Override + protected void registerGoals() { -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); + } + // Purpur end + @@ -4514,8 +4514,84 @@ index 15744949537430d8d8ae71ea72481126c9aff7bd..36417466ae30e9f7f3e953fd4ff98ed3 // CraftBukkit end Projectile(EntityType type, Level world) { +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +index 5aae88e20bc04560d6ad52cfcaa872d28bfcee8f..1ba59900ddf403453aeb4f82b097feaab3dae3ff 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +@@ -1287,4 +1287,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { + return !entity.valid && entity.level.addFreshEntity(entity, reason); + } + // Paper end ++ ++ // Purpur start ++ @Override ++ public org.bukkit.entity.Player getRider() { ++ Player rider = getHandle().getRider(); ++ return rider != null ? (org.bukkit.entity.Player) rider.getBukkitEntity() : null; ++ } ++ ++ @Override ++ public boolean hasRider() { ++ return getHandle().getRider() != null; ++ } ++ ++ @Override ++ public boolean isRidable() { ++ return getHandle().isRidable(); ++ } ++ ++ @Override ++ public boolean isRidableInWater() { ++ return getHandle().rideableUnderWater(); ++ } ++ // Purpur end + } +diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +index aaf47d3f58819ead3553973c159c5c6eec4abe43..6d38c0478210bf264afd48be3e7ba7fee296ebc1 100644 +--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java ++++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +@@ -542,6 +542,15 @@ public class CraftEventFactory { + } + craftServer.getPluginManager().callEvent(event); + ++ // Purpur start ++ if (who != null) { ++ switch (action) { ++ case LEFT_CLICK_BLOCK, LEFT_CLICK_AIR -> who.processClick(InteractionHand.MAIN_HAND); ++ case RIGHT_CLICK_BLOCK, RIGHT_CLICK_AIR -> who.processClick(InteractionHand.OFF_HAND); ++ } ++ } ++ // Purpur end ++ + return event; + } + +@@ -965,6 +974,7 @@ public class CraftEventFactory { + damageCause = DamageCause.ENTITY_EXPLOSION; + } + event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), entity.getBukkitEntity(), damageCause, modifiers, modifierFunctions, source.isCritical()); // Paper - add critical damage API ++ damager.processClick(InteractionHand.MAIN_HAND); // Purpur + } + event.setCancelled(cancelled); + +@@ -1050,6 +1060,7 @@ public class CraftEventFactory { + if (!event.isCancelled()) { + event.getEntity().setLastDamageCause(event); + } ++ damager.getHandle().processClick(InteractionHand.MAIN_HAND); // Purpur + return event; + } + +@@ -1109,6 +1120,7 @@ public class CraftEventFactory { + EntityDamageEvent event; + if (damager != null) { + event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, modifiers, modifierFunctions, critical); // Paper - add critical damage API ++ damager.processClick(InteractionHand.MAIN_HAND); // Purpur + } else { + event = new EntityDamageEvent(damagee.getBukkitEntity(), cause, modifiers, modifierFunctions); + } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index f589e4376f88c7774a7fe999cad4d11a59379cd9..f5cdf3338411650add4a2eb41e0412182b1f6fdf 100644 +index 45a99a5fc63ee4d4f166cd47b1db4d412170dbe2..8fa551bad32ea09cb70f12aa8c84582048ede45f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -156,4 +156,9 @@ public class PurpurConfig { @@ -4529,7 +4605,7 @@ index f589e4376f88c7774a7fe999cad4d11a59379cd9..f5cdf3338411650add4a2eb41e041218 + } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8bc89d48695c816a1db77f9cdffd05f35afea92a..defc41f65e0899c2ae0984b55aeebcb8f606f040 100644 +index 41e1c1c801f7734d123e7e8fb68b84167d49ff6c..08180dd66c3ab3e96437013b27b0224ab4241187 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -93,4 +93,532 @@ public class PurpurWorldConfig { @@ -5067,11 +5143,11 @@ index 8bc89d48695c816a1db77f9cdffd05f35afea92a..defc41f65e0899c2ae0984b55aeebcb8 } diff --git a/src/main/java/org/purpurmc/purpur/controller/FlyingMoveControllerWASD.java b/src/main/java/org/purpurmc/purpur/controller/FlyingMoveControllerWASD.java new file mode 100644 -index 0000000000000000000000000000000000000000..d0f6c7d47d158b49fb6a5fe2a7480ffd53f844c5 +index 0000000000000000000000000000000000000000..d0f8fc61539b0a395cfb46f61faac96c86b13920 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/controller/FlyingMoveControllerWASD.java @@ -0,0 +1,61 @@ -+package net.pl3x.purpur.controller; ++package org.purpurmc.purpur.controller; + +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.ai.attributes.Attributes; @@ -5134,11 +5210,11 @@ index 0000000000000000000000000000000000000000..d0f6c7d47d158b49fb6a5fe2a7480ffd +} diff --git a/src/main/java/org/purpurmc/purpur/controller/FlyingWithSpacebarMoveControllerWASD.java b/src/main/java/org/purpurmc/purpur/controller/FlyingWithSpacebarMoveControllerWASD.java new file mode 100644 -index 0000000000000000000000000000000000000000..79d23cb66bc825fe78ecc249f12ef8b9851e09f8 +index 0000000000000000000000000000000000000000..96e928f2941d605a09ab1a7ecb8436edf8d0139e --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/controller/FlyingWithSpacebarMoveControllerWASD.java @@ -0,0 +1,61 @@ -+package net.pl3x.purpur.controller; ++package org.purpurmc.purpur.controller; + +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.ai.attributes.Attributes; @@ -5201,11 +5277,11 @@ index 0000000000000000000000000000000000000000..79d23cb66bc825fe78ecc249f12ef8b9 +} diff --git a/src/main/java/org/purpurmc/purpur/controller/LookControllerWASD.java b/src/main/java/org/purpurmc/purpur/controller/LookControllerWASD.java new file mode 100644 -index 0000000000000000000000000000000000000000..b93fe26c357930d5c0242da8137443feb216f9dd +index 0000000000000000000000000000000000000000..9e280caf99737497e0fa1523146faae5cf1868b2 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/controller/LookControllerWASD.java @@ -0,0 +1,76 @@ -+package net.pl3x.purpur.controller; ++package org.purpurmc.purpur.controller; + + +import net.minecraft.network.protocol.game.ClientboundMoveEntityPacket; @@ -5283,17 +5359,17 @@ index 0000000000000000000000000000000000000000..b93fe26c357930d5c0242da8137443fe +} diff --git a/src/main/java/org/purpurmc/purpur/controller/MoveControllerWASD.java b/src/main/java/org/purpurmc/purpur/controller/MoveControllerWASD.java new file mode 100644 -index 0000000000000000000000000000000000000000..4a3a1eca04a58682d5aeb720832bad5cc8ba2d9c +index 0000000000000000000000000000000000000000..6719c246dbd4c3b2af925f37967976c2b1db2f3c --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/controller/MoveControllerWASD.java @@ -0,0 +1,89 @@ -+package net.pl3x.purpur.controller; ++package org.purpurmc.purpur.controller; + +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.control.MoveControl; +import net.minecraft.world.entity.player.Player; -+import net.pl3x.purpur.event.entity.RidableSpacebarEvent; ++import org.purpurmc.purpur.event.entity.RidableSpacebarEvent; + +public class MoveControllerWASD extends MoveControl { + protected final Mob entity; @@ -5378,11 +5454,11 @@ index 0000000000000000000000000000000000000000..4a3a1eca04a58682d5aeb720832bad5c +} diff --git a/src/main/java/org/purpurmc/purpur/controller/WaterMoveControllerWASD.java b/src/main/java/org/purpurmc/purpur/controller/WaterMoveControllerWASD.java new file mode 100644 -index 0000000000000000000000000000000000000000..c9b24eeaa4221c56dc5030ad4574499e1a03727d +index 0000000000000000000000000000000000000000..ba2a37dad43e238e54632975abea8ee6fafaa9e0 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/controller/WaterMoveControllerWASD.java @@ -0,0 +1,50 @@ -+package net.pl3x.purpur.controller; ++package org.purpurmc.purpur.controller; + +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.ai.attributes.Attributes; @@ -5434,11 +5510,11 @@ index 0000000000000000000000000000000000000000..c9b24eeaa4221c56dc5030ad4574499e +} diff --git a/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java new file mode 100644 -index 0000000000000000000000000000000000000000..fda24d4ecff91cc28d2a7a45fbb55ea734261153 +index 0000000000000000000000000000000000000000..d55f7611599b2a339293688861100cb8dae9f6c6 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/entity/DolphinSpit.java @@ -0,0 +1,99 @@ -+package net.pl3x.purpur.entity; ++package org.purpurmc.purpur.entity; + +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.server.level.ServerLevel; @@ -5539,11 +5615,11 @@ index 0000000000000000000000000000000000000000..fda24d4ecff91cc28d2a7a45fbb55ea7 +} diff --git a/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java new file mode 100644 -index 0000000000000000000000000000000000000000..b196bee2ea6e67897b367d2be1800f16a89a6167 +index 0000000000000000000000000000000000000000..2eca8317e991ec46cc88a4c7d6d8b50152ba4ea7 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/entity/PhantomFlames.java @@ -0,0 +1,114 @@ -+package net.pl3x.purpur.entity; ++package org.purpurmc.purpur.entity; + +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.server.level.ServerLevel; @@ -5659,11 +5735,11 @@ index 0000000000000000000000000000000000000000..b196bee2ea6e67897b367d2be1800f16 +} diff --git a/src/main/java/org/purpurmc/purpur/entity/ai/HasRider.java b/src/main/java/org/purpurmc/purpur/entity/ai/HasRider.java new file mode 100644 -index 0000000000000000000000000000000000000000..bd48d16bbe3d9b10541a5e65c037926b3a58af22 +index 0000000000000000000000000000000000000000..780aaaedb79892d5721b6409a5939e028612e270 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/entity/ai/HasRider.java @@ -0,0 +1,20 @@ -+package net.pl3x.purpur.entity.ai; ++package org.purpurmc.purpur.entity.ai; + +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.ai.goal.Goal; @@ -5685,11 +5761,11 @@ index 0000000000000000000000000000000000000000..bd48d16bbe3d9b10541a5e65c037926b +} diff --git a/src/main/java/org/purpurmc/purpur/entity/ai/HorseHasRider.java b/src/main/java/org/purpurmc/purpur/entity/ai/HorseHasRider.java new file mode 100644 -index 0000000000000000000000000000000000000000..8eefb7b7eb33aecf48ac206d3f0139e0cf342e35 +index 0000000000000000000000000000000000000000..432f4f3d82af2f19820890b68d33189a9f2c69f9 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/entity/ai/HorseHasRider.java @@ -0,0 +1,17 @@ -+package net.pl3x.purpur.entity.ai; ++package org.purpurmc.purpur.entity.ai; + +import net.minecraft.world.entity.animal.horse.AbstractHorse; + @@ -5706,84 +5782,8 @@ index 0000000000000000000000000000000000000000..8eefb7b7eb33aecf48ac206d3f0139e0 + return super.canUse() && horse.isSaddled(); + } +} -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 5aae88e20bc04560d6ad52cfcaa872d28bfcee8f..1ba59900ddf403453aeb4f82b097feaab3dae3ff 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1287,4 +1287,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { - return !entity.valid && entity.level.addFreshEntity(entity, reason); - } - // Paper end -+ -+ // Purpur start -+ @Override -+ public org.bukkit.entity.Player getRider() { -+ Player rider = getHandle().getRider(); -+ return rider != null ? (org.bukkit.entity.Player) rider.getBukkitEntity() : null; -+ } -+ -+ @Override -+ public boolean hasRider() { -+ return getHandle().getRider() != null; -+ } -+ -+ @Override -+ public boolean isRidable() { -+ return getHandle().isRidable(); -+ } -+ -+ @Override -+ public boolean isRidableInWater() { -+ return getHandle().rideableUnderWater(); -+ } -+ // Purpur end - } -diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index aaf47d3f58819ead3553973c159c5c6eec4abe43..6d38c0478210bf264afd48be3e7ba7fee296ebc1 100644 ---- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -542,6 +542,15 @@ public class CraftEventFactory { - } - craftServer.getPluginManager().callEvent(event); - -+ // Purpur start -+ if (who != null) { -+ switch (action) { -+ case LEFT_CLICK_BLOCK, LEFT_CLICK_AIR -> who.processClick(InteractionHand.MAIN_HAND); -+ case RIGHT_CLICK_BLOCK, RIGHT_CLICK_AIR -> who.processClick(InteractionHand.OFF_HAND); -+ } -+ } -+ // Purpur end -+ - return event; - } - -@@ -965,6 +974,7 @@ public class CraftEventFactory { - damageCause = DamageCause.ENTITY_EXPLOSION; - } - event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), entity.getBukkitEntity(), damageCause, modifiers, modifierFunctions, source.isCritical()); // Paper - add critical damage API -+ damager.processClick(InteractionHand.MAIN_HAND); // Purpur - } - event.setCancelled(cancelled); - -@@ -1050,6 +1060,7 @@ public class CraftEventFactory { - if (!event.isCancelled()) { - event.getEntity().setLastDamageCause(event); - } -+ damager.getHandle().processClick(InteractionHand.MAIN_HAND); // Purpur - return event; - } - -@@ -1109,6 +1120,7 @@ public class CraftEventFactory { - EntityDamageEvent event; - if (damager != null) { - event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, modifiers, modifierFunctions, critical); // Paper - add critical damage API -+ damager.processClick(InteractionHand.MAIN_HAND); // Purpur - } else { - event = new EntityDamageEvent(damagee.getBukkitEntity(), cause, modifiers, modifierFunctions); - } diff --git a/src/test/java/com/destroystokyo/paper/entity/ai/VanillaMobGoalTest.java b/src/test/java/com/destroystokyo/paper/entity/ai/VanillaMobGoalTest.java -index b2d510459bcf90a3611f3d91dae4ccc3d29b4079..2ddf338f40092f8ef1db3ea5c175300471566d51 100644 +index b2d510459bcf90a3611f3d91dae4ccc3d29b4079..7a052f6deaa30f8a177a2aaf172f9da6c308a22b 100644 --- a/src/test/java/com/destroystokyo/paper/entity/ai/VanillaMobGoalTest.java +++ b/src/test/java/com/destroystokyo/paper/entity/ai/VanillaMobGoalTest.java @@ -37,7 +37,7 @@ public class VanillaMobGoalTest { @@ -5791,7 +5791,7 @@ index b2d510459bcf90a3611f3d91dae4ccc3d29b4079..2ddf338f40092f8ef1db3ea5c1753004 List> classes; - try (ScanResult scanResult = new ClassGraph().enableAllInfo().whitelistPackages("net.minecraft").scan()) { -+ try (ScanResult scanResult = new ClassGraph().enableAllInfo().whitelistPackages("net.minecraft", "net.pl3x.purpur.entity.ai").scan()) { // Purpur ++ try (ScanResult scanResult = new ClassGraph().enableAllInfo().whitelistPackages("net.minecraft", "org.purpurmc.purpur.entity.ai").scan()) { // Purpur classes = scanResult.getSubclasses(net.minecraft.world.entity.ai.goal.Goal.class.getName()).loadClasses(); } diff --git a/patches/server/0007-Configurable-entity-base-attributes.patch b/patches/server/0007-Configurable-entity-base-attributes.patch index f61794c98..49561eeaf 100644 --- a/patches/server/0007-Configurable-entity-base-attributes.patch +++ b/patches/server/0007-Configurable-entity-base-attributes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 20930c864ee1cb39367b5515dc8579f31d40ad21..1582bba7fa315c539cf8b57ae8b760d74091b6ed 100644 +index 8389be51e564c734b899ee1049eeb811d111d263..0f34da80fe3dabe264c7cbb894f6f732d068a4b6 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -149,7 +149,7 @@ import org.bukkit.plugin.PluginManager; @@ -34,7 +34,7 @@ index 03adc3b746e05bb4b0514ba4a66c101b9742ceed..ec261673ac444fd5de9c8556cde5d788 @Override diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 0dfd5a179fe3e409c159e2a79be58ad942be06a8..d181752a909305d4fc18c399f831276e8e646ea3 100644 +index c455a43a87b07ba5f7787bb9f3bbd0caf8095151..8da5c1a3b0dce2952a14242620556ca10d340da8 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -285,6 +285,7 @@ public abstract class LivingEntity extends Entity { @@ -55,7 +55,7 @@ index 0dfd5a179fe3e409c159e2a79be58ad942be06a8..d181752a909305d4fc18c399f831276e return this.brain; } 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 4a534357889892b57cff818f4dbd000795e74e34..3e957f4f983e337219b4eed31134f08357b4cb05 100644 +index 45dd82005ff4d03041a9c42e6eacaa2b8a7dc9f8..aaf18021fe4e37d4ff3b04390268c18c47232f06 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java @@ -83,6 +83,18 @@ public class Bat extends AmbientCreature { @@ -78,7 +78,7 @@ index 4a534357889892b57cff818f4dbd000795e74e34..3e957f4f983e337219b4eed31134f083 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index 1163bb36350097557851eaa95b0cf53da79b6a6d..b29c1c66d4bed98514aa5ae0ba52d83f579fac4a 100644 +index 0d47db2163ef01365513af2ccec8ea74bfc838c9..64ad501a6bce58f06b38ea2d758664c19b4d7996 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java @@ -210,6 +210,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -94,7 +94,7 @@ index 1163bb36350097557851eaa95b0cf53da79b6a6d..b29c1c66d4bed98514aa5ae0ba52d83f @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java -index 88362a02776f481fc8c17cf8a20805e5c28fca5e..5cb689e8a22e8ba58a69acbf717baa51aeb4732c 100644 +index a63a18eb2c87d01b2fca460f40bc2848f9a4b9cb..da496f1c3728cbe8aa009d2533f166cb6736d1b9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java @@ -140,6 +140,11 @@ public class Cat extends TamableAnimal { @@ -110,7 +110,7 @@ index 88362a02776f481fc8c17cf8a20805e5c28fca5e..5cb689e8a22e8ba58a69acbf717baa51 public ResourceLocation getResourceLocation() { diff --git a/src/main/java/net/minecraft/world/entity/animal/Chicken.java b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -index cdb6e71f62294e48aa20a1ac0a38e208ce8e7e4c..e549add41f986f9eab68f148865a4170f732c814 100644 +index a64b7bd9b8a3cf0d79689b71b84ca1cad7bde2f1..419a774733ac3d562e636f2615005c953bbd87df 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java @@ -62,6 +62,11 @@ public class Chicken extends Animal { @@ -142,7 +142,7 @@ index ea7227ade90a713242290cadb13692f33effa5c0..f772c60ab5b4ac5468483d9765386b9b @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index ec20c082f545f350927d980c7e0b0d0b742ed791..8b9c7c2292afed5928b262dad4d825473d400880 100644 +index f1f333892fa539ad96b7ecb5b7c4be03c8720f47..d602597132b69c51c6da9115d0a2c9a8a1f39405 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -50,6 +50,11 @@ public class Cow extends Animal { @@ -158,7 +158,7 @@ index ec20c082f545f350927d980c7e0b0d0b742ed791..8b9c7c2292afed5928b262dad4d82547 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -index 827872f57914b3d8d8b8ba388a05f4c5ea49aa0e..f34e1c342562a509539f2176a91e6132cd6672b2 100644 +index 9e12331583db172cf54798656bd6a4c0d38fa66c..16f32f0a58b090174f3d8b38c583adbcca58c9e4 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java @@ -148,6 +148,11 @@ public class Dolphin extends WaterAnimal { @@ -174,7 +174,7 @@ index 827872f57914b3d8d8b8ba388a05f4c5ea49aa0e..f34e1c342562a509539f2176a91e6132 @Nullable diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 61fd332a91625cc1101fde5b66c759f5e44522fc..5665ee66a3b7355a6dc65409afda42ea94449b0b 100644 +index 49ffee9ce88d2f871b7f179835c7520d1c188070..b07b1302978b2a1212e094652e46ad2754fb1d6c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -170,6 +170,11 @@ public class Fox extends Animal { @@ -190,7 +190,7 @@ index 61fd332a91625cc1101fde5b66c759f5e44522fc..5665ee66a3b7355a6dc65409afda42ea @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -index 1e8d4985998cfbe862028228bc1f5c411899ff3f..6d1c077066dfe910b56b4882fd0b5005b56b9bd2 100644 +index 78387bc4020ce06dfbdb0cc4af978b5a4f2645b3..945a07babd8860c912c8aca1555c09922d5feaf3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java @@ -80,6 +80,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob { @@ -222,7 +222,7 @@ index 66e146b92348b48fd53cc2aabd5335da66f50edc..66f628a699e82d2c632dde4185a92f29 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -index 152cd9e2169d25e475f36a618c63aad10e878ee9..b1fb4f64ea567a96e69aa483fec5f39eecfd9a8d 100644 +index d3311df20c37517e7c4ae1b8fbee6add6d32332e..ccb18fea0e03d08405b0fff5e9df5025f02cebf7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java @@ -79,6 +79,11 @@ public class Ocelot extends Animal { @@ -238,7 +238,7 @@ index 152cd9e2169d25e475f36a618c63aad10e878ee9..b1fb4f64ea567a96e69aa483fec5f39e public boolean isTrusting() { diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index ce63fcbe48d3bab8a8a9e4b283fc561b30399e21..c98a143e525f55606d37e3fa14751c97e37218c0 100644 +index ed8890d6a5431412248722182c697844f7792c6e..1a4434432516f8b7f2bbbc64f9554c340530ce89 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -126,6 +126,12 @@ public class Panda extends Animal { @@ -267,7 +267,7 @@ index ce63fcbe48d3bab8a8a9e4b283fc561b30399e21..c98a143e525f55606d37e3fa14751c97 if (this.isLazy()) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index 8deca54f90e1ec7baa8caf59cca0c4b3e705e977..d5dfa6b9480c4314eaa53bbd95efd02e0f89a75b 100644 +index ae436398af6d9b86518d21fca27d2acb6e37dc77..1c3d1ce288d3446291fb729b0c6caeab4202fcb7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -181,6 +181,11 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { @@ -283,7 +283,7 @@ index 8deca54f90e1ec7baa8caf59cca0c4b3e705e977..d5dfa6b9480c4314eaa53bbd95efd02e @Nullable diff --git a/src/main/java/net/minecraft/world/entity/animal/Pig.java b/src/main/java/net/minecraft/world/entity/animal/Pig.java -index 0d1cfb973efb3fb472a0c57e75bad00dea769357..e2d4e9f1955fb40b43e82e4876a39560ab2e23d1 100644 +index 32139ede373d72fd8745827052daf5c9a51cdcb9..7313d6bd41a312a8f9352240f181543d7cccb378 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Pig.java +++ b/src/main/java/net/minecraft/world/entity/animal/Pig.java @@ -74,6 +74,11 @@ public class Pig extends Animal implements ItemSteerable, Saddleable { @@ -299,7 +299,7 @@ index 0d1cfb973efb3fb472a0c57e75bad00dea769357..e2d4e9f1955fb40b43e82e4876a39560 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -index a2361524dcc9dcffe28a4c30026ac0540146c989..36f6d2b2f074eb49187a2d0badbf2bedde8a6935 100644 +index 11714497f323350d8244962517d8bb887d35dd0a..69e495a93cd1519297dcd8ef4971cca61b80f201 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java @@ -89,6 +89,11 @@ public class PolarBear extends Animal implements NeutralMob { @@ -331,7 +331,7 @@ index bc1cf0e63c9a1df534017246687f6a13cf976ff8..654ad8cd11bc11432811ed7408c0ce9b @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -index 3d8dfab5c7dfa8a506f40379aa36e6963de4e35a..845931a76d3b94ee9a1c0f238c3ea254950700bc 100644 +index 373bf90cc838fe7317ef8458552eefeeea05b6d6..562262f4811d5748dd04a284f243024c059c8756 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java @@ -130,6 +130,11 @@ public class Rabbit extends Animal { @@ -363,7 +363,7 @@ index cf88c1d95a866853568d4fa5f67850bc54127d11..e42bdde7947e532a3a5517c874411a39 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -index 8922ce00b1a4acd42434fa4681c8d56a39cf9348..cfad0b694c50b3dd2b91570717992b670d18479f 100644 +index b0fb05dcb63d132071274ae2de0c105dc55420d0..fbab9473e4ccce29ed55ebf707a5aacd128820cb 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java @@ -126,6 +126,11 @@ public class Sheep extends Animal implements Shearable { @@ -379,7 +379,7 @@ index 8922ce00b1a4acd42434fa4681c8d56a39cf9348..cfad0b694c50b3dd2b91570717992b67 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index 2ec2d957d5db56ea0067e917e5b445d8619bb87b..5cbb66da8aacbdcec3c22610708d91af4dd87cd3 100644 +index e091170d1ed24ab1bee4fc17337643ddc2bf5685..e194774b2ba7976565642534ceeca2079e23945e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -64,6 +64,11 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -395,7 +395,7 @@ index 2ec2d957d5db56ea0067e917e5b445d8619bb87b..5cbb66da8aacbdcec3c22610708d91af @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index 998f659aeff304dd481fa5e9c4b7e925d3cc019d..bb3792988864bb5fe7841c2cbdb583cb8e6fa489 100644 +index 6045c6e6388a0ad2aceabe6586abc85326807524..501b082e36b30140eef9540b8b217b9d45309dff 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -71,6 +71,11 @@ public class Squid extends WaterAnimal { @@ -427,7 +427,7 @@ index d78947aa30e4eebca67b94614ec0e2ac9afca36d..2de2dc96b7f5960d4cef3184c14409e0 public static String getPredefinedName(int variant) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 320f02f310fc1da2e5f41d0febd1ccfb48e0c4ea..730f0fdf968554e9e306ad984d6bd01861402705 100644 +index 43dea015a6a9093c98e8ff5a18e6a8360c30d59a..3d30ea6f2392e6ed2c7294a9194daee31dadc7d8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -96,6 +96,11 @@ public class Turtle extends Animal { @@ -443,7 +443,7 @@ index 320f02f310fc1da2e5f41d0febd1ccfb48e0c4ea..730f0fdf968554e9e306ad984d6bd018 public void setHomePos(BlockPos pos) { 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 3240a1b0759e4d1f189ff769519b4496af0657be..da7b3b5d683a3d48bb1726981a63999724032f44 100644 +index 4187d8fdb950781de8b414ed6928a3df4a89ba67..277637692e504cca04bfca7683c052295c2c5a86 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java @@ -114,6 +114,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -459,12 +459,12 @@ index 3240a1b0759e4d1f189ff769519b4496af0657be..da7b3b5d683a3d48bb1726981a639997 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 0667003613d3205eab3e729a297ba14d37ba3d22..f88f979cc66bf85ad3f1458581a82b0ed91c3f16 100644 +index 09a3ed5cd02e38eab3a66ada03b2651b8cbe1751..a2b2d3f670cd200d7fba40f8227964ef95c5b455 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -106,6 +106,11 @@ public class Axolotl extends Animal implements LerpingModel, Bucketable { protected void registerGoals() { - this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur } + + @Override @@ -491,7 +491,7 @@ index 563ead054aa41c8420d9b3f8c335dce20c229ac6..21aca411c458a1e80cdd6e97961f9a5c @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index 5b797d33252488bd242913b862eb599f7c8e7edc..8a34dd179eecb84ca3975fa8a0ae2e7bc2d57cee 100644 +index e73045a7046850f10d79809c53b6cdd9ceb8775a..c6ee03e25adac9ecebd1e1718588b84f57184ce9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java @@ -125,6 +125,32 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, @@ -589,7 +589,7 @@ index a91152df3d443d70b1aa9aff97b3746e0331c0a6..9f7203608e15fdce1bfbaf4198387687 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index b9a7f5e536afe6409f517133db7f0d6f3b481640..a077a0ac66f7244ca895835f97edbe4c65fc5553 100644 +index fb4af69075323a1d6c5e252115d5973dbdcadcd2..7a2a8365a8bb5b0f497b7f10d351f535a683cd96 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -108,6 +108,21 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { @@ -719,7 +719,7 @@ index 77d05979331af91a1fbe619d1c26fa883146add8..48b72eb4051d612648a1978b38299c0c public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 6a39bd861f27d517f8de9fc3f589c7e20b43d706..89680ef19b511ffbc241279647412f754085db4c 100644 +index 5e81df114108fa3f8ad8dc5e211737ee9f73290c..73506ce90426bdfb8fbc08687c6e21de637fbd77 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -154,6 +154,11 @@ public class EnderDragon extends Mob implements Enemy { @@ -735,7 +735,7 @@ index 6a39bd861f27d517f8de9fc3f589c7e20b43d706..89680ef19b511ffbc241279647412f75 public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 318bf2a0feea7b5eb15b56565d4aecc4cd2eb2b4..8aa986e4fff1b74b95e59b9b2cbee1356411df7c 100644 +index 5d7623a5ef12ec3151cbc4ac0a59959d8976b9ea..19f48278c5c8f9640683d61b9555074e140fa2ab 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -208,6 +208,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -760,7 +760,7 @@ index 318bf2a0feea7b5eb15b56565d4aecc4cd2eb2b4..8aa986e4fff1b74b95e59b9b2cbee135 } else { diff --git a/src/main/java/net/minecraft/world/entity/monster/Blaze.java b/src/main/java/net/minecraft/world/entity/monster/Blaze.java -index 5b49aed3f4998d7f02303da49ec3b960b6b00bd8..b1f82e0ce34081ac9d928f42d9ffbbfd507b4ca9 100644 +index 96912be8e98abf7b09b85a0830cd3e10c9225a0e..0075e2dd67c58bed30bfec1707291a1d92b13537 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Blaze.java +++ b/src/main/java/net/minecraft/world/entity/monster/Blaze.java @@ -67,6 +67,11 @@ public class Blaze extends Monster { @@ -792,7 +792,7 @@ index dd05c5f35d78d1385f793f4e34333ff242d136e1..45b53f11b52cc161775fcaa18567e4a7 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index 65844015acca05df42396822446e8105b4a01287..b149deea5f9151d5d310e0b933d355e1e77ada1d 100644 +index aa92e5a46078b10da6d51d65434d6163428583bb..cee9afa518547afab1f2772b0352dcf05752df44 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -133,6 +133,11 @@ public class Creeper extends Monster implements PowerableMob { @@ -808,7 +808,7 @@ index 65844015acca05df42396822446e8105b4a01287..b149deea5f9151d5d310e0b933d355e1 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -index af235aefbcff818d39297c3fb0a90a8e8f5a5d4b..c0e1ed8c536a848c99d1a96038f627cc99c627e7 100644 +index 6f8a1b1ec0de5c61a9fcadf4b6eb47a1bb2846c2..42ce331da58b749c17ece22c2ca9986a96c59438 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java @@ -79,6 +79,16 @@ public class Drowned extends Zombie implements RangedAttackMob { @@ -845,7 +845,7 @@ index 1f789b1d481234cafaa6e75c36a272bbd064482e..e25374b06e3babd93cd5bbdd58ea401a public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 841d6846a7607c787f3ea12bc438023a832e0886..66ff0e3aa1a7dfb233a459516c4c596c1bbe033e 100644 +index 3ab601ded08c435825202b295bbdb06eb26ce730..357a7cdcd98cc2c840ca3f9c164d66cfd7565138 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -98,6 +98,11 @@ public class EnderMan extends Monster implements NeutralMob { @@ -861,7 +861,7 @@ index 841d6846a7607c787f3ea12bc438023a832e0886..66ff0e3aa1a7dfb233a459516c4c596c @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Endermite.java b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -index a7eb3bdb45cfefbe290fdb26bc1444eb46ee8ae6..d5c8cba1c443681e8bf81db1298ea24c954b1136 100644 +index 1cb9d71c89f36b0c01d3e44388794d9ff745ba2c..16755569f1f2ea7cf6bfe52c279d8e192b9d0098 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java +++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java @@ -46,6 +46,11 @@ public class Endermite extends Monster { @@ -877,7 +877,7 @@ index a7eb3bdb45cfefbe290fdb26bc1444eb46ee8ae6..d5c8cba1c443681e8bf81db1298ea24c @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Evoker.java b/src/main/java/net/minecraft/world/entity/monster/Evoker.java -index 01c8ca72ff84f2beab0822247b0c44dc06b45ea0..f879bfa65b266728b570725e1ff9403f1732244d 100644 +index 42da0e32be040bce2fd712b31aff1fe74d7de8e9..eb794368625d96aef6883f2c45c6a21e06e33d0b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java @@ -57,6 +57,11 @@ public class Evoker extends SpellcasterIllager { @@ -893,7 +893,7 @@ index 01c8ca72ff84f2beab0822247b0c44dc06b45ea0..f879bfa65b266728b570725e1ff9403f @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Ghast.java b/src/main/java/net/minecraft/world/entity/monster/Ghast.java -index 31c3ad9c9fa42be535fd80b696c781f961e83ee1..93bd5c9fa3356d8d8575e109130fffb2fa4334c5 100644 +index 3429e259f7bd25a3032822b52bf2c4d9d3342f22..bfb413af45d30d99c762f9b0c52f60c3ef000106 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ghast.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ghast.java @@ -71,6 +71,11 @@ public class Ghast extends FlyingMob implements Enemy { @@ -909,12 +909,12 @@ index 31c3ad9c9fa42be535fd80b696c781f961e83ee1..93bd5c9fa3356d8d8575e109130fffb2 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java -index d95b110a025d48e7ab18f172e455593740e45252..c67f33f2e2e0ff5c2a85782185103325a6bf4535 100644 +index 6350749549298df1f4abf5a4ac62f254729c5917..a6f3cac3c6ee6129f61ab43e9afd82cc7b83e058 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java @@ -30,6 +30,13 @@ public class Giant extends Monster { - this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); - this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); + this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); } + + @Override @@ -927,7 +927,7 @@ index d95b110a025d48e7ab18f172e455593740e45252..c67f33f2e2e0ff5c2a85782185103325 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Guardian.java b/src/main/java/net/minecraft/world/entity/monster/Guardian.java -index 5023a117483de9c95c861bb075f0d2e689bf6289..170b5b4e3d023950c1c0a8e5d383ab5e5e888424 100644 +index 8571da53ae382d418608d1beb722a0d1b5606ed6..7747493846e7d9c5c65d5976519144a6db9bd3e0 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Guardian.java +++ b/src/main/java/net/minecraft/world/entity/monster/Guardian.java @@ -87,6 +87,11 @@ public class Guardian extends Monster { @@ -964,7 +964,7 @@ index 82a14d717e8f2ee005c2c410625b811cd016cdc3..81a3f6c1774b187be96b412dae44be62 public static boolean checkHuskSpawnRules(EntityType type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java -index d879310fddd27374c18dd77dee5b594c1939fce8..dfcaad2d90abd2ce6f4a3a340ac205ce70c061e1 100644 +index 647796e6f3352582c49c780a860a617ce7b44ddd..4ed0fb155dfae60cee24dc0752fa525c90f2f442 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java +++ b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java @@ -69,6 +69,13 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { @@ -1003,7 +1003,7 @@ index 95741b63d68bdf815212d718c3cc0fc689c0e4de..68abf045f0510abc45bdc2fd8c147f27 public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index 81104c73dfb9d0a2dd962c5f450e732f27a583d8..7e0affe953585b19686bb21b31a6a2b9534aba10 100644 +index e4401125da58e0a82a30f9b4a137f5804ae2a8dc..f4da51e75b3f8772f0d3de17ef4699845a08fdd1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -111,6 +111,11 @@ public class Phantom extends FlyingMob implements Enemy { @@ -1019,7 +1019,7 @@ index 81104c73dfb9d0a2dd962c5f450e732f27a583d8..7e0affe953585b19686bb21b31a6a2b9 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Pillager.java b/src/main/java/net/minecraft/world/entity/monster/Pillager.java -index 472ca632d9d2c9b8d58925792ee99a7dccc1ab4d..466c3e33d48223f6a94c018036b992d7aa57dc6c 100644 +index 1457c0eda11000a0513e601ea60b6ca4a5b463b6..2c7155f2b3c29ff1f777ff6b6d0b19ef922614ae 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Pillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Pillager.java @@ -73,6 +73,11 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve @@ -1035,7 +1035,7 @@ index 472ca632d9d2c9b8d58925792ee99a7dccc1ab4d..466c3e33d48223f6a94c018036b992d7 @Override 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 73a13cc8fe730ff88583d9af61ca581bd8aab99b..c1eea7e71aa364789a544e6491b2201bcb6a37c8 100644 +index ef09b5c6f52f342801213c701d8dbe68063129b9..b289e0fa4324f012464c655d82ccf59469ae6466 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java @@ -85,6 +85,11 @@ public class Ravager extends Raider { @@ -1051,7 +1051,7 @@ index 73a13cc8fe730ff88583d9af61ca581bd8aab99b..c1eea7e71aa364789a544e6491b2201b @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index 65dd85729822e3bfa2344b2d4a37e9de2913ed85..30eafae391ff5447cd9f61212798a54b026956c4 100644 +index d61488d80c10c75698424698c8c6a08315e948bc..db381e7fd6f4fb8d4b30800821a8fdf9c6dba63c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java @@ -102,6 +102,11 @@ public class Shulker extends AbstractGolem implements Enemy { @@ -1067,7 +1067,7 @@ index 65dd85729822e3bfa2344b2d4a37e9de2913ed85..30eafae391ff5447cd9f61212798a54b @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -index e597b85a6dee0671c00d7481558cdb8419531682..3481a2e178e5c101b6038e6506933d50861c3f9d 100644 +index b72866283e92433e95f0140037a1fd3182b0577a..cd26c22664fb23457f99fe04607146c8c6545307 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java +++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java @@ -51,6 +51,11 @@ public class Silverfish extends Monster { @@ -1099,7 +1099,7 @@ index 909a7bffcd0d7432f0714417c286fb75b6b951b9..f3d73b9cf3d3cd0d69ea2f8152a1ced4 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java -index 76546a356d34546099180a9c825d38c7297dec07..f8e25df1b84296962b85b09e94bc42b57588607a 100644 +index 8a3fcf98e4cb0a7473b198102c334e08696ab05c..92a5dc8a26bb6177634e5f1afb37f12828c70ace 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Slime.java +++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java @@ -101,6 +101,30 @@ public class Slime extends Mob implements Enemy { @@ -1143,7 +1143,7 @@ index 76546a356d34546099180a9c825d38c7297dec07..f8e25df1b84296962b85b09e94bc42b5 this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue((double) j); if (heal) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java -index 50c4fc838eba31e5f34e71a6fbafbb366ec17d06..3f61e97cadd1c94d55093a7771b241029aee99f3 100644 +index a31a5186a48e6ba90c2a87bec104d10bdc3c50d5..d095df11ffc34dd641bc2795365a4d1dda8cbc88 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Spider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java @@ -61,6 +61,11 @@ public class Spider extends Monster { @@ -1175,7 +1175,7 @@ index 8480687e452b7cad0d3e434cebe17e15c59bdc40..86b1c7a1ddd33249ce3d1ff25030d421 public static boolean checkStraySpawnRules(EntityType type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Strider.java b/src/main/java/net/minecraft/world/entity/monster/Strider.java -index f6dd5e7710ad26d843c986ce068d4b30d5586ce4..ff76fbb1618edc1aa6a58e9649e99291c90beffb 100644 +index 07c3191f72520086dcf7ed7a00005003b773e08d..e65eaf393b118e38fde8f525ac9b1d6e6f98e729 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Strider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java @@ -107,6 +107,11 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { @@ -1191,7 +1191,7 @@ index f6dd5e7710ad26d843c986ce068d4b30d5586ce4..ff76fbb1618edc1aa6a58e9649e99291 public static boolean checkStriderSpawnRules(EntityType type, LevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Vex.java b/src/main/java/net/minecraft/world/entity/monster/Vex.java -index 90963e11e1c75e17a38ef0b3c4918c306b0ed448..08f744680a07a877d6e235c0d9e4f108ddc46b78 100644 +index 660b12722adbad6d80ed447b23e4718a1a21d706..8747ebbc637ceb1c61a38baf063a3352aa093a1f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vex.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vex.java @@ -95,6 +95,11 @@ public class Vex extends Monster { @@ -1207,7 +1207,7 @@ index 90963e11e1c75e17a38ef0b3c4918c306b0ed448..08f744680a07a877d6e235c0d9e4f108 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java -index 6419deb7a712c1b2562259bc2e8e188170afac84..730fd18cd9dc334fe527283a2ba5e5259fbfead5 100644 +index 84af15aae78f9f50f358a3aee43eba683bd418dd..780172760fbfe60216ac624598403c22a2fe30df 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java @@ -67,6 +67,11 @@ public class Vindicator extends AbstractIllager { @@ -1223,7 +1223,7 @@ index 6419deb7a712c1b2562259bc2e8e188170afac84..730fd18cd9dc334fe527283a2ba5e525 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Witch.java b/src/main/java/net/minecraft/world/entity/monster/Witch.java -index 32c64dc093f6dcebcb903295fc71a8f95ed752b7..2eac41d27610a33adc6c2ef442cc687f0ddbdc5b 100644 +index 75bc4ade487e92aa939b7a04bf3d22170bc6ea9e..3bc25acc139b5d2b9fb20a491649ff613d5adc82 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Witch.java +++ b/src/main/java/net/minecraft/world/entity/monster/Witch.java @@ -69,6 +69,11 @@ public class Witch extends Raider implements RangedAttackMob { @@ -1271,7 +1271,7 @@ index 54a545836f3c318e7f90d43aca7fea8a6a56851d..fe315ebb69773d243feb2fbda369fc6f @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index a110b65e0bf1f2e1b69343a6ac6bbfabeab22bb4..e1e669bd992f105ba7f42312ba70a39f6d044500 100644 +index d6ae8468f5d507b8278fa887d1d1770db212da0c..b8be8cf1b9052c770abef02e3f16c48b676851e8 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -114,6 +114,11 @@ public class Zombie extends Monster { @@ -1390,12 +1390,12 @@ index 5025d4571a34fe9e0e58ada6b81b064716b8f672..f6734f2eb44af7b2389de5079831e0e4 public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 787d4def6227fa64a8938e5cc291d60eeef7a3bb..0a2131d7455d7de7c9a3f9d50710da870062e714 100644 +index 033c64fb98e08a67636c1c5e3d67b15ba0c0098b..b0fe7478f3dd5bacdef040caf9bbc75974303d89 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java @@ -166,6 +166,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler protected void registerGoals() { - this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); } + + @Override @@ -1422,7 +1422,7 @@ index ab648e7dafd78f414646cef96b422e87da5c1982..0bcfece84ac11f04671ed38a99b31da9 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index defc41f65e0899c2ae0984b55aeebcb8f606f040..20215510857b8e49ea0c93d35eddfbad7cd355b0 100644 +index 08180dd66c3ab3e96437013b27b0224ab4241187..aa9a7f5cbc5d20192455d0f241a0703f46404ed8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -104,257 +104,573 @@ public class PurpurWorldConfig { diff --git a/patches/server/0009-Barrels-and-enderchests-6-rows.patch b/patches/server/0009-Barrels-and-enderchests-6-rows.patch index f1d714bc4..c38298406 100644 --- a/patches/server/0009-Barrels-and-enderchests-6-rows.patch +++ b/patches/server/0009-Barrels-and-enderchests-6-rows.patch @@ -40,7 +40,7 @@ index e9d9245f7efaaeefc8f107b8016a462ce173816a..56dcc1b6ceaad998be62e3b8c125e8f5 return new ChestMenu(MenuType.GENERIC_9x6, syncId, playerInventory, inventory, 6); } diff --git a/src/main/java/net/minecraft/world/inventory/PlayerEnderChestContainer.java b/src/main/java/net/minecraft/world/inventory/PlayerEnderChestContainer.java -index 59acb1aab21e2dce0f046942f124b50ac1cb8d0f..a26cb4e4e4e23a06c970ea3c42c1060108708568 100644 +index 59acb1aab21e2dce0f046942f124b50ac1cb8d0f..6675f9fa1767389a1166302e27427f5e54330552 100644 --- a/src/main/java/net/minecraft/world/inventory/PlayerEnderChestContainer.java +++ b/src/main/java/net/minecraft/world/inventory/PlayerEnderChestContainer.java @@ -29,11 +29,34 @@ public class PlayerEnderChestContainer extends SimpleContainer { @@ -48,7 +48,7 @@ index 59acb1aab21e2dce0f046942f124b50ac1cb8d0f..a26cb4e4e4e23a06c970ea3c42c10601 public PlayerEnderChestContainer(Player owner) { - super(27); -+ super(net.pl3x.purpur.PurpurConfig.enderChestSixRows ? 54 : 27); // Purpur ++ super(org.purpurmc.purpur.PurpurConfig.enderChestSixRows ? 54 : 27); // Purpur this.owner = owner; // CraftBukkit end } @@ -56,7 +56,7 @@ index 59acb1aab21e2dce0f046942f124b50ac1cb8d0f..a26cb4e4e4e23a06c970ea3c42c10601 + // Purpur start + @Override + public int getContainerSize() { -+ if (net.pl3x.purpur.PurpurConfig.enderChestSixRows && net.pl3x.purpur.PurpurConfig.enderChestPermissionRows && owner != null && owner.getGameProfile() != null) { ++ if (org.purpurmc.purpur.PurpurConfig.enderChestSixRows && org.purpurmc.purpur.PurpurConfig.enderChestPermissionRows && owner != null && owner.getGameProfile() != null) { + org.bukkit.craftbukkit.entity.CraftHumanEntity bukkit = owner.getBukkitEntity(); + if (bukkit.hasPermission("purpur.enderchest.rows.six")) { + return 54; @@ -80,7 +80,7 @@ index 59acb1aab21e2dce0f046942f124b50ac1cb8d0f..a26cb4e4e4e23a06c970ea3c42c10601 this.activeChest = blockEntity; } diff --git a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java -index 16d677234616daec24e7250ff3e93aa3a83e9715..4e50f404baab0ae03f79de3b424c6a1765927f84 100644 +index 16d677234616daec24e7250ff3e93aa3a83e9715..51ef849b2a3af0276ed28dd3b27437d08b0387ce 100644 --- a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java +++ b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java @@ -86,6 +86,27 @@ public class EnderChestBlock extends AbstractChestBlock i @@ -88,8 +88,8 @@ index 16d677234616daec24e7250ff3e93aa3a83e9715..4e50f404baab0ae03f79de3b424c6a17 playerEnderChestContainer.setActiveChest(enderChestBlockEntity); player.openMenu(new SimpleMenuProvider((syncId, inventory, playerx) -> { + // Purpur start -+ if (net.pl3x.purpur.PurpurConfig.enderChestSixRows) { -+ if (net.pl3x.purpur.PurpurConfig.enderChestPermissionRows) { ++ if (org.purpurmc.purpur.PurpurConfig.enderChestSixRows) { ++ if (org.purpurmc.purpur.PurpurConfig.enderChestPermissionRows) { + org.bukkit.craftbukkit.entity.CraftHumanEntity bukkitPlayer = player.getBukkitEntity(); + if (bukkitPlayer.hasPermission("purpur.enderchest.rows.six")) { + return ChestMenu.sixRows(syncId, inventory, playerEnderChestContainer); @@ -112,7 +112,7 @@ index 16d677234616daec24e7250ff3e93aa3a83e9715..4e50f404baab0ae03f79de3b424c6a17 }, CONTAINER_TITLE)); player.awardStat(Stats.OPEN_ENDERCHEST); diff --git a/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java -index 5a47d58071b83ea911e4cb5e1cc5468801ad0d55..45e3b3bbfc5f188d7339550e3ce4b835fbd7048d 100644 +index 5a47d58071b83ea911e4cb5e1cc5468801ad0d55..673052e683520976399f38569e35faad83af9fe0 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java @@ -68,7 +68,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { @@ -121,7 +121,7 @@ index 5a47d58071b83ea911e4cb5e1cc5468801ad0d55..45e3b3bbfc5f188d7339550e3ce4b835 super(BlockEntityType.BARREL, pos, state); - this.items = NonNullList.withSize(27, ItemStack.EMPTY); + // Purpur start -+ this.items = NonNullList.withSize(switch (net.pl3x.purpur.PurpurConfig.barrelRows) { ++ this.items = NonNullList.withSize(switch (org.purpurmc.purpur.PurpurConfig.barrelRows) { + case 6 -> 54; + case 5 -> 45; + case 4 -> 36; @@ -139,7 +139,7 @@ index 5a47d58071b83ea911e4cb5e1cc5468801ad0d55..45e3b3bbfc5f188d7339550e3ce4b835 public int getContainerSize() { - return 27; + // Purpur start -+ return switch (net.pl3x.purpur.PurpurConfig.barrelRows) { ++ return switch (org.purpurmc.purpur.PurpurConfig.barrelRows) { + case 6 -> 54; + case 5 -> 45; + case 4 -> 36; @@ -157,7 +157,7 @@ index 5a47d58071b83ea911e4cb5e1cc5468801ad0d55..45e3b3bbfc5f188d7339550e3ce4b835 protected AbstractContainerMenu createMenu(int syncId, Inventory playerInventory) { - return ChestMenu.threeRows(syncId, playerInventory, this); + // Purpur start -+ return switch (net.pl3x.purpur.PurpurConfig.barrelRows) { ++ return switch (org.purpurmc.purpur.PurpurConfig.barrelRows) { + case 6 -> ChestMenu.sixRows(syncId, playerInventory, this); + case 5 -> ChestMenu.fiveRows(syncId, playerInventory, this); + case 4 -> ChestMenu.fourRows(syncId, playerInventory, this); @@ -169,8 +169,46 @@ index 5a47d58071b83ea911e4cb5e1cc5468801ad0d55..45e3b3bbfc5f188d7339550e3ce4b835 } @Override +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java +index 60fa587ce17e138d2baf8959c26e25ed1db17a4a..c6792356261cf95d838be9bcf9ea2d2f9f182bed 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java +@@ -165,8 +165,19 @@ public class CraftContainer extends AbstractContainerMenu { + case PLAYER: + case CHEST: + case ENDER_CHEST: ++ // Purpur start ++ this.delegate = new ChestMenu(org.purpurmc.purpur.PurpurConfig.enderChestSixRows ? MenuType.GENERIC_9x6 : MenuType.GENERIC_9x3, windowId, bottom, top, top.getContainerSize() / 9); ++ break; + case BARREL: +- this.delegate = new ChestMenu(MenuType.GENERIC_9x3, windowId, bottom, top, top.getContainerSize() / 9); ++ this.delegate = new ChestMenu(switch (org.purpurmc.purpur.PurpurConfig.barrelRows) { ++ case 6 -> MenuType.GENERIC_9x6; ++ case 5 -> MenuType.GENERIC_9x5; ++ case 4 -> MenuType.GENERIC_9x4; ++ case 2 -> MenuType.GENERIC_9x2; ++ case 1 -> MenuType.GENERIC_9x1; ++ default -> MenuType.GENERIC_9x3; ++ }, windowId, bottom, top, top.getContainerSize() / 9); ++ // Purpur end + break; + case DISPENSER: + case DROPPER: +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java +index 396a4ae3d5a829eda78ef98561333aea300aa722..91478d614a56d1ac371187515d4c92b2a373b65c 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java +@@ -81,7 +81,7 @@ public class CraftInventory implements Inventory { + + @Override + public void setContents(ItemStack[] items) { +- if (this.getSize() < items.length) { ++ if (false && this.getSize() < items.length) { // Purpur + throw new IllegalArgumentException("Invalid inventory size; expected " + this.getSize() + " or less"); + } + diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 8747593597ed270400ef3d3f6b141a0fb370f1b4..eaff201b75f74a41e14c43d522d7b87faf9296b3 100644 +index dac7a163df51604c522614c28a2d4d2c6ecd0eba..c961e81a0e8bc7360f8ef7235c576e6629b67b49 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -174,4 +174,39 @@ public class PurpurConfig { @@ -213,41 +251,3 @@ index 8747593597ed270400ef3d3f6b141a0fb370f1b4..eaff201b75f74a41e14c43d522d7b87f + enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); + } } -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java -index 60fa587ce17e138d2baf8959c26e25ed1db17a4a..72d656dfbdf21849f0c7a41de2f1dcf963623bec 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java -@@ -165,8 +165,19 @@ public class CraftContainer extends AbstractContainerMenu { - case PLAYER: - case CHEST: - case ENDER_CHEST: -+ // Purpur start -+ this.delegate = new ChestMenu(net.pl3x.purpur.PurpurConfig.enderChestSixRows ? MenuType.GENERIC_9x6 : MenuType.GENERIC_9x3, windowId, bottom, top, top.getContainerSize() / 9); -+ break; - case BARREL: -- this.delegate = new ChestMenu(MenuType.GENERIC_9x3, windowId, bottom, top, top.getContainerSize() / 9); -+ this.delegate = new ChestMenu(switch (net.pl3x.purpur.PurpurConfig.barrelRows) { -+ case 6 -> MenuType.GENERIC_9x6; -+ case 5 -> MenuType.GENERIC_9x5; -+ case 4 -> MenuType.GENERIC_9x4; -+ case 2 -> MenuType.GENERIC_9x2; -+ case 1 -> MenuType.GENERIC_9x1; -+ default -> MenuType.GENERIC_9x3; -+ }, windowId, bottom, top, top.getContainerSize() / 9); -+ // Purpur end - break; - case DISPENSER: - case DROPPER: -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java -index 396a4ae3d5a829eda78ef98561333aea300aa722..91478d614a56d1ac371187515d4c92b2a373b65c 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java -@@ -81,7 +81,7 @@ public class CraftInventory implements Inventory { - - @Override - public void setContents(ItemStack[] items) { -- if (this.getSize() < items.length) { -+ if (false && this.getSize() < items.length) { // Purpur - throw new IllegalArgumentException("Invalid inventory size; expected " + this.getSize() + " or less"); - } - diff --git a/patches/server/0010-Llama-API.patch b/patches/server/0010-Llama-API.patch index 530fdc86c..70797ea26 100644 --- a/patches/server/0010-Llama-API.patch +++ b/patches/server/0010-Llama-API.patch @@ -25,7 +25,7 @@ index 721971f7618751a2e95f1c49fdc48a9c0c672cab..7b141c495095afcd9c8b04c059d692e8 double d = this.llama.distanceToSqr(this.llama.getCaravanHead()); if (d > 676.0D) { diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index a077a0ac66f7244ca895835f97edbe4c65fc5553..e2271a52448583cdbda844bc55b42dd3665a2a26 100644 +index 7a2a8365a8bb5b0f497b7f10d351f535a683cd96..4738d98c256b7167a13edf94db5b4f8e4cb4f75e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -66,6 +66,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { @@ -62,7 +62,7 @@ index a077a0ac66f7244ca895835f97edbe4c65fc5553..e2271a52448583cdbda844bc55b42dd3 public void leaveCaravan() { if (this.caravanHead != null) { -+ new net.pl3x.purpur.event.entity.LlamaLeaveCaravanEvent((org.bukkit.entity.Llama) getBukkitEntity()).callEvent(); // Purpur ++ new org.purpurmc.purpur.event.entity.LlamaLeaveCaravanEvent((org.bukkit.entity.Llama) getBukkitEntity()).callEvent(); // Purpur this.caravanHead.caravanTail = null; } @@ -70,7 +70,7 @@ index a077a0ac66f7244ca895835f97edbe4c65fc5553..e2271a52448583cdbda844bc55b42dd3 } public void joinCaravan(Llama llama) { -+ if (!shouldJoinCaravan || !new net.pl3x.purpur.event.entity.LlamaJoinCaravanEvent((org.bukkit.entity.Llama) getBukkitEntity(), (org.bukkit.entity.Llama) llama.getBukkitEntity()).callEvent()) return; // Purpur ++ if (!shouldJoinCaravan || !new org.purpurmc.purpur.event.entity.LlamaJoinCaravanEvent((org.bukkit.entity.Llama) getBukkitEntity(), (org.bukkit.entity.Llama) llama.getBukkitEntity()).callEvent()) return; // Purpur this.caravanHead = llama; this.caravanHead.caravanTail = this; } diff --git a/patches/server/0011-AFK-API.patch b/patches/server/0011-AFK-API.patch index 5402aa7b5..3d4c870f7 100644 --- a/patches/server/0011-AFK-API.patch +++ b/patches/server/0011-AFK-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index e38a9ff1024669a5ea9c45a7f33c606167f15f9a..e29c9e10e98f2333ad38fd7d957d8a36304f3cba 100644 +index e38a9ff1024669a5ea9c45a7f33c606167f15f9a..8b904d31dda1bfe1b396126376e2f2020b1b0ab1 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1969,8 +1969,58 @@ public class ServerPlayer extends Player { @@ -24,9 +24,9 @@ index e38a9ff1024669a5ea9c45a7f33c606167f15f9a..e29c9e10e98f2333ad38fd7d957d8a36 + return; + } + -+ String msg = afk ? net.pl3x.purpur.PurpurConfig.afkBroadcastAway : net.pl3x.purpur.PurpurConfig.afkBroadcastBack; ++ String msg = afk ? org.purpurmc.purpur.PurpurConfig.afkBroadcastAway : org.purpurmc.purpur.PurpurConfig.afkBroadcastBack; + -+ net.pl3x.purpur.event.PlayerAFKEvent event = new net.pl3x.purpur.event.PlayerAFKEvent(this.getBukkitEntity(), afk, level.purpurConfig.idleTimeoutKick, msg, !Bukkit.isPrimaryThread()); ++ org.purpurmc.purpur.event.PlayerAFKEvent event = new org.purpurmc.purpur.event.PlayerAFKEvent(this.getBukkitEntity(), afk, level.purpurConfig.idleTimeoutKick, msg, !Bukkit.isPrimaryThread()); + if (!event.callEvent() || event.shouldKick()) { + return; + } @@ -44,7 +44,7 @@ index e38a9ff1024669a5ea9c45a7f33c606167f15f9a..e29c9e10e98f2333ad38fd7d957d8a36 + + if (level.purpurConfig.idleTimeoutUpdateTabList) { + if (afk) { -+ getBukkitEntity().setPlayerListName(net.pl3x.purpur.PurpurConfig.afkTabListPrefix + getScoreboardName() + net.pl3x.purpur.PurpurConfig.afkTabListSuffix, true); ++ getBukkitEntity().setPlayerListName(org.purpurmc.purpur.PurpurConfig.afkTabListPrefix + getScoreboardName() + org.purpurmc.purpur.PurpurConfig.afkTabListSuffix, true); + } else { + getBukkitEntity().setPlayerListName(getScoreboardName()); + } @@ -212,56 +212,6 @@ index 30276959c0119813c27ee3f98e237c93236e5b39..385cccecdddde4abd5c6525aa6404eb2 double d = player.distanceToSqr(x, y, z); if (range < 0.0D || d < range * range) { return true; -diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index eaff201b75f74a41e14c43d522d7b87faf9296b3..7f572658706fdc3009490bd54c2393f7685c7de7 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -158,8 +158,16 @@ public class PurpurConfig { - } - - public static String cannotRideMob = "You cannot mount that mob"; -+ public static String afkBroadcastAway = "%s is now AFK"; -+ public static String afkBroadcastBack = "%s is no longer AFK"; -+ public static String afkTabListPrefix = "[AFK] "; -+ public static String afkTabListSuffix = ""; - private static void messages() { - cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob); -+ afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway); -+ afkBroadcastBack = getString("settings.messages.afk-broadcast-back", afkBroadcastBack); -+ afkTabListPrefix = getString("settings.messages.afk-tab-list-prefix", afkTabListPrefix); -+ afkTabListSuffix = getString("settings.messages.afk-tab-list-suffix", afkTabListSuffix); - } - - private static void timingsSettings() { -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 20215510857b8e49ea0c93d35eddfbad7cd355b0..996171e7271e62e72c0b2b213c21caf53c815e97 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -94,6 +94,24 @@ public class PurpurWorldConfig { - return value.isEmpty() ? fallback : value; - } - -+ public boolean idleTimeoutKick = true; -+ public boolean idleTimeoutTickNearbyEntities = true; -+ public boolean idleTimeoutCountAsSleeping = false; -+ public boolean idleTimeoutUpdateTabList = false; -+ public boolean idleTimeoutTargetPlayer = true; -+ private void playerSettings() { -+ if (PurpurConfig.version < 19) { -+ boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -+ set("gameplay-mechanics.player.idle-timeout.mods-target", null); -+ set("gameplay-mechanics.player.idle-timeout.mobs-target", oldVal); -+ } -+ idleTimeoutKick = getBoolean("gameplay-mechanics.player.idle-timeout.kick-if-idle", idleTimeoutKick); -+ idleTimeoutTickNearbyEntities = getBoolean("gameplay-mechanics.player.idle-timeout.tick-nearby-entities", idleTimeoutTickNearbyEntities); -+ idleTimeoutCountAsSleeping = getBoolean("gameplay-mechanics.player.idle-timeout.count-as-sleeping", idleTimeoutCountAsSleeping); -+ idleTimeoutUpdateTabList = getBoolean("gameplay-mechanics.player.idle-timeout.update-tab-list", idleTimeoutUpdateTabList); -+ idleTimeoutTargetPlayer = getBoolean("gameplay-mechanics.player.idle-timeout.mobs-target", idleTimeoutTargetPlayer); -+ } -+ - public boolean babiesAreRidable = true; - public boolean untamedTamablesAreRidable = true; - public boolean useNightVisionWhenRiding = false; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index 8a1cdd256ab8496b9a8e34bf891c1001b2cee082..3e898377b259eb9176772b70a4f3a1b14d0dca91 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -304,6 +254,56 @@ index 8a1cdd256ab8496b9a8e34bf891c1001b2cee082..3e898377b259eb9176772b70a4f3a1b1 + } // Purpur end } +diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +index c961e81a0e8bc7360f8ef7235c576e6629b67b49..fde15dee7633bad9582fe5d26eee0badf17477cd 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +@@ -158,8 +158,16 @@ public class PurpurConfig { + } + + public static String cannotRideMob = "You cannot mount that mob"; ++ public static String afkBroadcastAway = "%s is now AFK"; ++ public static String afkBroadcastBack = "%s is no longer AFK"; ++ public static String afkTabListPrefix = "[AFK] "; ++ public static String afkTabListSuffix = ""; + private static void messages() { + cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob); ++ afkBroadcastAway = getString("settings.messages.afk-broadcast-away", afkBroadcastAway); ++ afkBroadcastBack = getString("settings.messages.afk-broadcast-back", afkBroadcastBack); ++ afkTabListPrefix = getString("settings.messages.afk-tab-list-prefix", afkTabListPrefix); ++ afkTabListSuffix = getString("settings.messages.afk-tab-list-suffix", afkTabListSuffix); + } + + private static void timingsSettings() { +diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +index aa9a7f5cbc5d20192455d0f241a0703f46404ed8..95fd221fab18105fdf3082b48b9cbcc947089a03 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +@@ -94,6 +94,24 @@ public class PurpurWorldConfig { + return value.isEmpty() ? fallback : value; + } + ++ public boolean idleTimeoutKick = true; ++ public boolean idleTimeoutTickNearbyEntities = true; ++ public boolean idleTimeoutCountAsSleeping = false; ++ public boolean idleTimeoutUpdateTabList = false; ++ public boolean idleTimeoutTargetPlayer = true; ++ private void playerSettings() { ++ if (PurpurConfig.version < 19) { ++ boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); ++ set("gameplay-mechanics.player.idle-timeout.mods-target", null); ++ set("gameplay-mechanics.player.idle-timeout.mobs-target", oldVal); ++ } ++ idleTimeoutKick = getBoolean("gameplay-mechanics.player.idle-timeout.kick-if-idle", idleTimeoutKick); ++ idleTimeoutTickNearbyEntities = getBoolean("gameplay-mechanics.player.idle-timeout.tick-nearby-entities", idleTimeoutTickNearbyEntities); ++ idleTimeoutCountAsSleeping = getBoolean("gameplay-mechanics.player.idle-timeout.count-as-sleeping", idleTimeoutCountAsSleeping); ++ idleTimeoutUpdateTabList = getBoolean("gameplay-mechanics.player.idle-timeout.update-tab-list", idleTimeoutUpdateTabList); ++ idleTimeoutTargetPlayer = getBoolean("gameplay-mechanics.player.idle-timeout.mobs-target", idleTimeoutTargetPlayer); ++ } ++ + public boolean babiesAreRidable = true; + public boolean untamedTamablesAreRidable = true; + public boolean useNightVisionWhenRiding = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java index 72400204fbeea41e4af8d3a0d5eef6f2e75e7518..7e1bc869299cd2f382f05bb814946e6841cc845e 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java diff --git a/patches/server/0013-Configurable-server-mod-name.patch b/patches/server/0013-Configurable-server-mod-name.patch index b039038a1..f60e0da5a 100644 --- a/patches/server/0013-Configurable-server-mod-name.patch +++ b/patches/server/0013-Configurable-server-mod-name.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable server mod name diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 5072cb76e0793ee6c47800628daa65906bde8577..e140e58b9444573089cda145c7957a2df0b2bd75 100644 +index 433953fb505b1bfaf18e9afdcfa9577a6f18655c..a6b5a8ff4f72404b69cf08a485632db23967e801 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1709,7 +1709,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla! -+ return net.pl3x.purpur.PurpurConfig.serverModName; // Purpur - Purpur > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla! ++ return org.purpurmc.purpur.PurpurConfig.serverModName; // Purpur - Purpur > // Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla! } public SystemReport fillSystemReport(SystemReport details) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 7f572658706fdc3009490bd54c2393f7685c7de7..bc5f937e7480d954680c7b9f1d698aff3e28665d 100644 +index fde15dee7633bad9582fe5d26eee0badf17477cd..c428c332cbb9f632b36bc4b6bf7d0767a16e350a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -170,6 +170,11 @@ public class PurpurConfig { diff --git a/patches/server/0015-Lagging-threshold.patch b/patches/server/0015-Lagging-threshold.patch index 351fa13b4..249ea6dc7 100644 --- a/patches/server/0015-Lagging-threshold.patch +++ b/patches/server/0015-Lagging-threshold.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Lagging threshold diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index b5a307f00f92a640b13c60f6ebee204223c0d9e2..0471827e17e93f3e579290a0100d3236d95fe7f1 100644 +index a6b5a8ff4f72404b69cf08a485632db23967e801..358dcf61cd5f27c77709d175b15e84338858c739 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -303,6 +303,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop implements EntityTypeTest { @@ -47,7 +47,7 @@ index 3177e4f0af6ec4dd22c7e809d23f3711a8dfda54..d143282263dd371cc3128a42da8a43ff + // Purpur start + if (spawnReason == org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.SPAWNER_EGG && stack != null && t0 != null) { -+ final net.pl3x.purpur.event.entity.MonsterEggSpawnEvent event = new net.pl3x.purpur.event.entity.MonsterEggSpawnEvent(entityhuman != null ? entityhuman.getBukkitEntity() : null, t0.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(stack)); ++ final org.purpurmc.purpur.event.entity.MonsterEggSpawnEvent event = new org.purpurmc.purpur.event.entity.MonsterEggSpawnEvent(entityhuman != null ? entityhuman.getBukkitEntity() : null, t0.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(stack)); + if (!event.callEvent()) { + t0.setRemoved(Entity.RemovalReason.DISCARDED); + return null; diff --git a/patches/server/0018-Player-invulnerabilities.patch b/patches/server/0018-Player-invulnerabilities.patch index ec899b5e3..19d9ae8f4 100644 --- a/patches/server/0018-Player-invulnerabilities.patch +++ b/patches/server/0018-Player-invulnerabilities.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Player invulnerabilities diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index e29c9e10e98f2333ad38fd7d957d8a36304f3cba..52fd2d08783bbba4c262bb297a31b373b3bcfacc 100644 +index 8b904d31dda1bfe1b396126376e2f2020b1b0ab1..2fa918425d007252b3409732ef5868eea8eae4d2 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -255,6 +255,7 @@ public class ServerPlayer extends Player { @@ -120,28 +120,6 @@ index 48e78e76d23cc6aff00a1526d53581deebec4c1d..fe1ad78a41d01feaf64b64d0b8585e23 // CraftBukkit end return entityplayer1; } -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 996171e7271e62e72c0b2b213c21caf53c815e97..8e9ba3a8582c8e5d1e14bf3bfa8ecfce5ccf7b0c 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -99,6 +99,8 @@ public class PurpurWorldConfig { - public boolean idleTimeoutCountAsSleeping = false; - public boolean idleTimeoutUpdateTabList = false; - public boolean idleTimeoutTargetPlayer = true; -+ public int playerSpawnInvulnerableTicks = 60; -+ public boolean playerInvulnerableWhileAcceptingResourcePack = false; - private void playerSettings() { - if (PurpurConfig.version < 19) { - boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -110,6 +112,8 @@ public class PurpurWorldConfig { - idleTimeoutCountAsSleeping = getBoolean("gameplay-mechanics.player.idle-timeout.count-as-sleeping", idleTimeoutCountAsSleeping); - idleTimeoutUpdateTabList = getBoolean("gameplay-mechanics.player.idle-timeout.update-tab-list", idleTimeoutUpdateTabList); - idleTimeoutTargetPlayer = getBoolean("gameplay-mechanics.player.idle-timeout.mobs-target", idleTimeoutTargetPlayer); -+ playerSpawnInvulnerableTicks = getInt("gameplay-mechanics.player.spawn-invulnerable-ticks", playerSpawnInvulnerableTicks); -+ playerInvulnerableWhileAcceptingResourcePack = getBoolean("gameplay-mechanics.player.invulnerable-while-accepting-resource-pack", playerInvulnerableWhileAcceptingResourcePack); - } - - public boolean babiesAreRidable = true; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index 3e898377b259eb9176772b70a4f3a1b14d0dca91..2069a834aaab46486025285b97dbb56d30e506a8 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -167,3 +145,25 @@ index 3e898377b259eb9176772b70a4f3a1b14d0dca91..2069a834aaab46486025285b97dbb56d + } // Purpur end } +diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +index 95fd221fab18105fdf3082b48b9cbcc947089a03..c97b56182233da2e366d092ae60c6a56e09e6e6d 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +@@ -99,6 +99,8 @@ public class PurpurWorldConfig { + public boolean idleTimeoutCountAsSleeping = false; + public boolean idleTimeoutUpdateTabList = false; + public boolean idleTimeoutTargetPlayer = true; ++ public int playerSpawnInvulnerableTicks = 60; ++ public boolean playerInvulnerableWhileAcceptingResourcePack = false; + private void playerSettings() { + if (PurpurConfig.version < 19) { + boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); +@@ -110,6 +112,8 @@ public class PurpurWorldConfig { + idleTimeoutCountAsSleeping = getBoolean("gameplay-mechanics.player.idle-timeout.count-as-sleeping", idleTimeoutCountAsSleeping); + idleTimeoutUpdateTabList = getBoolean("gameplay-mechanics.player.idle-timeout.update-tab-list", idleTimeoutUpdateTabList); + idleTimeoutTargetPlayer = getBoolean("gameplay-mechanics.player.idle-timeout.mobs-target", idleTimeoutTargetPlayer); ++ playerSpawnInvulnerableTicks = getInt("gameplay-mechanics.player.spawn-invulnerable-ticks", playerSpawnInvulnerableTicks); ++ playerInvulnerableWhileAcceptingResourcePack = getBoolean("gameplay-mechanics.player.invulnerable-while-accepting-resource-pack", playerInvulnerableWhileAcceptingResourcePack); + } + + public boolean babiesAreRidable = true; diff --git a/patches/server/0019-Anvil-API.patch b/patches/server/0019-Anvil-API.patch index f3be43575..3f0e2309f 100644 --- a/patches/server/0019-Anvil-API.patch +++ b/patches/server/0019-Anvil-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Anvil API diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index 073cec4838b88bf4e7444321a74ab73fff732486..3751ce065a38cb55b0800f000e33b2b32c7e0f5d 100644 +index 073cec4838b88bf4e7444321a74ab73fff732486..3314cb81d4d5ce9c1d5472e1213b6bcc1c688b9c 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java @@ -2,7 +2,11 @@ package net.minecraft.world.inventory; @@ -39,7 +39,7 @@ index 073cec4838b88bf4e7444321a74ab73fff732486..3751ce065a38cb55b0800f000e33b2b3 @Override protected void onTake(Player player, ItemStack stack) { -+ if (net.pl3x.purpur.event.inventory.AnvilTakeResultEvent.getHandlerList().getRegisteredListeners().length > 0) new net.pl3x.purpur.event.inventory.AnvilTakeResultEvent(player.getBukkitEntity(), getBukkitView(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(stack)).callEvent(); // Purpur ++ if (org.purpurmc.purpur.event.inventory.AnvilTakeResultEvent.getHandlerList().getRegisteredListeners().length > 0) new org.purpurmc.purpur.event.inventory.AnvilTakeResultEvent(player.getBukkitEntity(), getBukkitView(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(stack)).callEvent(); // Purpur if (!player.getAbilities().instabuild) { + if (bypassCost) ((ServerPlayer) player).lastSentExp = -1; else // Purpur player.giveExperienceLevels(-this.cost.get()); @@ -52,7 +52,7 @@ index 073cec4838b88bf4e7444321a74ab73fff732486..3751ce065a38cb55b0800f000e33b2b3 + // Purpur start + bypassCost = false; + canDoUnsafeEnchants = false; -+ if (net.pl3x.purpur.event.inventory.AnvilUpdateResultEvent.getHandlerList().getRegisteredListeners().length > 0) new net.pl3x.purpur.event.inventory.AnvilUpdateResultEvent(getBukkitView()).callEvent(); ++ if (org.purpurmc.purpur.event.inventory.AnvilUpdateResultEvent.getHandlerList().getRegisteredListeners().length > 0) new org.purpurmc.purpur.event.inventory.AnvilUpdateResultEvent(getBukkitView()).callEvent(); + // Purpur end + ItemStack itemstack = this.inputSlots.getItem(0); diff --git a/patches/server/0021-Alternative-Keepalive-Handling.patch b/patches/server/0021-Alternative-Keepalive-Handling.patch index eba7a208b..09492705c 100644 --- a/patches/server/0021-Alternative-Keepalive-Handling.patch +++ b/patches/server/0021-Alternative-Keepalive-Handling.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Alternative Keepalive Handling diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 621f0f75096c89bd050f7e0ede8abcb15536ce70..bb0f8dbc0746283ff7670dee24dd932254aeec0d 100644 +index 621f0f75096c89bd050f7e0ede8abcb15536ce70..84dfa62acb29fe0ae4343e2a751e0d11ccc37803 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -227,6 +227,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @@ -21,7 +21,7 @@ index 621f0f75096c89bd050f7e0ede8abcb15536ce70..bb0f8dbc0746283ff7670dee24dd9322 long elapsedTime = currentTime - this.keepAliveTime; + // Purpur start -+ if (net.pl3x.purpur.PurpurConfig.useAlternateKeepAlive) { ++ if (org.purpurmc.purpur.PurpurConfig.useAlternateKeepAlive) { + if (elapsedTime >= 1000L) { // 1 second + if (!processedDisconnect && keepAlives.size() > KEEPALIVE_LIMIT) { + LOGGER.warn("{} was kicked due to keepalive timeout!", player.getName()); @@ -43,7 +43,7 @@ index 621f0f75096c89bd050f7e0ede8abcb15536ce70..bb0f8dbc0746283ff7670dee24dd9322 @Override public void handleKeepAlive(ServerboundKeepAlivePacket packet) { + // Purpur start -+ if (net.pl3x.purpur.PurpurConfig.useAlternateKeepAlive) { ++ if (org.purpurmc.purpur.PurpurConfig.useAlternateKeepAlive) { + long id = packet.getId(); + if (keepAlives.size() > 0 && keepAlives.contains(id)) { + int ping = (int) (Util.getMillis() - id); @@ -56,7 +56,7 @@ index 621f0f75096c89bd050f7e0ede8abcb15536ce70..bb0f8dbc0746283ff7670dee24dd9322 if (this.keepAlivePending && packet.getId() == this.keepAliveChallenge) { int i = (int) (Util.getMillis() - this.keepAliveTime); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index c0e7027ad804d7b801ef8cb94963c113c95735d1..4b6bb477db0af506508e73dd42155429777b49d0 100644 +index d2b9245a27f62987eb3c073300218020c58361d3..c8e5db9086c618b97e1712777dcbb7f2e798ca2d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -193,6 +193,11 @@ public class PurpurConfig { diff --git a/patches/server/0022-Silk-touch-spawners.patch b/patches/server/0022-Silk-touch-spawners.patch index fcf476bcf..d81788067 100644 --- a/patches/server/0022-Silk-touch-spawners.patch +++ b/patches/server/0022-Silk-touch-spawners.patch @@ -17,7 +17,7 @@ index f763a3ea5796737304e0c1f41349622e1d7adadf..26c5c3c6e7c51ad6ccc9bac05e2af497 public static final GsonComponentSerializer GSON = GsonComponentSerializer.builder() .legacyHoverEventSerializer(NBTLegacyHoverEventSerializer.INSTANCE) diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java -index 20444c6887cbdd444b23bf018a6d63f22359e5e7..68321b5e425c0500a5691f80203176122cc1bff4 100644 +index 20444c6887cbdd444b23bf018a6d63f22359e5e7..85329295afacad3edb6865846166aa56ebae0ed2 100644 --- a/src/main/java/net/minecraft/world/item/Items.java +++ b/src/main/java/net/minecraft/world/item/Items.java @@ -258,7 +258,7 @@ public class Items { @@ -25,7 +25,7 @@ index 20444c6887cbdd444b23bf018a6d63f22359e5e7..68321b5e425c0500a5691f8020317612 public static final Item PURPUR_PILLAR = registerBlock(Blocks.PURPUR_PILLAR, CreativeModeTab.TAB_BUILDING_BLOCKS); public static final Item PURPUR_STAIRS = registerBlock(Blocks.PURPUR_STAIRS, CreativeModeTab.TAB_BUILDING_BLOCKS); - public static final Item SPAWNER = registerBlock(new BlockItem(Blocks.SPAWNER, (new Item.Properties()).rarity(Rarity.EPIC))); -+ public static final Item SPAWNER = registerBlock(Blocks.SPAWNER, new net.pl3x.purpur.item.SpawnerItem(Blocks.SPAWNER, new Item.Properties().rarity(Rarity.EPIC))); // Purpur ++ public static final Item SPAWNER = registerBlock(Blocks.SPAWNER, new org.purpurmc.purpur.item.SpawnerItem(Blocks.SPAWNER, new Item.Properties().rarity(Rarity.EPIC))); // Purpur public static final Item OAK_STAIRS = registerBlock(Blocks.OAK_STAIRS, CreativeModeTab.TAB_BUILDING_BLOCKS); public static final Item CHEST = registerBlock(Blocks.CHEST, CreativeModeTab.TAB_DECORATIONS); public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE, CreativeModeTab.TAB_DECORATIONS); @@ -139,7 +139,7 @@ index 130ffb06b12565efb35afb55b6da20b1b16f6f06..bc4646a7a72c33a3671115953a2bbd7c // this.popExperience(worldserver, blockposition, i); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6df320ab8214669517d5de30a28f044a5a6b4a33..8920b47610a323ceb6b19a05b7592d8acf809bc4 100644 +index 65d6e1b08862d4760d4fdf5838e60f8b9c755de9..d4602c11c149836974bb3722a00547f3908b0529 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -116,6 +116,38 @@ public class PurpurWorldConfig { @@ -183,11 +183,11 @@ index 6df320ab8214669517d5de30a28f044a5a6b4a33..8920b47610a323ceb6b19a05b7592d8a public boolean useNightVisionWhenRiding = false; diff --git a/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java b/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java new file mode 100644 -index 0000000000000000000000000000000000000000..728da3d75ec957ee789f9625483565e38649acd5 +index 0000000000000000000000000000000000000000..ede5c1855e799d250ed47eabff36291a636aa729 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java @@ -0,0 +1,36 @@ -+package net.pl3x.purpur.item; ++package org.purpurmc.purpur.item; + +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; diff --git a/patches/server/0025-Logger-settings-suppressing-pointless-logs.patch b/patches/server/0025-Logger-settings-suppressing-pointless-logs.patch index 42a9db785..563b42fb3 100644 --- a/patches/server/0025-Logger-settings-suppressing-pointless-logs.patch +++ b/patches/server/0025-Logger-settings-suppressing-pointless-logs.patch @@ -5,31 +5,43 @@ Subject: [PATCH] Logger settings (suppressing pointless logs) diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java -index f7959fe8d5247504dd79a18010470d98781c7cfe..945fb3200d52b83eaee2e62d6db5c43e088218eb 100644 +index f7959fe8d5247504dd79a18010470d98781c7cfe..6f5b7650d45958284f7b5c675c1e32d4b7738494 100644 --- a/src/main/java/net/minecraft/server/PlayerAdvancements.java +++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java @@ -186,6 +186,7 @@ public class PlayerAdvancements { if (advancement == null) { // CraftBukkit start if (entry.getKey().getNamespace().equals("minecraft")) { -+ if (!net.pl3x.purpur.PurpurConfig.loggerSuppressIgnoredAdvancementWarnings) // Purpur ++ if (!org.purpurmc.purpur.PurpurConfig.loggerSuppressIgnoredAdvancementWarnings) // Purpur PlayerAdvancements.LOGGER.warn("Ignored advancement '{}' in progress file {} - it doesn't exist anymore?", entry.getKey(), this.file); } // CraftBukkit end diff --git a/src/main/java/net/minecraft/stats/ServerRecipeBook.java b/src/main/java/net/minecraft/stats/ServerRecipeBook.java -index ecdac349efbea9e05ac66200c5d0f0385ad1349b..749f3cda15d1f9a0b0c73fa9eda9e58fb285de73 100644 +index ecdac349efbea9e05ac66200c5d0f0385ad1349b..17c18d90f23477e31f98edf889b8b64b4b066fbf 100644 --- a/src/main/java/net/minecraft/stats/ServerRecipeBook.java +++ b/src/main/java/net/minecraft/stats/ServerRecipeBook.java @@ -122,6 +122,7 @@ public class ServerRecipeBook extends RecipeBook { Optional> optional = recipeManager.byKey(minecraftkey); if (!optional.isPresent()) { -+ if (!net.pl3x.purpur.PurpurConfig.loggerSuppressUnrecognizedRecipeErrors) // Purpur ++ if (!org.purpurmc.purpur.PurpurConfig.loggerSuppressUnrecognizedRecipeErrors) // Purpur ServerRecipeBook.LOGGER.error("Tried to load unrecognized recipe: {} removed now.", minecraftkey); } else { handler.accept((Recipe) optional.get()); +diff --git a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java +index b2a15c986c7500a0ce227a54cb61ec3f5378f6f3..14600a7bc01bf61e8ffb736816d23df6aa794a16 100644 +--- a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java ++++ b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java +@@ -255,6 +255,7 @@ public final class CraftLegacy { + } + + static { ++ if (!org.purpurmc.purpur.PurpurConfig.loggerSuppressInitLegacyMaterialError) // Purpur + System.err.println("Initializing Legacy Material Support. Unless you have legacy plugins and/or data this is a bug!"); + if (MinecraftServer.getServer() != null && MinecraftServer.getServer().isDebugging()) { + new Exception().printStackTrace(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 4b6bb477db0af506508e73dd42155429777b49d0..7f08a6a0e92300825ca90aeb55379a07474b76e5 100644 +index c8e5db9086c618b97e1712777dcbb7f2e798ca2d..cb3772bf3ccf33b1111aac18d82194f04a767dfd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -232,4 +232,13 @@ public class PurpurConfig { @@ -46,15 +58,3 @@ index 4b6bb477db0af506508e73dd42155429777b49d0..7f08a6a0e92300825ca90aeb55379a07 + loggerSuppressUnrecognizedRecipeErrors = getBoolean("settings.logger.suppress-unrecognized-recipe-errors", loggerSuppressUnrecognizedRecipeErrors); + } } -diff --git a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java -index b2a15c986c7500a0ce227a54cb61ec3f5378f6f3..6d5f030b678dbc86dceddcbb050b4aaed4102c50 100644 ---- a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java -+++ b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java -@@ -255,6 +255,7 @@ public final class CraftLegacy { - } - - static { -+ if (!net.pl3x.purpur.PurpurConfig.loggerSuppressInitLegacyMaterialError) // Purpur - System.err.println("Initializing Legacy Material Support. Unless you have legacy plugins and/or data this is a bug!"); - if (MinecraftServer.getServer() != null && MinecraftServer.getServer().isDebugging()) { - new Exception().printStackTrace(); diff --git a/patches/server/0027-Giants-AI-settings.patch b/patches/server/0027-Giants-AI-settings.patch index 82431a831..8787aedfe 100644 --- a/patches/server/0027-Giants-AI-settings.patch +++ b/patches/server/0027-Giants-AI-settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Giants AI settings diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java -index a8ffdc8810152d77668aad7bad15a00c4d194d4c..91e28c414545d2bbb4e2f22c516d0f683e8b04ec 100644 +index d1756353b9fc22f6e9b957a708073545ab3c941a..de7c2064b2c3876eebdee01908b39b1beb9701b6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java @@ -1,13 +1,36 @@ @@ -51,8 +51,8 @@ index a8ffdc8810152d77668aad7bad15a00c4d194d4c..91e28c414545d2bbb4e2f22c516d0f68 - @Override - protected void registerGoals() { -- this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); -- this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); +- this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); +- this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); - } - @Override @@ -66,14 +66,14 @@ index a8ffdc8810152d77668aad7bad15a00c4d194d4c..91e28c414545d2bbb4e2f22c516d0f68 + protected void registerGoals() { + if (level.purpurConfig.giantHaveAI) { + this.goalSelector.addGoal(0, new FloatGoal(this)); -+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); ++ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); + this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0D)); + this.goalSelector.addGoal(8, new LookAtPlayerGoal(this, Player.class, 16.0F)); + this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); + this.goalSelector.addGoal(5, new MoveTowardsRestrictionGoal(this, 1.0D)); + if (level.purpurConfig.giantHaveHostileAI) { + this.goalSelector.addGoal(2, new MeleeAttackGoal(this, 1.0D, false)); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); + this.targetSelector.addGoal(1, new HurtByTargetGoal(this).setAlertOthers(ZombifiedPiglin.class)); + this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); + this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Villager.class, false)); @@ -120,7 +120,7 @@ index a8ffdc8810152d77668aad7bad15a00c4d194d4c..91e28c414545d2bbb4e2f22c516d0f68 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5b82c82da88f95190f8d7dc1f635fd27c8b513df..01c33f5021905736b05fc33c268e42e4e82c2863 100644 +index 1c59c85b700fd2fd69e0c225b517836f771c6ec7..9fa6291c047f3a460f6b04244eccb21481f36ee5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -468,6 +468,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0033-Breedable-Polar-Bears.patch b/patches/server/0033-Breedable-Polar-Bears.patch index e4cf23063..f6e0e4867 100644 --- a/patches/server/0033-Breedable-Polar-Bears.patch +++ b/patches/server/0033-Breedable-Polar-Bears.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Breedable Polar Bears diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -index 36f6d2b2f074eb49187a2d0badbf2bedde8a6935..5dc981130464027f9af02f1d10ec80441c4cc050 100644 +index 69e495a93cd1519297dcd8ef4971cca61b80f201..0b5d4416ad4dc0a90cbd1826c45c47412d2e85ed 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java @@ -94,6 +94,27 @@ public class PolarBear extends Animal implements NeutralMob { @@ -46,7 +46,7 @@ index 36f6d2b2f074eb49187a2d0badbf2bedde8a6935..5dc981130464027f9af02f1d10ec8044 @Override @@ -113,6 +134,12 @@ public class PolarBear extends Animal implements NeutralMob { - this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new PolarBear.PolarBearMeleeAttackGoal()); this.goalSelector.addGoal(1, new PolarBear.PolarBearPanicGoal()); + // Purpur start @@ -59,7 +59,7 @@ index 36f6d2b2f074eb49187a2d0badbf2bedde8a6935..5dc981130464027f9af02f1d10ec8044 this.goalSelector.addGoal(5, new RandomStrollGoal(this, 1.0D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b14853de709d9d083e2c349f398d81f629ebf6eb..241ba6a10eda5bf97adb09cc2ae423da6036d55f 100644 +index 6b73704baec9d8c56d18dd4864811c9baaf655a3..8e630772adf6753371134bee1edf78770ce1af89 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -820,6 +820,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0034-Chickens-can-retaliate.patch b/patches/server/0034-Chickens-can-retaliate.patch index 3984f4b45..62746add2 100644 --- a/patches/server/0034-Chickens-can-retaliate.patch +++ b/patches/server/0034-Chickens-can-retaliate.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Chickens can retaliate diff --git a/src/main/java/net/minecraft/world/entity/animal/Chicken.java b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -index e549add41f986f9eab68f148865a4170f732c814..7fd330c77159dc21d5170b386d27128fe03eea1e 100644 +index 419a774733ac3d562e636f2615005c953bbd87df..ca584a5a801d0909f4bdbaa8a635608ee49d096e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java @@ -66,6 +66,9 @@ public class Chicken extends Animal { @@ -21,7 +21,7 @@ index e549add41f986f9eab68f148865a4170f732c814..7fd330c77159dc21d5170b386d27128f @@ -73,13 +76,21 @@ public class Chicken extends Animal { protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); - this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - this.goalSelector.addGoal(1, new PanicGoal(this, 1.4D)); + // this.goalSelector.addGoal(1, new PanicGoal(this, 1.4D)); // Purpur - moved down this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); @@ -51,7 +51,7 @@ index e549add41f986f9eab68f148865a4170f732c814..7fd330c77159dc21d5170b386d27128f @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 241ba6a10eda5bf97adb09cc2ae423da6036d55f..8692ca2751ba6ed6ad989843261b13d2eeba669e 100644 +index 8e630772adf6753371134bee1edf78770ce1af89..8f0c44bf14aa73816825bbfac698406745b747d8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -250,6 +250,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0038-Cows-eat-mushrooms.patch b/patches/server/0038-Cows-eat-mushrooms.patch index b5ec909b3..40e224fb8 100644 --- a/patches/server/0038-Cows-eat-mushrooms.patch +++ b/patches/server/0038-Cows-eat-mushrooms.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Cows eat mushrooms diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 8b9c7c2292afed5928b262dad4d825473d400880..d2d971f3a135c9bebbda618eb5a0d4a4f81ca221 100644 +index d602597132b69c51c6da9115d0a2c9a8a1f39405..0db4dd5423508acb5214ed3205bb5632cd337e05 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -1,6 +1,7 @@ @@ -25,7 +25,7 @@ index 8b9c7c2292afed5928b262dad4d825473d400880..d2d971f3a135c9bebbda618eb5a0d4a4 // CraftBukkit start import org.bukkit.craftbukkit.event.CraftEventFactory; @@ -63,6 +65,7 @@ public class Cow extends Animal { - this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new PanicGoal(this, 2.0D)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); + if (level.purpurConfig.cowFeedMushrooms > 0) this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT, Blocks.RED_MUSHROOM.asItem(), Blocks.BROWN_MUSHROOM.asItem()), false)); else // Purpur @@ -114,7 +114,7 @@ index 8b9c7c2292afed5928b262dad4d825473d400880..d2d971f3a135c9bebbda618eb5a0d4a4 public Cow getBreedOffspring(ServerLevel world, AgeableMob entity) { return (Cow) EntityType.COW.create(world); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8f7e7007633ee30f3f943d583623c122d5bc7de3..c5124c7beff61ea1a60db0b0e14f99f3302831b9 100644 +index 2074ab8e186b3b534ee0d073f3d12a50626ac76b..68a5373dab6edce4104be6c141ad4c1095823255 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -289,6 +289,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0052-Configurable-TPS-Catchup.patch b/patches/server/0052-Configurable-TPS-Catchup.patch index 0acf6d83b..c2683a7f2 100644 --- a/patches/server/0052-Configurable-TPS-Catchup.patch +++ b/patches/server/0052-Configurable-TPS-Catchup.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable TPS Catchup diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 0471827e17e93f3e579290a0100d3236d95fe7f1..fd32c276207100c1c52677a109764037e277316a 100644 +index 358dcf61cd5f27c77709d175b15e84338858c739..f8668a3664d8feb7cae7c037e0f265253ed76313 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1265,7 +1265,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0) { + this.goalSelector.addGoal(1, new FindCrystalGoal(this)); + this.goalSelector.addGoal(2, new OrbitCrystalGoal(this)); @@ -127,7 +127,7 @@ index 7e0affe953585b19686bb21b31a6a2b9534aba10..b651ff470853c1c6af2f2c56848a002b + this.goalSelector.addGoal(3, new Phantom.PhantomAttackStrategyGoal()); + this.goalSelector.addGoal(4, new Phantom.PhantomSweepAttackGoal()); + this.goalSelector.addGoal(5, new Phantom.PhantomCircleAroundAnchorGoal()); -+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); ++ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); + // Purpur end this.targetSelector.addGoal(1, new Phantom.PhantomAttackPlayerTargetGoal()); } @@ -254,11 +254,11 @@ index 7e0affe953585b19686bb21b31a6a2b9534aba10..b651ff470853c1c6af2f2c56848a002b + } + // Purpur end + - private class PhantomMoveControl extends net.pl3x.purpur.controller.FlyingMoveControllerWASD { // Purpur + private class PhantomMoveControl extends org.purpurmc.purpur.controller.FlyingMoveControllerWASD { // Purpur private float speed = 0.1F; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ccf64226afaf2242be106935ae57ab88450ae0ec..3e5bfd0acdc99c6fcf929d3b244080a4c9df99d4 100644 +index f36ca8f93e32465e71ea00279822e3bedd1d83b9..573618eb60041dd65aae55fea8f20ced109ba9ad 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -951,6 +951,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0077-Add-allow-water-in-end-world-option.patch b/patches/server/0077-Add-allow-water-in-end-world-option.patch index e9867ffbf..26c547340 100644 --- a/patches/server/0077-Add-allow-water-in-end-world-option.patch +++ b/patches/server/0077-Add-allow-water-in-end-world-option.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add allow water in end world option diff --git a/src/main/java/net/minecraft/world/item/BucketItem.java b/src/main/java/net/minecraft/world/item/BucketItem.java -index b5a5c56fbb66c17dd2e2d1f4d69d2b1826cd4951..c6a141f220ac2405a3f93ba6100b4bf3d9e46482 100644 +index b5a5c56fbb66c17dd2e2d1f4d69d2b1826cd4951..9805132a1b11d62c3491c178fbed8b6ac38a2d1f 100644 --- a/src/main/java/net/minecraft/world/item/BucketItem.java +++ b/src/main/java/net/minecraft/world/item/BucketItem.java @@ -168,7 +168,7 @@ public class BucketItem extends Item implements DispensibleContainerItem { @@ -13,7 +13,7 @@ index b5a5c56fbb66c17dd2e2d1f4d69d2b1826cd4951..c6a141f220ac2405a3f93ba6100b4bf3 if (!flag1) { return movingobjectpositionblock != null && this.emptyContents(entityhuman, world, movingobjectpositionblock.getBlockPos().relative(movingobjectpositionblock.getDirection()), (BlockHitResult) null, enumdirection, clicked, itemstack, enumhand); // CraftBukkit // Paper - } else if (world.dimensionType().ultraWarm() && this.content.is(FluidTags.WATER)) { -+ } else if ((world.isNether() || (world.isTheEnd() && !net.pl3x.purpur.PurpurConfig.allowWaterPlacementInTheEnd)) && this.content.is(FluidTags.WATER)) { // Purpur ++ } else if ((world.isNether() || (world.isTheEnd() && !org.purpurmc.purpur.PurpurConfig.allowWaterPlacementInTheEnd)) && this.content.is(FluidTags.WATER)) { // Purpur int i = blockposition.getX(); int j = blockposition.getY(); int k = blockposition.getZ(); @@ -27,7 +27,7 @@ index b5a5c56fbb66c17dd2e2d1f4d69d2b1826cd4951..c6a141f220ac2405a3f93ba6100b4bf3 return true; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 476c60176f10ad656c6c0676f8d43f7ae8104430..468a2cc47734bf7a406ab833ce145a35194f67ec 100644 +index 729d11569e59e78a0fda67697fe9e27adefff730..244f7dd3f2cdb70a471b2a547aa407ac0f258ef9 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -1496,4 +1496,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -46,7 +46,7 @@ index 476c60176f10ad656c6c0676f8d43f7ae8104430..468a2cc47734bf7a406ab833ce145a35 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/IceBlock.java b/src/main/java/net/minecraft/world/level/block/IceBlock.java -index 2676cddca511ea775766cec0001269407599df6e..096d6a07cd44cc674b53e5d3759e44f26b654bf1 100644 +index 2676cddca511ea775766cec0001269407599df6e..1dacd2e3a9340420c9b4443cc2f8a3c6e889e18e 100644 --- a/src/main/java/net/minecraft/world/level/block/IceBlock.java +++ b/src/main/java/net/minecraft/world/level/block/IceBlock.java @@ -26,7 +26,7 @@ public class IceBlock extends HalfTransparentBlock { @@ -54,7 +54,7 @@ index 2676cddca511ea775766cec0001269407599df6e..096d6a07cd44cc674b53e5d3759e44f2 super.playerDestroy(world, player, pos, state, blockEntity, stack); if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, stack) == 0) { - if (world.dimensionType().ultraWarm()) { -+ if (world.isNether() || (world.isTheEnd() && !net.pl3x.purpur.PurpurConfig.allowWaterPlacementInTheEnd)) { // Purpur ++ if (world.isNether() || (world.isTheEnd() && !org.purpurmc.purpur.PurpurConfig.allowWaterPlacementInTheEnd)) { // Purpur world.removeBlock(pos, false); return; } @@ -63,12 +63,12 @@ index 2676cddca511ea775766cec0001269407599df6e..096d6a07cd44cc674b53e5d3759e44f2 } // CraftBukkit end - if (world.dimensionType().ultraWarm()) { -+ if (world.isNether() || (world.isTheEnd() && !net.pl3x.purpur.PurpurConfig.allowWaterPlacementInTheEnd)) { // Purpur ++ if (world.isNether() || (world.isTheEnd() && !org.purpurmc.purpur.PurpurConfig.allowWaterPlacementInTheEnd)) { // Purpur world.removeBlock(pos, false); } else { world.setBlockAndUpdate(pos, Blocks.WATER.defaultBlockState()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index e236b8b64c867dab2b3d45df129df0260af4fccc..5252ce6eb6bd9b7383bef17ec5a3087db43dbeef 100644 +index facf2b59f7f9a81b34ed736aca2e7494ef37a47a..c2da5339ef01410d218bf48c919700939910d5d0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -239,6 +239,11 @@ public class PurpurConfig { diff --git a/patches/server/0087-Add-option-to-disable-certain-block-updates.patch b/patches/server/0087-Add-option-to-disable-certain-block-updates.patch index e1641ad7b..2c34d53bb 100644 --- a/patches/server/0087-Add-option-to-disable-certain-block-updates.patch +++ b/patches/server/0087-Add-option-to-disable-certain-block-updates.patch @@ -5,14 +5,14 @@ Subject: [PATCH] Add option to disable certain block updates diff --git a/src/main/java/net/minecraft/world/level/block/ChorusPlantBlock.java b/src/main/java/net/minecraft/world/level/block/ChorusPlantBlock.java -index 2c29c125edac43cdf13da8eababe60fb7a87df15..8646d36b0a48b0d0cdfeab8e52a567b70aa0eff3 100644 +index 2c29c125edac43cdf13da8eababe60fb7a87df15..28c84432d0125dad414e623a317f665bdf7f438f 100644 --- a/src/main/java/net/minecraft/world/level/block/ChorusPlantBlock.java +++ b/src/main/java/net/minecraft/world/level/block/ChorusPlantBlock.java @@ -21,6 +21,7 @@ public class ChorusPlantBlock extends PipeBlock { @Override public BlockState getStateForPlacement(BlockPlaceContext ctx) { -+ if (net.pl3x.purpur.PurpurConfig.disableChorusPlantUpdates) return this.defaultBlockState(); // Purpur ++ if (org.purpurmc.purpur.PurpurConfig.disableChorusPlantUpdates) return this.defaultBlockState(); // Purpur return this.getStateForPlacement(ctx.getLevel(), ctx.getClickedPos()); } @@ -20,12 +20,12 @@ index 2c29c125edac43cdf13da8eababe60fb7a87df15..8646d36b0a48b0d0cdfeab8e52a567b7 @Override public BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { -+ if (net.pl3x.purpur.PurpurConfig.disableChorusPlantUpdates) return state; // Purpur ++ if (org.purpurmc.purpur.PurpurConfig.disableChorusPlantUpdates) return state; // Purpur if (!state.canSurvive(world, pos)) { world.scheduleTick(pos, this, 1); return super.updateShape(state, direction, neighborState, world, pos, neighborPos); diff --git a/src/main/java/net/minecraft/world/level/block/HugeMushroomBlock.java b/src/main/java/net/minecraft/world/level/block/HugeMushroomBlock.java -index 3c6d97b51c6fec130b80e5965afa2c49d48843c9..174d16ae5c45dd3a4c9b4cc58b36121bef38d9cc 100644 +index 3c6d97b51c6fec130b80e5965afa2c49d48843c9..f96fe5197d1af10fd98e6c8403e25da248e4ba1e 100644 --- a/src/main/java/net/minecraft/world/level/block/HugeMushroomBlock.java +++ b/src/main/java/net/minecraft/world/level/block/HugeMushroomBlock.java @@ -22,29 +22,65 @@ public class HugeMushroomBlock extends Block { @@ -46,7 +46,7 @@ index 3c6d97b51c6fec130b80e5965afa2c49d48843c9..174d16ae5c45dd3a4c9b4cc58b36121b @Override public BlockState getStateForPlacement(BlockPlaceContext ctx) { -+ if (net.pl3x.purpur.PurpurConfig.disableMushroomBlockUpdates) return this.defaultBlockState(); // Purpur ++ if (org.purpurmc.purpur.PurpurConfig.disableMushroomBlockUpdates) return this.defaultBlockState(); // Purpur BlockGetter blockGetter = ctx.getLevel(); BlockPos blockPos = ctx.getClickedPos(); - return this.defaultBlockState().setValue(DOWN, Boolean.valueOf(!blockGetter.getBlockState(blockPos.below()).is(this))).setValue(UP, Boolean.valueOf(!blockGetter.getBlockState(blockPos.above()).is(this))).setValue(NORTH, Boolean.valueOf(!blockGetter.getBlockState(blockPos.north()).is(this))).setValue(EAST, Boolean.valueOf(!blockGetter.getBlockState(blockPos.east()).is(this))).setValue(SOUTH, Boolean.valueOf(!blockGetter.getBlockState(blockPos.south()).is(this))).setValue(WEST, Boolean.valueOf(!blockGetter.getBlockState(blockPos.west()).is(this))); @@ -63,7 +63,7 @@ index 3c6d97b51c6fec130b80e5965afa2c49d48843c9..174d16ae5c45dd3a4c9b4cc58b36121b @Override public BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { -+ if (net.pl3x.purpur.PurpurConfig.disableMushroomBlockUpdates) return state; // Purpur ++ if (org.purpurmc.purpur.PurpurConfig.disableMushroomBlockUpdates) return state; // Purpur return neighborState.is(this) ? state.setValue(PROPERTY_BY_DIRECTION.get(direction), Boolean.valueOf(false)) : super.updateShape(state, direction, neighborState, world, pos, neighborPos); } @@ -71,7 +71,7 @@ index 3c6d97b51c6fec130b80e5965afa2c49d48843c9..174d16ae5c45dd3a4c9b4cc58b36121b public BlockState rotate(BlockState state, Rotation rotation) { - return state.setValue(PROPERTY_BY_DIRECTION.get(rotation.rotate(Direction.NORTH)), state.getValue(NORTH)).setValue(PROPERTY_BY_DIRECTION.get(rotation.rotate(Direction.SOUTH)), state.getValue(SOUTH)).setValue(PROPERTY_BY_DIRECTION.get(rotation.rotate(Direction.EAST)), state.getValue(EAST)).setValue(PROPERTY_BY_DIRECTION.get(rotation.rotate(Direction.WEST)), state.getValue(WEST)).setValue(PROPERTY_BY_DIRECTION.get(rotation.rotate(Direction.UP)), state.getValue(UP)).setValue(PROPERTY_BY_DIRECTION.get(rotation.rotate(Direction.DOWN)), state.getValue(DOWN)); + // Purpur start -+ if (net.pl3x.purpur.PurpurConfig.disableMushroomBlockUpdates) return state; ++ if (org.purpurmc.purpur.PurpurConfig.disableMushroomBlockUpdates) return state; + return state + .setValue(PROPERTY_BY_DIRECTION.get(rotation.rotate(Direction.NORTH)), state.getValue(NORTH)) + .setValue(PROPERTY_BY_DIRECTION.get(rotation.rotate(Direction.SOUTH)), state.getValue(SOUTH)) @@ -86,7 +86,7 @@ index 3c6d97b51c6fec130b80e5965afa2c49d48843c9..174d16ae5c45dd3a4c9b4cc58b36121b public BlockState mirror(BlockState state, Mirror mirror) { - return state.setValue(PROPERTY_BY_DIRECTION.get(mirror.mirror(Direction.NORTH)), state.getValue(NORTH)).setValue(PROPERTY_BY_DIRECTION.get(mirror.mirror(Direction.SOUTH)), state.getValue(SOUTH)).setValue(PROPERTY_BY_DIRECTION.get(mirror.mirror(Direction.EAST)), state.getValue(EAST)).setValue(PROPERTY_BY_DIRECTION.get(mirror.mirror(Direction.WEST)), state.getValue(WEST)).setValue(PROPERTY_BY_DIRECTION.get(mirror.mirror(Direction.UP)), state.getValue(UP)).setValue(PROPERTY_BY_DIRECTION.get(mirror.mirror(Direction.DOWN)), state.getValue(DOWN)); + // Purpur start -+ if (net.pl3x.purpur.PurpurConfig.disableMushroomBlockUpdates) return state; ++ if (org.purpurmc.purpur.PurpurConfig.disableMushroomBlockUpdates) return state; + return state + .setValue(PROPERTY_BY_DIRECTION.get(mirror.mirror(Direction.NORTH)), state.getValue(NORTH)) + .setValue(PROPERTY_BY_DIRECTION.get(mirror.mirror(Direction.SOUTH)), state.getValue(SOUTH)) @@ -99,20 +99,20 @@ index 3c6d97b51c6fec130b80e5965afa2c49d48843c9..174d16ae5c45dd3a4c9b4cc58b36121b @Override diff --git a/src/main/java/net/minecraft/world/level/block/NoteBlock.java b/src/main/java/net/minecraft/world/level/block/NoteBlock.java -index 16e11e31077f160198e0b04abdfeabb97ed20c6f..0512b3701a3bf33891ab6281355c07af6be5b9c1 100644 +index 16e11e31077f160198e0b04abdfeabb97ed20c6f..7dd423f6b92b7f27dd43e5ef3f4029a100a8cfa6 100644 --- a/src/main/java/net/minecraft/world/level/block/NoteBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NoteBlock.java @@ -34,11 +34,13 @@ public class NoteBlock extends Block { @Override public BlockState getStateForPlacement(BlockPlaceContext ctx) { -+ if (net.pl3x.purpur.PurpurConfig.disableNoteBlockUpdates) return this.defaultBlockState(); // Purpur ++ if (org.purpurmc.purpur.PurpurConfig.disableNoteBlockUpdates) return this.defaultBlockState(); // Purpur return (BlockState) this.defaultBlockState().setValue(NoteBlock.INSTRUMENT, NoteBlockInstrument.byState(ctx.getLevel().getBlockState(ctx.getClickedPos().below()))); } @Override public BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { -+ if (net.pl3x.purpur.PurpurConfig.disableNoteBlockUpdates) return this.defaultBlockState(); // Purpur ++ if (org.purpurmc.purpur.PurpurConfig.disableNoteBlockUpdates) return this.defaultBlockState(); // Purpur return direction == Direction.DOWN ? (BlockState) state.setValue(NoteBlock.INSTRUMENT, NoteBlockInstrument.byState(neighborState)) : super.updateShape(state, direction, neighborState, world, pos, neighborPos); } @@ -120,12 +120,12 @@ index 16e11e31077f160198e0b04abdfeabb97ed20c6f..0512b3701a3bf33891ab6281355c07af state = world.getBlockState(pos); // CraftBukkit - SPIGOT-5617: update in case changed in event } -+ if (!net.pl3x.purpur.PurpurConfig.disableNoteBlockUpdates) // Purpur ++ if (!org.purpurmc.purpur.PurpurConfig.disableNoteBlockUpdates) // Purpur world.setBlock(pos, (BlockState) state.setValue(NoteBlock.POWERED, flag1), 3); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 5252ce6eb6bd9b7383bef17ec5a3087db43dbeef..01872f312cbbfc6ffd2fc2a8dff208bd026fe97f 100644 +index c2da5339ef01410d218bf48c919700939910d5d0..4f8a4b053a996589bf6c9f9107da3cabc8c791da 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -244,6 +244,15 @@ public class PurpurConfig { diff --git a/patches/server/0091-Short-enderman-height.patch b/patches/server/0091-Short-enderman-height.patch index b357646f0..bef1861ed 100644 --- a/patches/server/0091-Short-enderman-height.patch +++ b/patches/server/0091-Short-enderman-height.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Short enderman height diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index d143282263dd371cc3128a42da8a43ffab7d3f40..ff41e900df2fda703ad48acf0b989c3647801240 100644 +index 4236c9dfa0be6fa8ad2f3e32d7f65f1b722c4e60..7307b3208f1b4ffe31fc4e6f73ac7264eb95849a 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java @@ -279,7 +279,8 @@ public class EntityType implements EntityTypeTest { @@ -19,19 +19,19 @@ index d143282263dd371cc3128a42da8a43ffab7d3f40..ff41e900df2fda703ad48acf0b989c36 private static EntityType register(String id, EntityType.Builder type) { // CraftBukkit - decompile error return (EntityType) Registry.register(Registry.ENTITY_TYPE, id, (EntityType) type.build(id)); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 71b472e3fefe549fe959fda1702213bac3c3e7d4..490b8d674a0f1ae75de89fcadb2894da55c32d4e 100644 +index cff1fc69f75c923ecb162b22dc0ec5bb5c2fbfe0..37e71377ead8d3fd98ff6f6d643d31042944b43f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -399,6 +399,7 @@ public class EnderMan extends Monster implements NeutralMob { if (this.isInvulnerableTo(source)) { return false; } else if (getRider() != null) { return super.hurt(source, amount); // Purpur - no teleporting on damage -+ } else if (net.pl3x.purpur.PurpurConfig.endermanShortHeight && source == DamageSource.IN_WALL) { return false; // Purpur - no suffocation damage if short height ++ } else if (org.purpurmc.purpur.PurpurConfig.endermanShortHeight && source == DamageSource.IN_WALL) { return false; // Purpur - no suffocation damage if short height } else if (source instanceof IndirectEntityDamageSource) { Entity entity = source.getDirectEntity(); boolean flag; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 01872f312cbbfc6ffd2fc2a8dff208bd026fe97f..f9f0fe89bba6279b4038fbf214b158774cea3032 100644 +index 4f8a4b053a996589bf6c9f9107da3cabc8c791da..f600030f2225abc6e21a0e8a33300c27863112d1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -239,6 +239,12 @@ public class PurpurConfig { diff --git a/patches/server/0093-Crying-obsidian-valid-for-portal-frames.patch b/patches/server/0093-Crying-obsidian-valid-for-portal-frames.patch index c03df3423..14ee0c567 100644 --- a/patches/server/0093-Crying-obsidian-valid-for-portal-frames.patch +++ b/patches/server/0093-Crying-obsidian-valid-for-portal-frames.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Crying obsidian valid for portal frames diff --git a/src/main/java/net/minecraft/world/level/portal/PortalShape.java b/src/main/java/net/minecraft/world/level/portal/PortalShape.java -index 5d76674d5e181f012c0686e9915556bc93087706..4a7626819fe7c3cad694072b9ae5737175550ed4 100644 +index 5d76674d5e181f012c0686e9915556bc93087706..3f3a8b577f707ad0a80d27fca2d61b0929206d65 100644 --- a/src/main/java/net/minecraft/world/level/portal/PortalShape.java +++ b/src/main/java/net/minecraft/world/level/portal/PortalShape.java @@ -31,7 +31,7 @@ public class PortalShape { @@ -13,12 +13,12 @@ index 5d76674d5e181f012c0686e9915556bc93087706..4a7626819fe7c3cad694072b9ae57371 public static final int MAX_HEIGHT = 21; private static final BlockBehaviour.StatePredicate FRAME = (iblockdata, iblockaccess, blockposition) -> { - return iblockdata.is(Blocks.OBSIDIAN); -+ return iblockdata.is(Blocks.OBSIDIAN) || (net.pl3x.purpur.PurpurConfig.cryingObsidianValidForPortalFrame && iblockdata.is(Blocks.CRYING_OBSIDIAN)); // Purpur ++ return iblockdata.is(Blocks.OBSIDIAN) || (org.purpurmc.purpur.PurpurConfig.cryingObsidianValidForPortalFrame && iblockdata.is(Blocks.CRYING_OBSIDIAN)); // Purpur }; private final LevelAccessor level; private final Direction.Axis axis; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index f9f0fe89bba6279b4038fbf214b158774cea3032..2494c566ac34914f38484dafe1197dab0285515a 100644 +index f600030f2225abc6e21a0e8a33300c27863112d1..908137ec6461f1ae11ad49e9d8a4ca2fe584e0ce 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -207,6 +207,7 @@ public class PurpurConfig { diff --git a/patches/server/0106-Allow-infinite-and-mending-enchantments-together.patch b/patches/server/0106-Allow-infinite-and-mending-enchantments-together.patch index 7f259bfc2..dca300d91 100644 --- a/patches/server/0106-Allow-infinite-and-mending-enchantments-together.patch +++ b/patches/server/0106-Allow-infinite-and-mending-enchantments-together.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow infinite and mending enchantments together diff --git a/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java b/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java -index 3aece8245060dd1ba269c08d226c84247a6f0a83..6763d0b96c83d1b462999f525bf1f31c30cf705f 100644 +index 3aece8245060dd1ba269c08d226c84247a6f0a83..5cebd7c16b82eea9dbf39c51c671bacb7a974d5c 100644 --- a/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java +++ b/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java @@ -24,6 +24,6 @@ public class ArrowInfiniteEnchantment extends Enchantment { @@ -13,11 +13,11 @@ index 3aece8245060dd1ba269c08d226c84247a6f0a83..6763d0b96c83d1b462999f525bf1f31c @Override public boolean checkCompatibility(Enchantment other) { - return other instanceof MendingEnchantment ? false : super.checkCompatibility(other); -+ return other instanceof MendingEnchantment ? net.pl3x.purpur.PurpurConfig.allowInfinityMending : super.checkCompatibility(other); ++ return other instanceof MendingEnchantment ? org.purpurmc.purpur.PurpurConfig.allowInfinityMending : super.checkCompatibility(other); } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 2494c566ac34914f38484dafe1197dab0285515a..2f367f1e7ed64264577403a2c309ec426fcb7bbf 100644 +index 908137ec6461f1ae11ad49e9d8a4ca2fe584e0ce..8ec92ddf6373638ec2af2b8361e97ecb8b56993a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -241,6 +241,16 @@ public class PurpurConfig { diff --git a/patches/server/0110-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0110-Add-adjustable-breeding-cooldown-to-config.patch index 6f1da88a4..03e5209a3 100644 --- a/patches/server/0110-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0110-Add-adjustable-breeding-cooldown-to-config.patch @@ -33,7 +33,7 @@ index 2bc77858b4a78e24227b4b096fd44177202d5292..b26d5482d89e28897bcc9dc8a15042a5 entityageable.setBaby(true); entityageable.moveTo(this.getX(), this.getY(), this.getZ(), 0.0F, 0.0F); diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 468a2cc47734bf7a406ab833ce145a35194f67ec..409baf096e9a9cfecc6159313d4f91b174577be3 100644 +index 244f7dd3f2cdb70a471b2a547aa407ac0f258ef9..b86789d46a19a75fcb858a9f962ba54977de65f7 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -188,6 +188,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -89,13 +89,13 @@ index 468a2cc47734bf7a406ab833ce145a35194f67ec..409baf096e9a9cfecc6159313d4f91b1 @@ -314,6 +357,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), this.spigotConfig); // Paper - this.purpurConfig = new net.pl3x.purpur.PurpurWorldConfig((ServerLevel) this, ((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur + this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig((ServerLevel) this, ((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur + this.playerBreedingCooldowns = this.getNewBreedingCooldownCache(); // Purpur this.generator = gen; this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); this.ticksPerAnimalSpawns = this.getCraftServer().getTicksPerAnimalSpawns(); // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 287942965fa805cbbbdb2752d5f6fe4b8e1862d5..96229ee36ff6d6f18d371095baaa9e2833c88ae0 100644 +index 422e1f5011a0ab85fcb22765b5bc737318b36e71..93204be8d3a45f0447155c31f9c3823a57882e5b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -361,6 +361,7 @@ public class PurpurWorldConfig { @@ -115,7 +115,7 @@ index 287942965fa805cbbbdb2752d5f6fe4b8e1862d5..96229ee36ff6d6f18d371095baaa9e28 public boolean anvilAllowColors = false; diff --git a/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java b/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java -index 6e7f56fe2b78d7a09d5d130f2c88338fb8ae628e..cd63e9e556fa4931ab33c63931cf916757c51a62 100644 +index afdf04f8b22ad0b7c0b41675e44687b49c2f86d6..2621e54879e9ab0029a875f1d09eee67878b90d5 100644 --- a/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java +++ b/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java @@ -49,6 +49,7 @@ public class PurpurCommand extends Command { diff --git a/patches/server/0120-Snow-Golem-rate-of-fire-config.patch b/patches/server/0120-Snow-Golem-rate-of-fire-config.patch index d61fbee0d..e41d1cb14 100644 --- a/patches/server/0120-Snow-Golem-rate-of-fire-config.patch +++ b/patches/server/0120-Snow-Golem-rate-of-fire-config.patch @@ -10,20 +10,20 @@ If min-shoot-interval-ticks and max-shoot-interval-ticks are both set to 0, snow golems won't shoot any snowballs. diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index dbd005660d70918fe5a9d0f5c74f6b7d7fb03c3f..093211be0d86cc114cbb109d7ba01f491d7954b1 100644 +index a9c1b07f23c604d9364ccdee9478baf137af0816..10d68856c98b705158fe90623ef2b9ad41bef2f2 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -74,7 +74,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @Override protected void registerGoals() { - this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - this.goalSelector.addGoal(1, new RangedAttackGoal(this, 1.25D, 20, 10.0F)); + this.goalSelector.addGoal(1, new RangedAttackGoal(this, level.purpurConfig.snowGolemAttackDistance, level.purpurConfig.snowGolemSnowBallMin, level.purpurConfig.snowGolemSnowBallMax, level.purpurConfig.snowGolemSnowBallModifier)); // Purpur this.goalSelector.addGoal(2, new WaterAvoidingRandomStrollGoal(this, 1.0D, 1.0000001E-5F)); this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ff2ad3f56afa0828037adc27c5f36c555269fc67..f7d9795f163d44c95a2ff6c883c3b1f7f1a34bcf 100644 +index 5b6cb4c752a332a33e8cefa2c46a7ef76fea01c2..372c04499fb4adfd99560f8e227ef0b139643a0e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1468,6 +1468,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0121-EMC-Configurable-disable-give-dropping.patch b/patches/server/0121-EMC-Configurable-disable-give-dropping.patch index 2d4050123..69afe6ed7 100644 --- a/patches/server/0121-EMC-Configurable-disable-give-dropping.patch +++ b/patches/server/0121-EMC-Configurable-disable-give-dropping.patch @@ -8,19 +8,19 @@ purpur.yml to disable the /give command from dropping items on the floor when a player's inventory is full. diff --git a/src/main/java/net/minecraft/server/commands/GiveCommand.java b/src/main/java/net/minecraft/server/commands/GiveCommand.java -index a0dc380e90415de9068ea408d62a1605c82631df..60fd566f7e1499ecf2ad91216a667f12cb0e05de 100644 +index a0dc380e90415de9068ea408d62a1605c82631df..fcd65feb5182b806b9aa8ecdcf11b386f7bf029b 100644 --- a/src/main/java/net/minecraft/server/commands/GiveCommand.java +++ b/src/main/java/net/minecraft/server/commands/GiveCommand.java @@ -45,6 +45,7 @@ public class GiveCommand { k -= l; ItemStack itemStack = item.createItemStack(l, false); boolean bl = serverPlayer.getInventory().add(itemStack); -+ if (net.pl3x.purpur.PurpurConfig.disableGiveCommandDrops) continue; // Purpur - add config option for toggling give command dropping ++ if (org.purpurmc.purpur.PurpurConfig.disableGiveCommandDrops) continue; // Purpur - add config option for toggling give command dropping if (bl && itemStack.isEmpty()) { itemStack.setCount(1); ItemEntity itemEntity2 = serverPlayer.drop(itemStack, false, false, true); // Paper - Fix duplicating /give items on item drop cancel diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 2f367f1e7ed64264577403a2c309ec426fcb7bbf..192e272a33925b7a1f1937d2348f874857eb25ed 100644 +index 8ec92ddf6373638ec2af2b8361e97ecb8b56993a..d892734595f70f446919d89de967a10c87c687d6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -204,6 +204,11 @@ public class PurpurConfig { diff --git a/patches/server/0125-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0125-Configurable-chance-for-wolves-to-spawn-rabid.patch index ac447c2bb..10b25f6f7 100644 --- a/patches/server/0125-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0125-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -7,7 +7,7 @@ Configurable chance to spawn a wolf that is rabid. Rabid wolves attack all players, mobs, and animals. diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index 2e20a37663f48bd606157e22d466267699c8ed21..1c971eaf2fca2d1cdc89809f673e49de107a4a46 100644 +index 9f23279f7e3aedb758082c672656d5e4b160c074..38c69ddde8a54482a1de60387bace297869c47f3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java @@ -11,6 +11,7 @@ import net.minecraft.network.syncher.EntityDataAccessor; @@ -132,7 +132,7 @@ index 2e20a37663f48bd606157e22d466267699c8ed21..1c971eaf2fca2d1cdc89809f673e49de @Override @@ -132,6 +201,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { - this.goalSelector.addGoal(1, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur + this.goalSelector.addGoal(1, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(3, new Wolf.WolfAvoidEntityGoal<>(this, Llama.class, 24.0F, 1.5D, 1.5D)); + this.goalSelector.addGoal(3, new AvoidRabidWolfGoal(this, 24.0F, 1.5D, 1.5D)); // Purpur @@ -200,28 +200,6 @@ index 2e20a37663f48bd606157e22d466267699c8ed21..1c971eaf2fca2d1cdc89809f673e49de return super.mobInteract(player, hand); } -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 18bb80875573b5bb35ab9ec448dcb3992407a56d..da0849e6e38a2c54410bd158b16f8f3e79e60066 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1753,6 +1753,8 @@ public class PurpurWorldConfig { - public boolean wolfRidable = false; - public boolean wolfRidableInWater = false; - public double wolfMaxHealth = 8.0D; -+ public boolean wolfMilkCuresRabies = true; -+ public double wolfNaturalRabid = 0.0D; - public int wolfBreedingTicks = 6000; - private void wolfSettings() { - wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); -@@ -1763,6 +1765,8 @@ public class PurpurWorldConfig { - set("mobs.wolf.attributes.max_health", oldValue); - } - wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); -+ wolfMilkCuresRabies = getBoolean("mobs.wolf.milk-cures-rabid-wolves", wolfMilkCuresRabies); -+ wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); - wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); - } - diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java index f856b42201c17f8da21251e54fcf052336916e70..ac0803d42be2f36a2f40487ee31413d059d2f0e2 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java @@ -243,3 +221,25 @@ index f856b42201c17f8da21251e54fcf052336916e70..ac0803d42be2f36a2f40487ee31413d0 + } + // Purpur end } +diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +index a830b43904f5c7165be7b55c9177bdf4e15aff88..30151fb7e8f3c871f73362d42061ed7a72f07165 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +@@ -1753,6 +1753,8 @@ public class PurpurWorldConfig { + public boolean wolfRidable = false; + public boolean wolfRidableInWater = false; + public double wolfMaxHealth = 8.0D; ++ public boolean wolfMilkCuresRabies = true; ++ public double wolfNaturalRabid = 0.0D; + public int wolfBreedingTicks = 6000; + private void wolfSettings() { + wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); +@@ -1763,6 +1765,8 @@ public class PurpurWorldConfig { + set("mobs.wolf.attributes.max_health", oldValue); + } + wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); ++ wolfMilkCuresRabies = getBoolean("mobs.wolf.milk-cures-rabid-wolves", wolfMilkCuresRabies); ++ wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); + wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); + } + diff --git a/patches/server/0129-Implement-TPSBar.patch b/patches/server/0129-Implement-TPSBar.patch index 9fb25e540..b30974e19 100644 --- a/patches/server/0129-Implement-TPSBar.patch +++ b/patches/server/0129-Implement-TPSBar.patch @@ -5,44 +5,44 @@ Subject: [PATCH] Implement TPSBar diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index d054bee8c7c6f6bf608252f21b2f5192b59c086c..12f5e8b11fad04a1fec717b68fbbf80efa3705bc 100644 +index be6009edf26ee468980e7d0f33b989f0121f3011..6914b9a27798ee1f4f4169ff70b9cc4e2b61d9b4 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java @@ -208,6 +208,7 @@ public class Commands { - net.pl3x.purpur.command.CreditsCommand.register(this.dispatcher); // Purpur - net.pl3x.purpur.command.DemoCommand.register(this.dispatcher); // Purpur - net.pl3x.purpur.command.PingCommand.register(this.dispatcher); // Purpur -+ net.pl3x.purpur.command.TPSBarCommand.register(this.dispatcher); // Purpur + org.purpurmc.purpur.command.CreditsCommand.register(this.dispatcher); // Purpur + org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur + org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur ++ org.purpurmc.purpur.command.TPSBarCommand.register(this.dispatcher); // Purpur } if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 947f27ba75b3a139f6e493f24a10483f40f3a6b9..5846b246019e1a161c658240d772d635dffe45ef 100644 +index bacc37f3478ea45f840fffcb72284c2908b8dcf7..8634c7ca5db006ef0f27a455f30e15e1d64fdaa6 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1123,6 +1123,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop dispatcher) { @@ -167,11 +167,11 @@ index 0000000000000000000000000000000000000000..2eca7b78907007be9683d87bf2346c87 +} diff --git a/src/main/java/org/purpurmc/purpur/task/BossBarTask.java b/src/main/java/org/purpurmc/purpur/task/BossBarTask.java new file mode 100644 -index 0000000000000000000000000000000000000000..89122d7bcfd037a22d277e562f5300f2f3eab2db +index 0000000000000000000000000000000000000000..d38b3c4a722396cc3b61a9a8ed7e39cea4ae65cb --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/task/BossBarTask.java @@ -0,0 +1,109 @@ -+package net.pl3x.purpur.task; ++package org.purpurmc.purpur.task; + +import net.kyori.adventure.bossbar.BossBar; +import net.minecraft.server.level.ServerPlayer; @@ -282,17 +282,17 @@ index 0000000000000000000000000000000000000000..89122d7bcfd037a22d277e562f5300f2 +} diff --git a/src/main/java/org/purpurmc/purpur/task/TPSBarTask.java b/src/main/java/org/purpurmc/purpur/task/TPSBarTask.java new file mode 100644 -index 0000000000000000000000000000000000000000..cafb140ff57e5697d7c3705ff9be6411c0ad82d9 +index 0000000000000000000000000000000000000000..6c4d5167a9d965edbb25f4c24e6bb885afe281ca --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/task/TPSBarTask.java @@ -0,0 +1,142 @@ -+package net.pl3x.purpur.task; ++package org.purpurmc.purpur.task; + +import net.kyori.adventure.bossbar.BossBar; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.minimessage.MiniMessage; +import net.kyori.adventure.text.minimessage.Template; -+import net.pl3x.purpur.PurpurConfig; ++import org.purpurmc.purpur.PurpurConfig; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + diff --git a/patches/server/0131-PlayerBookTooLargeEvent.patch b/patches/server/0131-PlayerBookTooLargeEvent.patch index 2b087b0df..13d131e82 100644 --- a/patches/server/0131-PlayerBookTooLargeEvent.patch +++ b/patches/server/0131-PlayerBookTooLargeEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] PlayerBookTooLargeEvent diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 6627214ddab3a8b7080ead964a44a367b0c34a05..cbd434897155095b3689d0adc274df7749a83192 100644 +index 00666db1dc09f3c2df475de8c8c43e7d2c30127c..b36c984e1c38c5f8ca644e51157e82452612ebcf 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1107,10 +1107,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @@ -17,7 +17,7 @@ index 6627214ddab3a8b7080ead964a44a367b0c34a05..cbd434897155095b3689d0adc274df77 int byteLength = testString.getBytes(java.nio.charset.StandardCharsets.UTF_8).length; if (byteLength > 256 * 4) { ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send a book with with a page too large!"); -+ net.pl3x.purpur.event.player.PlayerBookTooLargeEvent event = new net.pl3x.purpur.event.player.PlayerBookTooLargeEvent(player.getBukkitEntity(), itemstack.asBukkitCopy()); if (event.shouldKickPlayer()) // Purpur ++ org.purpurmc.purpur.event.player.PlayerBookTooLargeEvent event = new org.purpurmc.purpur.event.player.PlayerBookTooLargeEvent(player.getBukkitEntity(), itemstack.asBukkitCopy()); if (event.shouldKickPlayer()) // Purpur server.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause return; } @@ -25,7 +25,7 @@ index 6627214ddab3a8b7080ead964a44a367b0c34a05..cbd434897155095b3689d0adc274df77 if (byteTotal > byteAllowed) { ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size()); -+ net.pl3x.purpur.event.player.PlayerBookTooLargeEvent event = new net.pl3x.purpur.event.player.PlayerBookTooLargeEvent(player.getBukkitEntity(), itemstack.asBukkitCopy()); if (event.shouldKickPlayer()) // Purpur ++ org.purpurmc.purpur.event.player.PlayerBookTooLargeEvent event = new org.purpurmc.purpur.event.player.PlayerBookTooLargeEvent(player.getBukkitEntity(), itemstack.asBukkitCopy()); if (event.shouldKickPlayer()) // Purpur server.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause return; } diff --git a/patches/server/0136-Add-EntityTeleportHinderedEvent.patch b/patches/server/0136-Add-EntityTeleportHinderedEvent.patch index f8301dddf..388e6f858 100644 --- a/patches/server/0136-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0136-Add-EntityTeleportHinderedEvent.patch @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java -index 19892cb3cb290add4f094dc87bb22106e4f07a24..46fdaf744080ac01498ca693068616659a79b9ea 100644 +index 19892cb3cb290add4f094dc87bb22106e4f07a24..bd4f980f68330fc46a02a6f4bb4403fac3a91919 100644 --- a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java @@ -45,7 +45,15 @@ public class EndPortalBlock extends BaseEntityBlock { @@ -28,7 +28,7 @@ index 19892cb3cb290add4f094dc87bb22106e4f07a24..46fdaf744080ac01498ca69306861665 + // Purpur start + if (world instanceof ServerLevel && /*!entity.isPassenger() && !entity.isVehicle() &&*/ entity.canChangeDimensions() && Shapes.joinIsNotEmpty(Shapes.create(entity.getBoundingBox().move((double) (-pos.getX()), (double) (-pos.getY()), (double) (-pos.getZ()))), state.getShape(world, pos), BooleanOp.AND)) { + if (entity.isPassenger() || entity.isVehicle()) { -+ if (new net.pl3x.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), entity.isPassenger() ? net.pl3x.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_PASSENGER : net.pl3x.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, PlayerTeleportEvent.TeleportCause.END_PORTAL).callEvent()) { ++ if (new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), entity.isPassenger() ? org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_PASSENGER : org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, PlayerTeleportEvent.TeleportCause.END_PORTAL).callEvent()) { + this.entityInside(state, world, pos, entity); + } + return; @@ -38,7 +38,7 @@ index 19892cb3cb290add4f094dc87bb22106e4f07a24..46fdaf744080ac01498ca69306861665 ServerLevel worldserver = ((ServerLevel) world).getServer().getLevel(resourcekey); diff --git a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java -index 82c132bc90381aab6a29d50319ff40e7383eb7f2..b99a9f76d6e400a053c57a96c9586fe09a4a5a26 100644 +index 82c132bc90381aab6a29d50319ff40e7383eb7f2..13a367d2b5f245f4dd92df03288dc40b81e19603 100644 --- a/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NetherPortalBlock.java @@ -86,7 +86,15 @@ public class NetherPortalBlock extends Block { @@ -49,7 +49,7 @@ index 82c132bc90381aab6a29d50319ff40e7383eb7f2..b99a9f76d6e400a053c57a96c9586fe0 + // Purpur start + if (/*!entity.isPassenger() && !entity.isVehicle() &&*/ entity.canChangeDimensions()) { + if (entity.isPassenger() || entity.isVehicle()) { -+ if (new net.pl3x.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), entity.isPassenger() ? net.pl3x.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_PASSENGER : net.pl3x.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, org.bukkit.event.player.PlayerTeleportEvent.TeleportCause.NETHER_PORTAL).callEvent()) { ++ if (new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), entity.isPassenger() ? org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_PASSENGER : org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, org.bukkit.event.player.PlayerTeleportEvent.TeleportCause.NETHER_PORTAL).callEvent()) { + this.entityInside(state, world, pos, entity); + } + return; @@ -59,7 +59,7 @@ index 82c132bc90381aab6a29d50319ff40e7383eb7f2..b99a9f76d6e400a053c57a96c9586fe0 EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), pos.getX(), pos.getY(), pos.getZ())); world.getCraftServer().getPluginManager().callEvent(event); 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 500a4013ce525c0474fe3991457d4c2a50ceb7ed..e0beee6bd772792fbd3bc6a856230311e9ed6c42 100644 +index 500a4013ce525c0474fe3991457d4c2a50ceb7ed..74de26d72e705041318beee0ebef59d61fb5278e 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java @@ -177,6 +177,14 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { @@ -68,7 +68,7 @@ index 500a4013ce525c0474fe3991457d4c2a50ceb7ed..e0beee6bd772792fbd3bc6a856230311 if (!entity.canChangeDimensions()) return; // Purpur + // Purpur start + if (world.purpurConfig.imposeTeleportRestrictionsOnGateways && (entity.isVehicle() || entity.isPassenger())) { -+ if (new net.pl3x.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), entity.isPassenger() ? net.pl3x.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_PASSENGER : net.pl3x.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, PlayerTeleportEvent.TeleportCause.END_GATEWAY).callEvent()) { ++ if (new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), entity.isPassenger() ? org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_PASSENGER : org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, PlayerTeleportEvent.TeleportCause.END_GATEWAY).callEvent()) { + teleportEntity(world, pos, state, entity, blockEntity); + } + return; @@ -77,8 +77,38 @@ index 500a4013ce525c0474fe3991457d4c2a50ceb7ed..e0beee6bd772792fbd3bc6a856230311 ServerLevel worldserver = (ServerLevel) world; blockEntity.teleportCooldown = 100; +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +index 1ba59900ddf403453aeb4f82b097feaab3dae3ff..1f76a89e179b7a4bf28a172b1ece0603f975dbcd 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +@@ -562,6 +562,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { + location.checkFinite(); + + if (this.entity.isVehicle() || this.entity.isRemoved()) { ++ // Purpur start ++ if (!entity.isRemoved() && new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, cause).callEvent()) ++ return teleport(location, cause); ++ // Purpur end + return false; + } + +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +index 8eaaa5ef3a9c2a49e63f4c015738fc7ce7d3fd5c..235dbac7c3c28e5c2fb2aa3bfbafc7ff008e00ff 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +@@ -966,6 +966,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { + } + + if (entity.isVehicle()) { ++ // Purpur start ++ if (new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, cause).callEvent()) ++ return teleport(location, cause); ++ // Purpur end + return false; + } + diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e2239c1a5ea8d8c91d0cd247fa0b4dbc255eeab5..1719201a0da3d0da8500a2e138bd0a6234502b9b 100644 +index 38467b91b7550a6c1c28a65dfbde9cbbf63915e9..fb27a33232a30706d4075ca204ca9b20c0505613 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -383,6 +383,7 @@ public class PurpurWorldConfig { @@ -97,33 +127,3 @@ index e2239c1a5ea8d8c91d0cd247fa0b4dbc255eeab5..1719201a0da3d0da8500a2e138bd0a62 milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 1ba59900ddf403453aeb4f82b097feaab3dae3ff..30302c1cfdff65a5f1d0adde4c831f0a74f15851 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -562,6 +562,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { - location.checkFinite(); - - if (this.entity.isVehicle() || this.entity.isRemoved()) { -+ // Purpur start -+ if (!entity.isRemoved() && new net.pl3x.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), net.pl3x.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, cause).callEvent()) -+ return teleport(location, cause); -+ // Purpur end - return false; - } - -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 5a0d709231ab7fffad60b8fba7f2f490535c8423..f223685ecb4e8dfb9b97a97ed106b052953be89f 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -966,6 +966,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { - } - - if (entity.isVehicle()) { -+ // Purpur start -+ if (new net.pl3x.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), net.pl3x.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, cause).callEvent()) -+ return teleport(location, cause); -+ // Purpur end - return false; - } - diff --git a/patches/server/0144-Dont-run-with-scissors.patch b/patches/server/0144-Dont-run-with-scissors.patch index a063409de..a7dea6b28 100644 --- a/patches/server/0144-Dont-run-with-scissors.patch +++ b/patches/server/0144-Dont-run-with-scissors.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Dont run with scissors! diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index cbd434897155095b3689d0adc274df7749a83192..a196c669891b09c42751004bd76d9c40ed6924ee 100644 +index b36c984e1c38c5f8ca644e51157e82452612ebcf..982e04ba9f2b0cd2640a639052e871d0c41ef058 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1528,6 +1528,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @@ -15,7 +15,7 @@ index cbd434897155095b3689d0adc274df7749a83192..a196c669891b09c42751004bd76d9c40 + // Purpur Start + if (this.player.level.purpurConfig.dontRunWithScissors && this.player.isSprinting() && (isScissor(this.player.getItemInHand(InteractionHand.MAIN_HAND)) || isScissor(this.player.getItemInHand(InteractionHand.OFF_HAND))) && (int) (Math.random() * 10) == 0) { + this.player.hurt(net.minecraft.world.damagesource.DamageSource.MAGIC, (float) this.player.level.purpurConfig.scissorsRunningDamage); -+ if (!net.pl3x.purpur.PurpurConfig.dontRunWithScissors.isBlank()) this.player.sendActionBarMessage(net.pl3x.purpur.PurpurConfig.dontRunWithScissors); ++ if (!org.purpurmc.purpur.PurpurConfig.dontRunWithScissors.isBlank()) this.player.sendActionBarMessage(org.purpurmc.purpur.PurpurConfig.dontRunWithScissors); + } + // Purpur End + @@ -36,7 +36,7 @@ index cbd434897155095b3689d0adc274df7749a83192..a196c669891b09c42751004bd76d9c40 Iterable iterable = world.getCollisions(this.player, this.player.getBoundingBox().deflate(9.999999747378752E-6D)); VoxelShape voxelshape = Shapes.create(box.deflate(9.999999747378752E-6D)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 294be16a809f4fe7f62de51648b25f26e2a5b82a..dcb9394208df25e1d6fcf9bafa31864b37b5db51 100644 +index 79bcb015a7a29b41552e5173ec4b38bfa44fa6ff..931f4f3cd6f29e36822fb9de3d38e6ba7a713dcd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -165,6 +165,7 @@ public class PurpurConfig { @@ -56,7 +56,7 @@ index 294be16a809f4fe7f62de51648b25f26e2a5b82a..dcb9394208df25e1d6fcf9bafa31864b public static String serverModName = "Purpur"; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b8dfe1a519a1777b3e0c5644dc82ef89edbb034b..38fefd5ff631df27ee05b5f8776f1466d15022bd 100644 +index b55e4e43554ef1e4afcc25101cfa82f0dd95db11..37e7ff9b3da306ff091e430e6091d69c6384289f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -157,6 +157,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0150-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0150-Config-Enderman-aggressiveness-towards-Endermites.patch index 48321852a..7027f57dd 100644 --- a/patches/server/0150-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0150-Config-Enderman-aggressiveness-towards-Endermites.patch @@ -5,11 +5,11 @@ Subject: [PATCH] Config Enderman aggressiveness towards Endermites diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index a0b347f9daf5e8cf28ec3e308b639d5200c276dd..75d0998d7e6109592400c14c4aee063f7942961d 100644 +index b050f2d16a6aed98654f51fa4ede496a0be07b45..c7216abec9b93cce9198568470ebe21f40d6423b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -119,7 +119,7 @@ public class EnderMan extends Monster implements NeutralMob { - this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur + this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0])); - this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Endermite.class, true, false)); @@ -18,7 +18,7 @@ index a0b347f9daf5e8cf28ec3e308b639d5200c276dd..75d0998d7e6109592400c14c4aee063f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ff2cdbdb785628e564de0fefaef68b408c5e3e8a..83534bbdad44c682cf5fdf8a94390f224c5906f1 100644 +index 1e6bf257d8f587af6397c39ff8d5107120313107..7e3c65b3a10c6dbfc345b7d7ada8cfdd27a15596 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -945,6 +945,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0153-Config-to-disable-Llama-caravans.patch b/patches/server/0153-Config-to-disable-Llama-caravans.patch index 01470b32e..bd5e2ee1a 100644 --- a/patches/server/0153-Config-to-disable-Llama-caravans.patch +++ b/patches/server/0153-Config-to-disable-Llama-caravans.patch @@ -19,20 +19,20 @@ index 7b141c495095afcd9c8b04c059d692e829259e7a..ad30f2d678cfc4b0d693e84e6e152c63 List list = this.llama.level.getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0D, 4.0D, 9.0D), (entity) -> { EntityType entityType = entity.getType(); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index d0016761c124a4d593b18006efa18757ad385ab0..13fd55f198f36ed6b5d3b242e07535c5dfe797b1 100644 +index 81957c9daa27682ee701092e207d72166e159382..e09e44f15b6802261f83795bf5162686942bcdf5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -509,7 +509,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { } public void joinCaravan(Llama llama) { -- if (!shouldJoinCaravan || !new net.pl3x.purpur.event.entity.LlamaJoinCaravanEvent((org.bukkit.entity.Llama) getBukkitEntity(), (org.bukkit.entity.Llama) llama.getBukkitEntity()).callEvent()) return; // Purpur -+ if (!this.level.purpurConfig.llamaJoinCaravans || !shouldJoinCaravan || !new net.pl3x.purpur.event.entity.LlamaJoinCaravanEvent((org.bukkit.entity.Llama) getBukkitEntity(), (org.bukkit.entity.Llama) llama.getBukkitEntity()).callEvent()) return; // Purpur +- if (!shouldJoinCaravan || !new org.purpurmc.purpur.event.entity.LlamaJoinCaravanEvent((org.bukkit.entity.Llama) getBukkitEntity(), (org.bukkit.entity.Llama) llama.getBukkitEntity()).callEvent()) return; // Purpur ++ if (!this.level.purpurConfig.llamaJoinCaravans || !shouldJoinCaravan || !new org.purpurmc.purpur.event.entity.LlamaJoinCaravanEvent((org.bukkit.entity.Llama) getBukkitEntity(), (org.bukkit.entity.Llama) llama.getBukkitEntity()).callEvent()) return; // Purpur this.caravanHead = llama; this.caravanHead.caravanTail = this; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 241383f4edf4a1ec8d6b92400a6055527a49758c..e068b364782311c24790e23ecfd67e571d75d3a2 100644 +index 0f6065ca8d952c0ae12dcf9ccb6baea3f386808e..94bc54757899557a5f3fd5a6fa426823c846981f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1240,6 +1240,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0159-Allow-infinity-on-crossbows.patch b/patches/server/0159-Allow-infinity-on-crossbows.patch index 2ee9540de..613e38618 100644 --- a/patches/server/0159-Allow-infinity-on-crossbows.patch +++ b/patches/server/0159-Allow-infinity-on-crossbows.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow infinity on crossbows diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java -index 288776d2c6e4d3f214152910e6c1ccdafa2c3fbd..78f6d335dedd933ff225e2c63b879626b6b76ee7 100644 +index 288776d2c6e4d3f214152910e6c1ccdafa2c3fbd..e39f1241b19d3ce8b847c880a414bca89ec80356 100644 --- a/src/main/java/net/minecraft/world/item/CrossbowItem.java +++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java @@ -111,7 +111,7 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable { @@ -13,7 +13,7 @@ index 288776d2c6e4d3f214152910e6c1ccdafa2c3fbd..78f6d335dedd933ff225e2c63b879626 int i = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.MULTISHOT, projectile); int j = i == 0 ? 1 : 3; - boolean flag = !consume || shooter instanceof Player && ((Player) shooter).getAbilities().instabuild; // Paper - add consume -+ boolean flag = !consume || shooter instanceof Player && ((Player) shooter).getAbilities().instabuild || (net.pl3x.purpur.PurpurConfig.allowCrossbowInfinity && EnchantmentHelper.getItemEnchantmentLevel(Enchantments.INFINITY_ARROWS, projectile) > 0); // Paper - add consume // Purpur ++ boolean flag = !consume || shooter instanceof Player && ((Player) shooter).getAbilities().instabuild || (org.purpurmc.purpur.PurpurConfig.allowCrossbowInfinity && EnchantmentHelper.getItemEnchantmentLevel(Enchantments.INFINITY_ARROWS, projectile) > 0); // Paper - add consume // Purpur ItemStack itemstack1 = shooter.getProjectile(projectile); ItemStack itemstack2 = itemstack1.copy(); @@ -22,12 +22,12 @@ index 288776d2c6e4d3f214152910e6c1ccdafa2c3fbd..78f6d335dedd933ff225e2c63b879626 for (int i = 0; i < list.size(); ++i) { ItemStack itemstack1 = (ItemStack) list.get(i); - boolean flag = entity instanceof Player && ((Player) entity).getAbilities().instabuild; -+ boolean flag = entity instanceof Player && ((Player) entity).getAbilities().instabuild || (net.pl3x.purpur.PurpurConfig.allowCrossbowInfinity && EnchantmentHelper.getItemEnchantmentLevel(Enchantments.INFINITY_ARROWS, stack) > 0); // Purpur ++ boolean flag = entity instanceof Player && ((Player) entity).getAbilities().instabuild || (org.purpurmc.purpur.PurpurConfig.allowCrossbowInfinity && EnchantmentHelper.getItemEnchantmentLevel(Enchantments.INFINITY_ARROWS, stack) > 0); // Purpur if (!itemstack1.isEmpty()) { if (i == 0) { diff --git a/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java b/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java -index 6763d0b96c83d1b462999f525bf1f31c30cf705f..893bfd35298acbdb8a6d6c4cac9ae14f156c44c5 100644 +index 5cebd7c16b82eea9dbf39c51c671bacb7a974d5c..38703baaef5f04a53081620ce1bf29b45e4d62d1 100644 --- a/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java +++ b/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java @@ -7,6 +7,14 @@ public class ArrowInfiniteEnchantment extends Enchantment { @@ -38,7 +38,7 @@ index 6763d0b96c83d1b462999f525bf1f31c30cf705f..893bfd35298acbdb8a6d6c4cac9ae14f + @Override + public boolean canEnchant(net.minecraft.world.item.ItemStack stack) { + // we have to cheat the system because this class is loaded before purpur's config is loaded -+ return (net.pl3x.purpur.PurpurConfig.allowCrossbowInfinity ? EnchantmentCategory.BOW_AND_CROSSBOW : EnchantmentCategory.BOW).canEnchant(stack.getItem()); ++ return (org.purpurmc.purpur.PurpurConfig.allowCrossbowInfinity ? EnchantmentCategory.BOW_AND_CROSSBOW : EnchantmentCategory.BOW).canEnchant(stack.getItem()); + } + // Purpur end + @@ -64,8 +64,20 @@ index 6f6106ca4d74d50a7b74b086adc96c58c7906cb6..d6417c1e77ac8823e18a179dc9f61757 }; public abstract boolean canEnchant(Item item); +diff --git a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java +index 11c1eb0e0bc326b28dc0cab16f67c413cc52e98c..7073985656ae5b17a7489518747dc8584487e46e 100644 +--- a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java ++++ b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java +@@ -59,6 +59,7 @@ public class CraftEnchantment extends Enchantment { + return EnchantmentTarget.CROSSBOW; + case VANISHABLE: + return EnchantmentTarget.VANISHABLE; ++ case BOW_AND_CROSSBOW: return EnchantmentTarget.BOW_AND_CROSSBOW; // Purpur + default: + return null; + } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index dcb9394208df25e1d6fcf9bafa31864b37b5db51..5421be4de201bb09a66bf5e1c4ed537838a8f686 100644 +index 931f4f3cd6f29e36822fb9de3d38e6ba7a713dcd..b91b1c4d65f32b82bc08489779e3d12f3b16d1e7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -272,6 +272,7 @@ public class PurpurConfig { @@ -84,15 +96,3 @@ index dcb9394208df25e1d6fcf9bafa31864b37b5db51..5421be4de201bb09a66bf5e1c4ed5378 } public static boolean endermanShortHeight = false; -diff --git a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java -index 11c1eb0e0bc326b28dc0cab16f67c413cc52e98c..7073985656ae5b17a7489518747dc8584487e46e 100644 ---- a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java -+++ b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java -@@ -59,6 +59,7 @@ public class CraftEnchantment extends Enchantment { - return EnchantmentTarget.CROSSBOW; - case VANISHABLE: - return EnchantmentTarget.VANISHABLE; -+ case BOW_AND_CROSSBOW: return EnchantmentTarget.BOW_AND_CROSSBOW; // Purpur - default: - return null; - } diff --git a/patches/server/0165-Config-to-allow-for-unsafe-enchants.patch b/patches/server/0165-Config-to-allow-for-unsafe-enchants.patch index 2d7e5dcb2..206569c26 100644 --- a/patches/server/0165-Config-to-allow-for-unsafe-enchants.patch +++ b/patches/server/0165-Config-to-allow-for-unsafe-enchants.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to allow for unsafe enchants diff --git a/src/main/java/net/minecraft/server/commands/EnchantCommand.java b/src/main/java/net/minecraft/server/commands/EnchantCommand.java -index 514cc0e8805045549eacde6c280859aa2dc4a91d..a3ac6bebcef7b1e1f9c3ebe525656a15e13f9be8 100644 +index 514cc0e8805045549eacde6c280859aa2dc4a91d..4c8eeb66a9368597330957dd3c1486344b53b863 100644 --- a/src/main/java/net/minecraft/server/commands/EnchantCommand.java +++ b/src/main/java/net/minecraft/server/commands/EnchantCommand.java @@ -44,7 +44,7 @@ public class EnchantCommand { @@ -13,7 +13,7 @@ index 514cc0e8805045549eacde6c280859aa2dc4a91d..a3ac6bebcef7b1e1f9c3ebe525656a15 private static int enchant(CommandSourceStack source, Collection targets, Enchantment enchantment, int level) throws CommandSyntaxException { - if (level > enchantment.getMaxLevel()) { -+ if (!net.pl3x.purpur.PurpurConfig.allowUnsafeEnchants && level > enchantment.getMaxLevel()) { // Purpur ++ if (!org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchants && level > enchantment.getMaxLevel()) { // Purpur throw ERROR_LEVEL_TOO_HIGH.create(level, enchantment.getMaxLevel()); } else { int i = 0; @@ -22,12 +22,12 @@ index 514cc0e8805045549eacde6c280859aa2dc4a91d..a3ac6bebcef7b1e1f9c3ebe525656a15 ItemStack itemStack = livingEntity.getMainHandItem(); if (!itemStack.isEmpty()) { - if (enchantment.canEnchant(itemStack) && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantments(itemStack).keySet(), enchantment)) { -+ if ((enchantment.canEnchant(itemStack) && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantments(itemStack).keySet(), enchantment)) || (net.pl3x.purpur.PurpurConfig.allowUnsafeEnchants && !itemStack.hasEnchantment(enchantment))) { // Purpur ++ if ((enchantment.canEnchant(itemStack) && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantments(itemStack).keySet(), enchantment)) || (org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchants && !itemStack.hasEnchantment(enchantment))) { // Purpur itemStack.enchant(enchantment, level); ++i; } else if (targets.size() == 1) { diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index c8b6c5c65a4cd3a53b300358513f96acdaaba449..ae7ff760a84620562b2b6b0d1d0fd2f94a09024a 100644 +index 69d996fead45bcf9fe5a29727f7f0a7a162cdabe..3f786be9c9efc069a3a1bc457f02421310941800 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java @@ -208,7 +208,7 @@ public class AnvilMenu extends ItemCombinerMenu { @@ -35,7 +35,7 @@ index c8b6c5c65a4cd3a53b300358513f96acdaaba449..ae7ff760a84620562b2b6b0d1d0fd2f9 i2 = l1 == i2 ? i2 + 1 : Math.max(i2, l1); - boolean flag3 = canDoUnsafeEnchants || enchantment.canEnchant(itemstack); // Purpur -+ boolean flag3 = canDoUnsafeEnchants || net.pl3x.purpur.PurpurConfig.allowUnsafeEnchants || enchantment.canEnchant(itemstack); // Purpur ++ boolean flag3 = canDoUnsafeEnchants || org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchants || enchantment.canEnchant(itemstack); // Purpur if (this.player.getAbilities().instabuild || itemstack.is(Items.ENCHANTED_BOOK)) { flag3 = true; @@ -44,7 +44,7 @@ index c8b6c5c65a4cd3a53b300358513f96acdaaba449..ae7ff760a84620562b2b6b0d1d0fd2f9 if (enchantment1 != enchantment && !enchantment.isCompatibleWith(enchantment1)) { - flag3 = canDoUnsafeEnchants; // Purpur -+ flag3 = canDoUnsafeEnchants || net.pl3x.purpur.PurpurConfig.allowUnsafeEnchants; // Purpur ++ flag3 = canDoUnsafeEnchants || org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchants; // Purpur ++i; } } @@ -53,7 +53,7 @@ index c8b6c5c65a4cd3a53b300358513f96acdaaba449..ae7ff760a84620562b2b6b0d1d0fd2f9 this.broadcastChanges(); // Purpur start - if (canDoUnsafeEnchants && itemstack1 != ItemStack.EMPTY) { -+ if ((canDoUnsafeEnchants || net.pl3x.purpur.PurpurConfig.allowUnsafeEnchants) && itemstack1 != ItemStack.EMPTY) { ++ if ((canDoUnsafeEnchants || org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchants) && itemstack1 != ItemStack.EMPTY) { ((ServerPlayer) player).connection.send(new ClientboundContainerSetSlotPacket(containerId, incrementStateId(), 2, itemstack1)); ((ServerPlayer) player).connection.send(new ClientboundContainerSetDataPacket(containerId, 0, cost.get())); } @@ -75,7 +75,7 @@ index 7ed8ae3a92d631dcfc155790dbc2fdd4a3e39d1c..03271cdffd99ab443904a5d1da05d79c this.getOrCreateTag().put(key, element); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 5421be4de201bb09a66bf5e1c4ed537838a8f686..966c699c377f722e4dfb5da3d19831f99563644c 100644 +index b91b1c4d65f32b82bc08489779e3d12f3b16d1e7..b314889c0a739b220e634e09e4d630616d6397df 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -273,6 +273,7 @@ public class PurpurConfig { diff --git a/patches/server/0170-Config-to-change-max-number-of-bees.patch b/patches/server/0170-Config-to-change-max-number-of-bees.patch index 02d8b0854..9b74cf4a2 100644 --- a/patches/server/0170-Config-to-change-max-number-of-bees.patch +++ b/patches/server/0170-Config-to-change-max-number-of-bees.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config to change max number of bees diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -index 9fcd835d219aafbe113ebb1b796052e07bf2b046..87ee1d0d51fb54702ae5763c01dba8632b2234e3 100644 +index 9fcd835d219aafbe113ebb1b796052e07bf2b046..2f8e6fb9f811fcfa6b6ed4dd15fcb38f061c8491 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java @@ -43,7 +43,7 @@ public class BeehiveBlockEntity extends BlockEntity { @@ -13,12 +13,12 @@ index 9fcd835d219aafbe113ebb1b796052e07bf2b046..87ee1d0d51fb54702ae5763c01dba863 @Nullable public BlockPos savedFlowerPos; - public int maxBees = 3; // CraftBukkit - allow setting max amount of bees a hive can hold -+ public int maxBees = net.pl3x.purpur.PurpurConfig.beeInsideBeeHive; // CraftBukkit - allow setting max amount of bees a hive can hold // Purpur ++ public int maxBees = org.purpurmc.purpur.PurpurConfig.beeInsideBeeHive; // CraftBukkit - allow setting max amount of bees a hive can hold // Purpur public BeehiveBlockEntity(BlockPos pos, BlockState state) { super(BlockEntityType.BEEHIVE, pos, state); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 966c699c377f722e4dfb5da3d19831f99563644c..8d207a228855b2a6c0af2e54d815bf17b9217950 100644 +index b314889c0a739b220e634e09e4d630616d6397df..9dce5a66f8b89dbf1456263ce5366337955ee5e7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -238,6 +238,7 @@ public class PurpurConfig { diff --git a/patches/server/0173-Gamemode-extra-permissions.patch b/patches/server/0173-Gamemode-extra-permissions.patch index e03fb6bac..8bcdec911 100644 --- a/patches/server/0173-Gamemode-extra-permissions.patch +++ b/patches/server/0173-Gamemode-extra-permissions.patch @@ -31,7 +31,7 @@ index 6e8111ef16439d2b3025ebe2a0418b245420bd88..c20c7c9a6eb299e1a8d3d3e9bdf986ea return this.worldPosition; } diff --git a/src/main/java/net/minecraft/server/commands/GameModeCommand.java b/src/main/java/net/minecraft/server/commands/GameModeCommand.java -index 79f6089b934124c3309c6bee2e48b36b937252e0..dff8ef0a1a2e52792070d93685c290023d31ce95 100644 +index 79f6089b934124c3309c6bee2e48b36b937252e0..d1e6ac2dcff3f058dc147c8ed4d16d273b7c40a9 100644 --- a/src/main/java/net/minecraft/server/commands/GameModeCommand.java +++ b/src/main/java/net/minecraft/server/commands/GameModeCommand.java @@ -49,6 +49,18 @@ public class GameModeCommand { @@ -39,7 +39,7 @@ index 79f6089b934124c3309c6bee2e48b36b937252e0..dff8ef0a1a2e52792070d93685c29002 private static int setMode(CommandContext context, Collection targets, GameType gameMode) { + // Purpur start -+ if (net.pl3x.purpur.PurpurConfig.commandGamemodeRequiresPermission) { ++ if (org.purpurmc.purpur.PurpurConfig.commandGamemodeRequiresPermission) { + String gamemode = gameMode.getName(); + CommandSourceStack sender = context.getSource(); + if (!sender.testPermission(2, "minecraft.command.gamemode." + gamemode)) { @@ -53,26 +53,6 @@ index 79f6089b934124c3309c6bee2e48b36b937252e0..dff8ef0a1a2e52792070d93685c29002 int i = 0; for(ServerPlayer serverPlayer : targets) { -diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 8d207a228855b2a6c0af2e54d815bf17b9217950..3ad1bb745def01b18c14ce8c7d399cf20a8a1a08 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -221,6 +221,7 @@ public class PurpurConfig { - public static String commandTPSBarTextColorMedium = ""; - public static String commandTPSBarTextColorLow = ""; - public static int commandTPSBarTickInterval = 20; -+ public static boolean commandGamemodeRequiresPermission = false; - private static void commandSettings() { - commandTPSBarTitle = getString("settings.command.tpsbar.title", commandTPSBarTitle); - commandTPSBarProgressOverlay = BossBar.Overlay.valueOf(getString("settings.command.tpsbar.overlay", commandTPSBarProgressOverlay.name())); -@@ -232,6 +233,7 @@ public class PurpurConfig { - commandTPSBarTextColorMedium = getString("settings.command.tpsbar.text-color.medium", commandTPSBarTextColorMedium); - commandTPSBarTextColorLow = getString("settings.command.tpsbar.text-color.low", commandTPSBarTextColorLow); - commandTPSBarTickInterval = getInt("settings.command.tpsbar.tick-interval", commandTPSBarTickInterval); -+ commandGamemodeRequiresPermission = getBoolean("settings.command.gamemode.requires-specific-permission", commandGamemodeRequiresPermission); - } - - public static int barrelRows = 3; diff --git a/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java b/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java index 6cc517b394bafefce50d877761e5b2eee8e14c78..46ca899a7abddea108f6ff1b4ca14ca5cd3112ab 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java @@ -94,3 +74,23 @@ index 6cc517b394bafefce50d877761e5b2eee8e14c78..46ca899a7abddea108f6ff1b4ca14ca5 DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "xp", "Allows the user to give themselves or others arbitrary values of experience", PermissionDefault.OP, commands); DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "toggledownfall", "Allows the user to toggle rain on/off for a given world", PermissionDefault.OP, commands); DefaultPermissions.registerPermission(CommandPermissions.PREFIX + "defaultgamemode", "Allows the user to change the default gamemode of the server", PermissionDefault.OP, commands); +diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +index 9dce5a66f8b89dbf1456263ce5366337955ee5e7..a09151e1c7383cf286e66a4499341cd85ca25709 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +@@ -221,6 +221,7 @@ public class PurpurConfig { + public static String commandTPSBarTextColorMedium = ""; + public static String commandTPSBarTextColorLow = ""; + public static int commandTPSBarTickInterval = 20; ++ public static boolean commandGamemodeRequiresPermission = false; + private static void commandSettings() { + commandTPSBarTitle = getString("settings.command.tpsbar.title", commandTPSBarTitle); + commandTPSBarProgressOverlay = BossBar.Overlay.valueOf(getString("settings.command.tpsbar.overlay", commandTPSBarProgressOverlay.name())); +@@ -232,6 +233,7 @@ public class PurpurConfig { + commandTPSBarTextColorMedium = getString("settings.command.tpsbar.text-color.medium", commandTPSBarTextColorMedium); + commandTPSBarTextColorLow = getString("settings.command.tpsbar.text-color.low", commandTPSBarTextColorLow); + commandTPSBarTickInterval = getInt("settings.command.tpsbar.tick-interval", commandTPSBarTickInterval); ++ commandGamemodeRequiresPermission = getBoolean("settings.command.gamemode.requires-specific-permission", commandGamemodeRequiresPermission); + } + + public static int barrelRows = 3; diff --git a/patches/server/0176-Configurable-broadcast-settings.patch b/patches/server/0176-Configurable-broadcast-settings.patch index 1d3a13dcc..ae9abbd5f 100644 --- a/patches/server/0176-Configurable-broadcast-settings.patch +++ b/patches/server/0176-Configurable-broadcast-settings.patch @@ -5,31 +5,31 @@ Subject: [PATCH] Configurable broadcast settings diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java -index 945fb3200d52b83eaee2e62d6db5c43e088218eb..a87a532ce9e69bf4a90aac73ad51e4a88b8e141e 100644 +index 6f5b7650d45958284f7b5c675c1e32d4b7738494..842acb66c58a1ee66c595bd56afc1f94602f0193 100644 --- a/src/main/java/net/minecraft/server/PlayerAdvancements.java +++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java @@ -301,6 +301,7 @@ public class PlayerAdvancements { advancement.getRewards().grant(this.player); // Paper start - Add Adventure message to PlayerAdvancementDoneEvent if (message != null && this.player.level.getGameRules().getBoolean(GameRules.RULE_ANNOUNCE_ADVANCEMENTS)) { -+ if (net.pl3x.purpur.PurpurConfig.advancementOnlyBroadcastToAffectedPlayer) this.player.sendMessage(message); else // Purpur ++ if (org.purpurmc.purpur.PurpurConfig.advancementOnlyBroadcastToAffectedPlayer) this.player.sendMessage(message); else // Purpur this.playerList.broadcastMessage(io.papermc.paper.adventure.PaperAdventure.asVanilla(message), ChatType.SYSTEM, Util.NIL_UUID); // Paper end } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 0294e31bb7a4346fd9a3b45ef0bed5582b8abfcc..3ad8167804f38262e1e7ecd878fce76573568ab8 100644 +index 04cc1a6c14328c17fb1b387a2a01cdfdd7b72ad8..b609213894c5c9c34188e0667e34b61876ea92ce 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -910,6 +910,7 @@ public class ServerPlayer extends Player { }); Team scoreboardteambase = this.getTeam(); -+ if (net.pl3x.purpur.PurpurConfig.deathMessageOnlyBroadcastToAffectedPlayer) this.sendMessage(ichatbasecomponent); else // Purpur ++ if (org.purpurmc.purpur.PurpurConfig.deathMessageOnlyBroadcastToAffectedPlayer) this.sendMessage(ichatbasecomponent); else // Purpur if (scoreboardteambase != null && scoreboardteambase.getDeathMessageVisibility() != Team.Visibility.ALWAYS) { if (scoreboardteambase.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { this.server.getPlayerList().broadcastToTeam(this, ichatbasecomponent); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 3ad1bb745def01b18c14ce8c7d399cf20a8a1a08..f315a6db0c1d2000aa7a506134564b37ff6d2e06 100644 +index a09151e1c7383cf286e66a4499341cd85ca25709..5be7eade117e2e0dcde688cb7a512eeefac6851d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -178,6 +178,18 @@ public class PurpurConfig { diff --git a/patches/server/0179-Hide-hidden-players-from-entity-selector.patch b/patches/server/0179-Hide-hidden-players-from-entity-selector.patch index 7f53ae31d..bfa9d29c5 100644 --- a/patches/server/0179-Hide-hidden-players-from-entity-selector.patch +++ b/patches/server/0179-Hide-hidden-players-from-entity-selector.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Hide hidden players from entity selector diff --git a/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java b/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java -index 35cc3bba20afd4a47160cc674415ba6a3a0ec0ec..39c8cb9494aa516a3d828010a8e3329db9d25707 100644 +index 35cc3bba20afd4a47160cc674415ba6a3a0ec0ec..2cba35dcc479ed9ad3e698aa2e02b4aa408c84c4 100644 --- a/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java +++ b/src/main/java/net/minecraft/commands/arguments/selector/EntitySelector.java @@ -184,10 +184,10 @@ public class EntitySelector { @@ -54,12 +54,12 @@ index 35cc3bba20afd4a47160cc674415ba6a3a0ec0ec..39c8cb9494aa516a3d828010a8e3329d + + // Purpur start + private boolean canSee(CommandSourceStack sender, ServerPlayer target) { -+ return !net.pl3x.purpur.PurpurConfig.hideHiddenPlayersFromEntitySelector || !(sender.getEntity() instanceof ServerPlayer player) || player.getBukkitEntity().canSee(target.getBukkitEntity()); ++ return !org.purpurmc.purpur.PurpurConfig.hideHiddenPlayersFromEntitySelector || !(sender.getEntity() instanceof ServerPlayer player) || player.getBukkitEntity().canSee(target.getBukkitEntity()); + } + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index f315a6db0c1d2000aa7a506134564b37ff6d2e06..64c85ed460687ccf455e7ac4332e38ec524bd53c 100644 +index 5be7eade117e2e0dcde688cb7a512eeefac6851d..1a3618597bf2ad131152379ddeb54f4a3b11b052 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -234,6 +234,7 @@ public class PurpurConfig { diff --git a/patches/server/0181-Iron-golem-poppy-calms-anger.patch b/patches/server/0181-Iron-golem-poppy-calms-anger.patch index 1ce78d6b9..a823b7661 100644 --- a/patches/server/0181-Iron-golem-poppy-calms-anger.patch +++ b/patches/server/0181-Iron-golem-poppy-calms-anger.patch @@ -5,19 +5,19 @@ Subject: [PATCH] Iron golem poppy calms anger diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -index c96289cc4bf5731862849f491a2049a41c768eed..efe3839f893eefe241dac14b7796baa2aaa22aad 100644 +index 52cc0df083d5a4685fd00f7db0d92b277fb0c994..ff5d6f437b880ab0aa5897089694a620be7eacca 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java @@ -96,6 +96,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { protected void registerGoals() { if (level.purpurConfig.ironGolemCanSwim) this.goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur - this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur -+ if (this.level.purpurConfig.ironGolemPoppyCalm) this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.ReceiveFlower(this)); // Purpur + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur ++ if (this.level.purpurConfig.ironGolemPoppyCalm) this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.ReceiveFlower(this)); // Purpur this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.0D, true)); this.goalSelector.addGoal(2, new MoveTowardsTargetGoal(this, 0.9D, 32.0F)); this.goalSelector.addGoal(2, new MoveBackToVillageGoal(this, 0.6D, false)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 775831d7852bd688a613aa9c54988b51b36985e3..424fa41a8db31cc40dd17a21539587773d4fc542 100644 +index d33884c6d97c4caec65efe3e18ce6473a62ccfd1..1aa0932807e66f94588a453268fd06fbf38ef853 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1316,6 +1316,7 @@ public class PurpurWorldConfig { @@ -38,11 +38,11 @@ index 775831d7852bd688a613aa9c54988b51b36985e3..424fa41a8db31cc40dd17a2153958777 public boolean llamaRidable = false; diff --git a/src/main/java/org/purpurmc/purpur/entity/ai/ReceiveFlower.java b/src/main/java/org/purpurmc/purpur/entity/ai/ReceiveFlower.java new file mode 100644 -index 0000000000000000000000000000000000000000..efbf2775558e61310dff900a0321964c63f4551d +index 0000000000000000000000000000000000000000..115a3b36cbb7716b28ef940a29ca97ac42a8a521 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/entity/ai/ReceiveFlower.java @@ -0,0 +1,91 @@ -+package net.pl3x.purpur.entity.ai; ++package org.purpurmc.purpur.entity.ai; + +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; diff --git a/patches/server/0182-Breedable-parrots.patch b/patches/server/0182-Breedable-parrots.patch index a334f2631..22bd0237a 100644 --- a/patches/server/0182-Breedable-parrots.patch +++ b/patches/server/0182-Breedable-parrots.patch @@ -5,12 +5,12 @@ Subject: [PATCH] Breedable parrots diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index 953db16af175e14e1a47487659a0346216d8cdbc..5c906b380ad3caceb29fdd5a221cf5ce97910025 100644 +index de702ce3e2dffc44e380b8470aa540a3226a54cb..bb9717d1b2039469aae26e0eb9a4304bff4ae7af 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -220,6 +220,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { this.goalSelector.addGoal(0, new FloatGoal(this)); - this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new PanicGoal(this, 1.25D)); // Purpur + if (this.level.purpurConfig.parrotBreedable) this.goalSelector.addGoal(1, new net.minecraft.world.entity.ai.goal.BreedGoal(this, 1.0D)); // Purpur this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 8.0F)); @@ -50,7 +50,7 @@ index 953db16af175e14e1a47487659a0346216d8cdbc..5c906b380ad3caceb29fdd5a221cf5ce @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 424fa41a8db31cc40dd17a21539587773d4fc542..564a2009f21e7caf36130e29bab28a27fd012ebf 100644 +index 1aa0932807e66f94588a453268fd06fbf38ef853..2191f82f4cf6e47b0b9f32afc7d74838a05d5e57 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1466,6 +1466,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0186-Config-for-unverified-username-message.patch b/patches/server/0186-Config-for-unverified-username-message.patch index 891522af5..712f9209d 100644 --- a/patches/server/0186-Config-for-unverified-username-message.patch +++ b/patches/server/0186-Config-for-unverified-username-message.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for unverified username message diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -index 33a29890435d6065a2cc4f8e8bf8209c01d5d114..09f2eb149e23b271bab879b84c7910d76f79fec9 100644 +index 33a29890435d6065a2cc4f8e8bf8209c01d5d114..b86d5e736d786ac3c74fec3ad1285400f6f4e583 100644 --- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java @@ -310,7 +310,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener @@ -13,12 +13,12 @@ index 33a29890435d6065a2cc4f8e8bf8209c01d5d114..09f2eb149e23b271bab879b84c7910d7 ServerLoginPacketListenerImpl.this.state = ServerLoginPacketListenerImpl.State.READY_TO_ACCEPT; } else { - ServerLoginPacketListenerImpl.this.disconnect(new TranslatableComponent("multiplayer.disconnect.unverified_username")); -+ ServerLoginPacketListenerImpl.this.disconnect(net.pl3x.purpur.PurpurConfig.unverifiedUsername.equals("default") ? new TranslatableComponent("multiplayer.disconnect.unverified_username") : PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.get().parse(net.pl3x.purpur.PurpurConfig.unverifiedUsername))); // Purpur ++ ServerLoginPacketListenerImpl.this.disconnect(org.purpurmc.purpur.PurpurConfig.unverifiedUsername.equals("default") ? new TranslatableComponent("multiplayer.disconnect.unverified_username") : PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.get().parse(org.purpurmc.purpur.PurpurConfig.unverifiedUsername))); // Purpur ServerLoginPacketListenerImpl.LOGGER.error("Username '{}' tried to join with an invalid session", gameprofile.getName()); } } catch (AuthenticationUnavailableException authenticationunavailableexception) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 64c85ed460687ccf455e7ac4332e38ec524bd53c..aed55fe54e153b3c8f5181e39e712a457a00c37b 100644 +index 1a3618597bf2ad131152379ddeb54f4a3b11b052..5028f8556cba1df1e776c305ca58c37e0d1194e7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -166,6 +166,7 @@ public class PurpurConfig { diff --git a/patches/server/0187-Make-anvil-cumulative-cost-configurable.patch b/patches/server/0187-Make-anvil-cumulative-cost-configurable.patch index e2c722ecf..581326b0d 100644 --- a/patches/server/0187-Make-anvil-cumulative-cost-configurable.patch +++ b/patches/server/0187-Make-anvil-cumulative-cost-configurable.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Make anvil cumulative cost configurable diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index ae7ff760a84620562b2b6b0d1d0fd2f94a09024a..ca0ac66e79a8236fce84a448e6e24a1d8bba7ac8 100644 +index 3f786be9c9efc069a3a1bc457f02421310941800..669093b7f531b4ff9d8348d0a08c8690f984218c 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java @@ -341,7 +341,7 @@ public class AnvilMenu extends ItemCombinerMenu { @@ -13,12 +13,12 @@ index ae7ff760a84620562b2b6b0d1d0fd2f94a09024a..ca0ac66e79a8236fce84a448e6e24a1d public static int calculateIncreasedRepairCost(int cost) { - return cost * 2 + 1; -+ return net.pl3x.purpur.PurpurConfig.anvilCumulativeCost ? cost * 2 + 1 : 0; ++ return org.purpurmc.purpur.PurpurConfig.anvilCumulativeCost ? cost * 2 + 1 : 0; } public void setItemName(String newItemName) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index aed55fe54e153b3c8f5181e39e712a457a00c37b..370c1ae524fab837ddcef2419064c5a042a0892a 100644 +index 5028f8556cba1df1e776c305ca58c37e0d1194e7..841e858c68a4079be1d81d51638ebd107c724bf3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -257,6 +257,7 @@ public class PurpurConfig { diff --git a/patches/server/0197-Make-lightning-rod-range-configurable.patch b/patches/server/0197-Make-lightning-rod-range-configurable.patch index 5738a93bd..bbbbe46cf 100644 --- a/patches/server/0197-Make-lightning-rod-range-configurable.patch +++ b/patches/server/0197-Make-lightning-rod-range-configurable.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Make lightning rod range configurable diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 359ba71b137eac65a8ba6c1e5eda70412eb3550f..a77f715b395c782095df711f22e47f9d07f844af 100644 +index 62d6764b5477e77b34a96e816be74050eede6b4b..38cec56f2e399176be6fdc0db1da687d74d12215 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -893,7 +893,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -13,12 +13,12 @@ index 359ba71b137eac65a8ba6c1e5eda70412eb3550f..a77f715b395c782095df711f22e47f9d }, (blockposition1) -> { return blockposition1.getY() == this.getLevel().getHeight(Heightmap.Types.WORLD_SURFACE, blockposition1.getX(), blockposition1.getZ()) - 1; - }, pos, 128, PoiManager.Occupancy.ANY); -+ }, pos, net.pl3x.purpur.PurpurConfig.lightningRodRange, PoiManager.Occupancy.ANY); ++ }, pos, org.purpurmc.purpur.PurpurConfig.lightningRodRange, PoiManager.Occupancy.ANY); return optional.map((blockposition1) -> { return blockposition1.above(1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 370c1ae524fab837ddcef2419064c5a042a0892a..18b56ce771b5a32364adffed172a12f68790c475 100644 +index 841e858c68a4079be1d81d51638ebd107c724bf3..643a19ef33b317df30b7bd3bd3420b90bea31179 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -258,6 +258,7 @@ public class PurpurConfig { diff --git a/patches/server/0202-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0202-Eating-glow-berries-adds-glow-effect.patch index 98745032c..d941809c8 100644 --- a/patches/server/0202-Eating-glow-berries-adds-glow-effect.patch +++ b/patches/server/0202-Eating-glow-berries-adds-glow-effect.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Eating glow berries adds glow effect diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java -index 68321b5e425c0500a5691f80203176122cc1bff4..e42f48112725729a9f0c135d2879cfaa37a3e3a8 100644 +index 85329295afacad3edb6865846166aa56ebae0ed2..513343d225a71e242b0f237eefcd25147709d9d1 100644 --- a/src/main/java/net/minecraft/world/item/Items.java +++ b/src/main/java/net/minecraft/world/item/Items.java @@ -1070,7 +1070,7 @@ public class Items { @@ -13,12 +13,12 @@ index 68321b5e425c0500a5691f80203176122cc1bff4..e42f48112725729a9f0c135d2879cfaa public static final Item SOUL_LANTERN = registerBlock(Blocks.SOUL_LANTERN, CreativeModeTab.TAB_DECORATIONS); public static final Item SWEET_BERRIES = registerItem("sweet_berries", new ItemNameBlockItem(Blocks.SWEET_BERRY_BUSH, (new Item.Properties()).tab(CreativeModeTab.TAB_FOOD).food(Foods.SWEET_BERRIES))); - public static final Item GLOW_BERRIES = registerItem("glow_berries", new ItemNameBlockItem(Blocks.CAVE_VINES, (new Item.Properties()).food(Foods.GLOW_BERRIES).tab(CreativeModeTab.TAB_FOOD))); -+ public static final Item GLOW_BERRIES = registerItem("glow_berries", new net.pl3x.purpur.item.GlowBerryItem(Blocks.CAVE_VINES, (new Item.Properties()).food(Foods.GLOW_BERRIES).tab(CreativeModeTab.TAB_FOOD))); // Purpur ++ public static final Item GLOW_BERRIES = registerItem("glow_berries", new org.purpurmc.purpur.item.GlowBerryItem(Blocks.CAVE_VINES, (new Item.Properties()).food(Foods.GLOW_BERRIES).tab(CreativeModeTab.TAB_FOOD))); // Purpur public static final Item CAMPFIRE = registerBlock(Blocks.CAMPFIRE, CreativeModeTab.TAB_DECORATIONS); public static final Item SOUL_CAMPFIRE = registerBlock(Blocks.SOUL_CAMPFIRE, CreativeModeTab.TAB_DECORATIONS); public static final Item SHROOMLIGHT = registerBlock(Blocks.SHROOMLIGHT, CreativeModeTab.TAB_DECORATIONS); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3312036449d0c28b5ee04abce13f8db2576cd017..fb13ffdb5d8bfb296fd10a5bc8e84bbbb309e4bb 100644 +index ab1d8798c092683b862a0c74dd9751395e3da1ae..e7514438274af2e71c1323f75e21ccf1e0303814 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -174,6 +174,7 @@ public class PurpurWorldConfig { @@ -39,11 +39,11 @@ index 3312036449d0c28b5ee04abce13f8db2576cd017..fb13ffdb5d8bfb296fd10a5bc8e84bbb public double minecartMaxSpeed = 0.4D; diff --git a/src/main/java/org/purpurmc/purpur/item/GlowBerryItem.java b/src/main/java/org/purpurmc/purpur/item/GlowBerryItem.java new file mode 100644 -index 0000000000000000000000000000000000000000..d45a39afbef10ae6888e2941faa4b9769ab4a832 +index 0000000000000000000000000000000000000000..7f526883495b3222746de3d0442e9e4fb5107036 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/item/GlowBerryItem.java @@ -0,0 +1,26 @@ -+package net.pl3x.purpur.item; ++package org.purpurmc.purpur.item; + +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.effect.MobEffectInstance; diff --git a/patches/server/0205-Redirect-System.out-calls-to-plugin-loggers.patch b/patches/server/0205-Redirect-System.out-calls-to-plugin-loggers.patch index 75ec89359..630f7ad8a 100644 --- a/patches/server/0205-Redirect-System.out-calls-to-plugin-loggers.patch +++ b/patches/server/0205-Redirect-System.out-calls-to-plugin-loggers.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Redirect System.out calls to plugin loggers diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 2c37694a6055513803708c9fb40fb0c475da8e52..c8e6c5bef67c16cf1bef42fe890bf984f0fbafa1 100644 +index 455776981274e64724376a3182b60784b56db9cf..cd859eec6b0bee44bce83614e55709381baf5e6b 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -176,8 +176,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -14,14 +14,27 @@ index 2c37694a6055513803708c9fb40fb0c475da8e52..c8e6c5bef67c16cf1bef42fe890bf984 - System.setOut(IoBuilder.forLogger(logger).setLevel(Level.INFO).buildPrintStream()); - System.setErr(IoBuilder.forLogger(logger).setLevel(Level.WARN).buildPrintStream()); -+ System.setOut(new net.pl3x.purpur.PurpurPrintStream(IoBuilder.forLogger(logger).setLevel(Level.INFO).buildPrintStream(), java.util.logging.Logger::info)); // Purpur -+ System.setErr(new net.pl3x.purpur.PurpurPrintStream(IoBuilder.forLogger(logger).setLevel(Level.WARN).buildPrintStream(), java.util.logging.Logger::severe)); // Purpur ++ System.setOut(new org.purpurmc.purpur.PurpurPrintStream(IoBuilder.forLogger(logger).setLevel(Level.INFO).buildPrintStream(), java.util.logging.Logger::info)); // Purpur ++ System.setErr(new org.purpurmc.purpur.PurpurPrintStream(IoBuilder.forLogger(logger).setLevel(Level.WARN).buildPrintStream(), java.util.logging.Logger::severe)); // Purpur // CraftBukkit end thread.setDaemon(true); +diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +index 2462f582bc539162e594ac66be1bae83c8436197..c3c6dc82565b5edcc975bc5d951a8b20767bc346 100644 +--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java ++++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +@@ -295,7 +295,7 @@ public final class CraftServer implements Server { + public int reloadCount; + private final io.papermc.paper.datapack.PaperDatapackManager datapackManager; // Paper + public static Exception excessiveVelEx; // Paper - Velocity warnings +- private final SysoutCatcher sysoutCatcher = new SysoutCatcher(); // Paper ++ //private final SysoutCatcher sysoutCatcher = new SysoutCatcher(); // Paper // Purpur - we have our own implementation that doesnt nag or prefix output + + static { + ConfigurationSerialization.registerClass(CraftOfflinePlayer.class); diff --git a/src/main/java/org/purpurmc/purpur/PurpurPrintStream.java b/src/main/java/org/purpurmc/purpur/PurpurPrintStream.java new file mode 100644 -index 0000000000000000000000000000000000000000..f88da0b86a683b25d429ceea4a36d6dde12b2b56 +index 0000000000000000000000000000000000000000..f39c451f8877c7cb66fd4761006176107eceeac6 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/PurpurPrintStream.java @@ -0,0 +1,65 @@ @@ -48,7 +61,7 @@ index 0000000000000000000000000000000000000000..f88da0b86a683b25d429ceea4a36d6dd + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ -+package net.pl3x.purpur; ++package org.purpurmc.purpur; + +import org.bukkit.Bukkit; +import org.bukkit.plugin.java.JavaPlugin; @@ -90,16 +103,3 @@ index 0000000000000000000000000000000000000000..f88da0b86a683b25d429ceea4a36d6dd + } + } +} -diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 0229efbb9b8838fc1228d171b19fa057aec27c2c..78c8b7684ff18c00e27d27c31226b8daaf5cd17b 100644 ---- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java -+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -295,7 +295,7 @@ public final class CraftServer implements Server { - public int reloadCount; - private final io.papermc.paper.datapack.PaperDatapackManager datapackManager; // Paper - public static Exception excessiveVelEx; // Paper - Velocity warnings -- private final SysoutCatcher sysoutCatcher = new SysoutCatcher(); // Paper -+ //private final SysoutCatcher sysoutCatcher = new SysoutCatcher(); // Paper // Purpur - we have our own implementation that doesnt nag or prefix output - - static { - ConfigurationSerialization.registerClass(CraftOfflinePlayer.class); diff --git a/patches/server/0207-Add-uptime-command.patch b/patches/server/0207-Add-uptime-command.patch index 02a87153a..e17f1e5b4 100644 --- a/patches/server/0207-Add-uptime-command.patch +++ b/patches/server/0207-Add-uptime-command.patch @@ -5,19 +5,19 @@ Subject: [PATCH] Add uptime command diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 12f5e8b11fad04a1fec717b68fbbf80efa3705bc..2be6bbe31c61a9b66c685cca79407c26dd99cf1b 100644 +index 6914b9a27798ee1f4f4169ff70b9cc4e2b61d9b4..99e94cbb4696164fc686cea739594eecc345e616 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java @@ -208,6 +208,7 @@ public class Commands { - net.pl3x.purpur.command.CreditsCommand.register(this.dispatcher); // Purpur - net.pl3x.purpur.command.DemoCommand.register(this.dispatcher); // Purpur - net.pl3x.purpur.command.PingCommand.register(this.dispatcher); // Purpur -+ net.pl3x.purpur.command.UptimeCommand.register(this.dispatcher); // Purpur - net.pl3x.purpur.command.TPSBarCommand.register(this.dispatcher); // Purpur + org.purpurmc.purpur.command.CreditsCommand.register(this.dispatcher); // Purpur + org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur + org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur ++ org.purpurmc.purpur.command.UptimeCommand.register(this.dispatcher); // Purpur + org.purpurmc.purpur.command.TPSBarCommand.register(this.dispatcher); // Purpur } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index e35b469133dc8bdac02e97f8d0792690e568e31c..cfb6a133d8edda91d97eeba0ce911c58d1ac5753 100644 +index 8634c7ca5db006ef0f27a455f30e15e1d64fdaa6..8506e7e38959a6ae02777bb32268e6ba69143e83 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -293,6 +293,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop optional = Optional.ofNullable(level.purpurConfig.axeStrippables.get(blockState.getBlock())); -+ Optional optional2 = Optional.ofNullable(level.purpurConfig.axeWeatherables.get(blockState.getBlock())); -+ Optional optional3 = Optional.ofNullable(level.purpurConfig.axeWaxables.get(blockState.getBlock())); ++ Optional optional = Optional.ofNullable(level.purpurConfig.axeStrippables.get(blockState.getBlock())); ++ Optional optional2 = Optional.ofNullable(level.purpurConfig.axeWeatherables.get(blockState.getBlock())); ++ Optional optional3 = Optional.ofNullable(level.purpurConfig.axeWaxables.get(blockState.getBlock())); + // Purpur end ItemStack itemStack = context.getItemInHand(); - Optional optional4 = Optional.empty(); -+ Optional optional4 = Optional.empty(); // Purpur ++ Optional optional4 = Optional.empty(); // Purpur if (optional.isPresent()) { - level.playSound(player, blockPos, SoundEvents.AXE_STRIP, SoundSource.BLOCKS, 1.0F, 1.0F); + level.playSound(null, blockPos, SoundEvents.AXE_STRIP, SoundSource.BLOCKS, 1.0F, 1.0F); // Purpur - force sound @@ -46,7 +46,7 @@ index 734276a74ad11f117a816b214c62415818c27dcc..b2fdfc62f1f273fd6f78ae6153444e9c - level.setBlock(blockPos, optional4.get(), 11); + // Purpur start -+ net.pl3x.purpur.tool.Actionable actionable = optional4.get(); ++ org.purpurmc.purpur.tool.Actionable actionable = optional4.get(); + level.setBlock(blockPos, actionable.into().withPropertiesOf(blockState), 11); + actionable.drops().forEach((drop, chance) -> { + if (level.random.nextDouble() < chance) { @@ -109,7 +109,7 @@ index a5c2d6f0c0850a99224a1a8d622fe6b341cee88b..d8777ab86465e25236e7abbafd7ff668 return InteractionResult.PASS; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4307430bc0074a9061a40415019341926fd685fa..7c945107ada60079ddf9cb9d51390b5a11b21e98 100644 +index b22347a9b3566fae94da5edb4ef6609540f2bffe..c5c0fb7bceddb1c1bb689bf67ed815fe361ae2ba 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -472,6 +472,153 @@ public class PurpurWorldConfig { @@ -268,11 +268,11 @@ index 4307430bc0074a9061a40415019341926fd685fa..7c945107ada60079ddf9cb9d51390b5a public boolean boatEjectPlayersOnLand = false; diff --git a/src/main/java/org/purpurmc/purpur/tool/Actionable.java b/src/main/java/org/purpurmc/purpur/tool/Actionable.java new file mode 100644 -index 0000000000000000000000000000000000000000..9273eb5f5cacf00eedeb5a396616871a3a39a7a0 +index 0000000000000000000000000000000000000000..e18c37f06730da9d3055d5215e813b1477c1e70e --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/tool/Actionable.java @@ -0,0 +1,24 @@ -+package net.pl3x.purpur.tool; ++package org.purpurmc.purpur.tool; + +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; @@ -298,11 +298,11 @@ index 0000000000000000000000000000000000000000..9273eb5f5cacf00eedeb5a396616871a +} diff --git a/src/main/java/org/purpurmc/purpur/tool/Strippable.java b/src/main/java/org/purpurmc/purpur/tool/Strippable.java new file mode 100644 -index 0000000000000000000000000000000000000000..c15b623db3331757963a4f565ae842d93471b769 +index 0000000000000000000000000000000000000000..bf5402214f41af9c09bd6c5c4f45d330516d742e --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/tool/Strippable.java @@ -0,0 +1,12 @@ -+package net.pl3x.purpur.tool; ++package org.purpurmc.purpur.tool; + +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; @@ -316,11 +316,11 @@ index 0000000000000000000000000000000000000000..c15b623db3331757963a4f565ae842d9 +} diff --git a/src/main/java/org/purpurmc/purpur/tool/Tillable.java b/src/main/java/org/purpurmc/purpur/tool/Tillable.java new file mode 100644 -index 0000000000000000000000000000000000000000..ec2e3c4009e7a18592eed677697680926db67247 +index 0000000000000000000000000000000000000000..e95412e3aeb57717ee4db03c66ae8001aea342af --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/tool/Tillable.java @@ -0,0 +1,50 @@ -+package net.pl3x.purpur.tool; ++package org.purpurmc.purpur.tool; + +import net.minecraft.world.item.HoeItem; +import net.minecraft.world.item.Item; @@ -372,11 +372,11 @@ index 0000000000000000000000000000000000000000..ec2e3c4009e7a18592eed67769768092 +} diff --git a/src/main/java/org/purpurmc/purpur/tool/Waxable.java b/src/main/java/org/purpurmc/purpur/tool/Waxable.java new file mode 100644 -index 0000000000000000000000000000000000000000..45a8007a9aaf3f9f11b9387ed4d980fe4f1ab8e3 +index 0000000000000000000000000000000000000000..64adb13b29b6757dcf227a55588da70ecabe083f --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/tool/Waxable.java @@ -0,0 +1,12 @@ -+package net.pl3x.purpur.tool; ++package org.purpurmc.purpur.tool; + +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; @@ -390,11 +390,11 @@ index 0000000000000000000000000000000000000000..45a8007a9aaf3f9f11b9387ed4d980fe +} diff --git a/src/main/java/org/purpurmc/purpur/tool/Weatherable.java b/src/main/java/org/purpurmc/purpur/tool/Weatherable.java new file mode 100644 -index 0000000000000000000000000000000000000000..89c6a18580382d011aae000b39e8fede18d7c5ea +index 0000000000000000000000000000000000000000..b7586f494528f30eb0da82420d3bcf5b83a1a902 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/tool/Weatherable.java @@ -0,0 +1,12 @@ -+package net.pl3x.purpur.tool; ++package org.purpurmc.purpur.tool; + +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; diff --git a/patches/server/0212-Customizable-sleeping-actionbar-messages.patch b/patches/server/0212-Customizable-sleeping-actionbar-messages.patch index ddbb133ac..29248908d 100644 --- a/patches/server/0212-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0212-Customizable-sleeping-actionbar-messages.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Customizable sleeping actionbar messages diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index a77f715b395c782095df711f22e47f9d07f844af..dfbab7b451656db88e1a7d3a6bf407637da41ff9 100644 +index 38cec56f2e399176be6fdc0db1da687d74d12215..593906beaeb9c9c30fe4e9a092b2494b248905ae 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -942,11 +942,29 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -17,21 +17,21 @@ index a77f715b395c782095df711f22e47f9d07f844af..dfbab7b451656db88e1a7d3a6bf40763 if (this.sleepStatus.areEnoughSleeping(i)) { + // Purpur start -+ if (net.pl3x.purpur.PurpurConfig.sleepSkippingNight.isBlank()) { ++ if (org.purpurmc.purpur.PurpurConfig.sleepSkippingNight.isBlank()) { + return; + } -+ if (!net.pl3x.purpur.PurpurConfig.sleepSkippingNight.equalsIgnoreCase("default")) { -+ chatmessage = io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.get().parse(net.pl3x.purpur.PurpurConfig.sleepSkippingNight)); ++ if (!org.purpurmc.purpur.PurpurConfig.sleepSkippingNight.equalsIgnoreCase("default")) { ++ chatmessage = io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.get().parse(org.purpurmc.purpur.PurpurConfig.sleepSkippingNight)); + } else + // Purpur end chatmessage = new TranslatableComponent("sleep.skipping_night"); } else { + // Purpur start -+ if (net.pl3x.purpur.PurpurConfig.sleepingPlayersPercent.isBlank()) { ++ if (org.purpurmc.purpur.PurpurConfig.sleepingPlayersPercent.isBlank()) { + return; + } -+ if (!net.pl3x.purpur.PurpurConfig.sleepingPlayersPercent.equalsIgnoreCase("default")) { -+ chatmessage = io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.get().parse(net.pl3x.purpur.PurpurConfig.sleepingPlayersPercent, ++ if (!org.purpurmc.purpur.PurpurConfig.sleepingPlayersPercent.equalsIgnoreCase("default")) { ++ chatmessage = io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.get().parse(org.purpurmc.purpur.PurpurConfig.sleepingPlayersPercent, + net.kyori.adventure.text.minimessage.Template.of("count", Integer.toString(this.sleepStatus.amountSleeping())), + net.kyori.adventure.text.minimessage.Template.of("total", Integer.toString(this.sleepStatus.sleepersNeeded(i))))); + } else @@ -40,7 +40,7 @@ index a77f715b395c782095df711f22e47f9d07f844af..dfbab7b451656db88e1a7d3a6bf40763 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 51283ec0bd1903c0eb3c04c7ed90785795c39311..00f3e7b110f38572bb2121b6f2e14e2584f4f60c 100644 +index 34096550efcdf11d3bba577d6c693d8c349ca43b..b149e8cebf42a08e2e786f8bc06fc8b4387c991d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -168,6 +168,8 @@ public class PurpurConfig { diff --git a/patches/server/0217-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0217-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index 799b2e61a..a41e21eb4 100644 --- a/patches/server/0217-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0217-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -5,20 +5,20 @@ Subject: [PATCH] Config to disable Enderman teleport on projectile hit diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -index 13cdfb0175152d2ba203c01f14f2f98d87f812b3..152a4c88fb714e40010b7eaedff03216e8b9f097 100644 +index fd06b697b810e4e74345c636cb3a02bc23959e76..2439af153aa2d6ae62bca41a794042fc5d0db1db 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -400,7 +400,7 @@ public class EnderMan extends Monster implements NeutralMob { return false; } else if (getRider() != null) { return super.hurt(source, amount); // Purpur - no teleporting on damage - } else if (net.pl3x.purpur.PurpurConfig.endermanShortHeight && source == DamageSource.IN_WALL) { return false; // Purpur - no suffocation damage if short height + } else if (org.purpurmc.purpur.PurpurConfig.endermanShortHeight && source == DamageSource.IN_WALL) { return false; // Purpur - no suffocation damage if short height - } else if (source instanceof IndirectEntityDamageSource) { + } else if (source instanceof IndirectEntityDamageSource && !(this.level.purpurConfig.endermanIgnoreProjectiles && source.getDirectEntity() instanceof net.minecraft.world.entity.projectile.Projectile)) { // Purpur Entity entity = source.getDirectEntity(); boolean flag; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b28c15180fff218381fbeccc505ed9f04d08e03f..5f0b1e2b014a1340583c5a1c9d0c8d932d31dcbf 100644 +index ab59d6ed968ddcf33677447ee0584443a15d0c79..998eba4c1cdf65efbd0926351908c9897bc0ae01 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1286,6 +1286,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0218-Add-compass-command.patch b/patches/server/0218-Add-compass-command.patch index bd8a6e020..ca005fa5a 100644 --- a/patches/server/0218-Add-compass-command.patch +++ b/patches/server/0218-Add-compass-command.patch @@ -5,19 +5,19 @@ Subject: [PATCH] Add compass command diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 2be6bbe31c61a9b66c685cca79407c26dd99cf1b..3ee6451e9aa21738c2e89a6609cc5cbf405c35d5 100644 +index 99e94cbb4696164fc686cea739594eecc345e616..508623c5042e752a99e0ed09406fcc368fa66f8e 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java @@ -210,6 +210,7 @@ public class Commands { - net.pl3x.purpur.command.PingCommand.register(this.dispatcher); // Purpur - net.pl3x.purpur.command.UptimeCommand.register(this.dispatcher); // Purpur - net.pl3x.purpur.command.TPSBarCommand.register(this.dispatcher); // Purpur -+ net.pl3x.purpur.command.CompassCommand.register(this.dispatcher); // Purpur + org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur + org.purpurmc.purpur.command.UptimeCommand.register(this.dispatcher); // Purpur + org.purpurmc.purpur.command.TPSBarCommand.register(this.dispatcher); // Purpur ++ org.purpurmc.purpur.command.CompassCommand.register(this.dispatcher); // Purpur } if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 3ad8167804f38262e1e7ecd878fce76573568ab8..a6176958f1eac3bf6b49ec48a9fe99fff5d847a7 100644 +index b609213894c5c9c34188e0667e34b61876ea92ce..d2cbc3ec9cfebc7576caf25606f4dbf30698310c 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -257,6 +257,7 @@ public class ServerPlayer extends Player { @@ -59,7 +59,7 @@ index 3ad8167804f38262e1e7ecd878fce76573568ab8..a6176958f1eac3bf6b49ec48a9fe99ff // Purpur end } diff --git a/src/main/java/net/minecraft/world/item/CompassItem.java b/src/main/java/net/minecraft/world/item/CompassItem.java -index 9d541c9e53f3f8db871f01f8d083e4cfc0de0de1..046bf9cbf02b002e89f7d39b616dd0f5a9539ed7 100644 +index 9d541c9e53f3f8db871f01f8d083e4cfc0de0de1..49e86b191397b49480684e7d99a515e9f8cf73fd 100644 --- a/src/main/java/net/minecraft/world/item/CompassItem.java +++ b/src/main/java/net/minecraft/world/item/CompassItem.java @@ -46,6 +46,17 @@ public class CompassItem extends Item implements Vanishable { @@ -68,7 +68,7 @@ index 9d541c9e53f3f8db871f01f8d083e4cfc0de0de1..046bf9cbf02b002e89f7d39b616dd0f5 if (!world.isClientSide) { + // Purpur start + if (world.purpurConfig.compassItemShowsBossBar && entity instanceof net.minecraft.server.level.ServerPlayer player && !player.compassBar()) { -+ net.pl3x.purpur.task.CompassTask task = net.pl3x.purpur.task.CompassTask.instance(); ++ org.purpurmc.purpur.task.CompassTask task = org.purpurmc.purpur.task.CompassTask.instance(); + boolean hasTask = task.hasPlayer(player.getUUID()); + if (selected && !hasTask) { + task.addPlayer(player.getBukkitEntity()); @@ -81,7 +81,7 @@ index 9d541c9e53f3f8db871f01f8d083e4cfc0de0de1..046bf9cbf02b002e89f7d39b616dd0f5 CompoundTag compoundTag = stack.getOrCreateTag(); if (compoundTag.contains("LodestoneTracked") && !compoundTag.getBoolean("LodestoneTracked")) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 00f3e7b110f38572bb2121b6f2e14e2584f4f60c..ffc1c2bf3cc6a892a073acb7d873084e3aaa7067 100644 +index b149e8cebf42a08e2e786f8bc06fc8b4387c991d..7ffbb3e4cdae80c99f0a979a7e00b2f6fe5ac189 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -252,6 +252,11 @@ public class PurpurConfig { @@ -111,7 +111,7 @@ index 00f3e7b110f38572bb2121b6f2e14e2584f4f60c..ffc1c2bf3cc6a892a073acb7d873084e hideHiddenPlayersFromEntitySelector = getBoolean("settings.command.hide-hidden-players-from-entity-selector", hideHiddenPlayersFromEntitySelector); uptimeFormat = getString("settings.command.uptime.format", uptimeFormat); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5f0b1e2b014a1340583c5a1c9d0c8d932d31dcbf..37c96672f890b32892ba8eeac25baab714a3d095 100644 +index 998eba4c1cdf65efbd0926351908c9897bc0ae01..97cb7b68186b1379efce1d855adc4d4be1dadfe4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -176,6 +176,7 @@ public class PurpurWorldConfig { @@ -132,17 +132,17 @@ index 5f0b1e2b014a1340583c5a1c9d0c8d932d31dcbf..37c96672f890b32892ba8eeac25baab7 public double minecartMaxSpeed = 0.4D; diff --git a/src/main/java/org/purpurmc/purpur/command/CompassCommand.java b/src/main/java/org/purpurmc/purpur/command/CompassCommand.java new file mode 100644 -index 0000000000000000000000000000000000000000..5381dfa162dae02c93afcf28d7c6dfb2170ab175 +index 0000000000000000000000000000000000000000..c493bb0ff9b0de2edadbee4138eab4d51f1fd20a --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/command/CompassCommand.java @@ -0,0 +1,21 @@ -+package net.pl3x.purpur.command; ++package org.purpurmc.purpur.command; + +import com.mojang.brigadier.CommandDispatcher; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.Commands; +import net.minecraft.server.level.ServerPlayer; -+import net.pl3x.purpur.task.CompassTask; ++import org.purpurmc.purpur.task.CompassTask; + +public class CompassCommand { + public static void register(CommandDispatcher dispatcher) { @@ -158,7 +158,7 @@ index 0000000000000000000000000000000000000000..5381dfa162dae02c93afcf28d7c6dfb2 + } +} diff --git a/src/main/java/org/purpurmc/purpur/task/BossBarTask.java b/src/main/java/org/purpurmc/purpur/task/BossBarTask.java -index 89122d7bcfd037a22d277e562f5300f2f3eab2db..d4d08946f38e6e29943a310c4b9385d2e092c803 100644 +index d38b3c4a722396cc3b61a9a8ed7e39cea4ae65cb..d333334f323049ca97e756324cff0b23eddacd2a 100644 --- a/src/main/java/org/purpurmc/purpur/task/BossBarTask.java +++ b/src/main/java/org/purpurmc/purpur/task/BossBarTask.java @@ -90,10 +90,12 @@ public abstract class BossBarTask extends BukkitRunnable { @@ -190,15 +190,15 @@ index 89122d7bcfd037a22d277e562f5300f2f3eab2db..d4d08946f38e6e29943a310c4b9385d2 } diff --git a/src/main/java/org/purpurmc/purpur/task/CompassTask.java b/src/main/java/org/purpurmc/purpur/task/CompassTask.java new file mode 100644 -index 0000000000000000000000000000000000000000..556ac7b6127a3827b686627364a7db9c853a2abd +index 0000000000000000000000000000000000000000..c34abe39812466437826a06101cd81c770e9e7a3 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/task/CompassTask.java @@ -0,0 +1,52 @@ -+package net.pl3x.purpur.task; ++package org.purpurmc.purpur.task; + +import net.kyori.adventure.bossbar.BossBar; +import net.kyori.adventure.text.Component; -+import net.pl3x.purpur.PurpurConfig; ++import org.purpurmc.purpur.PurpurConfig; +import org.bukkit.entity.Player; + +public class CompassTask extends BossBarTask { diff --git a/patches/server/0237-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0237-Dolphins-naturally-aggressive-to-players-chance.patch index 07ed04cd6..60fcc2add 100644 --- a/patches/server/0237-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0237-Dolphins-naturally-aggressive-to-players-chance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Dolphins naturally aggressive to players chance diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -index 591573926eb1358ef82e9e5418be0f1d4ba663cb..68f5f5322521d844c26582606a8d1235d4ddf58a 100644 +index 49e5a753aae7d72102ee700f3d8309f2f488cc12..022441af276cd9facba1ee4013d9d367db26711d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java @@ -75,6 +75,7 @@ public class Dolphin extends WaterAnimal { @@ -27,7 +27,7 @@ index 591573926eb1358ef82e9e5418be0f1d4ba663cb..68f5f5322521d844c26582606a8d1235 @@ -235,18 +237,20 @@ public class Dolphin extends WaterAnimal { this.goalSelector.addGoal(0, new BreathAirGoal(this)); this.goalSelector.addGoal(0, new TryFindWaterGoal(this)); - this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur + this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.2000000476837158D, true)); // Purpur this.goalSelector.addGoal(1, new Dolphin.DolphinSwimToTreasureGoal(this)); this.goalSelector.addGoal(2, new Dolphin.DolphinSwimWithPlayerGoal(this, 4.0D)); @@ -40,14 +40,14 @@ index 591573926eb1358ef82e9e5418be0f1d4ba663cb..68f5f5322521d844c26582606a8d1235 this.goalSelector.addGoal(8, new Dolphin.PlayWithItemsGoal()); this.goalSelector.addGoal(8, new FollowBoatGoal(this)); this.goalSelector.addGoal(9, new AvoidEntityGoal<>(this, Guardian.class, 8.0F, 1.0D, 1.0D)); - this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur + this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{Guardian.class})).setAlertOthers()); + this.targetSelector.addGoal(2, new net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, target -> isNaturallyAggressiveToPlayers)); // Purpur } public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b3be28a08fb4296e43db47737bbd3379f1798599..9deee35a36e1a30a7e567e537ecf68dc918954e8 100644 +index 708823c9688c9d4b1121c10c28f24b21abd89656..a51851aad7cfee98991c5e554e701fe51d6b6828 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1200,6 +1200,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0238-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0238-Cows-naturally-aggressive-to-players-chance.patch index 6eff68532..6eb585fb5 100644 --- a/patches/server/0238-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0238-Cows-naturally-aggressive-to-players-chance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Cows naturally aggressive to players chance diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index fa3bbdd27de6382904588213022191a52d9758a0..9009e448c14dedb271abe671d88aff0dd671408c 100644 +index 7042b95e92520c5e152af0fa71a553122ec814df..bbd210f8779138b225ce886b3917ca9ccbcbcf60 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -37,6 +37,7 @@ import org.bukkit.craftbukkit.inventory.CraftItemStack; @@ -39,7 +39,7 @@ index fa3bbdd27de6382904588213022191a52d9758a0..9009e448c14dedb271abe671d88aff0d @Override @@ -74,6 +82,7 @@ public class Cow extends Animal { this.goalSelector.addGoal(0, new FloatGoal(this)); - this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new PanicGoal(this, 2.0D)); + this.goalSelector.addGoal(1, new net.minecraft.world.entity.ai.goal.MeleeAttackGoal(this, 1.2000000476837158D, true)); // Purpur this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); @@ -59,7 +59,7 @@ index fa3bbdd27de6382904588213022191a52d9758a0..9009e448c14dedb271abe671d88aff0d @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9deee35a36e1a30a7e567e537ecf68dc918954e8..41bc2abe5b50041c9ec180ee56c9318009655d88 100644 +index a51851aad7cfee98991c5e554e701fe51d6b6828..ce1b9c19881709b0b2b5edb065251d4401241085 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1153,7 +1153,14 @@ public class PurpurWorldConfig { diff --git a/patches/server/0241-Config-for-Grindstones-ignoring-curses.patch b/patches/server/0241-Config-for-Grindstones-ignoring-curses.patch index 36d6f4e6b..0836096e9 100644 --- a/patches/server/0241-Config-for-Grindstones-ignoring-curses.patch +++ b/patches/server/0241-Config-for-Grindstones-ignoring-curses.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for Grindstones ignoring curses diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -index 0bdf874ddb951daf8d469575a44144504472d12d..b54e172fa18adeb563a3c9bda56e5579b64e5bcf 100644 +index 0bdf874ddb951daf8d469575a44144504472d12d..66d1b438227e004d7ffb6e7c5d0cd3e6da3d2a49 100644 --- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java +++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java @@ -130,7 +130,7 @@ public class GrindstoneMenu extends AbstractContainerMenu { @@ -13,7 +13,7 @@ index 0bdf874ddb951daf8d469575a44144504472d12d..b54e172fa18adeb563a3c9bda56e5579 Integer integer = (Integer) entry.getValue(); - if (!enchantment.isCurse()) { -+ if (!net.pl3x.purpur.PurpurConfig.grindstoneIgnoreCurses || !enchantment.isCurse()) { // Purpur ++ if (!org.purpurmc.purpur.PurpurConfig.grindstoneIgnoreCurses || !enchantment.isCurse()) { // Purpur j += enchantment.getMinCost(integer); } } @@ -22,7 +22,7 @@ index 0bdf874ddb951daf8d469575a44144504472d12d..b54e172fa18adeb563a3c9bda56e5579 Enchantment enchantment = (Enchantment) entry.getKey(); - if (!enchantment.isCurse() || EnchantmentHelper.getItemEnchantmentLevel(enchantment, itemstack2) == 0) { -+ if (!net.pl3x.purpur.PurpurConfig.grindstoneIgnoreCurses || !enchantment.isCurse() || EnchantmentHelper.getItemEnchantmentLevel(enchantment, itemstack2) == 0) { // Purpur ++ if (!org.purpurmc.purpur.PurpurConfig.grindstoneIgnoreCurses || !enchantment.isCurse() || EnchantmentHelper.getItemEnchantmentLevel(enchantment, itemstack2) == 0) { // Purpur itemstack2.enchant(enchantment, (Integer) entry.getValue()); } } @@ -31,12 +31,12 @@ index 0bdf874ddb951daf8d469575a44144504472d12d..b54e172fa18adeb563a3c9bda56e5579 itemstack1.setCount(amount); Map map = (Map) EnchantmentHelper.getEnchantments(item).entrySet().stream().filter((entry) -> { - return ((Enchantment) entry.getKey()).isCurse(); -+ return net.pl3x.purpur.PurpurConfig.grindstoneIgnoreCurses && ((Enchantment) entry.getKey()).isCurse(); // Purpur ++ return org.purpurmc.purpur.PurpurConfig.grindstoneIgnoreCurses && ((Enchantment) entry.getKey()).isCurse(); // Purpur }).collect(Collectors.toMap(Entry::getKey, Entry::getValue)); EnchantmentHelper.setEnchantments(map, itemstack1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index ffc1c2bf3cc6a892a073acb7d873084e3aaa7067..7a8f17af485dc35ba4095e0adcadc8c32b897a9d 100644 +index 7ffbb3e4cdae80c99f0a979a7e00b2f6fe5ac189..f8af5ec109df029ce66fea7d888b8712855c107a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -306,6 +306,7 @@ public class PurpurConfig { diff --git a/patches/server/0242-UPnP-Port-Forwarding.patch b/patches/server/0242-UPnP-Port-Forwarding.patch index 770bbc164..2671584a0 100644 --- a/patches/server/0242-UPnP-Port-Forwarding.patch +++ b/patches/server/0242-UPnP-Port-Forwarding.patch @@ -5,7 +5,7 @@ Subject: [PATCH] UPnP Port Forwarding diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 8f61044b7837ec433763746980b55b739ae4db8d..9619ea9005204d6b81d1622601e39477f0493def 100644 +index 8506e7e38959a6ae02777bb32268e6ba69143e83..85da17adb5991a79ce35b8919e242e90c4c55d21 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -308,6 +308,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop structurestart = structureAccessor.getStartForFeature(sectionposition, StructureFeature.STRONGHOLD, chunk); - + // Purpur start -+ if (new net.pl3x.purpur.event.world.StructureGenerateEvent( ++ if (new org.purpurmc.purpur.event.world.StructureGenerateEvent( + structureAccessor.getWorld().getWorld(), + org.bukkit.StructureType.getStructureTypes().get(structurestart.getFeature().getFeatureName().toLowerCase()), + chunkcoordintpair.x,