From d06a827e31976fa8c4d8716b6eef3665bbc0c510 Mon Sep 17 00:00:00 2001 From: Hannes Greule Date: Sat, 29 Jan 2022 13:12:00 +0100 Subject: [PATCH] Always call plot events through the event dispatcher (#3479) --- .../java/com/plotsquared/core/command/Done.java | 2 +- .../plotsquared/core/command/FlagCommand.java | 16 +++++++++++----- .../java/com/plotsquared/core/command/Music.java | 10 +++++++--- .../plotsquared/core/generator/HybridUtils.java | 8 ++++++-- .../core/plot/expiration/ExpireManager.java | 2 +- 5 files changed, 26 insertions(+), 12 deletions(-) diff --git a/Core/src/main/java/com/plotsquared/core/command/Done.java b/Core/src/main/java/com/plotsquared/core/command/Done.java index 9cfbff2a2..a64360fbf 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Done.java +++ b/Core/src/main/java/com/plotsquared/core/command/Done.java @@ -126,7 +126,7 @@ public class Done extends SubCommand { long flagValue = System.currentTimeMillis() / 1000; PlotFlag plotFlag = plot.getFlagContainer().getFlag(DoneFlag.class) .createFlagInstance(Long.toString(flagValue)); - PlotFlagAddEvent event = new PlotFlagAddEvent(plotFlag, plot); + PlotFlagAddEvent event = eventDispatcher.callFlagAdd(plotFlag, plot); if (event.getEventResult() == Result.DENY) { player.sendMessage(TranslatableCaption.of("events.event_denied")); return; diff --git a/Core/src/main/java/com/plotsquared/core/command/FlagCommand.java b/Core/src/main/java/com/plotsquared/core/command/FlagCommand.java index c00e8b39f..b7220c134 100644 --- a/Core/src/main/java/com/plotsquared/core/command/FlagCommand.java +++ b/Core/src/main/java/com/plotsquared/core/command/FlagCommand.java @@ -25,6 +25,7 @@ */ package com.plotsquared.core.command; +import com.google.inject.Inject; import com.plotsquared.core.PlotSquared; import com.plotsquared.core.configuration.Settings; import com.plotsquared.core.configuration.caption.CaptionUtility; @@ -44,6 +45,7 @@ import com.plotsquared.core.plot.flag.InternalFlag; import com.plotsquared.core.plot.flag.PlotFlag; import com.plotsquared.core.plot.flag.types.IntegerFlag; import com.plotsquared.core.plot.flag.types.ListFlag; +import com.plotsquared.core.util.EventDispatcher; import com.plotsquared.core.util.MathMan; import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.StringComparison; @@ -79,8 +81,12 @@ import java.util.stream.Stream; @SuppressWarnings("unused") public final class FlagCommand extends Command { - public FlagCommand() { + private final EventDispatcher eventDispatcher; + + @Inject + public FlagCommand(final @NonNull EventDispatcher eventDispatcher) { super(MainCommand.getInstance(), true); + this.eventDispatcher = eventDispatcher; } private static boolean sendMessage(PlotPlayer player) { @@ -335,7 +341,7 @@ public final class FlagCommand extends Command { return; } Plot plot = player.getLocation().getPlotAbs(); - PlotFlagAddEvent event = new PlotFlagAddEvent(plotFlag, plot); + PlotFlagAddEvent event = eventDispatcher.callFlagAdd(plotFlag, plot); if (event.getEventResult() == Result.DENY) { player.sendMessage( TranslatableCaption.of("events.event_denied"), @@ -394,7 +400,7 @@ public final class FlagCommand extends Command { return; } Plot plot = player.getLocation().getPlotAbs(); - PlotFlagAddEvent event = new PlotFlagAddEvent(plotFlag, plot); + PlotFlagAddEvent event = eventDispatcher.callFlagAdd(plotFlag, plot); if (event.getEventResult() == Result.DENY) { player.sendMessage( TranslatableCaption.of("events.event_denied"), @@ -463,7 +469,7 @@ public final class FlagCommand extends Command { return; } final Plot plot = player.getLocation().getPlotAbs(); - PlotFlagRemoveEvent event = new PlotFlagRemoveEvent(flag, plot); + PlotFlagRemoveEvent event = eventDispatcher.callFlagRemove(flag, plot); if (event.getEventResult() == Result.DENY) { player.sendMessage( TranslatableCaption.of("events.event_denied"), @@ -516,7 +522,7 @@ public final class FlagCommand extends Command { } } else { PlotFlag plotFlag = parsedFlag.createFlagInstance(list); - PlotFlagAddEvent addEvent = new PlotFlagAddEvent(plotFlag, plot); + PlotFlagAddEvent addEvent = eventDispatcher.callFlagAdd(plotFlag, plot); if (addEvent.getEventResult() == Result.DENY) { player.sendMessage( TranslatableCaption.of("events.event_denied"), diff --git a/Core/src/main/java/com/plotsquared/core/command/Music.java b/Core/src/main/java/com/plotsquared/core/command/Music.java index 531180a5b..f83329b59 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Music.java +++ b/Core/src/main/java/com/plotsquared/core/command/Music.java @@ -38,10 +38,12 @@ import com.plotsquared.core.plot.PlotInventory; import com.plotsquared.core.plot.PlotItemStack; import com.plotsquared.core.plot.flag.PlotFlag; import com.plotsquared.core.plot.flag.implementations.MusicFlag; +import com.plotsquared.core.util.EventDispatcher; import com.plotsquared.core.util.InventoryUtil; import com.plotsquared.core.util.Permissions; import com.sk89q.worldedit.world.item.ItemTypes; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; import javax.annotation.Nullable; import java.util.Arrays; @@ -63,10 +65,12 @@ public class Music extends SubCommand { ); private final InventoryUtil inventoryUtil; + private final EventDispatcher eventDispatcher; @Inject - public Music(final @Nullable InventoryUtil inventoryUtil) { + public Music(final @Nullable InventoryUtil inventoryUtil, final @NonNull EventDispatcher eventDispatcher) { this.inventoryUtil = inventoryUtil; + this.eventDispatcher = eventDispatcher; } @Override @@ -104,7 +108,7 @@ public class Music extends SubCommand { if (item.getType() == ItemTypes.BEDROCK) { PlotFlag plotFlag = plot.getFlagContainer().getFlag(MusicFlag.class) .createFlagInstance(item.getType()); - PlotFlagRemoveEvent event = new PlotFlagRemoveEvent(plotFlag, plot); + PlotFlagRemoveEvent event = eventDispatcher.callFlagRemove(plotFlag, plot); if (event.getEventResult() == Result.DENY) { getPlayer().sendMessage( TranslatableCaption.of("events.event_denied"), @@ -121,7 +125,7 @@ public class Music extends SubCommand { } else if (item.getName().toLowerCase(Locale.ENGLISH).contains("disc")) { PlotFlag plotFlag = plot.getFlagContainer().getFlag(MusicFlag.class) .createFlagInstance(item.getType()); - PlotFlagAddEvent event = new PlotFlagAddEvent(plotFlag, plot); + PlotFlagAddEvent event = eventDispatcher.callFlagAdd(plotFlag, plot); if (event.getEventResult() == Result.DENY) { getPlayer().sendMessage( TranslatableCaption.of("events.event_denied"), diff --git a/Core/src/main/java/com/plotsquared/core/generator/HybridUtils.java b/Core/src/main/java/com/plotsquared/core/generator/HybridUtils.java index 23513571f..ebb119775 100644 --- a/Core/src/main/java/com/plotsquared/core/generator/HybridUtils.java +++ b/Core/src/main/java/com/plotsquared/core/generator/HybridUtils.java @@ -45,6 +45,7 @@ import com.plotsquared.core.queue.ChunkQueueCoordinator; import com.plotsquared.core.queue.GlobalBlockQueue; import com.plotsquared.core.queue.QueueCoordinator; import com.plotsquared.core.util.ChunkManager; +import com.plotsquared.core.util.EventDispatcher; import com.plotsquared.core.util.MathMan; import com.plotsquared.core.util.RegionManager; import com.plotsquared.core.util.RegionUtil; @@ -93,6 +94,7 @@ public class HybridUtils { private final GlobalBlockQueue blockQueue; private final WorldUtil worldUtil; private final SchematicHandler schematicHandler; + private final EventDispatcher eventDispatcher; @Inject public HybridUtils( @@ -100,13 +102,15 @@ public class HybridUtils { final @NonNull ChunkManager chunkManager, final @NonNull GlobalBlockQueue blockQueue, final @NonNull WorldUtil worldUtil, - final @NonNull SchematicHandler schematicHandler + final @NonNull SchematicHandler schematicHandler, + final @NonNull EventDispatcher eventDispatcher ) { this.plotAreaManager = plotAreaManager; this.chunkManager = chunkManager; this.blockQueue = blockQueue; this.worldUtil = worldUtil; this.schematicHandler = schematicHandler; + this.eventDispatcher = eventDispatcher; } public void regeneratePlotWalls(final PlotArea area) { @@ -348,7 +352,7 @@ public class HybridUtils { result.add(whenDone.value.variety_sd); PlotFlag plotFlag = GlobalFlagContainer.getInstance().getFlag(AnalysisFlag.class).createFlagInstance( result); - PlotFlagAddEvent event = new PlotFlagAddEvent(plotFlag, origin); + PlotFlagAddEvent event = eventDispatcher.callFlagAdd(plotFlag, origin); if (event.getEventResult() == Result.DENY) { return; } diff --git a/Core/src/main/java/com/plotsquared/core/plot/expiration/ExpireManager.java b/Core/src/main/java/com/plotsquared/core/plot/expiration/ExpireManager.java index 58042d520..7e6af4b7d 100644 --- a/Core/src/main/java/com/plotsquared/core/plot/expiration/ExpireManager.java +++ b/Core/src/main/java/com/plotsquared/core/plot/expiration/ExpireManager.java @@ -359,7 +359,7 @@ public class ExpireManager { .getFlag(AnalysisFlag.class) .createFlagInstance(changed.asList()); PlotFlagAddEvent event = - new PlotFlagAddEvent(plotFlag, newPlot); + eventDispatcher.callFlagAdd(plotFlag, plot); if (event.getEventResult() == Result.DENY) { return; }