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/commands/Set.java b/Core/src/main/java/com/intellectualcrafters/plot/commands/Set.java index bed827fd0..a2d558f76 100644 --- a/Core/src/main/java/com/intellectualcrafters/plot/commands/Set.java +++ b/Core/src/main/java/com/intellectualcrafters/plot/commands/Set.java @@ -111,7 +111,7 @@ public class Set extends SubCommand { } plot.addRunning(); for (Plot current : plot.getConnectedPlots()) { - manager.setComponent(plotworld, current.getId(), component, blocks); + current.setComponent(component, blocks); } MainUtil.sendMessage(plr, C.GENERATING_COMPONENT); SetQueue.IMP.addTask(new Runnable() { 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..b98df658e 100644 --- a/Core/src/main/java/com/intellectualcrafters/plot/generator/ClassicPlotManager.java +++ b/Core/src/main/java/com/intellectualcrafters/plot/generator/ClassicPlotManager.java @@ -9,7 +9,6 @@ import com.intellectualcrafters.plot.object.PseudoRandom; import com.intellectualcrafters.plot.object.RegionWrapper; import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.SetQueue; - import java.util.ArrayList; /** diff --git a/Core/src/main/java/com/intellectualcrafters/plot/object/Plot.java b/Core/src/main/java/com/intellectualcrafters/plot/object/Plot.java index 50a2c8283..566f297ed 100644 --- a/Core/src/main/java/com/intellectualcrafters/plot/object/Plot.java +++ b/Core/src/main/java/com/intellectualcrafters/plot/object/Plot.java @@ -18,11 +18,11 @@ import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.Permissions; import com.intellectualcrafters.plot.util.SchematicHandler; import com.intellectualcrafters.plot.util.SetQueue; +import com.intellectualcrafters.plot.util.StringMan; import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.WorldUtil; import com.plotsquared.listener.PlotListener; - import java.awt.Rectangle; import java.awt.geom.Area; import java.awt.geom.PathIterator; @@ -2600,6 +2600,9 @@ public class Plot { * @return */ public boolean setComponent(String component, PlotBlock[] blocks) { + if (StringMan.isEqualToAny(component, getManager().getPlotComponents(this.area, this.getId()))) { + EventUtil.manager.callComponentSet(this, component); + } return this.getManager().setComponent(this.area, this.getId(), component, blocks); } 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..d0cdd4e1d --- /dev/null +++ b/Sponge/src/main/java/com/plotsquared/sponge/events/PlotComponentSetEvent.java @@ -0,0 +1,55 @@ +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 component is set + * + * @param plot The plot + * @param component The component which was set + */ + 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) {