Lobby plugin - chyba v menu

Pokec o čemkoliv ostatním
Message
Autor
kamikatze
Příspěvky: 176
Registrován: 24 zář 2014, 16:33
Reputation: 0

Lobby plugin - chyba v menu

#1 Příspěvekod kamikatze » 19 kvě 2015, 21:01

Ahoj, dělám si plugin..
Jenže jsem narazil na chybu, která zní takto: "Cannot make a static reference to the non-static method show(Player) from the type menu"
Zde je obrázek : http://postimg.org/image/52moj4rkx/
Zde je kod..
Main:

Kód: Vybrat vše

package me.natan.lobby;

import java.util.Arrays;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.DyeColor;
import org.bukkit.GameMode;
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.event.player.PlayerQuitEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.BookMeta;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.material.Wool;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin implements Listener {
   
   public void onEnable() {
      getLogger().info("Plugin Lobby byl zapnut!");
      Bukkit.getServer().getPluginManager().registerEvents(this, this);
      this.saveDefaultConfig();
   }
   
   public void onDisable() {
      getLogger().info("Plugin Lobby byl vypnut!");
   }
   
   public void onJoin(PlayerJoinEvent e) {
        ItemStack book = new ItemStack(Material.WRITTEN_BOOK, 1);
       
        BookMeta meta = (BookMeta) book.getItemMeta();
        meta.setTitle(ChatColor.GOLD + "MixShock");
        meta.setAuthor(ChatColor.AQUA + "Server");
        meta.addPage(
                        ChatColor.GOLD + this.getConfig().getString("zprava1"),
                        ChatColor.GREEN + this.getConfig().getString("zprava2"),
                        ChatColor.GREEN + this.getConfig().getString("zprava3"),
                        ChatColor.GREEN + this.getConfig().getString("zprava4"),
                        ChatColor.GREEN + this.getConfig().getString("zprava5"),
                        ChatColor.GREEN + this.getConfig().getString("zprava6"),
                        ChatColor.GREEN + this.getConfig().getString("zprava7"),
                        ChatColor.GREEN + this.getConfig().getString("zprava8"),
                        ChatColor.GREEN + this.getConfig().getString("zprava9"),
                        ChatColor.GREEN + this.getConfig().getString("zprava10"),
                        ChatColor.GREEN + this.getConfig().getString("zprava11"),
                        ChatColor.GREEN + this.getConfig().getString("zprava12"),
                        ChatColor.GREEN + this.getConfig().getString("zprava13"),
                        ChatColor.GREEN + this.getConfig().getString("zprava14"),
                        ChatColor.GREEN + this.getConfig().getString("zprava15"),
                        ChatColor.GREEN + this.getConfig().getString("zprava16"),
                        ChatColor.GREEN + this.getConfig().getString("zprava17"),
                        ChatColor.GREEN + this.getConfig().getString("zprava18"),
                        ChatColor.GREEN + this.getConfig().getString("zprava19"),
                        ChatColor.GREEN + this.getConfig().getString("zprava20"),
                        ChatColor.GOLD + this.getConfig().getString("zprava21"),
                        ChatColor.GREEN + this.getConfig().getString("zprava22"),
                        ChatColor.GREEN + this.getConfig().getString("zprava23"),
                        ChatColor.GREEN + this.getConfig().getString("zprava24"),
                        ChatColor.GREEN + this.getConfig().getString("zprava25"),
                        ChatColor.GREEN + this.getConfig().getString("zprava26"),
                        ChatColor.GREEN + this.getConfig().getString("zprava27"),
                        ChatColor.GREEN + this.getConfig().getString("zprava28"),
                        ChatColor.GREEN + this.getConfig().getString("zprava29"),
                        ChatColor.GREEN + this.getConfig().getString("zprava30"),
                        ChatColor.GOLD + this.getConfig().getString("zprava31"),
                        ChatColor.GREEN + this.getConfig().getString("zprava32"),
                        ChatColor.GREEN + this.getConfig().getString("zprava33"),
                        ChatColor.GREEN + this.getConfig().getString("zprava34"),
                        ChatColor.GREEN + this.getConfig().getString("zprava35"),
                        ChatColor.GREEN + this.getConfig().getString("zprava36"),
                        ChatColor.GREEN + this.getConfig().getString("zprava37"),
                        ChatColor.GREEN + this.getConfig().getString("zprava38"),
                        ChatColor.GREEN + this.getConfig().getString("zprava39"),
                        ChatColor.GREEN + this.getConfig().getString("zprava40"),
                        ChatColor.GREEN + this.getConfig().getString("zprava41"),
                        ChatColor.GREEN + this.getConfig().getString("zprava42"),
                        ChatColor.GREEN + this.getConfig().getString("zprava43"),
                        ChatColor.GREEN + this.getConfig().getString("zprava44"),
                        ChatColor.GREEN + this.getConfig().getString("zprava45"),
                        ChatColor.GREEN + this.getConfig().getString("zprava46"),
                        ChatColor.GREEN + this.getConfig().getString("zprava47"),
                        ChatColor.GREEN + this.getConfig().getString("zprava48"),
                        ChatColor.GREEN + this.getConfig().getString("zprava49"),
                        ChatColor.GREEN + this.getConfig().getString("zprava50")
                        );
       
        book.setItemMeta(meta);
       
        e.getPlayer().getInventory().addItem(book);
}
   public void onPlayerQuit(PlayerQuitEvent e) {
      e.getPlayer().getInventory().remove(Material.BOOK);
   }
    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent e) {
            if (!(e.getAction() == Action.RIGHT_CLICK_BLOCK)) return;
            menu.show(e.getPlayer());
    }
}


menu

Kód: Vybrat vše

package me.natan.lobby;

import java.util.Arrays;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.DyeColor;
import org.bukkit.GameMode;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.material.Wool;
import org.bukkit.plugin.Plugin;
 
public class menu implements Listener {
 
        private Inventory inv;
        private ItemStack c, s, a;
       
        public menu(Plugin p) {
                inv = Bukkit.getServer().createInventory(null, 9, "Gamemode Chooser");
               
                c = createItem(DyeColor.GREEN, ChatColor.GREEN + "Creative");
                s = createItem(DyeColor.YELLOW, ChatColor.YELLOW + "Survival");
                a = createItem(DyeColor.RED, ChatColor.RED + "Adventure");
               
                inv.setItem(2, c);
                inv.setItem(4, s);
                inv.setItem(6, a);
               
                Bukkit.getServer().getPluginManager().registerEvents(this, p);
        }
       
        private ItemStack createItem(DyeColor dc, String name) {
                ItemStack i = new Wool(dc).toItemStack(1);
                ItemMeta im = i.getItemMeta();
                im.setDisplayName(name);
                im.setLore(Arrays.asList("Set your gamemode", "to " + name.toLowerCase() + " mode"));
                i.setItemMeta(im);
                return i;
        }
       
        public void show(Player p) {
                p.openInventory(inv);
        }
       
        @EventHandler
        public void onInventoryClick(InventoryClickEvent e) {
                if (!e.getInventory().getName().equalsIgnoreCase(inv.getName())) return;
                if (e.getCurrentItem().getItemMeta() == null) return;
                if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Creative")) {
                        e.setCancelled(true);
                        e.getWhoClicked().setGameMode(GameMode.CREATIVE);
                        e.getWhoClicked().closeInventory();
                }
                if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Survival")) {
                        e.setCancelled(true);
                        e.getWhoClicked().setGameMode(GameMode.SURVIVAL);
                        e.getWhoClicked().closeInventory();
                }
                if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Adventure")) {
                        e.setCancelled(true);
                        e.getWhoClicked().setGameMode(GameMode.ADVENTURE);
                        e.getWhoClicked().closeInventory();
                }
        }
}


Neví někdo co s tím ?

Uživatelský avatar
TheLaoming
Příspěvky: 321
Věk: 27
Registrován: 14 bře 2015, 20:42
Reputation: 2
Bydliště: Ostrava !!!
Kontaktovat uživatele:

Re: Lobby plugin - chyba v menu

#2 Příspěvekod TheLaoming » 20 kvě 2015, 10:45

Nevím nevím...zkus to třeba promazat předělat a zístit který řádek nebo kód tomu může vadit...nebo ten kód zkrátka máš špatně...tak ho zaměň zaten co ti vypisuje...já mc pluginy nedělám a ani to neumím, ale vypadá to prakticky stejně jako tvorba pluginů do CSka, akorát jiné kódy.
AMXMODX PAWNER, FORMER MAPER
My
Steam acc. a lot of lost years in my life lol
Discord: ^TheLaoming#6969
Obrázek

Obrázek
Obrázek

Uživatelský avatar
Mysteria
Příspěvky: 9122
Registrován: 26 pro 2009, 15:40
Reputation: 7
Bydliště: Česká republika
Kontaktovat uživatele:

Re: Lobby plugin - chyba v menu

#3 Příspěvekod Mysteria » 20 kvě 2015, 10:49

Pawn stejný jako Java? Ehm...

Uživatelský avatar
Arcas
Příspěvky: 1406
Věk: 26
Registrován: 13 bře 2012, 19:15
Reputation: 0

Re: Lobby plugin - chyba v menu

#4 Příspěvekod Arcas » 20 kvě 2015, 11:00

http://stackoverflow.com/questions/3903 ... tic-method

Tady máš krásné vysvětlení. Pokud není určeno jinak, funkce je non-static. To znamená, že dokud se nevytvoří objekt, nelze k ní přistupovat. Typické je to pro funkce které pracují s proměnnýma třídy. Př.:

Kód: Vybrat vše

class test{
    private String name;

    public String getName(){
        return name;
    }

}

class main{
    public static void main(){
        Test player = new test();
        test.getName();
    }
}


Tato funkce musí být non-static, protože pracuje s proměnnou name, která je součástí instance. Avšak, pokud funkci využívám i bez objektu (tzn. veškeré informace ji dodám při použití, tak ji mohu utvořit static. Př.:

Kód: Vybrat vše

class math{
    public static int countNumbers(int one, int two){
        return one + two;
    }
}

class main{
    public static void main(){
        math.sectiCisla(1, 2);
    }
}
Čeština a jiné jazyky jsou Freeware, ale ne Opensource!!! To znamená, že s nimi můžete nakládat jak chcete, ale nesmíte je upravovat...

// no comment

Uranus-Portal.com
Obrázek

Uživatelský avatar
TheLaoming
Příspěvky: 321
Věk: 27
Registrován: 14 bře 2015, 20:42
Reputation: 2
Bydliště: Ostrava !!!
Kontaktovat uživatele:

Re: Lobby plugin - chyba v menu

#5 Příspěvekod TheLaoming » 20 kvě 2015, 11:20

Mysteria píše:Pawn stejný jako Java? Ehm...



Promiň, ale mě ty kody přijdou prakticky stejné :D samozřejmě funkce atd jsou jiné..
AMXMODX PAWNER, FORMER MAPER
My
Steam acc. a lot of lost years in my life lol
Discord: ^TheLaoming#6969
Obrázek

Obrázek
Obrázek

Uživatelský avatar
Arcas
Příspěvky: 1406
Věk: 26
Registrován: 13 bře 2012, 19:15
Reputation: 0

Re: Lobby plugin - chyba v menu

#6 Příspěvekod Arcas » 20 kvě 2015, 13:28

Tvá rada byla (i když dobře míněná) zcela nemístná. Ať pracuješ v jakémkoliv jazyce, tak pracovat stylem ,,promažu to a uvidím" je zcela mimo mísu. Obzvlášť v jeho případě, kdy problém není v kódu ale v jeho interpretaci programátorem (neumí pracovat se static a nonstatic a proto se ptá na radu).

-- 20 kvě 2015, 13:28 --

Tvá rada byla (i když dobře míněná) zcela nemístná. Ať pracuješ v jakémkoliv jazyce, tak pracovat stylem ,,promažu to a uvidím" je zcela mimo mísu. Obzvlášť v jeho případě, kdy problém není v kódu ale v jeho interpretaci programátorem (neumí pracovat se static a nonstatic a proto se ptá na radu).
Čeština a jiné jazyky jsou Freeware, ale ne Opensource!!! To znamená, že s nimi můžete nakládat jak chcete, ale nesmíte je upravovat...

// no comment

Uranus-Portal.com
Obrázek


Zpět na „Off topic“

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 13 hostů