Can Someone Please Help?

Discussion in 'Plugin Development' started by Sharpiedew, Jan 18, 2011.

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

    Sharpiedew

    I have the sample plugin made by Dinnerbone. Im running craftbukkit through terminal with
    Code:
    java -Xms1024M -Xmx1024M -jar craftbukkit-0.0.1-SNAPSHOT.jar
    It Comes Up With
    Code:
    Tyler-Eckers-MacBook:untitled folder tylerecker$ java -Xms1024M -Xmx1024M -jar craftbukkit-0.0.1-SNAPSHOT.jar
    2011-01-18 15:10:51 [INFO] Starting minecraft server version Beta 1.2_01
    2011-01-18 15:10:51 [INFO] Loading properties
    2011-01-18 15:10:51 [INFO] Starting Minecraft server on *:25565
    2011-01-18 15:10:51 [INFO] Preparing level "world"
    2011-01-18 15:10:51 [INFO] Preparing start region
    Preparing spawn area: 24%
    Preparing spawn area: 73%
    Jan 18, 2011 3:10:54 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
    
    Please Help Me.
    More info you might need.
    plugin.yml
    Code:
    name: Sample Plugin
    main: com.sharpiedew.bukkit.sample.SamplePlugin
    version: 0.1
    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);
            }
        }
    }
    i just want some sort of template.
     
  2. Offline

    MysticX

    It won't help you to keep reposting your problem, there is already an open thread by you, where I am trying to help you..

    Nvm, it's not your thread over there. But you posted the same problem there ;)
    That's where I got confused, sorry. But the answer is still there, so take a look!
     
  3. Offline

    Sharpiedew

    Holy crap! I just went through it. Please dont make me work for the answer..pleasseee. :rolleyes:
    --- merged: Jan 19, 2011 12:13 AM ---
    Never mind..... Thanks =D
     
Thread Status:
Not open for further replies.

Share This Page