Can't change mobtype

Discussion in 'Plugin Development' started by MojaveRattle, Feb 1, 2011.

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

    MojaveRattle

    The plugin is enabled successfully, and /oe help spits out a in-game chat menu for available commands, but /oe <mobtype> doesn't effectively work. What have I done wrong? Thanks!

    Error in console:
    Code:
    2011-02-02 00:46:36 [INFO] Starting minecraft server version Beta 1.2_01
    2011-02-02 00:46:36 [INFO] Loading properties
    2011-02-02 00:46:36 [INFO] Starting Minecraft server on *:25565
    2011-02-02 00:46:36 [INFO] Preparing level "world"
    2011-02-02 00:46:36 [INFO] Preparing start region
    2011-02-02 00:46:37 [INFO] Preparing spawn area: 20%
    2011-02-02 00:46:38 [INFO] Preparing spawn area: 32%
    2011-02-02 00:46:39 [INFO] Preparing spawn area: 65%
    2011-02-02 00:46:40 [INFO] Preparing spawn area: 93%
    OverEasy by NINxSIN and Mojaverattle is enabled! :D
    2011-02-02 00:46:41 [INFO] Done! For help, type "help" or "?"
    138 recipes
    2011-02-02 00:46:52 [INFO] MojaveRattle [/127.0.0.1:58473] logged in with entity
     id 122
    Player count: 1
    2011-02-02 00:46:56 [INFO] MojaveRattle issued server command: oe help
    2011-02-02 00:46:56 [INFO] Unknown console command. Type "help" for help.
    Feb 2, 2011 12:47:08 AM org.bukkit.plugin.SimplePluginManager callEvent
    SEVERE: Could not pass event PLAYER_COMMAND to OverEasy
    java.lang.ClassCastException: org.bukkit.craftbukkit.entity.CraftPlayer cannot b
    e cast to org.bukkit.event.player.PlayerEggThrowEvent
            at com.bukkit.mojaverattle.OverEasy.OverEasyPlayerListener.onPlayerComma
    nd(OverEasyPlayerListener.java:37)
            at org.bukkit.plugin.java.JavaPluginLoader$3.execute(JavaPluginLoader.ja
    va:133)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:60)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:213)
            at net.minecraft.server.NetServerHandler.c(NetServerHandler.java:590)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:563)
            at net.minecraft.server.Packet3Chat.a(SourceFile:24)
            at net.minecraft.server.NetworkManager.a(SourceFile:232)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:71)
            at net.minecraft.server.NetworkListenThread.a(SourceFile:104)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:276)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:202)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:512)
    
    
    
    OverEasy.java:
    Code:
    package com.bukkit.mojaverattle.OverEasy;
    
    //All the imports
    import java.io.File;
    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.java.JavaPlugin;
    import org.bukkit.plugin.PluginManager;
    
    /**
     * OverEasy for Bukkit
     *
     * @authors NINxSIN and MojaveRattle
     */
    
    //Starts the class
    public class OverEasy extends JavaPlugin {
        private final OverEasyPlayerListener playerListener = new OverEasyPlayerListener(this);
        private final HashMap<Player, Boolean> debugees = new HashMap<Player, Boolean>();
    public HashMap<String, Integer> stickMap = new HashMap<String, Integer>();
    
        public OverEasy(PluginLoader pluginLoader, Server instance, PluginDescriptionFile desc, File folder, File plugin, ClassLoader cLoader) {
            super(pluginLoader, instance, desc, folder, plugin, cLoader);
        }
    
        public void onEnable() {
            // Register our events
            PluginManager pm = getServer().getPluginManager();
            pm.registerEvent(Event.Type.PLAYER_COMMAND, playerListener, Priority.Normal, this);
            log("OverEasy by NINxSIN and Mojaverattle is enabled! :D");
        }
        public void onDisable() {
            System.out.println("OverEasy by NINxSIN and Mojaverattle is disabled! :C");
        }
        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);
        }
    
        public void log(String logText) {
         System.out.println(logText);
        }
    }
    OverEasyPlayerListener.java:
    Code:
    package com.bukkit.mojaverattle.OverEasy;
    
    //All the imports
    import org.bukkit.entity.Player;
    
    import org.bukkit.event.player.PlayerChatEvent;
    import org.bukkit.event.player.PlayerEggThrowEvent;
    import org.bukkit.entity.MobType;
    import org.bukkit.event.player.PlayerListener;
    import org.bukkit.ChatColor;
    
    //Starts the class OverEasyPlayerListener
    public class OverEasyPlayerListener extends PlayerListener{
        public static OverEasy plugin;
        public OverEasyPlayerListener(OverEasy instance) {
            plugin = instance;
        }
        public void onPlayerCommand(PlayerChatEvent event){
            String[] split = event.getMessage().split(" ");
            //Get the player that talked.
            Player player = event.getPlayer(); {
                //If the first part of the string is /OverEasy or /OE then do this.
                if ((split[0].equalsIgnoreCase("/OverEasy")) || (split[0].equalsIgnoreCase("/OE"))) {
                    if(split.length == 1) {
                        //disable the plugin if it has no arguments (maybe show help)
                    }
                    else if(split.length == 2) {
                        //check if the statement has a second word
                        if(split[1].equalsIgnoreCase("help")) {
                            //show help with the variable mobs
                            player.sendMessage(ChatColor.BLUE + "Command to use: /OverEasy <mobtype>");
                            player.sendMessage(ChatColor.BLUE + "Available <Mobtypes>: Chicken, Cow, Creeper, Ghast, Pig, Sheep, Skeleton, Spider, and Zombie");
                        }
                        if(split[1].equalsIgnoreCase("chicken")) {
                            //Change the MobType if CHICKEN is set
                            player.sendMessage(ChatColor.RED + "Mobtype changed to chicken!");
                            ((PlayerEggThrowEvent) player).setHatchType (MobType.CHICKEN);
                        }
                        if(split[1].equalsIgnoreCase("Cow")) {
                            //Change the MobType if CHICKEN is set
                            player.sendMessage(ChatColor.RED + "Mobtype changed to cow!");
                            ((PlayerEggThrowEvent) player).setHatchType (MobType.COW);
                        }
                        if(split[1].equalsIgnoreCase("Creeper")) {
                            //Change the MobType if CREEPER is set
                            player.sendMessage(ChatColor.RED + "Mobtype changed to creeper!");
                            ((PlayerEggThrowEvent) player).setHatchType (MobType.CREEPER);
                        }
                        if(split[1].equalsIgnoreCase("Ghast")) {
                            //Change the MobType if GHAST is set
                            player.sendMessage(ChatColor.RED + "Mobtype changed to ghast!");
                            ((PlayerEggThrowEvent) player).setHatchType (MobType.GHAST);
                        }
                        if(split[1].equalsIgnoreCase("Pig")) {
                            //Change the MobType if PIG is set
                            player.sendMessage(ChatColor.RED + "Mobtype changed to pig!");
                            ((PlayerEggThrowEvent) player).setHatchType (MobType.PIG);
                        }
                        if(split[1].equalsIgnoreCase("Sheep")) {
                            //Change the MobType if SHEEP is set
                            player.sendMessage(ChatColor.RED + "Mobtype changed to sheep!");
                            ((PlayerEggThrowEvent) player).setHatchType (MobType.SHEEP);
                        }
                        if(split[1].equalsIgnoreCase("Skeleton")) {
                            //Change the MobType if SKELETON is set
                            player.sendMessage(ChatColor.RED + "Mobtype changed to skeleton!");
                            ((PlayerEggThrowEvent) player).setHatchType (MobType.SKELETON);
                        }
                        if(split[1].equalsIgnoreCase("Spider")) {
                            //Change the MobType if SPIDER is set
                            player.sendMessage(ChatColor.RED + "Mobtype changed to spider!");
                            ((PlayerEggThrowEvent) player).setHatchType (MobType.SPIDER);
                        }
                        if(split[1].equalsIgnoreCase("Zombie")) {
                            //Change the MobType if ZOMBIE is set
                            player.sendMessage(ChatColor.RED + "Mobtype changed to zombie!");
                            ((PlayerEggThrowEvent) player).setHatchType (MobType.ZOMBIE);
                        }
                    }
                }
            }
        }
    }
     
  2. Offline

    Mixcoatl

    I'm fairly certain you can't cast the player to an event. Perhaps you'll have better luck casting the event, called event in your example, instead of the player.
     
Thread Status:
Not open for further replies.

Share This Page