插件插件 - 无法构建1.10

时间:2016-06-10 03:35:21

标签: minecraft bukkit

我在1.10中创建了一个Spigot插件。它主要是必需品,但我在罗盘库存GUI中添加了你在第一次登录时收到它。由于一些奇怪的原因,我实施了这个,你无法获得库存中的物品,它们会立即消失。 GUI的类位于

之下
package me.Roofah.Essentials;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
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.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin;

public class Essentials extends JavaPlugin implements Listener{
    public void onEnable() {
        getServer().getPluginManager().registerEvents(this, this);

        this.getCommand("teleport").setExecutor(new Teleport(this));;
        this.getCommand("vanish").setExecutor(new Vanish(this));;
        this.getCommand("unvanish").setExecutor(new Vanish(this));;


        Bukkit.getServer().getLogger().info("Teleport Plugin Enabled!");
    }

        public Player getPlayer(String name) {
            for(Player p : Bukkit.getOnlinePlayers()) {
                if(p.getName().equalsIgnoreCase(name))
                    return p;
            }
            return null;

    }

    public void onDisable() {

        Bukkit.getServer().getLogger().info("Teleport Plugin Disabled!");

    }

    private void teleportInWord(Player player, int x, int y, int z) {
        player.teleport(new Location(player.getWorld(), x, y, z));
    }

    private void openGUI(Player player) {
        Inventory inv = Bukkit.createInventory(null, 9, ChatColor.DARK_RED + "Warp Selector || By Roofah");

        ItemStack Spawn = new ItemStack(Material.DIAMOND_AXE);
        ItemMeta SpawnMeta = Spawn.getItemMeta();
        ItemStack Build = new ItemStack(Material.DIAMOND_PICKAXE);
        ItemMeta BuildMeta = Build.getItemMeta();

        SpawnMeta.setDisplayName(ChatColor.DARK_RED + "Spawn");
        Spawn.setItemMeta(SpawnMeta);

        BuildMeta.setDisplayName(ChatColor.GREEN + "Build");
        Build.setItemMeta(BuildMeta);

        // 35
        inv.setItem(3, Spawn);
        inv.setItem(5, Build);

        player.openInventory(inv);
    }

    @EventHandler
    public void onInventoryClick(InventoryClickEvent event) {
        if (ChatColor.stripColor(event.getInventory().getName()).equalsIgnoreCase("Warp Selector")) {
            return;
        }
        Player player = (Player) event.getWhoClicked();
        event.setCancelled(true);

        if (event.getCurrentItem() == null || event.getCurrentItem().getType() == Material.AIR
                || !event.getCurrentItem().hasItemMeta()) {
            player.closeInventory();
            return;
        }

        switch(event.getCurrentItem().getType()){
        case DIAMOND_AXE:
            teleportInWord(player, 967, 90, 484);
            player.closeInventory();
            player.sendMessage(String.format("%sTeleported to %sSpawn%s!", ChatColor.GOLD, ChatColor.DARK_RED, ChatColor.GOLD));
            break;
        case DIAMOND_PICKAXE:
            teleportInWord(player, 906, 96, 428);
            player.closeInventory();
            player.sendMessage(String.format("%sTeleported to %sBUILD%s!", ChatColor.GOLD, ChatColor.GREEN, ChatColor.GOLD));
            break;

            default:
                player.closeInventory();
                break;
        }
    }

    @EventHandler
    public void onPlayerKoin(PlayerJoinEvent event) {
        event.getPlayer().getInventory().addItem(new ItemStack(Material.COMPASS));
    }

    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent event) {
        Action a = event.getAction();
        ItemStack is = event.getItem();
        if (a == Action.PHYSICAL || is == null || is.getType() == Material.AIR) {
            return;
        }
        if (is.getType() == Material.COMPASS) {
            openGUI(event.getPlayer());
        }

    }

}

还有其他2个类但我仍然可以在不添加GUI的情况下获得块。

1 个答案:

答案 0 :(得分:1)

您的情况在代码的第73行出现逻辑错误。

您有以下内容:

 if (ChatColor.stripColor(event.getInventory().getName()).equalsIgnoreCase("Warp Selector")) //Line 73 {
        return;
    }

情况是:

每当库存名称为Warp Selector时,返回。所以你的代码只在库存名称不是" Warp Selector"。

时执行

您可能想要的是反转此逻辑,以便在库存名称为" Warp Selector"。

时执行代码。
if (!ChatColor.stripColor(event.getInventory().getName()).equalsIgnoreCase("Warp Selector") {
return;
}
//Code continues
相关问题