Added an event fired on hopper access.

This commit is contained in:
Brianna 2019-10-27 11:20:01 -04:00
parent 1015090f95
commit e74edb8027
3 changed files with 77 additions and 0 deletions

View File

@ -0,0 +1,40 @@
package com.songoda.epichoppers.api.events;
import com.songoda.epichoppers.hopper.Hopper;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
/**
* Called when a hopper is accessed by a player.
*/
public class HopperAccessEvent extends HopperEvent implements Cancellable {
private static final HandlerList HANDLERS = new HandlerList();
private boolean canceled = false;
public HopperAccessEvent(Player player, Hopper hopper) {
super(player, hopper);
}
@Override
public HandlerList getHandlers() {
return HANDLERS;
}
public static HandlerList getHandlerList() {
return HANDLERS;
}
@Override
public boolean isCancelled() {
return canceled;
}
@Override
public void setCancelled(boolean canceled) {
this.canceled = canceled;
}
}

View File

@ -0,0 +1,29 @@
package com.songoda.epichoppers.api.events;
import com.songoda.epichoppers.hopper.Hopper;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.player.PlayerEvent;
/**
* Represents an abstract {@link Event} given a {@link Player} and {@link Hopper} instance
*/
public abstract class HopperEvent extends PlayerEvent {
protected final Hopper hopper;
public HopperEvent(Player who, Hopper hopper) {
super(who);
this.hopper = hopper;
}
/**
* Get the {@link Hopper} involved in this event
*
* @return the broken spawner
*/
public Hopper getHopper() {
return hopper;
}
}

View File

@ -4,6 +4,7 @@ import com.songoda.core.compatibility.ServerVersion;
import com.songoda.core.gui.GuiManager;
import com.songoda.core.hooks.EconomyManager;
import com.songoda.epichoppers.EpicHoppers;
import com.songoda.epichoppers.api.events.HopperAccessEvent;
import com.songoda.epichoppers.gui.GUIOverview;
import com.songoda.epichoppers.hopper.levels.Level;
import com.songoda.epichoppers.player.PlayerData;
@ -44,6 +45,13 @@ public class Hopper {
&& Bukkit.getPlayer(lastPlayerOpened) != null) {
Bukkit.getPlayer(lastPlayerOpened).closeInventory();
}
HopperAccessEvent accessEvent = new HopperAccessEvent(player, this);
Bukkit.getPluginManager().callEvent(accessEvent);
if (accessEvent.isCancelled()) {
return;
}
if (placedBy == null) placedBy = player.getUniqueId();
EpicHoppers instance = EpicHoppers.getInstance();