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

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

Discussion in 'Разработка плагинов для новичков' started by Rider3217, Mar 1, 2015.

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

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

    Trophy Points:
    98
    Имя в Minecraft:
    Planet0111
    Помогите сделать что бы после проверки блока, после нажатия(использования) он удалялся
    Code:
    
    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;
      }
    }
    
    
    Дроп мобов
    Code:
    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]
    
     
    Last edited: Mar 1, 2015
  2. Хостинг MineCraft
    <
  3. TheBlacK.Z

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

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

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

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

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

    Trophy Points:
    78
    Пробуй e.getClickedBlock()
     
  6. CraftCoder

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

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

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

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

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

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

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

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

Share This Page