Paper/Spigot-Server-Patches/0637-Added-WorldGameRuleChangeEvent.patch
2021-02-21 20:55:01 +00:00

109 lines
6.3 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
Date: Sun, 20 Dec 2020 16:41:44 -0800
Subject: [PATCH] Added WorldGameRuleChangeEvent
diff --git a/src/main/java/net/minecraft/server/CommandGamerule.java b/src/main/java/net/minecraft/server/CommandGamerule.java
index 1ae60aae1d2017226c1f3ea39148d24aaf40cdde..f8ce9be8527111786c233c98e45f6d8fe183c70e 100644
--- a/src/main/java/net/minecraft/server/CommandGamerule.java
+++ b/src/main/java/net/minecraft/server/CommandGamerule.java
@@ -27,7 +27,7 @@ public class CommandGamerule {
CommandListenerWrapper commandlistenerwrapper = (CommandListenerWrapper) commandcontext.getSource();
T t0 = commandlistenerwrapper.getWorld().getGameRules().get(gamerules_gamerulekey); // CraftBukkit
- t0.b(commandcontext, "value");
+ t0.setValue(commandcontext, "value", gamerules_gamerulekey); // Paper
commandlistenerwrapper.sendMessage(new ChatMessage("commands.gamerule.set", new Object[]{gamerules_gamerulekey.a(), t0.toString()}), true);
return t0.getIntValue();
}
diff --git a/src/main/java/net/minecraft/server/GameRules.java b/src/main/java/net/minecraft/server/GameRules.java
index b245428604e2a432fa3bab4836a5ca1fb35c3f64..53b40f8947c9380ef57ecc7edca203c5bc894013 100644
--- a/src/main/java/net/minecraft/server/GameRules.java
+++ b/src/main/java/net/minecraft/server/GameRules.java
@@ -18,6 +18,7 @@ import java.util.function.Supplier;
import javax.annotation.Nullable;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import io.papermc.paper.event.world.WorldGameRuleChangeEvent; // Paper
public class GameRules {
@@ -170,8 +171,11 @@ public class GameRules {
}
@Override
- protected void a(CommandContext<CommandListenerWrapper> commandcontext, String s) {
- this.b = BoolArgumentType.getBool(commandcontext, s);
+ protected void a(CommandContext<CommandListenerWrapper> commandcontext, String s, GameRules.GameRuleKey<GameRuleBoolean> gameRuleKey) { // Paper start
+ WorldGameRuleChangeEvent event = new WorldGameRuleChangeEvent(commandcontext.getSource().getBukkitWorld(), commandcontext.getSource().getBukkitSender(), (org.bukkit.GameRule<Boolean>) org.bukkit.GameRule.getByName(gameRuleKey.toString()), String.valueOf(BoolArgumentType.getBool(commandcontext, s)));
+ if (!event.callEvent()) return;
+ this.b = Boolean.parseBoolean(event.getValue());
+ // Paper end
}
public boolean a() {
@@ -230,8 +234,11 @@ public class GameRules {
}
@Override
- protected void a(CommandContext<CommandListenerWrapper> commandcontext, String s) {
- this.b = IntegerArgumentType.getInteger(commandcontext, s);
+ protected void a(CommandContext<CommandListenerWrapper> commandcontext, String s, GameRules.GameRuleKey<GameRuleInt> gameRuleKey) { // Paper start
+ WorldGameRuleChangeEvent event = new WorldGameRuleChangeEvent(commandcontext.getSource().getBukkitWorld(), commandcontext.getSource().getBukkitSender(), (org.bukkit.GameRule<Integer>) org.bukkit.GameRule.getByName(gameRuleKey.toString()), String.valueOf(IntegerArgumentType.getInteger(commandcontext, s)));
+ if (!event.callEvent()) return;
+ this.b = Integer.parseInt(event.getValue());
+ // Paper end
}
public int a() {
@@ -284,10 +291,12 @@ public class GameRules {
this.a = gamerules_gameruledefinition;
}
- protected abstract void a(CommandContext<CommandListenerWrapper> commandcontext, String s);
+ protected void updateValue(CommandContext<CommandListenerWrapper> commandcontext, String s, GameRules.GameRuleKey<T> gameRuleKey) { this.a(commandcontext, s, gameRuleKey); } // Paper - OBFHELPER
+ protected abstract void a(CommandContext<CommandListenerWrapper> commandcontext, String s, GameRules.GameRuleKey<T> gameRuleKey); // Paper
- public void b(CommandContext<CommandListenerWrapper> commandcontext, String s) {
- this.a(commandcontext, s);
+ public void setValue(CommandContext<CommandListenerWrapper> commandcontext, String s, GameRules.GameRuleKey<T> gameRuleKey) { this.b(commandcontext, s, gameRuleKey); } // Paper - OBFHELPER
+ public void b(CommandContext<CommandListenerWrapper> commandcontext, String s, GameRules.GameRuleKey<T> gameRuleKey) { // Paper
+ this.updateValue(commandcontext, s, gameRuleKey); // Paper
this.onChange(((CommandListenerWrapper) commandcontext.getSource()).getServer());
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index fe21b612f9bd2cf85670eeffa25998130b543339..22eba9372d334c65d009721e808c958dfc271308 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -2350,8 +2350,13 @@ public class CraftWorld implements World {
if (!isGameRule(rule)) return false;
+ // Paper start
+ GameRule<?> gameRule = GameRule.getByName(rule);
+ io.papermc.paper.event.world.WorldGameRuleChangeEvent event = new io.papermc.paper.event.world.WorldGameRuleChangeEvent(this, null, gameRule, value);
+ if (!event.callEvent()) return false;
+ // Paper end
GameRules.GameRuleValue<?> handle = getHandle().getGameRules().get(getGameRulesNMS().get(rule));
- handle.setValue(value);
+ handle.setValue(event.getValue().toString()); // Paper
handle.onChange(getHandle().getMinecraftServer());
return true;
}
@@ -2386,8 +2391,12 @@ public class CraftWorld implements World {
if (!isGameRule(rule.getName())) return false;
+ // Paper start
+ io.papermc.paper.event.world.WorldGameRuleChangeEvent event = new io.papermc.paper.event.world.WorldGameRuleChangeEvent(this, null, rule, String.valueOf(newValue));
+ if (!event.callEvent()) return false;
+ // Paper end
GameRules.GameRuleValue<?> handle = getHandle().getGameRules().get(getGameRulesNMS().get(rule.getName()));
- handle.setValue(newValue.toString());
+ handle.setValue(event.getValue().toString()); // Paper
handle.onChange(getHandle().getMinecraftServer());
return true;
}