Help, Simple Plugin

Discussion in 'Plugin Development' started by tinto, Mar 15, 2011.

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

    tinto

    Console:
    Code:
    18:52:24 [INFO] Starting minecraft server version Beta 1.3
    18:52:24 [INFO] Loading properties
    18:52:24 [INFO] Starting Minecraft server on localhost:25565
    18:52:24 [INFO] This server is running Craftbukkit version git-Bukkit-0.0.0-516-
    gdf87bb3-b531jnks (MC: 1.3)
    18:52:24 [INFO] Preparing level "world"
    18:52:24 [INFO] Preparing start region
    18:52:25 [SEVERE] Could not load plugins\Beta.jar in plugins: null
    org.bukkit.plugin.InvalidPluginException
            at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
    ava:113)
            at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.
    java:159)
            at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
    .java:107)
            at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:59)
            at net.minecraft.server.MinecraftServer.e(MinecraftServer.java:204)
            at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:191)
            at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:131)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:246)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:366)
    Caused by: java.lang.NoClassDefFoundError: IOException
            at java.lang.Class.getDeclaredConstructors0(Native Method)
            at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
            at java.lang.Class.getConstructor0(Unknown Source)
            at java.lang.Class.getConstructor(Unknown Source)
            at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
    ava:108)
            ... 8 more
    Caused by: java.lang.ClassNotFoundException: IOException
            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:30)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            ... 13 more
    18:52:25 [INFO] Done (0,122s)! For help, type "help" or "?"
    >
    
    Beta:

    Code:
    package org.Tinto.Bukkit.Beta;
    
    import java.io.*;
    import java.util.HashMap;
    
    import org.bukkit.Server;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Event;
    import org.bukkit.event.Event.Priority;
    import org.bukkit.plugin.PluginDescriptionFile;
    import org.bukkit.plugin.PluginLoader;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    /**
    * Beta for Bukkit
    *
    * @author Tinto
    */
    public class Beta extends JavaPlugin {
    private final BetaPlayerListener playerListener = new BetaPlayerListener(this);
    private final BetaBlockListener blockListener = new BetaBlockListener(this);
    private final HashMap debugees = new HashMap();
    
    public Beta(PluginLoader pluginLoader, Server instance,
    PluginDescriptionFile desc, File folder, File plugin,
    ClassLoader cLoader) throws IOException {
    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 onEnable() {
    // TODO: Place any custom enable code here including the registration of any events
    
    // Register our events
    PluginManager pm = getServer().getPluginManager();
    getServer().getPluginManager().registerEvent(Event.Type.BLOCK_PLACED, blockListener, Priority.Normal, this);
    pm.registerEvent(Event.Type.PLAYER_COMMAND, playerListener, 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 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 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);
    }
    } 
    plugin.yml

    Code:
    name: Beta
    main: org.Tinto.Bukkit.Beta.Beta
    version: 0.1
    BetaPlayerListener:
    Code:
    package org.Tinto.Bukkit.Beta;
    
    import java.io.*;
    import org.bukkit.Location;
    import org.bukkit.entity.*;
    import org.bukkit.event.player.PlayerChatEvent;
    import org.bukkit.event.player.PlayerEvent;
    import org.bukkit.event.player.PlayerListener;
    import org.bukkit.event.player.PlayerMoveEvent;
    import org.bukkit.inventory.*;
    import org.bukkit.material.MaterialData;
    import org.bukkit.*;
    import org.bukkit.ChatColor;
    
    
    
    
    
    /**
    * Handle events for all Player related events
    * @author Tinto
    */
    public class BetaPlayerListener extends PlayerListener {
    private final Beta plugin;
    
    public BetaPlayerListener(Beta instance) {
    plugin = instance;
    }
    
    public void onPlayerCommand(PlayerChatEvent event) {
    Player players = event.getPlayer();
    String[] message = event.getMessage().split("" "");
    if(message[0].equalsIgnoreCase(""/clearinventory"")) {
    players.getInventory().clear();
    }
    }
    
    }
    
    BetaBlockListener:
    Code:
    package org.Tinto.Bukkit.Beta;
    
    import org.bukkit.block.*;
    import org.bukkit.Material;
    import org.bukkit.entity.Player;
    import org.bukkit.event.block.BlockCanBuildEvent;
    import org.bukkit.event.block.BlockListener;
    import org.bukkit.event.block.BlockPhysicsEvent;
    import org.bukkit.event.block.BlockPlaceEvent;
    import org.bukkit.*;
    import org.bukkit.inventory.Inventory;
    
    /**
    * Beta block listener
    * @author Tinto
    */
    public class BetaBlockListener extends BlockListener {
    private final Beta plugin;
    public String stuff ="";
    
    public BetaBlockListener(final Beta plugin) {
    this.plugin = plugin;
    }
      
    } 
     
  2. Offline

    Edward Hand

    You need to remove the constructor function from your main plugin class. Its the bit that starts:
    Code:
    public Beta(PluginLoader pluginLoader, Server instance,PluginDescriptionFile desc, File folder, File plugin,ClassLoader cLoader)
    You must have got your code from an outdated example.
     
  3. Offline

    Sammy

    This constructor is no longer used:
    Code:
    public Beta(PluginLoader pluginLoader, Server instance,
    PluginDescriptionFile desc, File folder, File plugin,
    ClassLoader cLoader) throws IOException {
    super(pluginLoader, instance, desc, folder, plugin, cLoader);
    This is Deprecated:
    Code:
    onPlayerCommand(PlayerChatEvent event)
    Now you should use:
    Code:
    onCommand(CommandSender sender, Command command, String label, String[] args)
    Take a quick look at this:
    ScrapBukkit

    I'm not at home so I can't help more, but feel free to ask anything =)
     
  4. Offline

    tinto

    Thank you very much, works
    Console:
    INFO Beta version 0.1 is enabled!
     
  5. Offline

    lycano

    This should be sticky ^^ i think many ppl will search for a generator first instead of reading stuff a.s.o. Then they will find a Bukkit Plugin Generator which will also generate an Eclispse or Netbeans project .. Nice someone would think but because its base is outdated you'll end like this ^^ Seems that this ScrapBukkit Plugin is a good template to start from.
     
  6. Offline

    Sammy

    Well I think that forum Moderators should delete the resources threads with outdated generators
     
  7. Offline

    lycano

    @Sammy: Yeah, or at least move them to outdated =) Trying those outdated generators are a complete waste of time. In addition: The outdated BPM will not create a classpath for Compile-Tests in Netbeans 6.9.1 so it would not work anyways because JUnit and its default entrys are missing.
     
Thread Status:
Not open for further replies.

Share This Page