Oшибка возникает, когда житель получает урон

qwq

Пользователь
Сообщения
14
Java:
package ru.Data;

import java.util.ArrayList;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.entity.Villager;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.inventory.meta.Damageable;

public class EventHand implements Listener {
   Main plugin;
ArrayList<String> dgo = new ArrayList<String>();

   public EventHand(Main m) {
      this.plugin = m;
   }

   @EventHandler
   public void ebye(EntityDamageByEntityEvent event) {
      if (event.getEntityType().equals(EntityType.VILLAGER) && ChatColor.stripColor(event.getEntity().getCustomName()).equalsIgnoreCase("Работник")) {
         event.setCancelled(true);
      }

   }

   @EventHandler
   public void intentity(PlayerInteractEntityEvent event) {
      if (event.getRightClicked() instanceof Villager && ChatColor.stripColor(event.getRightClicked().getCustomName()).equalsIgnoreCase("Работник")) {
         event.setCancelled(true);
         event.getPlayer().sendMessage(ChatColor.WHITE + "Работник: Здравствуйте, " + event.getPlayer().getName() + ". Чем я могу вам помочь?");
         this.openRabotnikGui(event.getPlayer());
      }

   }

   @EventHandler
   public void inte(PlayerInteractEvent event) {
      if (event.getClickedBlock() != null && event.getClickedBlock().getType().equals(Material.STONE_BUTTON)) {
         String l = event.getClickedBlock().getLocation().getBlockX() + " " + event.getClickedBlock().getLocation().getBlockY() + " " + event.getClickedBlock().getLocation().getBlockZ();
         if (this.plugin.getConfig().getStringList("bankomats").contains(l)) {
            if (!BankApi.hasSchet(event.getPlayer().getName())) {
               event.getPlayer().sendMessage(SM.prefix + "У вас нет банковского счёта! Зарегистрируйте его в MineBank.");
               return;
            }

            this.openBankGui(event.getPlayer());
            return;
         }
      }

   }

   @EventHandler
   public void click1(InventoryClickEvent event) {
      if (ChatColor.stripColor(event.getView().getTitle()).equalsIgnoreCase("MineBank Банкомат")) {
         event.setCancelled(true);
         Player p = (Player)event.getWhoClicked();
         if (event.getCurrentItem() == null || event.getCurrentItem().getType() == Material.AIR || !event.getCurrentItem().hasItemMeta()) {
            return;
         }

         if (event.getCurrentItem().getType().equals(Material.WHITE_STAINED_GLASS_PANE)) {
            if (((Damageable) event.getCurrentItem()).getDamage() == 5) {
               this.openDepositGui(p);
               return;
            }

            if (((Damageable) event.getCurrentItem()).getDamage() == 3) {
               this.openWithdrawGui(p);
               return;
            }
         }
      }

   }

   @EventHandler
   public void click2(InventoryClickEvent event) {
      if (ChatColor.stripColor(event.getView().getTitle()).equalsIgnoreCase("MineBank Вклад")) {
         event.setCancelled(true);
         Player p = (Player)event.getWhoClicked();
         if (event.getCurrentItem() == null || event.getCurrentItem().getType() == Material.AIR || !event.getCurrentItem().hasItemMeta()) {
            return;
         }

         if (event.getCurrentItem().getType().equals(Material.WHITE_STAINED_GLASS_PANE) && ((Damageable) event.getCurrentItem()).getDamage() == 5) {
            String g = ChatColor.stripColor(event.getCurrentItem().getItemMeta().getDisplayName()).split(" ")[1].replace("$", "");
            int d = Integer.valueOf(g);
            if (VaultManager.getmoney(p) < (double)d) {
               p.closeInventory();
               p.sendMessage(SM.prefix + "Недостаточно денег на балансе!");
               return;
            }

            if (BankApi.getSchet(p.getName()) >= this.plugin.getMax()) {
               p.sendMessage(SM.prefix + "Ваш банковский счёт достиг максимального размера! Максимум " + this.plugin.getMax() + "$!");
               return;
            }

            VaultManager.withdraw(p, d);
            BankApi.deposit(p.getName(), d);
            p.sendMessage(SM.prefix + "Операция успешно выполнена.");
            return;
         }
      }

   }

   @EventHandler
   public void click3(InventoryClickEvent event) {
      if (ChatColor.stripColor(event.getView().getTitle()).equalsIgnoreCase("MineBank Снятие денег")) {
         event.setCancelled(true);
         Player p = (Player)event.getWhoClicked();
         if (event.getCurrentItem() == null || event.getCurrentItem().getType() == Material.AIR || !event.getCurrentItem().hasItemMeta()) {
            return;
         }

         if (event.getCurrentItem().getType().equals(Material.WHITE_STAINED_GLASS_PANE) && ((Damageable) event.getCurrentItem()).getDamage() == 3) {
            String g = ChatColor.stripColor(event.getCurrentItem().getItemMeta().getDisplayName()).split(" ")[1].replace("$", "");
            int d = Integer.valueOf(g);
            if (BankApi.getSchet(p.getName()) < d) {
               p.closeInventory();
               p.sendMessage(SM.prefix + "Недостаточно денег на банковском счёте!");
               return;
            }

            VaultManager.deposite(p, d);
            BankApi.withdraw(p.getName(), d);
            p.sendMessage(SM.prefix + "Операция успешно выполнена.");
            return;
         }
      }

   }

   @EventHandler
   public void click4(InventoryClickEvent event) {
      if (ChatColor.stripColor(event.getView().getTitle()).equalsIgnoreCase("Работник банка")) {
         event.setCancelled(true);
         final Player p = (Player)event.getWhoClicked();
         if (event.getCurrentItem() == null || event.getCurrentItem().getType() == Material.AIR || !event.getCurrentItem().hasItemMeta() || event.getCurrentItem().getType().equals(Material.WHITE_STAINED_GLASS_PANE)) {
            return;
         }

         if (event.getCurrentItem().getType().equals(Material.PAPER)) {
            if (this.dgo.contains(p.getName())) {
               p.sendMessage(ChatColor.WHITE + "Работник: Подождите!");
               return;
            }

            if (BankApi.hasSchet(p.getName())) {
               p.sendMessage(ChatColor.WHITE + "Работник: Извините, но у вас уже есть счёт. Удачного дня!");
               p.closeInventory();
               return;
            }

            if (VaultManager.getmoney(p) < 500.0D) {
               p.sendMessage(ChatColor.WHITE + "Работник: Извините, но мы не можем зарегистрировать для вас счёт бесплатно. Возвращайтесь, когда у вас будет 500$. Удачного дня!");
               p.closeInventory();
               return;
            }

            VaultManager.withdraw(p, 500);
            p.sendMessage(ChatColor.WHITE + "Работник: Одну минутку, запишу вас в базу...");
            this.dgo.add(p.getName());
            p.closeInventory();
            Bukkit.getScheduler().runTaskLater(this.plugin, new Runnable() {
               public void run() {
                  EventHand.this.dgo.remove(p.getName());
                  BankApi.setSchet(p.getName(), 150);
                  p.sendMessage(ChatColor.WHITE + "Работник: Всё готово! Теперь у вас есть банковский счёт, на который мы сразу же положили вам 150$. Удачного дня и использования MineBank!");
               }
            }, 120L);
         }
      }

   }

   public void openBankGui(Player p) {
      Inventory i = Bukkit.createInventory((InventoryHolder)null, 27, "" + ChatColor.GOLD + ChatColor.BOLD + "MineBank Банкомат");
      ItemStack depos = new ItemStack(Material.WHITE_STAINED_GLASS_PANE , 1);
      ItemMeta deposm = depos.getItemMeta();
      deposm.setDisplayName(ChatColor.GREEN + "Положить деньги в банк");
      ArrayList<String> d = new ArrayList<String>();
      d.add("    ");
      int proc = 1;
      if (p.hasPermission("atlantbank.doubleprocents")) {
         proc = 2;
      }

      d.add(ChatColor.WHITE + "Под " + ChatColor.GOLD + proc + "%" + ChatColor.WHITE + " часовых.");
      deposm.setLore(d);
      depos.setItemMeta(deposm);
      ItemStack withd = new ItemStack(Material.WHITE_STAINED_GLASS_PANE, 1);
      ItemMeta withm = withd.getItemMeta();
      withm.setDisplayName(ChatColor.GREEN + "Снять деньги со счёта");
      ArrayList<String> g = new ArrayList<String>();
      g.add("    ");
      g.add(ChatColor.WHITE + "У вас на счете " + ChatColor.GREEN + BankApi.getSchet(p.getName()) + "$");
      withm.setLore(g);
      withd.setItemMeta(withm);
      i.setItem(11, depos);
      i.setItem(15, withd);
      p.openInventory(i);
   }

   public void openDepositGui(Player p) {
      Inventory i = Bukkit.createInventory((InventoryHolder)null, 9, "" + ChatColor.GOLD + ChatColor.BOLD + "MineBank Вклад");
      ItemStack depos100 = new ItemStack(Material.WHITE_STAINED_GLASS_PANE, 1);
      ItemMeta depos100m = depos100.getItemMeta();
      depos100m.setDisplayName(ChatColor.GREEN + "Положить 100$");
      ArrayList<String> list100 = new ArrayList<String>();
      list100.add("    ");
      list100.add(ChatColor.WHITE + "Положить " + ChatColor.GOLD + "100$" + ChatColor.WHITE + " на банковский счёт.");
      depos100m.setLore(list100);
      depos100.setItemMeta(depos100m);
      ItemStack depos500 = new ItemStack(Material.WHITE_STAINED_GLASS_PANE, 1);
      ItemMeta depos500m = depos500.getItemMeta();
      depos500m.setDisplayName(ChatColor.GREEN + "Положить 500$");
      ArrayList<String> list500 = new ArrayList<String>();
      list500.add("    ");
      list500.add(ChatColor.WHITE + "Положить " + ChatColor.GOLD + "500$" + ChatColor.WHITE + " на банковский счёт.");
      depos500m.setLore(list500);
      depos500.setItemMeta(depos500m);
      ItemStack depos5000 = new ItemStack(Material.WHITE_STAINED_GLASS_PANE, 1);
      ItemMeta depos5000m = depos5000.getItemMeta();
      depos5000m.setDisplayName(ChatColor.GREEN + "Положить 5000$");
      ArrayList<String> list5000 = new ArrayList<String>();
      list5000.add("    ");
      list5000.add(ChatColor.WHITE + "Положить " + ChatColor.GOLD + "5000$" + ChatColor.WHITE + " на банковский счёт.");
      depos5000m.setLore(list5000);
      depos5000.setItemMeta(depos5000m);
      ItemStack depos10000 = new ItemStack(Material.WHITE_STAINED_GLASS_PANE, 1);
      ItemMeta depos10000m = depos10000.getItemMeta();
      depos10000m.setDisplayName(ChatColor.GREEN + "Положить 10000$");
      ArrayList<String> list10000 = new ArrayList<String>();
      list10000.add("    ");
      list10000.add(ChatColor.WHITE + "Положить " + ChatColor.GOLD + "10000$" + ChatColor.WHITE + " на банковский счёт.");
      depos10000m.setLore(list10000);
      depos10000.setItemMeta(depos10000m);
      ItemStack depos50000 = new ItemStack(Material.WHITE_STAINED_GLASS_PANE, 1);
      ItemMeta depos50000m = depos50000.getItemMeta();
      depos50000m.setDisplayName(ChatColor.GREEN + "Положить 50000$");
      ArrayList<String> list50000 = new ArrayList<String>();
      list50000.add("    ");
      list50000.add(ChatColor.WHITE + "Положить " + ChatColor.GOLD + "50000$" + ChatColor.WHITE + " на банковский счёт.");
      depos50000m.setLore(list50000);
      depos50000.setItemMeta(depos50000m);
      i.setItem(2, depos100);
      i.setItem(3, depos500);
      i.setItem(4, depos5000);
      i.setItem(5, depos10000);
      i.setItem(6, depos50000);
      p.openInventory(i);
   }

   public void openWithdrawGui(Player p) {
      Inventory i = Bukkit.createInventory((InventoryHolder)null, 9, "" + ChatColor.GOLD + ChatColor.BOLD + "MineBank Снятие денег");
      ItemStack depos100 = new ItemStack(Material.WHITE_STAINED_GLASS_PANE, 1);
      ItemMeta depos100m = depos100.getItemMeta();
      depos100m.setDisplayName(ChatColor.GREEN + "Снять 100$");
      ArrayList<String> list100 = new ArrayList<String>();
      list100.add("    ");
      list100.add(ChatColor.WHITE + "Снять " + ChatColor.GOLD + "100$" + ChatColor.WHITE + " с банковского счёта.");
      depos100m.setLore(list100);
      depos100.setItemMeta(depos100m);
      ItemStack depos500 = new ItemStack(Material.WHITE_STAINED_GLASS_PANE, 1);
      ItemMeta depos500m = depos500.getItemMeta();
      depos500m.setDisplayName(ChatColor.GREEN + "Снять 500$");
      ArrayList<String> list500 = new ArrayList<String>();
      list500.add("    ");
      list500.add(ChatColor.WHITE + "Снять " + ChatColor.GOLD + "500$" + ChatColor.WHITE + " с банковского счёта.");
      depos500m.setLore(list500);
      depos500.setItemMeta(depos500m);
      ItemStack depos5000 = new ItemStack(Material.WHITE_STAINED_GLASS_PANE, 1);
      ItemMeta depos5000m = depos5000.getItemMeta();
      depos5000m.setDisplayName(ChatColor.GREEN + "Снять 5000$");
      ArrayList<String> list5000 = new ArrayList<String>();
      list5000.add("    ");
      list5000.add(ChatColor.WHITE + "Снять " + ChatColor.GOLD + "5000$" + ChatColor.WHITE + " с банковского счёта.");
      depos5000m.setLore(list5000);
      depos5000.setItemMeta(depos5000m);
      ItemStack depos10000 = new ItemStack(Material.WHITE_STAINED_GLASS_PANE, 1);
      ItemMeta depos10000m = depos10000.getItemMeta();
      depos10000m.setDisplayName(ChatColor.GREEN + "Снять 10000$");
      ArrayList<String> list10000 = new ArrayList<String>();
      list10000.add("    ");
      list10000.add(ChatColor.WHITE + "Снять " + ChatColor.GOLD + "10000$" + ChatColor.WHITE + " с банковского счёта.");
      depos10000m.setLore(list10000);
      depos10000.setItemMeta(depos10000m);
      ItemStack depos50000 = new ItemStack(Material.WHITE_STAINED_GLASS_PANE, 1);
      ItemMeta depos50000m = depos50000.getItemMeta();
      depos50000m.setDisplayName(ChatColor.GREEN + "Снять 50000$");
      ArrayList<String> list50000 = new ArrayList<String>();
      list50000.add("    ");
      list50000.add(ChatColor.WHITE + "Снять " + ChatColor.GOLD + "50000$" + ChatColor.WHITE + " с банковского счёта.");
      depos50000m.setLore(list50000);
      depos50000.setItemMeta(depos50000m);
      i.setItem(2, depos100);
      i.setItem(3, depos500);
      i.setItem(4, depos5000);
      i.setItem(5, depos10000);
      i.setItem(6, depos50000);
      p.openInventory(i);
   }

   public void openRabotnikGui(Player p) {
      Inventory ded = Bukkit.createInventory((InventoryHolder)null, 9, "" + ChatColor.GOLD + ChatColor.BOLD + "Работник банка");
      ItemStack copyr = new ItemStack(Material.WHITE_STAINED_GLASS_PANE, 1);
      ItemMeta copymeta = copyr.getItemMeta();
      copymeta.setDisplayName("" + ChatColor.GOLD + ChatColor.BOLD + "AtlantWorld");
      copyr.setItemMeta(copymeta);
      ItemStack openSchet = new ItemStack(Material.PAPER, 1);
      ItemMeta openMeta = openSchet.getItemMeta();
      openMeta.setDisplayName(ChatColor.GREEN + "Открыть банковский счёт");
      ArrayList<String> openlist = new ArrayList<String>();
      openlist.add("    ");
      openlist.add(ChatColor.WHITE + "Цена: " + ChatColor.GREEN + "500$");
      openMeta.setLore(openlist);
      openSchet.setItemMeta(openMeta);
      ded.setItem(0, copyr);
      ded.setItem(1, copyr);
      ded.setItem(2, copyr);
      ded.setItem(3, copyr);
      ded.setItem(4, openSchet);
      ded.setItem(5, copyr);
      ded.setItem(6, copyr);
      ded.setItem(7, copyr);
      ded.setItem(8, copyr);
      p.openInventory(ded);
   }
}
 
Последнее редактирование:
Решение
@Metalloprokat, Да. мне это уже говорили. Плагин и код не мой,я просто пытаюсь обновить его до 1.16.5
Java:
if (event.getEntityType() == EntityType.VILLAGER && event.getEntity().getCustomName() != null && ChatColor.stripColor(event.getEntity().getCustomName()).equalsIgnoreCase("Работник")) {
         event.setCancelled(true);
      }
// или
if (event.getEntityType().equals(EntityType.VILLAGER) && event.getEntity().getCustomName() != null && ChatColor.stripColor(event.getEntity().getCustomName()).equalsIgnoreCase("Работник")) {
         event.setCancelled(true);
      }
if (event.getEntityType().equals(EntityType.VILLAGER) && ChatColor.stripColor(event.getEntity().getCustomName()).equalsIgnoreCase("Работник")) { event.setCancelled(true); }
Попробуй так:
Java:
if (event.getEntityType() instanceof EntityType.VILLAGER && ChatColor.stripColor(event.getEntity().getCustomName()).equalsIgnoreCase("Работник")) {
    event.setCancelled(true);
}
если не поможет то скинь ошибку

или можешь попробовать EntityDamageEvent и тоже самое сделать там.
 
Destroy,
Вам необходимо зарегистрироваться для просмотра изображений-вложений

Объединено

sources 1.16.5
 

Вложения

  • bank.zip
    27 KB · Просмотры: 7
  • bank.jar
    18.8 KB · Просмотры: 6
Последнее редактирование:
Попробуй так:
Java:
if (event.getEntityType() instanceof EntityType.VILLAGER && ChatColor.stripColor(event.getEntity().getCustomName()).equalsIgnoreCase("Работник")) {
    event.setCancelled(true);
}
если не поможет то скинь ошибку

или можешь попробовать EntityDamageEvent и тоже самое сделать там.
во-первых, такое сравнивается через ==
во-вторых entity instanceof Villager
Объединено

для customName нужна проверка на null.
код очень плохой, страдать будешь много и долго.
 
Последнее редактирование модератором:
@Metalloprokat, Да. мне это уже говорили. Плагин и код не мой,я просто пытаюсь обновить его до 1.16.5
Java:
if (event.getEntityType() == EntityType.VILLAGER && event.getEntity().getCustomName() != null && ChatColor.stripColor(event.getEntity().getCustomName()).equalsIgnoreCase("Работник")) {
         event.setCancelled(true);
      }
// или
if (event.getEntityType().equals(EntityType.VILLAGER) && event.getEntity().getCustomName() != null && ChatColor.stripColor(event.getEntity().getCustomName()).equalsIgnoreCase("Работник")) {
         event.setCancelled(true);
      }
 
  • Мне нравится (+1)
Реакции: qwq
Назад
Сверху Снизу