aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0958-More-Raid-API.patch
diff options
context:
space:
mode:
authorJake Potrebic <[email protected]>2024-05-29 13:58:57 -0700
committerGitHub <[email protected]>2024-05-29 22:58:57 +0200
commita31dc90741ed9c121a13a3c124c9ebf5bafd0da7 (patch)
tree81963bd94fe7772ee08bd21710230de21b6b25da /patches/server/0958-More-Raid-API.patch
parented85aac53cfd93d29fa24e6071dbdddd0e49624b (diff)
downloadPaper-a31dc90741ed9c121a13a3c124c9ebf5bafd0da7.tar.gz
Paper-a31dc90741ed9c121a13a3c124c9ebf5bafd0da7.zip
Several fixes and new api for experience merging/stacking (#9242)
Diffstat (limited to 'patches/server/0958-More-Raid-API.patch')
-rw-r--r--patches/server/0958-More-Raid-API.patch106
1 files changed, 106 insertions, 0 deletions
diff --git a/patches/server/0958-More-Raid-API.patch b/patches/server/0958-More-Raid-API.patch
new file mode 100644
index 0000000000..14fcb7449a
--- /dev/null
+++ b/patches/server/0958-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 364d233ca318bbf8c1bc3acfbaf2d2420fdf922f..fdff9788eaf663be79214b2ca491f0f0444f6136 100644
+--- a/src/main/java/net/minecraft/world/entity/raid/Raid.java
++++ b/src/main/java/net/minecraft/world/entity/raid/Raid.java
+@@ -110,6 +110,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);
+@@ -153,6 +158,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
+
+ }
+
+@@ -870,6 +880,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 b8ce1c1c2447f9cff1717bfcfd6eb911ade0d4b3..51f21af9d75769abdcba713b9aa33392e994d9b0 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 4a62482b7c73728de8a94542e8978e836540b328..34f03dd227181a03fa90845067424a26382bab9b 100644
+--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
++++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+@@ -2373,6 +2373,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();