Paper/patches/server/1047-Support-registry-mod-API-with-GameEvent.patch
2024-02-09 12:18:35 -08:00

81 lines
3.9 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
Date: Sat, 25 Feb 2023 21:25:08 -0800
Subject: [PATCH] Support registry mod API with GameEvent
diff --git a/src/main/java/io/papermc/paper/registry/PaperRegistries.java b/src/main/java/io/papermc/paper/registry/PaperRegistries.java
index abecec33b6c0dba7183057efbc1425d94958b458..d75b27803c300deaec384bca3dc6dc58aaf05868 100644
--- a/src/main/java/io/papermc/paper/registry/PaperRegistries.java
+++ b/src/main/java/io/papermc/paper/registry/PaperRegistries.java
@@ -50,7 +50,7 @@ public final class PaperRegistries {
static {
REGISTRY_ENTRIES = ImmutableList.<RegistryEntry<?, ?>>builder()
// built-ins
- .add(immutableBuiltIn(RegistryKey.GAME_EVENT, Registries.GAME_EVENT, GameEvent.class, CraftGameEvent::new))
+ .add(writableBuiltIn(RegistryKey.GAME_EVENT, Registries.GAME_EVENT, GameEvent.class, CraftGameEvent::new, CraftGameEvent.Builder::new))
.add(immutableBuiltIn(RegistryKey.STRUCTURE_TYPE, Registries.STRUCTURE_TYPE, StructureType.class, CraftStructureType::new))
.add(immutableBuiltIn(RegistryKey.INSTRUMENT, Registries.INSTRUMENT, MusicInstrument.class, CraftMusicInstrument::new))
.add(immutableBuiltIn(RegistryKey.ENCHANTMENT, Registries.ENCHANTMENT, Enchantment.class, CraftEnchantment::new))
diff --git a/src/main/java/net/minecraft/world/level/gameevent/GameEvent.java b/src/main/java/net/minecraft/world/level/gameevent/GameEvent.java
index f943a0342ab34f10284c1daa84ff7424541221c4..66f0791cba4be6e11feebf288707c9d865ae66a0 100644
--- a/src/main/java/net/minecraft/world/level/gameevent/GameEvent.java
+++ b/src/main/java/net/minecraft/world/level/gameevent/GameEvent.java
@@ -87,7 +87,7 @@ public class GameEvent {
}
private static GameEvent register(String id, int range) {
- return Registry.register(BuiltInRegistries.GAME_EVENT, id, new GameEvent(range));
+ return io.papermc.paper.registry.PaperRegistryListenerManager.INSTANCE.registerWithListeners(BuiltInRegistries.GAME_EVENT, id, new GameEvent(range)); // Paper
}
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftGameEvent.java b/src/main/java/org/bukkit/craftbukkit/CraftGameEvent.java
index ac9b4328cd55a68664a3f71186bc9a7be7cd9658..acb1f4c95226b0603ddae4ead9fcb5704b33ec98 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftGameEvent.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftGameEvent.java
@@ -58,4 +58,43 @@ public class CraftGameEvent extends GameEvent implements Handleable<net.minecraf
public String toString() {
return "CraftGameEvent{key=" + this.key + "}";
}
+
+ // Paper start
+ @Override
+ public int getRange() {
+ return this.handle.getNotificationRadius();
+ }
+
+ @Override
+ public int getVibrationLevel() {
+ return net.minecraft.world.level.gameevent.vibrations.VibrationSystem.getGameEventFrequency(this.handle);
+ }
+
+ public static final class Builder implements GameEvent.Builder, io.papermc.paper.registry.PaperRegistryBuilder<net.minecraft.world.level.gameevent.GameEvent, org.bukkit.GameEvent> {
+
+ private int range = 16;
+
+ public Builder(final io.papermc.paper.registry.TypedKey<GameEvent> $, final net.minecraft.world.level.gameevent.@org.checkerframework.checker.nullness.qual.Nullable GameEvent nms) {
+ if (nms != null) {
+ this.range = nms.getNotificationRadius();
+ }
+ }
+
+ @Override
+ public int range() {
+ return this.range;
+ }
+
+ @Override
+ public Builder range(final int range) {
+ this.range = range;
+ return this;
+ }
+
+ @Override
+ public net.minecraft.world.level.gameevent.GameEvent build() {
+ return new net.minecraft.world.level.gameevent.GameEvent(this.range);
+ }
+ }
+ // Paper end
}