Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-15 19:10:09 +01:00
107 Zeilen
4.4 KiB
Diff
107 Zeilen
4.4 KiB
Diff
|
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();
|