geforkt von Mirrors/Paper
088fa6f28b
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 Bukkit Changes: 5b289e69 SPIGOT-5778: Added World.getGameTime method CraftBukkit Changes: d97d91871 SPIGOT-6347: Nether Portals Default to Nether, even in Nether 8aa6a953f SPIGOT-5778: Added World.getGameTime method Spigot Changes: 73fb6094 #107: Add async catching to chunk entity add/remove
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 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;
|
|
}
|