Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Rider3217

Активный участник
Пользователь
Баллы
98
Имя в Minecraft
Planet0111
Помогите сделать что бы после проверки блока, после нажатия(использования) он удалялся
Java:
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;
  }
}

Дроп мобов
Java:
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.*********ventory.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. main.getServer().getPluginManager().registerEvents(this, main);
должно быть наоборот, сначала класс-плагин, потом класс-слушатель.
А что со вторым кодом?
В чем вопрос?
 
Во-первых:
Тут
  1. main.getServer().getPluginManager().registerEvents(this, main);
должно быть наоборот, сначала класс-плагин, потом класс-слушатель.
А что со вторым кодом?
В чем вопрос?
Как сделать что бы после проверки блока(Если он не прошел ее) он удалялся.
2 код, в вк смотри.
 
Как сделать что бы после проверки блока(Если он не прошел ее) он удалялся.
2 код, в вк смотри.
1. setItemInHand(new ItemStack(0));
2. У тебя код не работает или что? Дебажить пробовал?
 

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

Назад
Верх