package me.desht.scrollingmenusign;
import me.desht.dhutils.LogUtils;
import me.desht.dhutils.MiscUtil;
import me.desht.dhutils.PermissionUtils;
import me.desht.dhutils.block.BlockUtil;
import me.desht.scrollingmenusign.views.SMSGlobalScrollableView;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockDamageEvent;
import org.bukkit.event.block.BlockPhysicsEvent;
import org.bukkit.event.block.BlockRedstoneEvent;
public class TooltipSign implements SMSInteractableBlock {
private final SMSGlobalScrollableView view;
public TooltipSign(SMSGlobalScrollableView view) {
this.view = view;
}
@Override
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
public void processEvent(ScrollingMenuSign plugin, BlockDamageEvent event) {
if (!view.isOwnedBy(event.getPlayer()) && !PermissionUtils.isAllowedTo(event.getPlayer(), "scrollingmenusign.destroy")) {
event.setCancelled(true);
}
}
@Override
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
public void processEvent(ScrollingMenuSign plugin, BlockBreakEvent event) {
view.removeTooltipSign();
MiscUtil.statusMessage(event.getPlayer(), String.format("Tooltip sign @ &f%s&- was removed from view &e%s&-.",
MiscUtil.formatLocation(event.getBlock().getLocation()), view.getName()));
}
@Override
public void processEvent(ScrollingMenuSign plugin, BlockPhysicsEvent event) {
if (BlockUtil.isAttachableDetached(event.getBlock())) {
if (plugin.getConfigCache().isPhysicsProtected()) {
event.setCancelled(true);
} else {
LogUtils.info("Tooltip sign for " + view.getName() + " @ " + event.getBlock().getLocation() + " has become detached: deleting");
view.removeTooltipSign();
}
}
}
@Override
public void processEvent(ScrollingMenuSign plugin, BlockRedstoneEvent event) {
// ignore - tooltip signs don't care about redstone signals
}
}