mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-30 16:19:03 +01:00
Add WorldGameRuleChangeEvent
This commit is contained in:
parent
e793c7d8be
commit
1e05072232
3 changed files with 59 additions and 14 deletions
|
@ -1,14 +1,17 @@
|
||||||
--- a/net/minecraft/server/commands/GameRuleCommand.java
|
--- a/net/minecraft/server/commands/GameRuleCommand.java
|
||||||
+++ b/net/minecraft/server/commands/GameRuleCommand.java
|
+++ b/net/minecraft/server/commands/GameRuleCommand.java
|
||||||
@@ -34,7 +34,7 @@
|
@@ -34,9 +34,9 @@
|
||||||
|
|
||||||
static <T extends GameRules.Value<T>> int setRule(CommandContext<CommandSourceStack> context, GameRules.Key<T> key) {
|
static <T extends GameRules.Value<T>> int setRule(CommandContext<CommandSourceStack> context, GameRules.Key<T> key) {
|
||||||
CommandSourceStack commandlistenerwrapper = (CommandSourceStack) context.getSource();
|
CommandSourceStack commandlistenerwrapper = (CommandSourceStack) context.getSource();
|
||||||
- T t0 = commandlistenerwrapper.getServer().getGameRules().getRule(key);
|
- T t0 = commandlistenerwrapper.getServer().getGameRules().getRule(key);
|
||||||
+ T t0 = commandlistenerwrapper.getLevel().getGameRules().getRule(key); // CraftBukkit
|
+ T t0 = commandlistenerwrapper.getLevel().getGameRules().getRule(key); // CraftBukkit
|
||||||
|
|
||||||
t0.setFromArgument(context, "value");
|
- t0.setFromArgument(context, "value");
|
||||||
|
+ t0.setFromArgument(context, "value", key); // Paper - Add WorldGameRuleChangeEvent
|
||||||
commandlistenerwrapper.sendSuccess(() -> {
|
commandlistenerwrapper.sendSuccess(() -> {
|
||||||
|
return Component.translatable("commands.gamerule.set", key.getId(), t0.toString());
|
||||||
|
}, true);
|
||||||
@@ -44,7 +44,7 @@
|
@@ -44,7 +44,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -108,11 +108,18 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
public void callVisitor(GameRules.GameRuleTypeVisitor consumer, GameRules.Key<T> key) {
|
public void callVisitor(GameRules.GameRuleTypeVisitor consumer, GameRules.Key<T> key) {
|
||||||
@@ -326,17 +326,17 @@
|
@@ -322,21 +322,21 @@
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
public void setFromArgument(CommandContext<CommandSourceStack> context, String name) {
|
- protected abstract void updateFromArgument(CommandContext<CommandSourceStack> context, String name);
|
||||||
this.updateFromArgument(context, name);
|
+ protected abstract void updateFromArgument(CommandContext<CommandSourceStack> context, String name, GameRules.Key<T> gameRuleKey); // Paper - Add WorldGameRuleChangeEvent
|
||||||
|
|
||||||
|
- public void setFromArgument(CommandContext<CommandSourceStack> context, String name) {
|
||||||
|
- this.updateFromArgument(context, name);
|
||||||
- this.onChanged(((CommandSourceStack) context.getSource()).getServer());
|
- this.onChanged(((CommandSourceStack) context.getSource()).getServer());
|
||||||
|
+ public void setFromArgument(CommandContext<CommandSourceStack> context, String name, GameRules.Key<T> gameRuleKey) { // Paper - Add WorldGameRuleChangeEvent
|
||||||
|
+ this.updateFromArgument(context, name, gameRuleKey); // Paper - Add WorldGameRuleChangeEvent
|
||||||
+ this.onChanged(((CommandSourceStack) context.getSource()).getLevel()); // CraftBukkit - per-world
|
+ this.onChanged(((CommandSourceStack) context.getSource()).getLevel()); // CraftBukkit - per-world
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,7 +156,20 @@
|
||||||
return new GameRules.Type<>(BoolArgumentType::bool, (gamerules_gameruledefinition) -> {
|
return new GameRules.Type<>(BoolArgumentType::bool, (gamerules_gameruledefinition) -> {
|
||||||
return new GameRules.BooleanValue(gamerules_gameruledefinition, initialValue);
|
return new GameRules.BooleanValue(gamerules_gameruledefinition, initialValue);
|
||||||
}, changeCallback, GameRules.GameRuleTypeVisitor::visitBoolean, FeatureFlagSet.of());
|
}, changeCallback, GameRules.GameRuleTypeVisitor::visitBoolean, FeatureFlagSet.of());
|
||||||
@@ -391,9 +391,9 @@
|
@@ -383,17 +383,20 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
- protected void updateFromArgument(CommandContext<CommandSourceStack> context, String name) {
|
||||||
|
- this.value = BoolArgumentType.getBool(context, name);
|
||||||
|
+ protected void updateFromArgument(CommandContext<CommandSourceStack> context, String name, GameRules.Key<BooleanValue> gameRuleKey) { // Paper start - Add WorldGameRuleChangeEvent
|
||||||
|
+ io.papermc.paper.event.world.WorldGameRuleChangeEvent event = new io.papermc.paper.event.world.WorldGameRuleChangeEvent(context.getSource().getBukkitWorld(), context.getSource().getBukkitSender(), (org.bukkit.GameRule<Boolean>) org.bukkit.GameRule.getByName(gameRuleKey.toString()), String.valueOf(BoolArgumentType.getBool(context, name)));
|
||||||
|
+ if (!event.callEvent()) return;
|
||||||
|
+ this.value = Boolean.parseBoolean(event.getValue());
|
||||||
|
+ // Paper end - Add WorldGameRuleChangeEvent
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean get() {
|
||||||
return this.value;
|
return this.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,7 +182,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -402,7 +402,7 @@
|
@@ -402,7 +405,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -171,7 +191,7 @@
|
||||||
this.value = Boolean.parseBoolean(value);
|
this.value = Boolean.parseBoolean(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -421,9 +421,9 @@
|
@@ -421,9 +424,9 @@
|
||||||
return new GameRules.BooleanValue(this.type, this.value);
|
return new GameRules.BooleanValue(this.type, this.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -184,7 +204,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -431,13 +431,13 @@
|
@@ -431,13 +434,13 @@
|
||||||
|
|
||||||
private int value;
|
private int value;
|
||||||
|
|
||||||
|
@ -200,7 +220,20 @@
|
||||||
return new GameRules.Type<>(() -> {
|
return new GameRules.Type<>(() -> {
|
||||||
return IntegerArgumentType.integer(min, max);
|
return IntegerArgumentType.integer(min, max);
|
||||||
}, (gamerules_gameruledefinition) -> {
|
}, (gamerules_gameruledefinition) -> {
|
||||||
@@ -464,9 +464,9 @@
|
@@ -456,17 +459,20 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
- protected void updateFromArgument(CommandContext<CommandSourceStack> context, String name) {
|
||||||
|
- this.value = IntegerArgumentType.getInteger(context, name);
|
||||||
|
+ protected void updateFromArgument(CommandContext<CommandSourceStack> context, String name, GameRules.Key<IntegerValue> gameRuleKey) { // Paper start - Add WorldGameRuleChangeEvent
|
||||||
|
+ io.papermc.paper.event.world.WorldGameRuleChangeEvent event = new io.papermc.paper.event.world.WorldGameRuleChangeEvent(context.getSource().getBukkitWorld(), context.getSource().getBukkitSender(), (org.bukkit.GameRule<Integer>) org.bukkit.GameRule.getByName(gameRuleKey.toString()), String.valueOf(IntegerArgumentType.getInteger(context, name)));
|
||||||
|
+ if (!event.callEvent()) return;
|
||||||
|
+ this.value = Integer.parseInt(event.getValue());
|
||||||
|
+ // Paper end - Add WorldGameRuleChangeEvent
|
||||||
|
}
|
||||||
|
|
||||||
|
public int get() {
|
||||||
return this.value;
|
return this.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -213,7 +246,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -475,7 +475,7 @@
|
@@ -475,7 +481,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -222,7 +255,7 @@
|
||||||
this.value = IntegerValue.safeParse(value);
|
this.value = IntegerValue.safeParse(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -517,9 +517,9 @@
|
@@ -517,9 +523,9 @@
|
||||||
return new GameRules.IntegerValue(this.type, this.value);
|
return new GameRules.IntegerValue(this.type, this.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1884,9 +1884,14 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
||||||
if (rule == null || value == null) return false;
|
if (rule == null || value == null) return false;
|
||||||
|
|
||||||
if (!this.isGameRule(rule)) return false;
|
if (!this.isGameRule(rule)) return false;
|
||||||
|
// Paper start - Add WorldGameRuleChangeEvent
|
||||||
|
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 - Add WorldGameRuleChangeEvent
|
||||||
|
|
||||||
GameRules.Value<?> handle = this.getHandle().getGameRules().getRule(this.getGameRulesNMS().get(rule));
|
GameRules.Value<?> handle = this.getHandle().getGameRules().getRule(this.getGameRulesNMS().get(rule));
|
||||||
handle.deserialize(value);
|
handle.deserialize(event.getValue()); // Paper - Add WorldGameRuleChangeEvent
|
||||||
handle.onChanged(this.getHandle());
|
handle.onChanged(this.getHandle());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1921,9 +1926,13 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
||||||
Preconditions.checkArgument(newValue != null, "GameRule value cannot be null");
|
Preconditions.checkArgument(newValue != null, "GameRule value cannot be null");
|
||||||
|
|
||||||
if (!this.isGameRule(rule.getName())) return false;
|
if (!this.isGameRule(rule.getName())) return false;
|
||||||
|
// Paper start - Add WorldGameRuleChangeEvent
|
||||||
|
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 - Add WorldGameRuleChangeEvent
|
||||||
|
|
||||||
GameRules.Value<?> handle = this.getHandle().getGameRules().getRule(this.getGameRulesNMS().get(rule.getName()));
|
GameRules.Value<?> handle = this.getHandle().getGameRules().getRule(this.getGameRulesNMS().get(rule.getName()));
|
||||||
handle.deserialize(newValue.toString());
|
handle.deserialize(event.getValue()); // Paper - Add WorldGameRuleChangeEvent
|
||||||
handle.onChanged(this.getHandle());
|
handle.onChanged(this.getHandle());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue