diff --git a/patches/api/0004-Purpur-API-Changes.patch b/patches/api/0004-Purpur-API-Changes.patch index abd12f5b..65c70857 100644 --- a/patches/api/0004-Purpur-API-Changes.patch +++ b/patches/api/0004-Purpur-API-Changes.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Purpur API Changes Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: bf63cfab4dfa92afc5c2a12c2c6f4cb1ddfa32df +Commit: 65d3665aee694972cb6c10059c144a0593518b25 Patches below are removed in this patch: Pufferfish-API-Changes.patch @@ -2507,12 +2507,13 @@ index 0000000000000000000000000000000000000000..c8d206abf8f6a08f746322e63d198a36 +} diff --git a/src/main/java/org/purpurmc/purpur/event/PreBlockExplodeEvent.java b/src/main/java/org/purpurmc/purpur/event/PreBlockExplodeEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..8ea97ddceedb7c719e8a50a0dd8f3f0919ca1647 +index 0000000000000000000000000000000000000000..b22f28357bec72256b1f5f96e97d228d5882b4e0 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/event/PreBlockExplodeEvent.java -@@ -0,0 +1,53 @@ +@@ -0,0 +1,54 @@ +package org.purpurmc.purpur.event; + ++import org.bukkit.ExplosionResult; +import org.bukkit.block.Block; +import org.bukkit.block.BlockState; +import org.bukkit.event.Cancellable; @@ -2529,8 +2530,8 @@ index 0000000000000000000000000000000000000000..8ea97ddceedb7c719e8a50a0dd8f3f09 + private boolean cancelled; + private final float yield; + -+ public PreBlockExplodeEvent(@NotNull final Block what, final float yield, @NotNull BlockState explodedBlockState) { -+ super(what, explodedBlockState, Collections.emptyList(), yield); ++ public PreBlockExplodeEvent(@NotNull final Block what, final float yield, @NotNull BlockState explodedBlockState, @NotNull ExplosionResult result) { ++ super(what, explodedBlockState, Collections.emptyList(), yield, result); + this.yield = yield; + this.cancelled = false; + } @@ -3034,12 +3035,13 @@ index 0000000000000000000000000000000000000000..c268c35b541a222d50875c29770c846a +} diff --git a/src/main/java/org/purpurmc/purpur/event/entity/PreEntityExplodeEvent.java b/src/main/java/org/purpurmc/purpur/event/entity/PreEntityExplodeEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..2d4f68228861492baaea0bcc604dfef623b337ba +index 0000000000000000000000000000000000000000..bd5e647d52b2c69da684bb246325e0d6ca81f96e --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/event/entity/PreEntityExplodeEvent.java -@@ -0,0 +1,64 @@ +@@ -0,0 +1,65 @@ +package org.purpurmc.purpur.event.entity; + ++import org.bukkit.ExplosionResult; +import org.bukkit.Location; +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; @@ -3056,8 +3058,8 @@ index 0000000000000000000000000000000000000000..2d4f68228861492baaea0bcc604dfef6 + private final float yield; + private final Location location; + -+ public PreEntityExplodeEvent(@NotNull org.bukkit.entity.Entity what, @NotNull final Location location, final float yield) { -+ super(what, location, Collections.emptyList(), yield); ++ public PreEntityExplodeEvent(@NotNull org.bukkit.entity.Entity what, @NotNull final Location location, final float yield, @NotNull ExplosionResult result) { ++ super(what, location, Collections.emptyList(), yield, result); + this.cancelled = false; + this.yield = yield; + this.location = location; diff --git a/patches/generated-api/0001-Purpur-generated-api-Changes.patch b/patches/generated-api/0001-Purpur-generated-api-Changes.patch index 9c90d07d..0152c059 100644 --- a/patches/generated-api/0001-Purpur-generated-api-Changes.patch +++ b/patches/generated-api/0001-Purpur-generated-api-Changes.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Purpur generated-api Changes Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: bf63cfab4dfa92afc5c2a12c2c6f4cb1ddfa32df +Commit: 65d3665aee694972cb6c10059c144a0593518b25 diff --git a/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/com/destroystokyo/paper/entity/ai/VanillaGoal.java index 3add91218dd3f07052aa932f0503d1f10ac3799b..3e41a4141095bce989c75e989293deb3f47e8e6d 100644 diff --git a/patches/server/0010-Purpur-Server-Changes.patch b/patches/server/0010-Purpur-Server-Changes.patch index cd98a1fd..5ead293e 100644 --- a/patches/server/0010-Purpur-Server-Changes.patch +++ b/patches/server/0010-Purpur-Server-Changes.patch @@ -8,7 +8,7 @@ TODO - Dreeam: Check Fix-pufferfish-issues.patch Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: bf63cfab4dfa92afc5c2a12c2c6f4cb1ddfa32df +Commit: 65d3665aee694972cb6c10059c144a0593518b25 Patches below are removed in this patch: Brand changes in Rebrand.patch @@ -14451,7 +14451,7 @@ index 141b748abe80402731cdaf14a3d36aa7cef4f4bd..d5d2a6467b48bcf8e5322dd5938f6e4f if (range < 0.0 || d < range * range) { return true; diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 0c9c75e3c094e22aad926977545d2ae7075e33ad..dbebbc1d611728dbcb42a94f366969913a077cb4 100644 +index 0c9c75e3c094e22aad926977545d2ae7075e33ad..ff36324eb2d34ca414d7b7f3a91a9ef52eaf10d0 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -340,7 +340,7 @@ public class Explosion { @@ -14476,7 +14476,7 @@ index 0c9c75e3c094e22aad926977545d2ae7075e33ad..dbebbc1d611728dbcb42a94f36696991 + // Purpur start - add PreExplodeEvents + if(this.source != null){ + Location location = new Location(this.level.getWorld(), this.x, this.y, this.z); -+ if(!new org.purpurmc.purpur.event.entity.PreEntityExplodeEvent(this.source.getBukkitEntity(), location, this.blockInteraction == Explosion.BlockInteraction.DESTROY_WITH_DECAY ? 1.0F / this.radius : 1.0F).callEvent()) { ++ if(!new org.purpurmc.purpur.event.entity.PreEntityExplodeEvent(this.source.getBukkitEntity(), location, this.blockInteraction == Explosion.BlockInteraction.DESTROY_WITH_DECAY ? 1.0F / this.radius : 1.0F, org.bukkit.craftbukkit.CraftExplosionResult.toBukkit(getBlockInteraction())).callEvent()) { + this.wasCanceled = true; + return; + } @@ -14484,7 +14484,7 @@ index 0c9c75e3c094e22aad926977545d2ae7075e33ad..dbebbc1d611728dbcb42a94f36696991 + Location location = new Location(this.level.getWorld(), this.x, this.y, this.z); + org.bukkit.block.Block block = location.getBlock(); + org.bukkit.block.BlockState blockState = (this.damageSource.getDirectBlockState() != null) ? this.damageSource.getDirectBlockState() : block.getState(); -+ if(!new org.purpurmc.purpur.event.PreBlockExplodeEvent(location.getBlock(), this.blockInteraction == Explosion.BlockInteraction.DESTROY_WITH_DECAY ? 1.0F / this.radius : 1.0F, blockState).callEvent()) { ++ if(!new org.purpurmc.purpur.event.PreBlockExplodeEvent(location.getBlock(), this.blockInteraction == Explosion.BlockInteraction.DESTROY_WITH_DECAY ? 1.0F / this.radius : 1.0F, blockState, org.bukkit.craftbukkit.CraftExplosionResult.toBukkit(getBlockInteraction())).callEvent()) { + this.wasCanceled = true; + return; + } @@ -23608,7 +23608,7 @@ index 0000000000000000000000000000000000000000..fa72769e06061609e1e658a0250e99c8 +} diff --git a/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java b/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java new file mode 100644 -index 0000000000000000000000000000000000000000..56fc359ea32228c2589ac30c9d00a9c4bea30db7 +index 0000000000000000000000000000000000000000..664f9d5e1ce5e2787bf699bd11758b9e3aa8ed3a --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java @@ -0,0 +1,67 @@ @@ -23621,13 +23621,13 @@ index 0000000000000000000000000000000000000000..56fc359ea32228c2589ac30c9d00a9c4 +import net.minecraft.world.level.block.entity.BlockEntity; +import org.bukkit.Bukkit; +import org.bukkit.craftbukkit.entity.CraftPlayer; -+import org.bukkit.craftbukkit.scheduler.MinecraftInternalPlugin; +import org.bukkit.entity.Player; +import org.bukkit.plugin.PluginBase; +import org.bukkit.plugin.messaging.PluginMessageListener; +import org.jetbrains.annotations.NotNull; +import org.purpurmc.purpur.network.ClientboundBeehivePayload; +import org.purpurmc.purpur.network.ServerboundBeehivePayload; ++import org.purpurmc.purpur.util.MinecraftInternalPlugin; + +public class BeehiveTask implements PluginMessageListener { + @@ -23681,7 +23681,7 @@ index 0000000000000000000000000000000000000000..56fc359ea32228c2589ac30c9d00a9c4 +} 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..114f273dd7f8b8a3c02f0651f6944859b33a65d4 +index 0000000000000000000000000000000000000000..3c3d4cd52db93b97a40321030a70ebc282c9636b --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/task/BossBarTask.java @@ -0,0 +1,121 @@ @@ -23690,7 +23690,6 @@ index 0000000000000000000000000000000000000000..114f273dd7f8b8a3c02f0651f6944859 +import net.kyori.adventure.bossbar.BossBar; +import net.minecraft.server.level.ServerPlayer; +import org.bukkit.Bukkit; -+import org.bukkit.craftbukkit.scheduler.MinecraftInternalPlugin; +import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitRunnable; + @@ -23699,6 +23698,7 @@ index 0000000000000000000000000000000000000000..114f273dd7f8b8a3c02f0651f6944859 +import java.util.Iterator; +import java.util.Map; +import java.util.UUID; ++import org.purpurmc.purpur.util.MinecraftInternalPlugin; + +public abstract class BossBarTask extends BukkitRunnable { + private final Map bossbars = new HashMap<>(); @@ -24309,6 +24309,164 @@ index 0000000000000000000000000000000000000000..b7586f494528f30eb0da82420d3bcf5b + super(into, drops); + } +} +diff --git a/src/main/java/org/purpurmc/purpur/util/MinecraftInternalPlugin.java b/src/main/java/org/purpurmc/purpur/util/MinecraftInternalPlugin.java +new file mode 100644 +index 0000000000000000000000000000000000000000..129acb8ad139decc6b1c023cb10bc32dc91d64d1 +--- /dev/null ++++ b/src/main/java/org/purpurmc/purpur/util/MinecraftInternalPlugin.java +@@ -0,0 +1,152 @@ ++package org.purpurmc.purpur.util; ++ ++import org.bukkit.Server; ++import org.bukkit.command.Command; ++import org.bukkit.command.CommandSender; ++import org.bukkit.configuration.file.FileConfiguration; ++import org.bukkit.generator.BiomeProvider; ++import org.bukkit.generator.ChunkGenerator; ++import org.bukkit.plugin.PluginBase; ++import org.bukkit.plugin.PluginDescriptionFile; ++import org.bukkit.plugin.PluginLoader; ++import org.bukkit.plugin.PluginLogger; ++import org.jetbrains.annotations.NotNull; ++import org.jetbrains.annotations.Nullable; ++ ++import java.io.File; ++import java.io.InputStream; ++import java.util.List; ++ ++public class MinecraftInternalPlugin extends PluginBase { ++ private boolean enabled = true; ++ ++ private final String pluginName; ++ private PluginDescriptionFile pdf; ++ ++ public MinecraftInternalPlugin() { ++ this.pluginName = "Minecraft"; ++ pdf = new PluginDescriptionFile(pluginName, "1.0", "nms"); ++ } ++ ++ public void setEnabled(boolean enabled) { ++ this.enabled = enabled; ++ } ++ ++ @Override ++ public File getDataFolder() { ++ throw new UnsupportedOperationException("Not supported."); ++ } ++ ++ @Override ++ public PluginDescriptionFile getDescription() { ++ return pdf; ++ } ++ // Paper start ++ @Override ++ public io.papermc.paper.plugin.configuration.PluginMeta getPluginMeta() { ++ return pdf; ++ } ++ // Paper end ++ ++ @Override ++ public FileConfiguration getConfig() { ++ throw new UnsupportedOperationException("Not supported."); ++ } ++ ++ @Override ++ public InputStream getResource(String filename) { ++ throw new UnsupportedOperationException("Not supported."); ++ } ++ ++ @Override ++ public void saveConfig() { ++ throw new UnsupportedOperationException("Not supported."); ++ } ++ ++ @Override ++ public void saveDefaultConfig() { ++ throw new UnsupportedOperationException("Not supported."); ++ } ++ ++ @Override ++ public void saveResource(String resourcePath, boolean replace) { ++ throw new UnsupportedOperationException("Not supported."); ++ } ++ ++ @Override ++ public void reloadConfig() { ++ throw new UnsupportedOperationException("Not supported."); ++ } ++ ++ @Override ++ public PluginLogger getLogger() { ++ throw new UnsupportedOperationException("Not supported."); ++ } ++ ++ @Override ++ public PluginLoader getPluginLoader() { ++ throw new UnsupportedOperationException("Not supported."); ++ } ++ ++ @Override ++ public Server getServer() { ++ throw new UnsupportedOperationException("Not supported."); ++ } ++ ++ @Override ++ public boolean isEnabled() { ++ return enabled; ++ } ++ ++ @Override ++ public void onDisable() { ++ throw new UnsupportedOperationException("Not supported."); ++ } ++ ++ @Override ++ public void onLoad() { ++ throw new UnsupportedOperationException("Not supported."); ++ } ++ ++ @Override ++ public void onEnable() { ++ throw new UnsupportedOperationException("Not supported."); ++ } ++ ++ @Override ++ public boolean isNaggable() { ++ throw new UnsupportedOperationException("Not supported."); ++ } ++ ++ @Override ++ public void setNaggable(boolean canNag) { ++ throw new UnsupportedOperationException("Not supported."); ++ } ++ ++ @Override ++ public ChunkGenerator getDefaultWorldGenerator(String worldName, String id) { ++ throw new UnsupportedOperationException("Not supported."); ++ } ++ ++ @Override ++ public @Nullable BiomeProvider getDefaultBiomeProvider(@NotNull String worldName, @Nullable String id) { ++ throw new UnsupportedOperationException("Not supported."); ++ } ++ ++ @Override ++ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { ++ throw new UnsupportedOperationException("Not supported."); ++ } ++ ++ @Override ++ public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { ++ throw new UnsupportedOperationException("Not supported."); ++ } ++ ++ // Paper start - lifecycle events ++ @Override ++ public @NotNull io.papermc.paper.plugin.lifecycle.event.LifecycleEventManager getLifecycleManager() { ++ throw new UnsupportedOperationException("Not supported."); ++ } ++ // Paper end - lifecycle events ++} diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java index 456f64fcae7a12ca141d8061f69797e58efa1899..530c5d656b6b362d0df85a897d7e8d0497250680 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java