Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.inventory.InventoryClickEvent;
- import org.bukkit.event.inventory.InventoryDragEvent;
- import org.bukkit.event.inventory.InventoryType;
- import org.bukkit.plugin.java.JavaPlugin;
- public class NoChestForYouJavaPlugin extends JavaPlugin implements Listener {
- @Override
- public void onEnable() {
- getServer().getPluginManager().registerEvents(this, this);
- }
- /**
- * Impede que o jogador altere baús clicando ou trocando com atalhos de teclado.
- */
- @EventHandler(ignoreCancelled = true)
- public void onInventoryClick(InventoryClickEvent event) {
- if (event.getView().getTopInventory().getType() != InventoryType.CHEST) {
- return;
- }
- // Forma completa e mais segura em atualizações. Se uma action nova for adicionada ela é recusada.
- switch (event.getAction()) {
- // Nada foi alterado, clicou no vazio com nada no ponteiro.
- case NOTHING:
- break;
- // Moveu de um inventário para outro, cancelar.
- case MOVE_TO_OTHER_INVENTORY:
- case HOTBAR_SWAP:
- event.setCancelled(true);
- break;
- // Copiou no modo criativo ou selecionou com o botão do meio no modo sobrevivencia
- // Isso não altera o inventário de cima (baú no caso)
- case CLONE_STACK:
- case COLLECT_TO_CURSOR:
- event.setCancelled(false);
- break;
- // Indefinido, melhor rejeitar
- case UNKNOWN:
- event.setCancelled(true);
- break;
- // Todos esses aqui são alterações com clique, verificar se o slot clicado faz parte do inventário de cima
- // Se for o inventário de baixo então o jogador está mexendo no próprio inventário e não no baú
- case PICKUP_ALL:
- case PICKUP_SOME:
- case PICKUP_HALF:
- case PICKUP_ONE:
- case PLACE_ALL:
- case PLACE_SOME:
- case PLACE_ONE:
- case SWAP_WITH_CURSOR:
- case DROP_ALL_CURSOR:
- case DROP_ONE_CURSOR:
- case DROP_ALL_SLOT:
- case DROP_ONE_SLOT:
- case HOTBAR_MOVE_AND_READD:
- event.setCancelled(event.getClickedInventory().equals(event.getView().getTopInventory()));
- break;
- default:
- event.setCancelled(true);
- break;
- }
- // Forma resumida mas precisa ser revisada em novas versões Bukkit caso [InventoryAction] seja alterado.
- /*switch (event.getAction()) {
- // Moveu de um inventário para outro, cancelar.
- case MOVE_TO_OTHER_INVENTORY:
- case HOTBAR_SWAP:
- event.setCancelled(true);
- break;
- // Copiou no modo criativo ou selecionou com o botão do meio no modo sobrevivencia
- // Isso não altera o inventário de cima (baú no caso)
- case CLONE_STACK:
- case COLLECT_TO_CURSOR:
- case NOTHING:
- event.setCancelled(false);
- break;
- // Indefinido, melhor rejeitar
- case UNKNOWN:
- event.setCancelled(true);
- break;
- default:
- event.setCancelled(event.getClickedInventory().equals(event.getView().getTopInventory()));
- break;
- }*/
- }
- /**
- * Impede que jogadores alterem baús arrastando o item na mão em no inventário.
- */
- @EventHandler(ignoreCancelled = true)
- public void onInventoryDrag(InventoryDragEvent event) {
- // O número do primeiro slot (raw) do inventário de baixo é sempre o tamanho do inventário de cima.
- int primeiroSlotInventorioDeBaixo = event.getView().getTopInventory().getSize();
- // Cancelar se alterar algum slot do inventário de cima.
- event.setCancelled(event.getRawSlots().stream().anyMatch(slot-> slot >= primeiroSlotInventorioDeBaixo));
- }
- }
Add Comment
Please, Sign In to add comment