Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Удаление при нажатие на блок

Тема в разделе "Разработка плагинов для новичков", создана пользователем Rider3217, 1 мар 2015.

  1. Автор темы
    Rider3217

    Rider3217 Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Planet0111
    Помогите сделать что бы после проверки блока, после нажатия(использования) он удалялся
    Код:
    
    public class PlayerListener
      implements Listener
    {
      public Main main;
      public PlayerListener(Main main)
      {
        this.main = main;
       
        main.getServer().getPluginManager().registerEvents(this, main);
      }
      @EventHandler
      public void onInteract(PlayerInteractEvent e)
      {
        Player player = e.getPlayer();
        ItemStack item = e.getItem();
        if ((player == null) || (item == null)) {
          return;
        }
        Material material = item.getType();
        boolean blocked = check(item);
        if (blocked)
        {
          item = new ItemStack(material);
          if ((Config.ItemName != null) && (!Config.ItemName.equals("")))
          {
            ItemMeta meta = item.getItemMeta();
            meta.setDisplayName(Config.ItemName);
            item.setItemMeta(meta);
          }
          player.setItemInHand(item);
          player.sendMessage(this.main.msgprefix + Config.Message);
          e.setCancelled(true);
        }
      }
      @EventHandler
      public void onItemPickup(PlayerPickupItemEvent e)
      {
        Player player = e.getPlayer();
        ItemStack item = e.getItem().getItemStack();
        if ((player == null) || (item == null)) {
          return;
        }
        boolean blocked = check(item);
        if (blocked) {
          e.setCancelled(true);
        }
      }
      @EventHandler
      public void onInventoryClick(InventoryClickEvent e)
      {
        Player player = (Player)e.getWhoClicked();
        ItemStack item = e.getCurrentItem();
        if ((player == null) || (item == null)) {
          return;
        }
        Material material = item.getType();
        boolean blocked = check(item);
        if (blocked)
        {
          item = new ItemStack(material);
          if ((Config.ItemName != null) && (!Config.ItemName.equals("")))
          {
            ItemMeta meta = item.getItemMeta();
            meta.setDisplayName(Config.ItemName);
            item.setItemMeta(meta);
          }
          player.setItemInHand(item);
          player.sendMessage(this.main.msgprefix + Config.Message);
          e.setCancelled(true);
        }
      }
      public boolean check(ItemStack item)
      {
        boolean blocked = false;
        for (Iterator i$ = item.getEnchantments().values().iterator(); i$.hasNext();)
        {
          int i = ((Integer)i$.next()).intValue();
          if (i > Config.MaxLevel)
          {
            blocked = true;
            break;
          }
        }
        return blocked;
      }
    }
    
    
    Дроп мобов
    Код:
    package emobs;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    import java.util.regex.Pattern;
    import org.bukkit.Material;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.entity.EntityType;
    import org.bukkit.entity.LivingEntity;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDeathEvent;
    import org.bukkit.inventory.ItemStack;
    
    public class DeathListener
      implements Listener
    {
      EasyMobs plugin;
      public DeathListener(EasyMobs instance)
      {
        this.plugin = instance;
      }
      List<String> dropEntity = new ArrayList(Arrays.asList(new String[] { "ZOMBIE", "SKELETON", "PLAYER", "CREEPER" }));
      @EventHandler
      public void onDeathEvent(EntityDeathEvent event)
      {
        EntityType deadEntity = event.getEntityType();
        String deadEntityName = deadEntity.toString();
        if ((EasyMobs.configC.getBoolean("DISABLE_DEFAULTS")) && (!deadEntityName.equals("PLAYER"))) {
          event.getDrops().clear();
        }
        if (event.getEntity().getKiller() != null)
        {
          Player killer = event.getEntity().getKiller();
          if (killer.isOnline())
          {
            if (EasyMobs.configC.contains("EXP_" + deadEntityName)) {
              event.setDroppedExp((int)EasyMobs.configC.getDouble("EXP_" + deadEntityName));
            }
            if (EasyMobs.configC.contains("DROP_" + deadEntityName))
            {
              List<String> dropList = new ArrayList();
              dropList = EasyMobs.configC.getList("DROP_" + deadEntityName);
              for (String i : dropList)
              {
                String[] segmente = i.split(Pattern.quote(", "));
               
                ItemStack dropActual = dropItem(segmente);
                if (dropActual != null) {
                  event.getDrops().add(dropActual);
                }
              }
            }
            if (this.dropEntity.contains(deadEntityName))
            {
              ItemStack dropSkullStack = dropSkull(deadEntityName);
              if (dropSkullStack != null) {
                event.getDrops().add(dropSkullStack);
              }
            }
          }
        }
      }
      public ItemStack dropItem(String[] segmente)
      {
        if (segmente.length == 4)
        {
          Material dropMaterial = Material.getMaterial(segmente[0]);
          int dropMaximal = Integer.parseInt(segmente[1]);
          double dropChance = Double.parseDouble(segmente[2]);
          byte dropData = Byte.parseByte(segmente[3]);
          int dropAmount = 0;
          for (int d = 0; d < dropMaximal; d++)
          {
            double calc = Math.pow(dropChance / 100.0D, 1.0D / dropMaximal);
            if (Math.random() <= calc) {
              dropAmount++;
            }
          }
          if (dropAmount > 0)
          {
            ItemStack dropActual = new ItemStack(dropMaterial, dropAmount, dropData);
            return dropActual;
          }
        }
        else if (segmente.length == 3)
        {
          Material dropMaterial = Material.getMaterial(segmente[0]);
          int dropMaximal = Integer.parseInt(segmente[1]);
          double dropChance = Double.parseDouble(segmente[2]);
          int dropAmount = 0;
          for (int d = 0; d < dropMaximal; d++)
          {
            double calc = Math.pow(dropChance / 100.0D, 1.0D / dropMaximal);
            if (Math.random() <= calc) {
              dropAmount++;
            }
          }
          if (dropAmount > 0)
          {
            ItemStack dropActual = new ItemStack(dropMaterial, dropAmount);
            return dropActual;
          }
        }
        return null;
      }
      public ItemStack dropSkull(String deadEntityName)
      {
        byte skull = 1;
        double skDropChance = 0.0D;
        String str;
        switch ((str = deadEntityName).hashCode())
        {
        case -1932423455: 
          if (str.equals("PLAYER")) {}
          break;
        case -1643025882: 
          if (str.equals("ZOMBIE")) {
            break;
          }
          break;
        case -1484593075: 
          if (str.equals("SKELETON")) {}
          break;
        case 1746652494: 
          if (!str.equals("CREEPER"))
          {
            break label162;
            skull = 2;
            skDropChance = EasyMobs.configC.getDouble("SKULL_DROP_ZOMBIE");
            break label164;
            skull = 0;
            skDropChance = EasyMobs.configC.getDouble("SKULL_DROP_SKELETON");
            break label164;
          }
          else
          {
            skull = 4;
            skDropChance = EasyMobs.configC.getDouble("SKULL_DROP_CREEPER");
            break label164;
            skull = 3;
            skDropChance = EasyMobs.configC.getDouble("SKULL_DROP_PLAYER");
          }
          break;
        }
        label162:
        return null;
        label164:
        if (Math.random() * 100.0D <= skDropChance)
        {
          ItemStack head = new ItemStack(Material.SKULL_ITEM, 1, skull);
          return head;
        }
        return null;
      }
    }
    
    [/B]
    
     
    Последнее редактирование: 1 мар 2015
  2. Хостинг MineCraft
    <
  3. TheBlacK.Z

    TheBlacK.Z Активный участник Пользователь

    Баллы:
    78
    e.getBlock.setType(Material.AIR);
     
  4. Автор темы
    Rider3217

    Rider3217 Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Planet0111
    Спасибо. Ща протестю[DOUBLEPOST=1425225575,1425222483][/DOUBLEPOST]Слушай когда я его ствлю всё время "getBlock cannot be resolved or is not a field".
     
  5. TheBlacK.Z

    TheBlacK.Z Активный участник Пользователь

    Баллы:
    78
    Пробуй e.getClickedBlock()
     
  6. CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Во-первых:
    Тут
    1. main.getServer().getPluginManager().registerEvents(this, main);
    должно быть наоборот, сначала класс-плагин, потом класс-слушатель.
    А что со вторым кодом?[DOUBLEPOST=1425229681,1425229646][/DOUBLEPOST]В чем вопрос?
     
  7. Автор темы
    Rider3217

    Rider3217 Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Planet0111
    Как сделать что бы после проверки блока(Если он не прошел ее) он удалялся.
    2 код, в вк смотри.
     
  8. CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    1. setItemInHand(new ItemStack(0));
    2. У тебя код не работает или что? Дебажить пробовал?
     
  9. Автор темы
    Rider3217

    Rider3217 Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Planet0111
    Поже попробую "дебажить".
     

Поделиться этой страницей