Crash pluginu, aneb dělám si vlastní plugin..

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

Re: Crash pluginu, aneb dělám si vlastní plugin..

#11 Příspěvekod kamikatze » 30 kvě 2015, 11:53

Takže si mam udělat package a tam to nějak systematicky roztřídit? a ještě.. nepotřebuju te Main říct něco jako že má čerpat z jiných package, třeba z "me.nathan.listener.listener" ?

MODRA - název package
Fialová - třída.java

kamikatze
Příspěvky: 176
Registrován: 24 zář 2014, 16:33
Reputation: 0

Re: Crash pluginu, aneb dělám si vlastní plugin..

#12 Příspěvekod kamikatze » 30 kvě 2015, 19:24

Kód: Vybrat vše

> [19:27:28 ERROR]: Error occurred while enabling StevesWar v1.0 (Is it up to date?)
java.lang.NullPointerException
at me.nathan.plugin.Main.onEnable(Main.java:20) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) ~[minecraft_server.jar:git-Spigot-870264a-0a645a2]

at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:335) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at org.bukkit.craftbukkit.v1_8_R2.CraftServer.loadPlugin(CraftServer.java:356) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at org.bukkit.craftbukkit.v1_8_R2.CraftServer.enablePlugins(CraftServer.java:316) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at org.bukkit.craftbukkit.v1_8_R2.CraftServer.reload(CraftServer.java:746) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at org.bukkit.Bukkit.reload(Bukkit.java:534) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:25) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at org.bukkit.craftbukkit.v1_8_R2.CraftServer.dispatchCommand(CraftServer.java:646) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at org.bukkit.craftbukkit.v1_8_R2.CraftServer.dispatchServerCommand(CraftServer.java:632) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at net.minecraft.server.v1_8_R2.DedicatedServer.aN(DedicatedServer.java:405) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at net.minecraft.server.v1_8_R2.DedicatedServer.A(DedicatedServer.java:369) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at net.minecraft.server.v1_8_R2.MinecraftServer.z(MinecraftServer.java:651) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at net.minecraft.server.v1_8_R2.MinecraftServer.run(MinecraftServer.java:554) [minecraft_server.jar:git-Spigot-870264a-0a645a2]


Kde je chyba ted ?

kamikatze
Příspěvky: 176
Registrován: 24 zář 2014, 16:33
Reputation: 0

Re: Crash pluginu, aneb dělám si vlastní plugin..

#13 Příspěvekod kamikatze » 30 kvě 2015, 22:21

na 20. řádku je toto:

Kód: Vybrat vše

      getCommand("setspawn").setExecutor(new Commands(this));


Zde je Commands.java

Kód: Vybrat vše

package me.nathan.commandy;

import me.nathan.plugin.Main;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;

public class Commands implements CommandExecutor {
   
   public Main plugin;
   public Commands(Main instance) {
      plugin = instance;
   }
   
   
   @Override
   public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
      Player p = (Player)sender;
      Plugin pl = plugin;
      if(!(sender instanceof Player)) {
         System.out.println("Tento prikaz mohou pouzit jenom hraci!");
         return true;
      }
      if(cmd.getName().equalsIgnoreCase("setspawn")) {
         if(!(sender.hasPermission("sv.setspawn"))) {
            sender.sendMessage(ChatColor.RED + plugin.getConfig().getString("setspawn_no_permission"));
         } else {
            plugin.getConfig().set("spawn.svet", p.getLocation().getWorld().getName());
            plugin.getConfig().set("spawn.x", p.getLocation().getBlockX());
            plugin.getConfig().set("spawn.y", p.getLocation().getBlockY());
            plugin.getConfig().set("spawn.z", p.getLocation().getBlockZ());
            p.sendMessage(ChatColor.GREEN + pl.getConfig().getString("setspawn_message"));
         } if (cmd.getName().equalsIgnoreCase("spawn")) {
            if(pl.getConfig().getConfigurationSection("spawn") == null) {
               p.sendMessage(ChatColor.RED + pl.getConfig().getString("no_spawn_created"));
            } else {
               World w = Bukkit.getServer().getWorld(pl.getConfig().getString("spawn.svet"));
               double x = pl.getConfig().getInt("spawn.x");
               double y = pl.getConfig().getInt("spawn.y");
               double z = pl.getConfig().getInt("spawn.z");
               p.teleport(new Location(w, x, y, z));
               p.sendMessage(ChatColor.GREEN + pl.getConfig().getString("tp_spawn_message"));
            }
         }
      }
      return true;
   }

}

Mike8748
Příspěvky: 823
Registrován: 30 bře 2014, 10:05
Reputation: 28

Re: Crash pluginu, aneb dělám si vlastní plugin..

#14 Příspěvekod Mike8748 » 31 kvě 2015, 08:57

Kód: Vybrat vše

getCommand("setspawn").setExecutor(new Commands(this));


getCommand("setspawn") ti vrátí null v případě že tvůj plugin nedefinuje příkaz setspawn v souboru plugin.yml

kamikatze
Příspěvky: 176
Registrován: 24 zář 2014, 16:33
Reputation: 0

Re: Crash pluginu, aneb dělám si vlastní plugin..

#15 Příspěvekod kamikatze » 31 kvě 2015, 10:29

Takže řešení ?...

Mike8748
Příspěvky: 823
Registrován: 30 bře 2014, 10:05
Reputation: 28

Re: Crash pluginu, aneb dělám si vlastní plugin..

#16 Příspěvekod Mike8748 » 31 kvě 2015, 11:12

no řešení bude v plugin.yml definovat ten příkaz....

Kód: Vybrat vše

commands:
  setspawn:
    description: popis prikazu setspawn
    usage: /<command>



http://wiki.bukkit.org/Plugin_Tutorial# ... Plugin.yml

kamikatze
Příspěvky: 176
Registrován: 24 zář 2014, 16:33
Reputation: 0

Re: Crash pluginu, aneb dělám si vlastní plugin..

#17 Příspěvekod kamikatze » 31 kvě 2015, 15:24

Tak jo.. fungovat to funguje a když dam /setspawn tak mi to napíše co se má, jenže když dam spawn tak se nic nestane..

-- 31 kvě 2015, 15:25 --

ani se mi config.yml nezobrazí, prázdný soubor.

Mike8748
Příspěvky: 823
Registrován: 30 bře 2014, 10:05
Reputation: 28

Re: Crash pluginu, aneb dělám si vlastní plugin..

#18 Příspěvekod Mike8748 » 31 kvě 2015, 15:47

Kód: Vybrat vše

getCommand("setspawn").setExecutor(new Commands(this));

tohle říká že příkaz /setspawn má být "obsloužen" třídou Commands
příkaz /spawn máš definovaný kde?

v kódu ve třídě Commands kontroluješ jestli příkaz náhodou není /spawn, ale pokud tu třídu nepřiřadíš příkazu (stejně jako si to udělal pro /setspawn) tak se ta část kódu nikdy nevykoná

a config.yml že máš prázdný... a ukládáš do něj vůbec něco? zapisujes konfig při ukončování pluginu (metoda onDisable) ?

kamikatze
Příspěvky: 176
Registrován: 24 zář 2014, 16:33
Reputation: 0

Re: Crash pluginu, aneb dělám si vlastní plugin..

#19 Příspěvekod kamikatze » 31 kvě 2015, 16:09

sepsal jsem tu funkci znova:

Spawn..

Kód: Vybrat vše

package me.nathan.commandy;

import me.nathan.plugin.Main;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;

public class Commands implements CommandExecutor {
   
   public Main plugin;
   public Commands(Main instance) {
      plugin = instance;
   }
   Plugin pl = plugin;
   
   @Override
   public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
      Player p = (Player)sender;
      if(cmd.getName().equalsIgnoreCase("setspawn")) {
         if(!(sender instanceof Player)) {
            System.out.println("Tento prikaz smi pouzit jen hraci!");
         } else if (sender.hasPermission("sv.setspawn")) {
               pl.getConfig().set("spawn.svet", p.getLocation().getWorld().getName());
               pl.getConfig().set("spawn.x", p.getLocation().getBlockX());
               pl.getConfig().set("spawn.y", p.getLocation().getBlockY());
               pl.getConfig().set("spawn.z", p.getLocation().getBlockZ());
            p.sendMessage(ChatColor.GREEN + pl.getConfig().getString("spawn_created"));
         }
      } else if (cmd.getName().equalsIgnoreCase("spawn")) {
         if(!(sender instanceof Player)) {
            System.out.println("Tento prikaz smi pouzit jen hraci!");
         } else {
            World w = Bukkit.getServer().getWorld(pl.getConfig().getString("spawn.world"));
            double x = pl.getConfig().getDouble("spawn.x");
            double y = pl.getConfig().getDouble("spawn.y");
            double z = pl.getConfig().getDouble("spawn.z");
            p.teleport(new Location(w, x, y, z));
            p.sendMessage(ChatColor.GREEN + pl.getConfig().getString("spawn_teleported"));
         }
         return true;
      }
      return true;
   }

}


Main..

Kód: Vybrat vše

package me.nathan.plugin;

import org.bukkit.event.Listener;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;

import me.nathan.listener.PlayerListener;
import me.nathan.commandy.Commands;

public class Main extends JavaPlugin {

   private PlayerListener PlayerListener = new PlayerListener();

   public void onEnable() {
      System.out.println("Plugin aktivovan!");
      PluginManager pm = getServer().getPluginManager();
      pm.registerEvents(this.PlayerListener, this);
      getConfig().options().copyDefaults(true);
      saveConfig();
      getCommand("setspawn").setExecutor(new Commands(this));
      getCommand("spawn").setExecutor(new Commands(this));
   }
   
   public void onDisable() {
      saveConfig();
      System.out.println("Plugin deaktivovan!");
   }
}


config:

Kód: Vybrat vše

spawn_created: 'Spawn ulozen!'
spawn_teleported: 'Byl jsi teleportován!'
spawn.world: 'world'


plugin.yml

Kód: Vybrat vše

 name: StevesWar
 version: 1.0
 description: Simple plugin
 author: NathanCZ
 website: www.recandplay.fakaheda.eu
 
 main: me.nathan.plugin.Main
 database: false
 
 commands:
   spawn:
     description: Teleport to spawn
   setspawn:
     description: Set your spawn
 permissions:
   sv.setspawn:
     description: Set up your spawn


Chyba (Při použítí obou příkazů)

Kód: Vybrat vše

> [16:07:44 INFO]: NathanCZ issued server command: /setspawn
> [16:07:44 ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'setspawn' in plugin StevesWar v1.0
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[minecraft_server.jar:git-Spigot-870264a-0a645a2]

at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[minecraft_server.jar:git-Spigot-870264a-0a645a2]

at org.bukkit.craftbukkit.v1_8_R2.CraftServer.dispatchCommand(CraftServer.java:646) ~[minecraft_server.jar:git-Spigot-870264a-0a645a2]

at net.minecraft.server.v1_8_R2.PlayerConnection.handleCommand(PlayerConnection.java:1139) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at net.minecraft.server.v1_8_R2.PlayerConnection.a(PlayerConnection.java:974) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at net.minecraft.server.v1_8_R2.PacketPlayInChat.a(PacketPlayInChat.java:45) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at net.minecraft.server.v1_8_R2.PacketPlayInChat.a(PacketPlayInChat.java:1) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at net.minecraft.server.v1_8_R2.PlayerConnectionUtils$1.run(SourceFile:13) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [?:1.7.0_51]
at java.util.concurrent.FutureTask.run(FutureTask.java:262) [?:1.7.0_51]
at net.minecraft.server.v1_8_R2.SystemUtils.a(SourceFile:60) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at net.minecraft.server.v1_8_R2.MinecraftServer.A(MinecraftServer.java:712) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at net.minecraft.server.v1_8_R2.DedicatedServer.A(DedicatedServer.java:368) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at net.minecraft.server.v1_8_R2.MinecraftServer.z(MinecraftServer.java:651) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at net.minecraft.server.v1_8_R2.MinecraftServer.run(MinecraftServer.java:554) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at java.lang.Thread.run(Thread.java:744) [?:1.7.0_51]
Caused by: java.lang.NullPointerException
at me.nathan.commandy.Commands.onCommand(Commands.java:30) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[minecraft_server.jar:git-Spigot-870264a-0a645a2]

... 15 more
> [16:07:46 INFO]: NathanCZ issued server command: /spawn
> [16:07:46 ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'spawn' in plugin StevesWar v1.0
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[minecraft_server.jar:git-Spigot-870264a-0a645a2]

at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[minecraft_server.jar:git-Spigot-870264a-0a645a2]

at org.bukkit.craftbukkit.v1_8_R2.CraftServer.dispatchCommand(CraftServer.java:646) ~[minecraft_server.jar:git-Spigot-870264a-0a645a2]

at net.minecraft.server.v1_8_R2.PlayerConnection.handleCommand(PlayerConnection.java:1139) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at net.minecraft.server.v1_8_R2.PlayerConnection.a(PlayerConnection.java:974) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at net.minecraft.server.v1_8_R2.PacketPlayInChat.a(PacketPlayInChat.java:45) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at net.minecraft.server.v1_8_R2.PacketPlayInChat.a(PacketPlayInChat.java:1) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at net.minecraft.server.v1_8_R2.PlayerConnectionUtils$1.run(SourceFile:13) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [?:1.7.0_51]
at java.util.concurrent.FutureTask.run(FutureTask.java:262) [?:1.7.0_51]
at net.minecraft.server.v1_8_R2.SystemUtils.a(SourceFile:60) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at net.minecraft.server.v1_8_R2.MinecraftServer.A(MinecraftServer.java:712) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at net.minecraft.server.v1_8_R2.DedicatedServer.A(DedicatedServer.java:368) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at net.minecraft.server.v1_8_R2.MinecraftServer.z(MinecraftServer.java:651) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at net.minecraft.server.v1_8_R2.MinecraftServer.run(MinecraftServer.java:554) [minecraft_server.jar:git-Spigot-870264a-0a645a2]

at java.lang.Thread.run(Thread.java:744) [?:1.7.0_51]
Caused by: java.lang.NullPointerException
at me.nathan.commandy.Commands.onCommand(Commands.java:40) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[minecraft_server.jar:git-Spigot-870264a-0a645a2]

... 15 more

Mike8748
Příspěvky: 823
Registrován: 30 bře 2014, 10:05
Reputation: 28

Re: Crash pluginu, aneb dělám si vlastní plugin..

#20 Příspěvekod Mike8748 » 31 kvě 2015, 17:37

Kód: Vybrat vše

public class Commands implements CommandExecutor {
   
   public Main plugin;
   public Commands(Main instance) {
      plugin = instance;
   }
   Plugin pl = plugin;


v konstruktoru ukládáš instanci pluginu do promeny plugin, ale v metode onCommand se odkazujes na pl (která je prázdná, proto ti to hází null exception)


Zpět na „Off topic“

Kdo je online

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