e886d8118e
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
109 Zeilen
6.3 KiB
Diff
109 Zeilen
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;
|
|
}
|