Paper/Spigot-Server-Patches/0636-Added-WorldGameRuleChangeEvent.patch
Shane Freeder e886d8118e
Updated Upstream ()
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing
2021-02-06 00:00:18 +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 597d7a36d7d0b19502d92cf13da53d96c6ede58a..d86c25593db7cc0a73db1c37af94ae4e41bb4e93 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -2345,8 +2345,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;
}
@@ -2381,8 +2386,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;
}