1
1.10에서 Spigot 플러그인을 만들었습니다. 주로 필수 항목이지만 나침반 재고 GUI에 추가하고 처음 로그인 할 때 받게됩니다. 구현 한 후 이상한 이유로 인벤토리에서 항목을 얻을 수 없으면 즉각 사라집니다. GUI 클래스는 다음과 같습니다.Spigot Plugin - 빌드 할 수 없음 1.10
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.10에서는 작동하지 않는다고하셨습니다. 1.9에서 실행 중입니까? 인벤토리에 항목을 추가하는 것을 거부하는 또 다른 플러그인이 있습니까? – Nightfighter001
'if (ChatColor.stInColor (event.getInventory(). getName()). equalsIgnoreCase ("Warp Selector")) {'당신이 원하는 것의 오포자를 수행하는 것 같습니다 (화면이 _ 워프 선택기 "). 어쩌면 당신은'if (! ChatColor.stripColor (event.getInventory() .getName()). equalsIgnoreCase ("Warp Selector")) {'? – Pokechu22