siema zrobiłem plugin na ustawienia itd. Ale trudno. Gui miało być jedno, ale dla każdego gracza sloty miały się ustawiać kiedy on kliknie. A wyszło, że się setowały kiedy ktoś inny kliknął
public static Inventory settings;
public ItemStack glass, spawn;
public ItemStack spawnon, spawnoff;
public Settings(){
glass = new ItemBuilder(Material.STAINED_GLASS_PANE, 1).setDurability((short) 15).setName(MessageUtil.colored("&0#")).toItemStack();
spawn = new ItemBuilder(Material.PAPER, 1).addEnchant(Enchantment.DURABILITY, 10).setName(MessageUtil.colored("&cTeleportacja na spawn")).setLore(MessageUtil.colored("&8» &7Teleportacja na spawn po wejsciu na serwer")).toItemStack();
spawnon = new ItemBuilder(Material.STAINED_GLASS_PANE, 1).setDurability((short) 5).setName(MessageUtil.colored("&aWLACZONE")).toItemStack();
spawnoff = new ItemBuilder(Material.STAINED_GLASS_PANE, 1).setDurability((short) 14).setName(MessageUtil.colored("&cWYLACZONE")).toItemStack();
}
private void openInventory(Player p){
User u = User.get(p);
settings = Bukkit.getServer().createInventory(p, 36, "§c» Ustawienia konta");
for(int i = 0; i < 36; i++){
settings.setItem(i, glass);
settings.setItem(10, spawn);
}
if(u.getSpawn() == true){
settings.setItem(19, spawnon);
} else if(u.getSpawn() == false){
settings.setItem(19, spawnoff);
}
p.openInventory(settings);
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label,String[] args) {
if(cmd.getName().equalsIgnoreCase("settings")){
if(sender instanceof Player){
Player p = (Player) sender;
openInventory(p);
}
}
return false;
}
@EventHandler(priority = EventPriority.HIGH)
public void onInvClick(InventoryClickEvent e){
if(e.isCancelled()) return;
if(e.getInventory() == null) return;
if(e.getCurrentItem() == null) return;
if(e.getCurrentItem().getType().equals(Material.AIR)) return;
if(e.getInventory().getName() == "§c» Ustawienia konta"){
e.setCancelled(true);
if(e.getCurrentItem().getItemMeta().getDisplayName().equals(MessageUtil.colored("&cTeleportacja na spawn"))){
Player p = (Player) e.getWhoClicked();
User u = User.get(p);
if(u.getSpawn() == true){
u.setSpawn(false);
settings.setItem(19, spawnoff);
} else if(u.getSpawn() == false){
u.setSpawn(true);
settings.setItem(19, spawnon);
}
}
}
}
}
Pytanie
kerpson 533
siema zrobiłem plugin na ustawienia itd. Ale trudno. Gui miało być jedno, ale dla każdego gracza sloty miały się ustawiać kiedy on kliknie. A wyszło, że się setowały kiedy ktoś inny kliknął
public static Inventory settings; public ItemStack glass, spawn; public ItemStack spawnon, spawnoff; public Settings(){ glass = new ItemBuilder(Material.STAINED_GLASS_PANE, 1).setDurability((short) 15).setName(MessageUtil.colored("&0#")).toItemStack(); spawn = new ItemBuilder(Material.PAPER, 1).addEnchant(Enchantment.DURABILITY, 10).setName(MessageUtil.colored("&cTeleportacja na spawn")).setLore(MessageUtil.colored("&8» &7Teleportacja na spawn po wejsciu na serwer")).toItemStack(); spawnon = new ItemBuilder(Material.STAINED_GLASS_PANE, 1).setDurability((short) 5).setName(MessageUtil.colored("&aWLACZONE")).toItemStack(); spawnoff = new ItemBuilder(Material.STAINED_GLASS_PANE, 1).setDurability((short) 14).setName(MessageUtil.colored("&cWYLACZONE")).toItemStack(); } private void openInventory(Player p){ User u = User.get(p); settings = Bukkit.getServer().createInventory(p, 36, "§c» Ustawienia konta"); for(int i = 0; i < 36; i++){ settings.setItem(i, glass); settings.setItem(10, spawn); } if(u.getSpawn() == true){ settings.setItem(19, spawnon); } else if(u.getSpawn() == false){ settings.setItem(19, spawnoff); } p.openInventory(settings); } @Override public boolean onCommand(CommandSender sender, Command cmd, String label,String[] args) { if(cmd.getName().equalsIgnoreCase("settings")){ if(sender instanceof Player){ Player p = (Player) sender; openInventory(p); } } return false; } @EventHandler(priority = EventPriority.HIGH) public void onInvClick(InventoryClickEvent e){ if(e.isCancelled()) return; if(e.getInventory() == null) return; if(e.getCurrentItem() == null) return; if(e.getCurrentItem().getType().equals(Material.AIR)) return; if(e.getInventory().getName() == "§c» Ustawienia konta"){ e.setCancelled(true); if(e.getCurrentItem().getItemMeta().getDisplayName().equals(MessageUtil.colored("&cTeleportacja na spawn"))){ Player p = (Player) e.getWhoClicked(); User u = User.get(p); if(u.getSpawn() == true){ u.setSpawn(false); settings.setItem(19, spawnoff); } else if(u.getSpawn() == false){ u.setSpawn(true); settings.setItem(19, spawnon); } } } } }
Odnośnik do komentarza
Udostępnij na innych stronach
5 odpowiedzi na to pytanie
Rekomendowane odpowiedzi