Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Запросы на разработку плагинов", создана пользователем JustFish, 13 июл 2015.

  1. Автор темы
    JustFish

    JustFish Ньюби

    Баллы:
    1
    Сделал код на ГУИ, но не работает телепорт в игре. Могу скинуть код,может подскажите?
     
  2. Хостинг MineCraft
    <
  3. Rider3217

    Rider3217 Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Planet0111
    Прошу предоставить код.
     
  4. Автор темы
    JustFish

    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.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.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());


    }

    }
     
  5. Rider3217

    Rider3217 Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Planet0111
    Дебажил?
    Я не уверен на счёт твоего switch, у тебя проверки он вообще проходят?
    Я кстати так дебажу System.out.println("Debug"); - после каждой проверки.[DOUBLEPOST=1436808902,1436808729][/DOUBLEPOST]if(event.getCurrentItem() == null || event.getCurrentItem().getType() == Material.AIR ||event.getCurrentItem().hasItemMeta()){
    player.closeInventory();
    return;
    } - зачем это? У тебя предметы имеют итеммету, убери это из проверки в InventoryClickEvent
     
  6. Автор темы
    JustFish

    JustFish Ньюби

    Баллы:
    1
    Я это вообще делал по гайду ._, Самое простое, ну и в принципе я вообще новичок в Создании плагинов =)
     
  7. Rider3217

    Rider3217 Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Planet0111
    Можно сылку на гайд.
     
  8. Автор темы
    JustFish

    JustFish Ньюби

    Баллы:
    1
    [DOUBLEPOST=1436809923,1436809624][/DOUBLEPOST]
    А вы не смогли бы подправить этот код и скинуть обратно ? ._.
     
  9. Rider3217

    Rider3217 Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Planet0111
    Да.[DOUBLEPOST=1436811708][/DOUBLEPOST]
    Я был прав event.getCurrentItem().hasItemMeta() не нужно.

    Код:
        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());
    
    
            }
     
  10. Автор темы
    JustFish

    JustFish Ньюби

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

    Rider3217 Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Planet0111
    Обращайтесь.:nerd:
     

Поделиться этой страницей