From ceb8fb9fa3ea962e96a7eaaf90976512849174f0 Mon Sep 17 00:00:00 2001 From: manuelgu Date: Wed, 25 May 2016 21:49:55 +0200 Subject: [PATCH] Implement PlotComponentSetEvent --- .../bukkit/events/PlotComponentSetEvent.java | 56 +++++++++++++++++++ .../bukkit/listeners/PlayerEvents.java | 1 - .../bukkit/util/BukkitEventUtil.java | 6 ++ .../plot/generator/ClassicPlotManager.java | 10 +++- .../plot/util/EventUtil.java | 2 + .../plot/util/EventUtilTest.java | 4 +- .../sponge/events/PlotComponentSetEvent.java | 54 ++++++++++++++++++ .../sponge/util/SpongeEventUtil.java | 6 ++ 8 files changed, 136 insertions(+), 3 deletions(-) create mode 100644 Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotComponentSetEvent.java create mode 100644 Sponge/src/main/java/com/plotsquared/sponge/events/PlotComponentSetEvent.java diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotComponentSetEvent.java b/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotComponentSetEvent.java new file mode 100644 index 000000000..8a2d42d60 --- /dev/null +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/events/PlotComponentSetEvent.java @@ -0,0 +1,56 @@ +package com.plotsquared.bukkit.events; + +import com.intellectualcrafters.plot.object.Plot; +import com.intellectualcrafters.plot.object.PlotId; +import org.bukkit.event.HandlerList; + +/** + * Called when a plot component is set + * + */ +public class PlotComponentSetEvent extends PlotEvent { + + private static final HandlerList handlers = new HandlerList(); + private final String component; + + public PlotComponentSetEvent(Plot plot, String component) { + super(plot); + this.component = component; + } + + public static HandlerList getHandlerList() { + return handlers; + } + + /** + * Get the PlotId + * + * @return PlotId + */ + public PlotId getPlotId() { + return getPlot().getId(); + } + + /** + * Get the world name + * + * @return String + */ + public String getWorld() { + return getPlot().getArea().worldname; + } + + /** + * Get the component which was set + * + * @return Component name + */ + public String getComponent() { + return this.component; + } + + @Override + public HandlerList getHandlers() { + return handlers; + } +} diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listeners/PlayerEvents.java b/Bukkit/src/main/java/com/plotsquared/bukkit/listeners/PlayerEvents.java index 1de494d9e..d2c155023 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listeners/PlayerEvents.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listeners/PlayerEvents.java @@ -109,7 +109,6 @@ import org.bukkit.plugin.Plugin; import org.bukkit.projectiles.BlockProjectileSource; import org.bukkit.projectiles.ProjectileSource; import org.bukkit.util.Vector; - import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEventUtil.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEventUtil.java index eaf3c0e17..c28a0a78c 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEventUtil.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEventUtil.java @@ -18,6 +18,7 @@ import com.plotsquared.bukkit.events.PlayerPlotHelperEvent; import com.plotsquared.bukkit.events.PlayerPlotTrustedEvent; import com.plotsquared.bukkit.events.PlayerTeleportToPlotEvent; import com.plotsquared.bukkit.events.PlotClearEvent; +import com.plotsquared.bukkit.events.PlotComponentSetEvent; import com.plotsquared.bukkit.events.PlotDeleteEvent; import com.plotsquared.bukkit.events.PlotFlagAddEvent; import com.plotsquared.bukkit.events.PlotFlagRemoveEvent; @@ -57,6 +58,11 @@ public class BukkitEventUtil extends EventUtil { return callEvent(new PlayerTeleportToPlotEvent(getPlayer(player), from, plot)); } + @Override + public boolean callComponentSet(Plot plot, String component) { + return callEvent(new PlotComponentSetEvent(plot, component)); + } + @Override public boolean callClear(Plot plot) { return callEvent(new PlotClearEvent(plot)); diff --git a/Core/src/main/java/com/intellectualcrafters/plot/generator/ClassicPlotManager.java b/Core/src/main/java/com/intellectualcrafters/plot/generator/ClassicPlotManager.java index 4d06944d7..4fe810e5d 100644 --- a/Core/src/main/java/com/intellectualcrafters/plot/generator/ClassicPlotManager.java +++ b/Core/src/main/java/com/intellectualcrafters/plot/generator/ClassicPlotManager.java @@ -7,9 +7,9 @@ import com.intellectualcrafters.plot.object.PlotBlock; import com.intellectualcrafters.plot.object.PlotId; import com.intellectualcrafters.plot.object.PseudoRandom; import com.intellectualcrafters.plot.object.RegionWrapper; +import com.intellectualcrafters.plot.util.EventUtil; import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.SetQueue; - import java.util.ArrayList; /** @@ -22,27 +22,35 @@ public class ClassicPlotManager extends SquarePlotManager { switch (component) { case "floor": setFloor(plotworld, plotid, blocks); + EventUtil.manager.callComponentSet(plotworld.getPlot(plotid), component); return true; case "wall": setWallFilling(plotworld, plotid, blocks); + EventUtil.manager.callComponentSet(plotworld.getPlot(plotid), component); return true; case "all": setAll(plotworld, plotid, blocks); + EventUtil.manager.callComponentSet(plotworld.getPlot(plotid), component); return true; case "air": setAir(plotworld, plotid, blocks); + EventUtil.manager.callComponentSet(plotworld.getPlot(plotid), component); return true; case "main": setMain(plotworld, plotid, blocks); + EventUtil.manager.callComponentSet(plotworld.getPlot(plotid), component); return true; case "middle": setMiddle(plotworld, plotid, blocks); + EventUtil.manager.callComponentSet(plotworld.getPlot(plotid), component); return true; case "outline": setOutline(plotworld, plotid, blocks); + EventUtil.manager.callComponentSet(plotworld.getPlot(plotid), component); return true; case "border": setWall(plotworld, plotid, blocks); + EventUtil.manager.callComponentSet(plotworld.getPlot(plotid), component); return true; } return false; diff --git a/Core/src/main/java/com/intellectualcrafters/plot/util/EventUtil.java b/Core/src/main/java/com/intellectualcrafters/plot/util/EventUtil.java index dae7611e8..87fd8f4c6 100644 --- a/Core/src/main/java/com/intellectualcrafters/plot/util/EventUtil.java +++ b/Core/src/main/java/com/intellectualcrafters/plot/util/EventUtil.java @@ -31,6 +31,8 @@ public abstract class EventUtil { public abstract boolean callTeleport(PlotPlayer player, Location from, Plot plot); + public abstract boolean callComponentSet(Plot plot, String component); + public abstract boolean callClear(Plot plot); public abstract void callDelete(Plot plot); diff --git a/Core/src/test/java/com/intellectualcrafters/plot/util/EventUtilTest.java b/Core/src/test/java/com/intellectualcrafters/plot/util/EventUtilTest.java index e093b9b9e..314f7572a 100644 --- a/Core/src/test/java/com/intellectualcrafters/plot/util/EventUtilTest.java +++ b/Core/src/test/java/com/intellectualcrafters/plot/util/EventUtilTest.java @@ -26,6 +26,8 @@ public class EventUtilTest extends EventUtil { return false; } + @Override public boolean callComponentSet(Plot plot, String component) { return false; } + @Override public boolean callClear(Plot plot) { return false; } @@ -61,4 +63,4 @@ public class EventUtilTest extends EventUtil { @Override public void callTrusted(PlotPlayer initiator, Plot plot, UUID player, boolean added) {} @Override public void callMember(PlotPlayer initiator, Plot plot, UUID player, boolean added) {} -} \ No newline at end of file +} diff --git a/Sponge/src/main/java/com/plotsquared/sponge/events/PlotComponentSetEvent.java b/Sponge/src/main/java/com/plotsquared/sponge/events/PlotComponentSetEvent.java new file mode 100644 index 000000000..4558368a3 --- /dev/null +++ b/Sponge/src/main/java/com/plotsquared/sponge/events/PlotComponentSetEvent.java @@ -0,0 +1,54 @@ +package com.plotsquared.sponge.events; + +import com.intellectualcrafters.plot.object.Plot; +import org.spongepowered.api.event.cause.Cause; +import org.spongepowered.api.event.impl.AbstractEvent; + +import com.intellectualcrafters.plot.object.PlotId; + +public class PlotComponentSetEvent extends AbstractEvent { + private final Plot plot; + private final String component; + + /** + * PlotDeleteEvent: Called when a plot is deleted + * + * @param plot The plot that was deleted + */ + public PlotComponentSetEvent(Plot plot, String component) { + this.plot = plot; + this.component = component; + } + + /** + * Get the PlotId + * + * @return PlotId + */ + public PlotId getPlotId() { + return this.plot.getId(); + } + + /** + * Get the world name + * + * @return String + */ + public String getWorld() { + return this.plot.getArea().worldname; + } + + /** + * Get the component which was set + * + * @return Component name + */ + public String getComponent() { + return this.component; + } + + @Override + public Cause getCause() { + return null; + } +} diff --git a/Sponge/src/main/java/com/plotsquared/sponge/util/SpongeEventUtil.java b/Sponge/src/main/java/com/plotsquared/sponge/util/SpongeEventUtil.java index a9d7ff585..d5f07d5d3 100644 --- a/Sponge/src/main/java/com/plotsquared/sponge/util/SpongeEventUtil.java +++ b/Sponge/src/main/java/com/plotsquared/sponge/util/SpongeEventUtil.java @@ -19,6 +19,7 @@ import com.plotsquared.sponge.events.PlayerPlotHelperEvent; import com.plotsquared.sponge.events.PlayerPlotTrustedEvent; import com.plotsquared.sponge.events.PlayerTeleportToPlotEvent; import com.plotsquared.sponge.events.PlotClearEvent; +import com.plotsquared.sponge.events.PlotComponentSetEvent; import com.plotsquared.sponge.events.PlotDeleteEvent; import com.plotsquared.sponge.events.PlotFlagAddEvent; import com.plotsquared.sponge.events.PlotFlagRemoveEvent; @@ -52,6 +53,11 @@ public class SpongeEventUtil extends EventUtil { public boolean callTeleport(PlotPlayer player, Location from, Plot plot) { return callEvent(new PlayerTeleportToPlotEvent(SpongeUtil.getPlayer(player), from, plot)); } + + @Override + public boolean callComponentSet(Plot plot, String component) { + return callEvent(new PlotComponentSetEvent(plot, component)); + } @Override public boolean callClear(Plot plot) {