Удаление вещей персонажа

Статус
Закрыто для дальнейших ответов.

BogdanSH

Активный участник
Пользователь
Баллы
63
Сейчас разрабатываю плагин,который будет замещать Глаз Эндера в Жемчуг и наоборот.
Но,к сожалению, Глаз Эндера превращается в Жемчуг,но обратно нет.Надеюсь,что вы поможете мне.
 
зачем это вообще?
 
Да вот проблему не могу найти.
@SuppressWarnings("deprecation")
@EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
Player p = event.getPlayer();
if(p.getItemInHand().equals(new ItemStack(Material.EYE_OF_ENDER))) {
if(event.getAction().equals(Action.RIGHT_CLICK_AIR)) {
p.getItemInHand().setType(Material.ENDER_PEARL);
event.setCancelled(true);}
if(!event.isCancelled()) {
p.setItemInHand(new ItemStack(Material.EYE_OF_ENDER));
p.updateInventory();
}
}
}
}
Ну если есть код, то в чем проблема? Просто проверь условие)
Ивенты зарегистрированы,а вот обратно никак не получается :/
Только получается из Ока в Жемчуг превратить,а обратно нет(
 
Где форматирование кода?
package ChaneItems;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.*********ventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin implements Listener {
public void onEnable() {
Bukkit.getServer().getPluginManager().registerEvents(this, this);
Bukkit.getServer().getLogger().info("&4Plugin was enabled!");
this.getServer().getPluginManager().registerEvents(this, this);
}
public void onDisable() {
Bukkit.getServer().getLogger().info("&4Plugin was disabled");
}
@SuppressWarnings("deprecation")
@EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
Player p = event.getPlayer();
if(p.getItemInHand().equals(new ItemStack(Material.EYE_OF_ENDER))) {
if(event.getAction().equals(Action.RIGHT_CLICK_AIR)) {
p.getItemInHand().setType(Material.ENDER_PEARL);
event.setCancelled(true);}
if(!event.isCancelled()) {
p.setItemInHand(new ItemStack(Material.EYE_OF_ENDER));
p.updateInventory();
}
}
}
}
 
Форматирование кода где? 90% проблем из-за него.
Код:
package ChaneItems;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.*********ventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin implements Listener {
    public void onEnable() {
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
        Bukkit.getServer().getLogger().info("&4Plugin was enabled!");
        this.getServer().getPluginManager().registerEvents(this, this);
    }
    public void onDisable() {
        Bukkit.getServer().getLogger().info("&4Plugin was disabled");
    }
    @SuppressWarnings("deprecation")
    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent event) {
        Player p = event.getPlayer();
        if (p.getItemInHand().equals(new ItemStack(Material.EYE_OF_ENDER))) {
            if (event.getAction().equals(Action.RIGHT_CLICK_AIR)) {
                p.getItemInHand().setType(Material.ENDER_PEARL);
                event.setCancelled(true);
            }
            if (!event.isCancelled()) {
                p.setItemInHand(new ItemStack(Material.EYE_OF_ENDER));
                p.updateInventory();
            }
        }
    }
}

Код:
if (p.getItemInHand().equals(new ItemStack(Material.EYE_OF_ENDER))) {
            if (event.getAction().equals(Action.RIGHT_CLICK_AIR)) {
                p.getItemInHand().setType(Material.ENDER_PEARL);
                event.setCancelled(true);
            }
            if (!event.isCancelled()) {
                p.setItemInHand(new ItemStack(Material.EYE_OF_ENDER));
                p.updateInventory();
            }
 }
Вот что это такое?
 
Ты имеешь ввиду удаление кода или что?
Оператор If с ивентами
 
Код:
if(p.getItemInHand().getType().equals(Material.EYE_OF_ENDER)) {
    p.setItemInHand(new ItemStack(Material.ENDER_PEARL));
} else if(p.getItemInHand().getType().equals(Material.ENDER_PEARL)){
    p.setItemInHand(new ItemStack(Material.EYE_OF_ENDER));
}
Вот так надо.
 
Так else используется,если оператор If не срабатывает?
Код:
if(p.getItemInHand().getType().equals(Material.EYE_OF_ENDER)) {
    p.setItemInHand(new ItemStack(Material.ENDER_PEARL));
} else if(p.getItemInHand().getType().equals(Material.ENDER_PEARL)){
    p.setItemInHand(new ItemStack(Material.EYE_OF_ENDER));
}
Вот так надо.
 
PHP:
package ChaneItems;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.*********ventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin implements Listener {

    public void onEnable() {
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
        Bukkit.getServer().getLogger().info("&4Plugin was enabled!"); // Ненужное сообщение. Сервер сам напишет, когда плагин будет активирован.
        this.getServer().getPluginManager().registerEvents(this, this); // зачем регисрировать события ещё раз???
    }
    public void onDisable() {
        // метод используется не по назначению (здесь по-хорошему должна быть очистка переменных плагина). Вывод бессмысленного сообщения, которое напишет сервер.
        Bukkit.getServer().getLogger().info("&4Plugin was disabled");
    }
   
    @SuppressWarnings("deprecation") // ошибки нужно исправлять, а не прятать
    @EventHandler // приоритет кто будет выставлять?
    public void onPlayerInteract(PlayerInteractEvent event) {
        Player p = event.getPlayer();
        // equals используется в основном при сравнении строк. Здесь лучше использовать "=="
        if(p.getItemInHand().equals(new ItemStack(Material.EYE_OF_ENDER))) { // незачем создавать новый ItemStack для сравнения. Получи type предмета и сравнивай с Material.EYE_OF_ENDER
        if(event.getAction().equals(Action.RIGHT_CLICK_AIR)) { // та же беда
        p.getItemInHand().setType(Material.ENDER_PEARL);
        event.setCancelled(true);
        // здесь добавь return, чтобы код, сдедующий ниже не выполнялся.
        }
        if(!event.isCancelled()) { // ненужный if (причина в пред. комменте)
        p.setItemInHand(new ItemStack(Material.EYE_OF_ENDER));
        p.updateInventory();
        }
        }
    }
}
 
PHP:
package ChaneItems;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.*********ventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin implements Listener {

    public void onEnable() {
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
        Bukkit.getServer().getLogger().info("&4Plugin was enabled!"); // Ненужное сообщение. Сервер сам напишет, когда плагин будет активирован.
        this.getServer().getPluginManager().registerEvents(this, this); // зачем регисрировать события ещё раз???
    }
    public void onDisable() {
        // метод используется не по назначению (здесь по-хорошему должна быть очистка переменных плагина). Вывод бессмысленного сообщения, которое напишет сервер.
        Bukkit.getServer().getLogger().info("&4Plugin was disabled");
    }
  
    @SuppressWarnings("deprecation") // ошибки нужно исправлять, а не прятать
    @EventHandler // приоритет кто будет выставлять?
    public void onPlayerInteract(PlayerInteractEvent event) {
        Player p = event.getPlayer();
        // equals используется в основном при сравнении строк. Здесь лучше использовать "=="
        if(p.getItemInHand().equals(new ItemStack(Material.EYE_OF_ENDER))) { // незачем создавать новый ItemStack для сравнения. Получи type предмета и сравнивай с Material.EYE_OF_ENDER
        if(event.getAction().equals(Action.RIGHT_CLICK_AIR)) { // та же беда
        p.getItemInHand().setType(Material.ENDER_PEARL);
        event.setCancelled(true);
        // здесь добавь return, чтобы код, сдедующий ниже не выполнялся.
        }
        if(!event.isCancelled()) { // ненужный if (причина в пред. комменте)
        p.setItemInHand(new ItemStack(Material.EYE_OF_ENDER));
        p.updateInventory();
        }
        }
    }
}
Не нужно всё делать за него.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх