mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-28 15:30:19 +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