Help me please! Plugin template wont even work!

Discussion in 'Plugin Development' started by Cmurphy, Jan 17, 2011.

Thread Status:
Not open for further replies.
  1. Offline

    Cmurphy

    Hey guys anyone know why this wont work?
    The main code:(ignore the php script tags)
    Code:
    [B][/B][B]
    package[/B]
     com.Cmurphy.bukkit.bukkitPlugin;                                         
    
    [B]
    import[/B]
     java.io.File;[B]
    import[/B]
     java.util.HashMap;[B]
    import[/B]
     org.bukkit.Player;[B]
    import[/B]
     org.bukkit.Server;[B]
    import[/B]
     [U]org.bukkit.event.Event.Priority[/U];[B]
    import[/B]
     [U]org.bukkit.event.Event[/U];[B]
    import[/B]
     [U]org.bukkit.event.player.PlayerEvent[/U];[B]
    import[/B]
     org.bukkit.plugin.PluginDescriptionFile;[B]
    import[/B]
     org.bukkit.plugin.PluginLoader;[B]
    import[/B]
     org.bukkit.plugin.java.JavaPlugin;[B]
    import[/B]
     org.bukkit.plugin.PluginManager; 
    /**
    *[U]<pluginname>[/U]
     for [U]Bukkit[/U][U][/U]
    *
    *[B]@author[/B] 
    [U]<yourname>[/U][U][/U]
    */[B]
    public[/B] [B]class[/B] bukkitPlugin [B]extends[/B]
     JavaPlugin { [B]private[/B] [B]final[/B] bukkitPluginPlayerListener [U]playerListener[/U] = [B]new[/B] bukkitPluginPlayerListener([B]this[/B]
    ); [B]private[/B] [B]final[/B] bukkitPluginBlockListener [U]blockListener[/U] = [B]new[/B] bukkitPluginBlockListener([B]this[/B]
    ); [B]private[/B] [B]final[/B] HashMap<Player, Boolean> debugees = [B]new[/B]
     HashMap<Player, Boolean>();  [B]public[/B]
     bukkitPlugin(PluginLoader pluginLoader, Server instance, PluginDescriptionFile desc, File plugin, ClassLoader cLoader) { [B]super[/B]
    (pluginLoader, instance, desc, plugin, cLoader); // [B]TODO[/B]
    : Place any custom [U]initialisation[/U] code here  
    // NOTE: Event registration should be done in onEnable not here as all events are unregistered when a [U]plugin[/U] is disabled
    }
       [B]public[/B] [B]void[/B]
     onEnable() { // [B]TODO[/B]
    : Place any custom enable code here including the registration of any events  
    // Register our events
    PluginManager [U]pm[/U] = getServer().getPluginManager();
      
    // EXAMPLE: Custom code, here we just output some info so we can check all is well
    PluginDescriptionFile pdfFile =[B]this[/B]
    .getDescription();
    System.[I]out[/I].println( pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!"
     );
    }
    [B]public[/B] [B]void[/B]
     onDisable() { // [B]TODO[/B]
    : Place any custom disable code here  
    // NOTE: All registered events are automatically unregistered when a [U]plugin[/U] is disabled  
    // EXAMPLE: Custom code, here we just output some info so we can check all is well
    System.[I]out[/I].println("Goodbye world!"
    );
    }
    [B]public[/B] [B]boolean[/B] isDebugging([B]final[/B]
     Player player) { [B]if[/B] (debugees
    .containsKey(player)) { [B]return[/B] debugees
    .get(player);
    }[B]else[/B]
     { [B]return[/B] [B]false[/B]
    ;
    }
    }
     [B]public[/B] [B]void[/B] setDebugging([B]final[/B] Player player, [B]final[/B] [B]boolean[/B]
     value) { debugees
    .put(player, value);
    }
    }
     
    The player listener
    Code:
    package com.Cmurphy.bukkit.bukkitPlugin;
    import org.bukkit.Location;
    import org.bukkit.Player;
    import org.bukkit.event.player.PlayerChatEvent;
    import org.bukkit.event.player.PlayerEvent;
    import org.bukkit.event.player.PlayerListener;
    import org.bukkit.event.player.PlayerMoveEvent;
    /**
    * Handle events for all Player related events
    * @author <yourname>
    */
    public class bukkitPluginPlayerListener extends PlayerListener {
        private final bukkitPlugin plugin;
        public bukkitPluginPlayerListener(bukkitPlugin instance) {
            plugin = instance;
        }
        //Insert Player related code here
    }
    
    The block listener
    Code:
    package com.Cmurphy.bukkit.bukkitPlugin;
    import org.bukkit.Block;
    import org.bukkit.BlockFace;
    import org.bukkit.Material;
    import org.bukkit.event.block.BlockCanBuildEvent;
    import org.bukkit.event.block.BlockListener;
    import org.bukkit.event.block.BlockPhysicsEvent;
    /**
    * <pluginname> block listener
    * @author <yourname>
    */
    public class bukkitPluginBlockListener extends BlockListener {
        private final bukkitPlugin plugin;
        public bukkitPluginBlockListener(final bukkitPlugin plugin) {
            this.plugin = plugin;
        }
        //put all Block related code here
    }
    
    The errors
    Code:
    2011-01-17 13:55:37 [INFO] Starting minecraft server version Beta 1.2_01
    2011-01-17 13:55:37 [INFO] Loading properties
    2011-01-17 13:55:37 [INFO] Starting Minecraft server on *:25565
    2011-01-17 13:55:37 [INFO] Preparing level "world"
    2011-01-17 13:55:37 [INFO] Preparing start region
    Preparing spawn area: 4%
    Preparing spawn area: 12%
    Preparing spawn area: 28%
    Preparing spawn area: 40%
    Preparing spawn area: 65%
    Preparing spawn area: 89%
    Jan 17, 2011 1:55:44 PM org.bukkit.plugin.SimplePluginManager loadPlugins
    SEVERE: Could not load plugins\bukkitPlugin.jar in plugins: null
    org.bukkit.plugin.InvalidPluginException
            at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
    ava:83)
            at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.
    java:115)
            at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
    .java:80)
            at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:41)
            at net.minecraft.server.MinecraftServer.e(MinecraftServer.java:153)
            at net.minecraft.server.MinecraftServer.c(MinecraftServer.java:140)
            at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:104)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:177)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:512)
    Caused by: java.lang.ClassNotFoundException: com.Cmurphy.bukkit.bukkitPlugin
            at java.net.URLClassLoader$1.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(Unknown Source)
            at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.
    java:29)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at java.lang.Class.forName0(Native Method)
            at java.lang.Class.forName(Unknown Source)
            at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
    ava:77)
            ... 8 more
    2011-01-17 13:55:44 [INFO] WorldEdit nightly loaded.
    2011-01-17 13:55:44 [INFO] [TeleConfirmLite] [v0.5]
    2011-01-17 13:55:44 [INFO] Done! For help, type "help" or "?"
    
     
  2. Offline

    apexearth

    Fix that main code block and I'm sure we can help you better.

    In the error I see:
    Caused by: java.lang.ClassNotFoundException: com.Cmurphy.bukkit.bukkitPlugin

    You probably have to change your yml file so it is com.Cmurphy.bukkit.bukkitPlugin.bukkitPlugin
     
  3. Offline

    MysticX

    The template isn't up-to-date.

    You need to change some imports and the plugin constructor. But Eclipse or any other IDE should mark the relevant lines in the source code.

    org.bukkit.Player -> org.bukkit.entity.Player
    org.bukkit.Block -> org.bukkit.block.Block
    org.bukkit.BlockFace -> org.bukkit.block.BlockFace

    Code:
    public <pluginname>(PluginLoader pluginLoader, Server instance, PluginDescriptionFile desc, File plugin, ClassLoader cLoader) {
            super(pluginLoader, instance, desc, plugin, cLoader);
    needs a change to

    Code:
    public <pluginname> (PluginLoader pluginLoader, Server instance, PluginDescriptionFile desc, File folder, File plugin, ClassLoader cLoader) {
            super(pluginLoader, instance, desc, folder, plugin, cLoader);
         
    And also in the plugin.yml you need to change the main value:
    com.mysticx.bukkit.backupplugin.BackupPlugin instead of com.bukkit.mysticx.backupplugin (for example)
     
  4. Offline

    Cmurphy

    Changed the yml file, got this
    Code:
      [B][/B]
    
     2011-01-17 14:12:08 [INFO] Starting minecraft server version Beta 1.2_01
    2011-01-17 14:12:08 [INFO] Loading properties
    2011-01-17 14:12:08 [INFO] Starting Minecraft server on *:25565
    2011-01-17 14:12:08 [INFO] Preparing level "world"
    2011-01-17 14:12:08 [INFO] Preparing start region
    Preparing spawn area: 4%
    Preparing spawn area: 12%
    Preparing spawn area: 20%
    Preparing spawn area: 36%
    Preparing spawn area: 44%
    Preparing spawn area: 65%
    Preparing spawn area: 85%
    Jan 17, 2011 2:12:16 PM org.bukkit.plugin.SimplePluginManager loadPlugins
    SEVERE: Could not load plugins\bukkitPlugin.jar in plugins: null
    org.bukkit.plugin.InvalidPluginException
            at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
    ava:83)
            at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.
    java:115)
            at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
    .java:80)
            at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:41)
            at net.minecraft.server.MinecraftServer.e(MinecraftServer.java:153)
            at net.minecraft.server.MinecraftServer.c(MinecraftServer.java:140)
            at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:104)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:177)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:512)
    Caused by: java.lang.NoSuchMethodException: com.Cmurphy.bukkit.bukkitPlugin.bukk
    itPlugin.<init>(org.bukkit.plugin.PluginLoader, org.bukkit.Server, org.bukkit.pl
    ugin.PluginDescriptionFile, java.io.File, java.io.File, java.lang.ClassLoader)
            at java.lang.Class.getConstructor0(Unknown Source)
            at java.lang.Class.getConstructor(Unknown Source)
            at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
    ava:79)
            ... 8 more
    2011-01-17 14:12:16 [INFO] WorldEdit nightly loaded.
    2011-01-17 14:12:16 [INFO] [TeleConfirmLite] [v0.5]
    2011-01-17 14:12:16 [INFO] Done! For help, type "help" or "?"
    
     
  5. Offline

    MysticX

    Update your constructor and your imports.
     
  6. Offline

    Sharpiedew

    I went through the above things and fixed them. Then i just ran the sample and got this. Im not brand new to coding but im not good at finding errors. Please Help me.
    Code:
    SEVERE: java.lang.String cannot be cast to java.util.Map (Is it up to date?)
    java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Map
        at org.bukkit.plugin.PluginDescriptionFile.<init>(PluginDescriptionFile.java:24)
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:65)
        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:115)
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:80)
        at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:43)
        at net.minecraft.server.MinecraftServer.e(MinecraftServer.java:153)
        at net.minecraft.server.MinecraftServer.c(MinecraftServer.java:140)
        at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:104)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:177)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:512)
    
    Please Help....
     
  7. Offline

    MysticX

    Maybe your plugin descriptor is invalid, can you please post it here, too?
     
  8. Offline

    Sharpiedew

    Heres Everything. PS It says in Eclipse that i have no errors.
    SamplePlugin.java
    Code:
    package com.sharpiedew.bukkit.sampleplugin.sampleplugin;
    
    import java.io.File;
    import java.util.HashMap;
    import org.bukkit.entity.Player;
    import org.bukkit.Server;
    import org.bukkit.event.Event.Priority;
    import org.bukkit.event.Event;
    import org.bukkit.plugin.PluginDescriptionFile;
    import org.bukkit.plugin.PluginLoader;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.plugin.PluginManager;
    
    /**
     * Sample plugin for Bukkit
     *
     * @author Dinnerbone
     */
    public class SamplePlugin extends JavaPlugin {
        private final SamplePlayerListener playerListener = new SamplePlayerListener(this);
        private final SampleBlockListener blockListener = new SampleBlockListener(this);
        private final HashMap<Player, Boolean> debugees = new HashMap<Player, Boolean>();
    
        public SamplePlugin(PluginLoader pluginLoader, Server instance, PluginDescriptionFile desc, File folder, File plugin, ClassLoader cLoader) {
            super(pluginLoader, instance, desc, folder, plugin, cLoader);
            // TODO: Place any custom initialisation code here
    
            // NOTE: Event registration should be done in onEnable not here as all events are unregistered when a plugin is disabled
        }
    
        public void onDisable() {
            // TODO: Place any custom disable code here
    
            // NOTE: All registered events are automatically unregistered when a plugin is disabled
    
            // EXAMPLE: Custom code, here we just output some info so we can check all is well
            System.out.println("Goodbye world!");
        }
    
        public void onEnable() {
            // TODO: Place any custom enable code here including the registration of any events
    
            // Register our events
            PluginManager pm = getServer().getPluginManager();
            pm.registerEvent(Event.Type.PLAYER_JOIN, playerListener, Priority.Normal, this);
            pm.registerEvent(Event.Type.PLAYER_QUIT, playerListener, Priority.Normal, this);
            pm.registerEvent(Event.Type.PLAYER_COMMAND, playerListener, Priority.Normal, this);
            pm.registerEvent(Event.Type.PLAYER_MOVE, playerListener, Priority.Normal, this);
            pm.registerEvent(Event.Type.BLOCK_PHYSICS, blockListener, Priority.Normal, this);
            pm.registerEvent(Event.Type.BLOCK_CANBUILD, blockListener, Priority.Normal, this);
    
            // EXAMPLE: Custom code, here we just output some info so we can check all is well
            PluginDescriptionFile pdfFile = this.getDescription();
            System.out.println( pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!" );
        }
    
        public boolean isDebugging(final Player player) {
            if (debugees.containsKey(player)) {
                return debugees.get(player);
            } else {
                return false;
            }
        }
    
        public void setDebugging(final Player player, final boolean value) {
            debugees.put(player, value);
        }
    }
    
    SamplePlayerListener.java
    Code:
    package com.sharpiedew.bukkit.sampleplugin.sampleplugin;
    
    import org.bukkit.Location;
    import org.bukkit.entity.Player;
    import org.bukkit.event.player.PlayerChatEvent;
    import org.bukkit.event.player.PlayerEvent;
    import org.bukkit.event.player.PlayerListener;
    import org.bukkit.event.player.PlayerMoveEvent;
    
    /**
     * Handle events for all Player related events
     * @author Dinnerbone
     */
    public class SamplePlayerListener extends PlayerListener {
        private final SamplePlugin plugin;
    
        public SamplePlayerListener(SamplePlugin instance) {
            plugin = instance;
        }
    
        @Override
        public void onPlayerJoin(PlayerEvent event) {
            System.out.println(event.getPlayer().getName() + " joined the server! :D");
        }
    
        @Override
        public void onPlayerQuit(PlayerEvent event) {
            System.out.println(event.getPlayer().getName() + " left the server! :'(");
        }
    
        @Override
        public void onPlayerCommand(PlayerChatEvent event) {
            String[] split = event.getMessage().split(" ");
            Player player = event.getPlayer();
    
            if (split[0].equalsIgnoreCase("/pos")) {
                if (split.length == 1) {
                    Location location = player.getLocation();
                    player.sendMessage("You are currently at " + location.getX() +"," + location.getY() + "," + location.getZ() +
                            " with " + location.getYaw() + " yaw and " + location.getPitch() + " pitch");
                } else if (split.length == 4) {
                    try {
                        double x = Double.parseDouble(split[1]);
                        double y = Double.parseDouble(split[2]);
                        double z = Double.parseDouble(split[3]);
    
                        player.teleportTo(new Location(player.getWorld(), x, y, z));
                    } catch (NumberFormatException ex) {
                        player.sendMessage("Given location is invalid");
                    }
                } else {
                    player.sendMessage("Usage: '/pos' to get current position, or '/pos x y z' to teleport to x,y,z");
                }
    
                event.setCancelled(true);
            } else if (split[0].equalsIgnoreCase("/debug")) {
                plugin.setDebugging(player, !plugin.isDebugging(player));
    
                event.setCancelled(true);
            }
        }
    
        @Override
        public void onPlayerMove(PlayerMoveEvent event) {
            if (plugin.isDebugging(event.getPlayer())) {
                Location from = event.getFrom();
                Location to = event.getTo();
    
                System.out.println(String.format("From %.2f,%.2f,%.2f to %.2f,%.2f,%.2f", from.getX(), from.getY(), from.getZ(), to.getX(), to.getY(), to.getZ()));
            }
        }
    }
    SampleBlockListener.java
    Code:
    package com.sharpiedew.bukkit.sampleplugin.sampleplugin;
    
    import org.bukkit.block.Block;
    import org.bukkit.block.BlockFace;
    import org.bukkit.Material;
    import org.bukkit.event.block.BlockCanBuildEvent;
    import org.bukkit.event.block.BlockListener;
    import org.bukkit.event.block.BlockPhysicsEvent;
    
    /**
     * Sample block listener
     * @author Dinnerbone
     */
    public class SampleBlockListener extends BlockListener {
        private final SamplePlugin plugin;
    
        public SampleBlockListener(final SamplePlugin plugin) {
            this.plugin = plugin;
        }
    
        @Override
        public void onBlockPhysics(BlockPhysicsEvent event) {
            Block block = event.getBlock();
    
            if ((block.getType() == Material.SAND) || (block.getType() == Material.GRAVEL)) {
                Block above = block.getFace(BlockFace.UP);
                if (above.getType() == Material.IRON_BLOCK) {
                    event.setCancelled(true);
                }
            }
        }
    
        @Override
        public void onBlockCanBuild(BlockCanBuildEvent event) {
            Material mat = event.getMaterial();
    
            if (mat.equals(Material.CACTUS)) {
                event.setBuildable(true);
            }
        }
    }
    Now when i run this it says...
    Code:
    2011-01-18 14:18:24 [INFO] Preparing start region
    Preparing spawn area: 28%
    Preparing spawn area: 73%
    Jan 18, 2011 2:18:27 PM org.bukkit.plugin.SimplePluginManager loadPlugins
    SEVERE: Could not load plugins/FirstTry.jar in plugins: null
    org.bukkit.plugin.InvalidPluginException
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:83)
        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:115)
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:80)
        at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:43)
        at net.minecraft.server.MinecraftServer.e(MinecraftServer.java:153)
        at net.minecraft.server.MinecraftServer.c(MinecraftServer.java:140)
        at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:104)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:177)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:512)
    Caused by: java.lang.ClassNotFoundException: com.sharpiedew.bukkit.sample.SamplePlugin
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:29)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:247)
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:77)
        ... 8 more
    2011-01-18 14:18:27 [INFO] Done! For help, type "help" or "?"
    
    Thanks in Advance.
     
  9. Offline

    MysticX

    bukkit tries to load com.sharpiedew.bukkit.sample.SamplePlugin while it should load com.sharpiedew.bukkit.sampleplugin.sampleplugin.SamplePlugin.

    You need to fix your main: line in the plugin.yml! Thats why I asked you to post it ;)
     
  10. Offline

    Sharpiedew

    Damit man Im trying.
    heres everything again (its different)
    SamplePlugin.java
    Code:
    package com.bukkit.sharpiedew.SamplePlugin;
    
    import java.io.File;
    import java.util.HashMap;
    import org.bukkit.entity.Player;
    import org.bukkit.Server;
    import org.bukkit.event.Event.Priority;
    import org.bukkit.event.Event;
    import org.bukkit.plugin.PluginDescriptionFile;
    import org.bukkit.plugin.PluginLoader;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.plugin.PluginManager;
    
    /**
     * SamplePlugin / Template for Bukkit
     *
     * @author    Dinnerbone
     * @updated_by Sharpiedew
     */
    public class SamplePlugin extends JavaPlugin {
        private final SamplePlayerListener playerListener = new SamplePlayerListener(this);
        private final SampleBlockListener blockListener = new SampleBlockListener(this);
        private final HashMap<Player, Boolean> debugees = new HashMap<Player, Boolean>();
    
        public SamplePlugin (PluginLoader pluginLoader, Server instance, PluginDescriptionFile desc, File folder, File plugin, ClassLoader cLoader) {
            super(pluginLoader, instance, desc, folder, plugin, cLoader);
            // TODO: Place any custom initialisation code here
    
            // NOTE: Event registration should be done in onEnable not here as all events are unregistered when a plugin is disabled
        }
    
        public void onDisable() {
            // TODO: Place any custom disable code here
    
            // NOTE: All registered events are automatically unregistered when a plugin is disabled
    
            // EXAMPLE: Custom code, here we just output some info so we can check all is well
            System.out.println("Goodbye world!");
        }
    
        public void onEnable() {
            // TODO: Place any custom enable code here including the registration of any events
    
            // Register our events
            PluginManager pm = getServer().getPluginManager();
     
            // EXAMPLE: Custom code, here we just output some info so we can check all is well
            PluginDescriptionFile pdfFile = this.getDescription();
            System.out.println( pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!" );
        }
    
        public boolean isDebugging(final Player player) {
            if (debugees.containsKey(player)) {
                return debugees.get(player);
            } else {
                return false;
            }
        }
    
        public void setDebugging(final Player player, final boolean value) {
            debugees.put(player, value);
        }
    }
    SamplePlayerListener.java
    Code:
    package com.bukkit.sharpiedew.SamplePlugin;
    
    import org.bukkit.Location;
    import org.bukkit.entity.Player;
    import org.bukkit.event.player.PlayerChatEvent;
    import org.bukkit.event.player.PlayerEvent;
    import org.bukkit.event.player.PlayerListener;
    import org.bukkit.event.player.PlayerMoveEvent;
    
    /**
     * Handle events for all Player related events
     * @author Sharpiedew
     */
    public class SamplePlayerListener extends PlayerListener {
        private final SamplePlugin plugin;
    
        public SamplePlayerListener(SamplePlugin instance) {
            plugin = instance;
        }
    
        //Insert Player related code here
    }
    SampleBlockListener.java
    Code:
    package com.bukkit.sharpiedew.SamplePlugin;
    
    import org.bukkit.block.Block;
    import org.bukkit.block.BlockFace;
    import org.bukkit.Material;
    import org.bukkit.event.block.BlockCanBuildEvent;
    import org.bukkit.event.block.BlockListener;
    import org.bukkit.event.block.BlockPhysicsEvent;
    
    /**
     * Sample Plugin block listener
     * @author Sharpiedew
     */
    public class SampleBlockListener extends BlockListener {
        private final SamplePlugin plugin;
    
        public SampleBlockListener(final SamplePlugin plugin) {
            this.plugin = plugin;
        }
    
        //put all Block related code here
    }
    
    plugin.yml
    Code:
    name: Sample Plugin
    main: com.sharpiedew.bukkit.sampleplugin.sample.SamplePlugin
    version: 0.0.1
    I have tried several variations of the main code and no luck.. Please Help
     
  11. Offline

    mjmr89

    It would be "com.bukkit.sharpiedew.SamplePlugin.SamplePlugin". I just had this same problem and fixed it like this. It's your main plugin name (In this case, SamplePlugin) right after the line in your package statement.
     
  12. Offline

    MysticX

    Exactly, and thats basically the same thing I told you. But you changed your package structure..
     
Thread Status:
Not open for further replies.

Share This Page