mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-22 22:45:31 +01:00
More Raid API (#7537)
This commit is contained in:
parent
fc53ff5a71
commit
a6b6ecdd22
2 changed files with 168 additions and 0 deletions
62
patches/api/0473-More-Raid-API.patch
Normal file
62
patches/api/0473-More-Raid-API.patch
Normal file
|
@ -0,0 +1,62 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||
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.
|
||||
*
|
106
patches/server/1059-More-Raid-API.patch
Normal file
106
patches/server/1059-More-Raid-API.patch
Normal file
|
@ -0,0 +1,106 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
||||
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();
|
Loading…
Reference in a new issue