Идея Телепорт с GUI

JustFish

Ньюби
Баллы
1
Сделал код на ГУИ, но не работает телепорт в игре. Могу скинуть код,может подскажите?
 
Прошу предоставить код.


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.*********ventory.Inventory;
import org.*********ventory.ItemStack;
import org.*********ventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin;

public class GUITEST extends JavaPlugin implements Listener {
public void onEnable(){
getServer().getPluginManager().registerEvents(this, this);
}
private void teleportInWorld(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, 54, ChatColor.GREEN +"Map Travel");
ItemStack survival = new ItemStack(Material.GRASS);
ItemMeta survivalMeta = survival.getItemMeta();
ItemStack Kingdom = new ItemStack(Material.SNOW_BLOCK);
ItemMeta KingdomMeta = Kingdom.getItemMeta();


survivalMeta.setDisplayName(ChatColor.RED + "The Wall");
survival.setItemMeta(survivalMeta);
KingdomMeta.setDisplayName(ChatColor.AQUA + "Winterfell");
Kingdom.setItemMeta(KingdomMeta);

inv.setItem(1, survival);
inv.setItem(2, Kingdom);
player.openInventory(inv);
}
@EventHandler
public void onInventoryClick(InventoryClickEvent event){
if(!ChatColor.stripColor(event.getInventory().getName()).equalsIgnoreCase("Map Travel"))
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 GRASS:
teleportInWorld(player, 100, 100, 100);
player.closeInventory();
break;
case SNOW_BLOCK:
teleportInWorld(player, 100, 100, 100);
player.closeInventory();
break;
}
}
@EventHandler
public void onJoin(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());


}

}
 
Дебажил?
Я не уверен на счёт твоего switch, у тебя проверки он вообще проходят?
Я кстати так дебажу System.out.println("Debug"); - после каждой проверки.
if(event.getCurrentItem() == null || event.getCurrentItem().getType() == Material.AIR ||event.getCurrentItem().hasItemMeta()){
player.closeInventory();
return;
} - зачем это? У тебя предметы имеют итеммету, убери это из проверки в InventoryClickEvent
 
Дебажил?
Я не уверен на счёт твоего switch, у тебя проверки он вообще проходят?
Я кстати так дебажу System.out.println("Debug"); - после каждой проверки.
if(event.getCurrentItem() == null || event.getCurrentItem().getType() == Material.AIR ||event.getCurrentItem().hasItemMeta()){
player.closeInventory();
return;
} - зачем это? У тебя предметы имеют итеммету, убери это из проверки в InventoryClickEvent
Я это вообще делал по гайду ._, Самое простое, ну и в принципе я вообще новичок в Создании плагинов =)
 


А вы не смогли бы подправить этот код и скинуть обратно ? ._.
Да.


А вы не смогли бы подправить этот код и скинуть обратно ? ._.
Я был прав event.getCurrentItem().hasItemMeta() не нужно.

JavaScript:
    private void teleportInWorld(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, 54, ChatColor.GREEN +"Map Travel");
        ItemStack survival = new ItemStack(Material.GRASS);
        ItemMeta survivalMeta = survival.getItemMeta();
        ItemStack Kingdom = new ItemStack(Material.SNOW_BLOCK);
        ItemMeta KingdomMeta = Kingdom.getItemMeta();


        survivalMeta.setDisplayName(ChatColor.RED + "The Wall");
        survival.setItemMeta(survivalMeta);
        KingdomMeta.setDisplayName(ChatColor.AQUA + "Winterfell");
        Kingdom.setItemMeta(KingdomMeta);

        inv.setItem(1, survival);
        inv.setItem(2, Kingdom);
        player.openInventory(inv);
        }
        @EventHandler
        public void onInventoryClick(InventoryClickEvent event){
        if(!ChatColor.stripColor(event.getInventory().getName()).equalsIgnoreCase("Map Travel"))
        return;
        Player player = (Player) event.getWhoClicked();
        event.setCancelled(true);


        if(event.getCurrentItem() == null || event.getCurrentItem().getType() == Material.AIR){
        player.closeInventory();
        return;
        }
        switch(event.getCurrentItem().getType()){
        case GRASS:
        teleportInWorld(player, 100, 100, 100);
        player.closeInventory();
        break;
        case SNOW_BLOCK:
        teleportInWorld(player, 100, 100, 100);
        player.closeInventory();
        break;
        }
        }
        @EventHandler
        public void onJoin(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());


        }
 
Да.

Я был прав event.getCurrentItem().hasItemMeta() не нужно.

JavaScript:
    private void teleportInWorld(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, 54, ChatColor.GREEN +"Map Travel");
        ItemStack survival = new ItemStack(Material.GRASS);
        ItemMeta survivalMeta = survival.getItemMeta();
        ItemStack Kingdom = new ItemStack(Material.SNOW_BLOCK);
        ItemMeta KingdomMeta = Kingdom.getItemMeta();


        survivalMeta.setDisplayName(ChatColor.RED + "The Wall");
        survival.setItemMeta(survivalMeta);
        KingdomMeta.setDisplayName(ChatColor.AQUA + "Winterfell");
        Kingdom.setItemMeta(KingdomMeta);

        inv.setItem(1, survival);
        inv.setItem(2, Kingdom);
        player.openInventory(inv);
        }
        @EventHandler
        public void onInventoryClick(InventoryClickEvent event){
        if(!ChatColor.stripColor(event.getInventory().getName()).equalsIgnoreCase("Map Travel"))
        return;
        Player player = (Player) event.getWhoClicked();
        event.setCancelled(true);


        if(event.getCurrentItem() == null || event.getCurrentItem().getType() == Material.AIR){
        player.closeInventory();
        return;
        }
        switch(event.getCurrentItem().getType()){
        case GRASS:
        teleportInWorld(player, 100, 100, 100);
        player.closeInventory();
        break;
        case SNOW_BLOCK:
        teleportInWorld(player, 100, 100, 100);
        player.closeInventory();
        break;
        }
        }
        @EventHandler
        public void onJoin(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());


        }
Добавлять также как и тогда можно? А за материал ОГРОМНОЕ СПАСИБО. По постам понял, что делаешь работу бесплатно, но не слишком муторную, еще раз спасибо. ._, Аж плачу
 
Добавлять также как и тогда можно? А за материал ОГРОМНОЕ СПАСИБО. По постам понял, что делаешь работу бесплатно, но не слишком муторную, еще раз спасибо. ._, Аж плачу
Обращайтесь.🤓
 
Назад
Верх