Scoreboard Help

Discussion in 'Plugin Development' started by ztowne13, Apr 6, 2013.

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

    ztowne13

    Ok Soo... I have been trying to code a plugin where above a players head it displays the players health... I am (obviosuly) extremely new to Scoreboards and, like a good learner, am asking others for help. I yes, have copied code but have thoroughly looked threw and it and have tried to understand it.
    Here is my main:
    Code:
    package me.ztowne13.CrimsonPvP;
    
    import java.io.File;
    import java.util.logging.Logger;
    
    import net.minecraft.server.v1_5_R2.Packet;
    import net.minecraft.server.v1_5_R2.Packet206SetScoreboardObjective;
    import net.minecraft.server.v1_5_R2.Packet207SetScoreboardScore;
    import net.minecraft.server.v1_5_R2.Packet208SetScoreboardDisplayObjective;
    import net.minecraft.server.v1_5_R2.Scoreboard;
    import net.minecraft.server.v1_5_R2.ScoreboardBaseCriteria;
    import net.minecraft.server.v1_5_R2.ScoreboardObjective;
    import net.minecraft.server.v1_5_R2.ScoreboardScore;
    
    import org.bukkit.Bukkit;
    import org.bukkit.configuration.file.YamlConfiguration;
    import org.bukkit.craftbukkit.v1_5_R2.entity.CraftPlayer;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDamageEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    
    
    
    public class Main extends JavaPlugin implements Listener{
         Scoreboard sb = new Scoreboard();
            public final Logger logger = Logger.getLogger("Minecraft");
         public void onDisable(){
                this.logger.info("CrimsonPvP Disabled");
            }
            
            public void onEnable(){
                this.logger.info("[CrimsonPvP] By Ztowne13 Has Been Enabled!");
                Bukkit.getPluginManager().registerEvents(this, this);
                
            }
        @EventHandler
        public void onPlayerJoin(PlayerJoinEvent e){
            Player p = e.getPlayer();
            test(p);
        }
        @EventHandler
        public void onEntityDamage(EntityDamageEvent e){
            Player p = (Player) e;
            ScoreboardScore score = sb.getPlayerScoreForObjective("Answer to life", sb.getObjective("Test"));
            score.setScore(p.getHealth());
        }
        public void test(final Player player) {
        getServer().getScheduler().runTask(this, new Runnable() {
        @Override
        public void run() {
        String name = "Test";
         
        sb.registerObjective(name, new ScoreboardBaseCriteria(name));//Create new objective in the scoreboard
         
        Packet206SetScoreboardObjective packet = new Packet206SetScoreboardObjective(sb.getObjective(name), 0);//Create Scoreboard create packet
        Packet208SetScoreboardDisplayObjective display = new Packet208SetScoreboardDisplayObjective(2, sb.getObjective(name));//Create display packet set to sidebar mode
         
        sendPacket(player, packet);//Send Scoreboard create packet
        sendPacket(player, display);//Send the display packet
         
        ScoreboardScore scoreItem1 = sb.getPlayerScoreForObjective("Answer to life", sb.getObjective(name));//Create a new item
        ScoreboardScore scoreItem2 = sb.getPlayerScoreForObjective("4 * 4", sb.getObjective(name));//Create a new item
        scoreItem1.setScore(20);//Set it's value to 42
        scoreItem2.setScore(12);//Set it's value to 12
         
        Packet207SetScoreboardScore pScoreItem1 = new Packet207SetScoreboardScore(scoreItem1, 0);//Create score packet 1
        Packet207SetScoreboardScore pScoreItem2 = new Packet207SetScoreboardScore(scoreItem2, 0);//Create score packet 2
        sendPacket(player, pScoreItem1);//Send score update packet
        sendPacket(player, pScoreItem2);//Send score update packet
         
        }
         
        });
        }
         
        public static void sendPacket(Player player, Packet packet) {
        ((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
        }
      
        }
    
    First problem... I have an error that makes absolute no sense to me and i would like so help or explanation:
    Code:
    [SEVERE] Could not load 'plugins/CrimsonPvP.jar' in folder 'plugins'
    org.bukkit.plugin.InvalidPluginException: java.lang.NoClassDefFoundError: net/minecraft/server/v1_5_R2/Scoreboard
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:182)
        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:305)
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:230)
        at org.bukkit.craftbukkit.v1_5_R1.CraftServer.loadPlugins(CraftServer.java:239)
        at org.bukkit.craftbukkit.v1_5_R1.CraftServer.<init>(CraftServer.java:217)
        at net.minecraft.server.v1_5_R1.PlayerList.<init>(PlayerList.java:55)
        at net.minecraft.server.v1_5_R1.DedicatedPlayerList.<init>(SourceFile:11)
        at net.minecraft.server.v1_5_R1.DedicatedServer.init(DedicatedServer.java:105)
        at net.minecraft.server.v1_5_R1.MinecraftServer.run(MinecraftServer.java:381)
        at net.minecraft.server.v1_5_R1.ThreadServerApplication.run(SourceFile:573)
    Caused by: java.lang.NoClassDefFoundError: net/minecraft/server/v1_5_R2/Scoreboard
        at me.ztowne13.CrimsonPvP.Main.<init>(Main.java:32)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:178)
        ... 9 more
    Caused by: java.lang.ClassNotFoundException: net.minecraft.server.v1_5_R2.Scoreboard
        at org.bukkit.plugin.java.PluginClassLoader.findClass0(PluginClassLoader.java:70)
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:53)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        ... 15 more
    

    Ok now my second problem that some explanation as well as some example mini strpis of code would help... I am trying to make it when a player joins (or best event) for the server to create the scoreboard above the players head of their health. On a damage event I want a packet sent to a player updating this... I am not trying to just have someone write this for me... I honestly have looked at about every bukkit post on scoreboards and need some individual explaining on this exact topic. Thankyou so much. I know it may sound stupid but honestly i have lost understand of what the heck i am supposed to do for this.
     
  2. Offline

    chasechocolate

  3. Offline

    ZeusAllMighty11

    You don't have to use packets anymore; there's an official API
     
  4. Offline

    Tzeentchful

    Yes like TheGreenGamerHD said there is an official api for scoreboards now. But from your error it seems that you are using an incorrect version of craftbukkit to run the plugin.
    Code:
    java.lang.NoClassDefFoundError: net/minecraft/server/v1_5_R2/Scoreboard
     
Thread Status:
Not open for further replies.

Share This Page