Komendy w pluginie

Dyskusja w 'Archiwum' rozpoczęta przez użytkownika Grzegorz2047, Maj 9, 2012.

Status tematu:
Brak możliwości dodawania odpowiedzi.
  1. Grzegorz2047
    Offline

    Grzegorz2047 Użytkownik

    Wiadomości:
    225
    Polubienia:
    134
    Punkty:
    123
    Mam taki oto problem:
    Otóż chciałbym aby komendy mógł wykonywać jedynie gracz na serwerze a nie z pozycji konsoli.
    Oczywiście bez tego kodu da się ,żyć ,ale gdy komenda zostanie wpisana w konsoli wyrzuca błąd:
    "cant cast CommandSender to player"czyli ,że konsola nie jest graczem i nie może zostać wykonana ta komenda.Oczywiście moje tłumaczenie jest z wyjaśnieniem a w konsoli tylko wywala to co ma wywalić czyli błąd.Aby temu zapobiec chciałbym jakoś zabezpieczyć się przed próbą wpisania komendy dla gracza w konsoli,ale niestety coś mi nie wychodzi.Próbowałem np. tego warunku,ale nie działa.Także próbowałem coś innego ,ale także nie działało:
    player == null

    Jeżeli mielibyście jakiś sposób na rozwiązanie tego problemu(nie jest to ogromny problem ,ale dla estetyki muszę go dodać).
     
  2. wirher
    Offline

    wirher Nowicjusz

    Wiadomości:
    14
    Polubienia:
    1
    Punkty:
    3
    Widze nikt tu nie odpowiada, to dla potomnych zostawie rozwiazanie
    If(sender instanceof Player){
      //jest graczem
    }else{
    //nie jest
    }

    Sent from my SGS2 using tapatalk.
     
  3. Regzand
    Offline

    Regzand Użytkownik

    Wiadomości:
    328
    Polubienia:
    225
    Punkty:
    73
  4. Grzegorz2047
    Offline

    Grzegorz2047 Użytkownik

    Wiadomości:
    225
    Polubienia:
    134
    Punkty:
    123
    Aż taki nierozgarnięty nie jestem ,bo korzystałem z tych stron. a co do kodu od wirher to używałem tego także w swoim kodzie(Możesz sobie nawet zobaczyć..) ale nawet z tym coś nie chce działać tak jak powinno.Mogę podać kilka kawałków kodu jak napisany jest plugin.(dwa sposoby).
     
  5. Regzand
    Offline

    Regzand Użytkownik

    Wiadomości:
    328
    Polubienia:
    225
    Punkty:
    73
    To jest prosto z wiki.bukkit.org i mi dziala.
    Kod (text):
    1. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
    2.     Player player = null;
    3.     if (sender instanceof Player) {
    4.         player = (Player) sender;
    5.     }
    6.     if(cmd.getName().equalsIgnoreCase("KOMENDA")){
    7.             if (player == null) {
    8.                 sender.sendMessage(ChatColor.RED+"This command can only be run by a player");
    9.                 return true;
    10.             } else {
    11.                 //jak jest graczem
    12.             }
    13.     }
     
  6. wirher
    Offline

    wirher Nowicjusz

    Wiadomości:
    14
    Polubienia:
    1
    Punkty:
    3
    Nie odwoluj sie, ze jest to rozwiazanie wylacznie z bukkita. To podstawa obiektowosci, bez ktorej nic w Javie nie zrobisz. Nie rozumiem tez liczby mnogiej "zabierzecie sie". Sugerujesz, ze nie pisalem pluginow, a napisalem juz kilkanascie i to dosc skomplikowanych.

    Sent from my SGS2 using tapatalk.
     
  7. Regzand
    Offline

    Regzand Użytkownik

    Wiadomości:
    328
    Polubienia:
    225
    Punkty:
    73
    Sorki z tym "zabierzcie się", chodziło mi ogólnie o ludzi którzy chcą pisać pluginy.
    A co do kodu, doskonale wiem co to robi i to rozumiem, co nie znaczy, że nie korzystam z gotowych kawałków kodu...

    grzegorz: najlepiej by było jak byś dał całe onCommand bo możesz mieć tam jakiś inny błąd...
     
  8. Grzegorz2047
    Offline

    Grzegorz2047 Użytkownik

    Wiadomości:
    225
    Polubienia:
    134
    Punkty:
    123
    Kod (text):
    1. public boolean onCommand(CommandSender sender, Command command,String label, String[] args) {
    2.         Player player = (Player) sender;
    3.         Logger log = getLogger();
    4.        
    5.         if(command.getName().equalsIgnoreCase("slonce") && sender instanceof Player&& player.hasPermission("pogoda.slonce") ){
    6.             this.getServer().getWorlds().get(0).setStorm(false);
    7.             this.getServer().getWorlds().get(0).setThundering(false);
    8.             player.sendMessage(ChatColor.YELLOW + "rozpogodzenie");
    9.             log.info( " uzyto komendy na rozpogodzenie!!! ");
    10.             return true;
    11.         }
    12.        
    13.         else if(command.getName().equalsIgnoreCase("ok")&& /* player.isOp() ||*/ player.hasPermission("OK.info")){
    14.             player.sendMessage(ChatColor.RED + "Dostepne komendy:" );
    15.             player.sendMessage(ChatColor.GOLD + "/wylacz - wylacza serwer" );
    16.             player.sendMessage(ChatColor.WHITE + "/dzien - daje dzien na serwerze" );
    17.             player.sendMessage(ChatColor.BLUE + "/noc - daje noc na serwerze" );
    18.             player.sendMessage(ChatColor.GREEN + "/ok - wyswietla info" );
    19.             player.sendMessage(ChatColor.WHITE + "/slonce - jest slonecznie" );
    20.             player.sendMessage(ChatColor.AQUA + "/deszcz - pada deszcz" );
    21.             player.sendMessage(ChatColor.WHITE + "/burza - grzmi i pada deszcz" );
    22.             player.sendMessage(ChatColor.RED + "/walczyc - Gracze moga sie bic ze soba" );
    23.             player.sendMessage(ChatColor.WHITE + "/spokoj - Gracze nie moga sie bic ze soba" );
    24.             player.sendMessage(ChatColor.WHITE + "/bialalista - wlacza white liste" );
    25.             player.sendMessage(ChatColor.WHITE + "/poczatek - daje do ekwipunku podstawowe przedmioty " );
    26. //            player.sendMessage("");
    27.             player.sendMessage("/zycie - gracz zostaje uzdrowiony");
    28.             player.sendMessage("/dajexp - daje doswiadczenie (EXP)");
    29.             player.sendMessage("/latanie - wlacza  latanie");
    30.             player.sendMessage("/nielatanie -  wylacza latanie");
    31.             player.sendMessage("/bialalista  - wlacza whiteliste");
    32.             player.sendMessage("/trybgry - wlacza Creative lub Survival");
    33. //            player.sendMessage("");
    34.            
    35.             return true;
    36.         }
    37.        
    38.        
    39.         else if(command.getName().equalsIgnoreCase("deszcz")&& sender instanceof Player&& player.hasPermission("pogoda.deszcz") ){
    40.             this.getServer().getWorlds().get(0).setStorm(true);
    41.             this.getServer().getWorlds().get(0).setThundering(false);
    42.             player.sendMessage(ChatColor.BLUE + "Zaczyna padac deszcz");
    43.             log.info("uzyto komendy na deszcz !!! ");
    44.             return true;
    45.         }
    46.         else if(command.getName().equalsIgnoreCase("burza")&& sender instanceof Player&& player.hasPermission("pogoda.burza") ){
    47.             this.getServer().getWorlds().get(0).setStorm(true);
    48.             this.getServer().getWorlds().get(0).setThundering(true);
    49.             player.sendMessage(ChatColor.GRAY + "Rozpoczela sie burza");
    50.             log.info("uzyto komendy na burze !!! ");
    51.             return true;
    52.         }
    53.         else if(command.getName().equalsIgnoreCase("wylacz") && sender instanceof Player&& player.hasPermission("OK.wylacz") ){
    54.             player.sendMessage(ChatColor.RED + "Serwer zostaje wylaczony" );
    55.             log.info( "Wylaczono serwer komenda!!! ");
    56.             this.getServer().shutdown();
    57.             return true;
    58.         }
    59.         else if(command.getName().equalsIgnoreCase("dzien")&& sender instanceof Player&& player.hasPermission("OK.dzien") ){
    60.             this.getServer().getWorlds().get(0).setTime(0);
    61.  
    62.             return true;
    63.         }
    64.         else if(command.getName().equalsIgnoreCase("noc")&& sender instanceof Player&& player.hasPermission("OK.noc") ){
    65.             this.getServer().getWorlds().get(0).setTime(10000000);
    66.    
    67.             return true;
    68.         }
    69.         else if(command.getName().equalsIgnoreCase("czas")) {
    70.             if(sender instanceof Player) {
    71.               // Player player = (Player) sender;
    72.                 if(player.hasPermission("OK.czas")) {
    73.                     if(args.length == 1) {
    74.                         int time = Integer.parseInt(args[0]);
    75.                         player.getWorld().setTime(time);
    76.                     }
    77.               }
    78.             }
    79.             return true;
    80.         }
    81.        
    82.         else if(command.getName().equalsIgnoreCase("walczyc")&& sender instanceof Player&& player.hasPermission("OK.walczyc") ){
    83.                 this.getServer().getWorlds().get(0).setPVP(true);
    84.                 player.sendMessage(ChatColor.WHITE + "Wlaczono pvp na serwerze");
    85.                 return true;
    86.             }
    87.        
    88.         else if(command.getName().equalsIgnoreCase("spokoj")&& sender instanceof Player&& player.hasPermission("OK.spokoj") ){
    89.                 this.getServer().getWorlds().get(0).setPVP(false);
    90.                 player.sendMessage(ChatColor.WHITE + "Wylaczono pvp na serwerze");
    91.                 return true;
    92.             }
    93.        
    94.         else if(command.getName().equalsIgnoreCase("bialalista")&& sender instanceof Player&& player.hasPermission("OK.bialalista") ){
    95.                 this.getServer().setWhitelist(true);
    96.                 player.sendMessage(ChatColor.WHITE + "Wlaczono white liste na serwerze");
    97.                 return true;
    98.                 }
    99.        
    100.         else if(command.getName().equalsIgnoreCase("poczatek")  && sender instanceof Player&& player.hasPermission("OK.poczatek") ){
    101.                 PlayerInventory inventory = player.getInventory();
    102.             ItemStack stack = new ItemStack(Material.STONE_SWORD, 64);
    103.                 inventory.addItem(stack);
    104.             stack = new ItemStack(Material.STONE_AXE, 64);
    105.                 inventory.addItem(stack);
    106.             stack = new ItemStack(Material.STONE_PICKAXE, 64);
    107.                 inventory.addItem(stack);
    108.             stack = new ItemStack(Material.STONE_SPADE, 64);
    109.                 inventory.addItem(stack);
    110.                 player.sendMessage(ChatColor.WHITE + "Otrzymales stack podstawowych itemkow");
    111.                 return true;
    112.             }
    113.        
    114.         else if(command.getName().equalsIgnoreCase("trybgry")&& sender instanceof Player&&  player.hasPermission("OK.trybgry") ){
    115.            
    116.             if(player.getGameMode()== GameMode.SURVIVAL){
    117.             player.setGameMode(GameMode.CREATIVE);
    118.             }
    119.             else
    120.             {
    121.                 player.setGameMode(GameMode.SURVIVAL);
    122.             }
    123.             return true;
    124.            
    125.         }
    126.        
    127.         else if(command.getName().equalsIgnoreCase("dajexp")&& sender instanceof Player&&  player.hasPermission("OK.exp"))  
    128.         {
    129.             player.giveExp(1000);
    130.             return true;
    131.         }
    132.        
    133.         else if(command.getName().equalsIgnoreCase("latanie")&& sender instanceof Player&&  player.hasPermission("OK.latanie"))  
    134.         {
    135.        
    136.             player.setAllowFlight(true);
    137.             player.setFlying(true);
    138.             log.info("Zezwolono uzywanie komendy na latanie (info. ktos uzyl komendy na latanie) !");
    139.             player.sendMessage(ChatColor.MAGIC+ "trololololo" + ChatColor.GOLD + "Mozesz juz latac :)");
    140.             return true;
    141.         }
    142.         else if(command.getName().equalsIgnoreCase("nielatanie")&& sender instanceof Player&&  player.hasPermission("OK.latanie"))  
    143.         {
    144.             player.setGameMode(GameMode.CREATIVE);
    145.             player.setGameMode(GameMode.SURVIVAL);
    146.             player.sendMessage(ChatColor.MAGIC+ "trololololo" + ChatColor.DARK_AQUA + "Wylaczono latanie :)");
    147.             return true;
    148.         }
    149.         else if(command.getName().equalsIgnoreCase("zycie") &&  player.hasPermission("OK.zycie"))  
    150.         {
    151.             player.setHealth(20);
    152.             player.setFoodLevel(20);
    153.             player.sendMessage("Zostales uzdrowiony");
    154.             return true;
    155.         }  
    156.        
    157.         else {
    158.             log.info("Ta komenda moze byc uzyta tylko przez gracza!");
    159.             return false;
    160.             }
    161.            
    162.  
     
  9. Regzand
    Offline

    Regzand Użytkownik

    Wiadomości:
    328
    Polubienia:
    225
    Punkty:
    73
    zamiast
    Kod (text):
    1. Player player = (Player) sender;
    daj
    Kod (text):
    1. Player player = null;
    2.     if (sender instanceof Player) {
    3.         player = (Player) sender;
    4.     }
    a zamiast
    Kod (text):
    1. sender instanceof Player
    daj
    Kod (text):
    1. player != null
     
  10. Grzegorz2047
    Offline

    Grzegorz2047 Użytkownik

    Wiadomości:
    225
    Polubienia:
    134
    Punkty:
    123
    OK dzięki.  Spróbuję i wtedy zobaczymy.
     
  11. Mbober
    Offline

    Mbober Użytkownik

    Wiadomości:
    0
    Polubienia:
    0
    Punkty:
    1
    Witam! Sorki że piszę tutaj ale nie mogę dodawać tematów. Przejdę do sedna sprawy. Piszę plugin ale potrzebuje ostatniej części skryptu, a mianowicie odczytywania informacji z pliku. Chciałbym móc samemu wybierać skąd wziąć plik. Bardzo bym się ucieszył gdyby mi to ktoś podał.
     
Status tematu:
Brak możliwości dodawania odpowiedzi.