aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJake Potrebic <[email protected]>2024-04-20 12:57:51 -0700
committerGitHub <[email protected]>2024-04-20 15:57:51 -0400
commita6b6ecdd221b6ae7687561c84c1850aaa62473b4 (patch)
tree042dadd9b3a325657343d012d273c5420b68bc7a
parentfc53ff5a71d4b8475bc239ef36e091725f67d5b6 (diff)
downloadPaper-a6b6ecdd221b6ae7687561c84c1850aaa62473b4.tar.gz
Paper-a6b6ecdd221b6ae7687561c84c1850aaa62473b4.zip
More Raid API (#7537)
-rw-r--r--patches/api/0473-More-Raid-API.patch62
-rw-r--r--patches/server/1059-More-Raid-API.patch106
2 files changed, 168 insertions, 0 deletions
diff --git a/patches/api/0473-More-Raid-API.patch b/patches/api/0473-More-Raid-API.patch
new file mode 100644
index 0000000000..6c0e5da000
--- /dev/null
+++ b/patches/api/0473-More-Raid-API.patch
@@ -0,0 +1,62 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jake Potrebic <[email protected]>
+Date: Fri, 4 Mar 2022 09:46:40 -0800
+Subject: [PATCH] More Raid API
+
+
+diff --git a/src/main/java/org/bukkit/Raid.java b/src/main/java/org/bukkit/Raid.java
+index 983a8c20a06d2b509602b27f49c090598b8ecc42..fa98599e3eee37bf68f0e9813497c718f457485c 100644
+--- a/src/main/java/org/bukkit/Raid.java
++++ b/src/main/java/org/bukkit/Raid.java
+@@ -9,7 +9,7 @@ import org.jetbrains.annotations.NotNull;
+ /**
+ * Represents a raid event.
+ */
+-public interface Raid {
++public interface Raid extends org.bukkit.persistence.PersistentDataHolder { // Paper
+
+ /**
+ * Get whether this raid started.
+@@ -131,4 +131,20 @@ public interface Raid {
+ */
+ STOPPED;
+ }
++
++ // Paper start
++ /**
++ * Gets the id of this raid.
++ *
++ * @return the raid id
++ */
++ int getId();
++
++ /**
++ * Get the boss bar to be displayed for this raid.
++ *
++ * @return the boss bar
++ */
++ org.bukkit.boss.@NotNull BossBar getBossBar();
++ // Paper end
+ }
+diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
+index 35fb5047dd8a8521586a9ca9f8d70881355fb7f5..e6f66d70d024cf4f0536a5bf8e51bf7b306335df 100644
+--- a/src/main/java/org/bukkit/World.java
++++ b/src/main/java/org/bukkit/World.java
+@@ -4199,6 +4199,17 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
+ @Nullable
+ public Raid locateNearestRaid(@NotNull Location location, int radius);
+
++ // Paper start - more Raid API
++ /**
++ * Get a raid with the specific id from {@link Raid#getId}
++ * from this world.
++ *
++ * @param id the id of the raid
++ * @return the raid or null if none with that id
++ */
++ @Nullable Raid getRaid(int id);
++ // Paper end - more Raid API
++
+ /**
+ * Gets all raids that are going on over this world.
+ *
diff --git a/patches/server/1059-More-Raid-API.patch b/patches/server/1059-More-Raid-API.patch
new file mode 100644
index 0000000000..b6ad0cb22a
--- /dev/null
+++ b/patches/server/1059-More-Raid-API.patch
@@ -0,0 +1,106 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jake Potrebic <[email protected]>
+Date: Fri, 4 Mar 2022 09:46:33 -0800
+Subject: [PATCH] More Raid API
+
+== AT ==
+public net.minecraft.world.entity.raid.Raid raidEvent
+
+diff --git a/src/main/java/net/minecraft/world/entity/raid/Raid.java b/src/main/java/net/minecraft/world/entity/raid/Raid.java
+index c983214d9c396585255883b764195456885a08df..bf2c23fad919820512ce031cf28a000b249b2876 100644
+--- a/src/main/java/net/minecraft/world/entity/raid/Raid.java
++++ b/src/main/java/net/minecraft/world/entity/raid/Raid.java
+@@ -106,6 +106,11 @@ public class Raid {
+ private Raid.RaidStatus status;
+ private int celebrationTicks;
+ private Optional<BlockPos> waveSpawnPos;
++ // Paper start
++ private static final String PDC_NBT_KEY = "BukkitValues";
++ private static final org.bukkit.craftbukkit.persistence.CraftPersistentDataTypeRegistry PDC_TYPE_REGISTRY = new org.bukkit.craftbukkit.persistence.CraftPersistentDataTypeRegistry();
++ public final org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer persistentDataContainer = new org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer(PDC_TYPE_REGISTRY);
++ // Paper end
+
+ public Raid(int id, ServerLevel world, BlockPos pos) {
+ this.raidEvent = new ServerBossEvent(Raid.RAID_NAME_COMPONENT, BossEvent.BossBarColor.RED, BossEvent.BossBarOverlay.NOTCHED_10);
+@@ -149,6 +154,11 @@ public class Raid {
+ this.heroesOfTheVillage.add(NbtUtils.loadUUID(nbtbase));
+ }
+ }
++ // Paper start
++ if (nbt.contains(PDC_NBT_KEY, net.minecraft.nbt.Tag.TAG_COMPOUND)) {
++ this.persistentDataContainer.putAll(nbt.getCompound(PDC_NBT_KEY));
++ }
++ // Paper end
+
+ }
+
+@@ -859,6 +869,11 @@ public class Raid {
+ }
+
+ nbt.put("HeroesOfTheVillage", nbttaglist);
++ // Paper start
++ if (!this.persistentDataContainer.isEmpty()) {
++ nbt.put(PDC_NBT_KEY, this.persistentDataContainer.toTagCompound());
++ }
++ // Paper end
+ return nbt;
+ }
+
+diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRaid.java b/src/main/java/org/bukkit/craftbukkit/CraftRaid.java
+index 9650859b40576ff1d03b77ab3594499e47eeaf6a..611fc24ee90644359010b8d2bfb90f9eb2a04675 100644
+--- a/src/main/java/org/bukkit/craftbukkit/CraftRaid.java
++++ b/src/main/java/org/bukkit/craftbukkit/CraftRaid.java
+@@ -103,4 +103,34 @@ public final class CraftRaid implements Raid {
+ public net.minecraft.world.entity.raid.Raid getHandle() {
+ return this.handle;
+ }
++
++ // Paper start - more Raid API
++ @Override
++ public int getId() {
++ return this.handle.getId();
++ }
++
++ @Override
++ public org.bukkit.boss.BossBar getBossBar() {
++ return new org.bukkit.craftbukkit.boss.CraftBossBar(this.handle.raidEvent);
++ }
++
++ @Override
++ public org.bukkit.persistence.PersistentDataContainer getPersistentDataContainer() {
++ return this.handle.persistentDataContainer;
++ }
++
++ @Override
++ public boolean equals(final Object o) {
++ if (this == o) return true;
++ if (o == null || this.getClass() != o.getClass()) return false;
++ final org.bukkit.craftbukkit.CraftRaid craftRaid = (org.bukkit.craftbukkit.CraftRaid) o;
++ return this.handle.equals(craftRaid.handle);
++ }
++
++ @Override
++ public int hashCode() {
++ return this.handle.hashCode();
++ }
++ // Paper end - more Raid API
+ }
+diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+index 01797d9791f19dfda4b168218eadeaae97f11eab..00357d78182b3ff87e3d9a45705b072af56739c8 100644
+--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
++++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+@@ -2397,6 +2397,14 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+ return (raid == null) ? null : new CraftRaid(raid);
+ }
+
++ // Paper start - more Raid API
++ @Override
++ public @Nullable Raid getRaid(final int id) {
++ final net.minecraft.world.entity.raid.@Nullable Raid nmsRaid = this.world.getRaids().raidMap.get(id);
++ return nmsRaid != null ? new CraftRaid(nmsRaid) : null;
++ }
++ // Paper end - more Raid API
++
+ @Override
+ public List<Raid> getRaids() {
+ Raids persistentRaid = this.world.getRaids();