179 lines
6.7 KiB
Java
179 lines
6.7 KiB
Java
package de.epiceric.shopchest.listeners;
|
|
|
|
import org.bukkit.Material;
|
|
import org.bukkit.entity.Entity;
|
|
import org.bukkit.entity.HumanEntity;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.event.EventHandler;
|
|
import org.bukkit.event.EventPriority;
|
|
import org.bukkit.event.Listener;
|
|
import org.bukkit.event.block.BlockBreakEvent;
|
|
import org.bukkit.event.block.BlockMultiPlaceEvent;
|
|
import org.bukkit.event.block.BlockPlaceEvent;
|
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
|
import org.bukkit.event.inventory.InventoryCloseEvent;
|
|
import org.bukkit.event.inventory.InventoryDragEvent;
|
|
import org.bukkit.event.inventory.InventoryMoveItemEvent;
|
|
import org.bukkit.event.player.PlayerInteractAtEntityEvent;
|
|
import org.bukkit.event.player.PlayerInteractEvent;
|
|
import org.bukkit.event.player.PlayerMoveEvent;
|
|
import org.bukkit.event.player.PlayerPickupItemEvent;
|
|
import org.bukkit.event.player.PlayerQuitEvent;
|
|
|
|
import de.epiceric.shopchest.ShopChest;
|
|
import de.epiceric.shopchest.config.Placeholder;
|
|
import de.epiceric.shopchest.language.LanguageUtils;
|
|
import de.epiceric.shopchest.language.Message;
|
|
import de.epiceric.shopchest.language.Replacement;
|
|
import de.epiceric.shopchest.utils.ClickType;
|
|
import de.epiceric.shopchest.utils.ClickType.SelectClickType;
|
|
|
|
public class CreativeModeListener implements Listener {
|
|
private ShopChest plugin;
|
|
|
|
public CreativeModeListener(ShopChest plugin) {
|
|
this.plugin = plugin;
|
|
}
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
public void onInventoryClick(InventoryClickEvent e) {
|
|
HumanEntity entity = e.getWhoClicked();
|
|
if (!(entity instanceof Player))
|
|
return;
|
|
|
|
Player p = (Player) entity;
|
|
|
|
ClickType clickType = ClickType.getPlayerClickType(p);
|
|
if (clickType instanceof SelectClickType) {
|
|
e.setCancelled(true);
|
|
|
|
if (e.getCursor() == null || e.getCursor().getType() == Material.AIR)
|
|
return;
|
|
|
|
ClickType.removePlayerClickType(p);
|
|
((SelectClickType) clickType).setItem(e.getCursor());
|
|
p.closeInventory();
|
|
|
|
p.sendMessage(LanguageUtils.getMessage(Message.ITEM_SELECTED,
|
|
new Replacement(Placeholder.ITEM_NAME, LanguageUtils.getItemName(e.getCursor()))));
|
|
plugin.getShopCommand().createShopAfterSelected(p, (SelectClickType) clickType);
|
|
}
|
|
}
|
|
|
|
@EventHandler
|
|
public void onPlayerCloseInventory(InventoryCloseEvent e) {
|
|
HumanEntity entity = e.getPlayer();
|
|
if (!(entity instanceof Player))
|
|
return;
|
|
|
|
Player p = (Player) entity;
|
|
|
|
ClickType clickType = ClickType.getPlayerClickType(p);
|
|
if (!(clickType instanceof SelectClickType))
|
|
return;
|
|
|
|
ClickType.removePlayerClickType(p);
|
|
p.sendMessage(LanguageUtils.getMessage(Message.CREATION_CANCELLED));
|
|
}
|
|
|
|
@EventHandler
|
|
public void onPlayerQuit(PlayerQuitEvent e) {
|
|
// Reset game mode on quit if SelectClickType is set
|
|
Player p = e.getPlayer();
|
|
ClickType.removePlayerClickType(p);
|
|
}
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
public void onInventoryDrag(InventoryDragEvent e) {
|
|
// Cancel any inventory drags if SelectClickType is set
|
|
HumanEntity entity = e.getWhoClicked();
|
|
if (!(entity instanceof Player))
|
|
return;
|
|
|
|
ClickType clickType = ClickType.getPlayerClickType((Player) entity);
|
|
if (clickType instanceof SelectClickType)
|
|
e.setCancelled(true);
|
|
}
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
public void onInventoryMove(InventoryMoveItemEvent e) {
|
|
// Cancel any inventory movement if SelectClickType is set
|
|
if (e.getSource().getHolder() instanceof Player) {
|
|
Player p = (Player) e.getSource().getHolder();
|
|
|
|
ClickType clickType = ClickType.getPlayerClickType(p);
|
|
if (clickType instanceof SelectClickType)
|
|
e.setCancelled(true);
|
|
}
|
|
}
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
public void onPlayerPickup(PlayerPickupItemEvent e) {
|
|
// Cancel any item pickups if SelectClickType is set
|
|
ClickType clickType = ClickType.getPlayerClickType(e.getPlayer());
|
|
if (clickType instanceof SelectClickType)
|
|
e.setCancelled(true);
|
|
}
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
public void onBlockBreak(BlockBreakEvent e) {
|
|
// Cancel any block breaks if SelectClickType is set
|
|
ClickType clickType = ClickType.getPlayerClickType(e.getPlayer());
|
|
if (clickType instanceof SelectClickType)
|
|
e.setCancelled(true);
|
|
}
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
public void onBlockPlace(BlockPlaceEvent e) {
|
|
// Cancel any block places if SelectClickType is set
|
|
ClickType clickType = ClickType.getPlayerClickType(e.getPlayer());
|
|
if (clickType instanceof SelectClickType)
|
|
e.setCancelled(true);
|
|
}
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
public void onBlockMultiPlace(BlockMultiPlaceEvent e) {
|
|
// Cancel any block places if SelectClickType is set
|
|
ClickType clickType = ClickType.getPlayerClickType(e.getPlayer());
|
|
if (clickType instanceof SelectClickType)
|
|
e.setCancelled(true);
|
|
}
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
public void onPlayerInteract(PlayerInteractEvent e) {
|
|
// Cancel any interactions if SelectClickType is set
|
|
ClickType clickType = ClickType.getPlayerClickType(e.getPlayer());
|
|
if (clickType instanceof SelectClickType)
|
|
e.setCancelled(true);
|
|
}
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
public void onPlayerInteractAtEntity(PlayerInteractAtEntityEvent e) {
|
|
// Cancel any entity interactions if SelectClickType is set
|
|
ClickType clickType = ClickType.getPlayerClickType(e.getPlayer());
|
|
if (clickType instanceof SelectClickType)
|
|
e.setCancelled(true);
|
|
}
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
public void onPlayerDamageEntity(EntityDamageByEntityEvent e) {
|
|
// Cancel any entity damaging if SelectClickType is set
|
|
Entity entity = e.getDamager();
|
|
if (!(entity instanceof Player))
|
|
return;
|
|
|
|
ClickType clickType = ClickType.getPlayerClickType((Player) entity);
|
|
if (clickType instanceof SelectClickType)
|
|
e.setCancelled(true);
|
|
}
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
public void onPlayerMove(PlayerMoveEvent e) {
|
|
// Cancel any player movement if SelectClickType is set
|
|
ClickType clickType = ClickType.getPlayerClickType(e.getPlayer());
|
|
if (clickType instanceof SelectClickType)
|
|
e.setCancelled(true);
|
|
}
|
|
|
|
} |