mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-30 16:19:03 +01:00
More Raid API (#7537)
This commit is contained in:
parent
9c2056070c
commit
659ebace6c
2 changed files with 168 additions and 0 deletions
62
patches/api/More-Raid-API.patch
Normal file
62
patches/api/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/org/bukkit/Raid.java
|
||||||
|
+++ b/src/main/java/org/bukkit/Raid.java
|
||||||
|
@@ -0,0 +0,0 @@ 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.
|
||||||
|
@@ -0,0 +0,0 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/org/bukkit/World.java
|
||||||
|
+++ b/src/main/java/org/bukkit/World.java
|
||||||
|
@@ -0,0 +0,0 @@ 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/More-Raid-API.patch
Normal file
106
patches/server/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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/raid/Raid.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/raid/Raid.java
|
||||||
|
@@ -0,0 +0,0 @@ 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);
|
||||||
|
@@ -0,0 +0,0 @@ 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
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -0,0 +0,0 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftRaid.java
|
||||||
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftRaid.java
|
||||||
|
@@ -0,0 +0,0 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||||
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||||
|
@@ -0,0 +0,0 @@ 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