Development Assistance Need help editing someones plugin.

Discussion in 'Plugin Help/Development/Requests' started by OTF Catastrophe, Feb 8, 2015.

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

    OTF Catastrophe

    The InfoBoardReborn plugin has a fault in it's code where it takes Stats variables and applies them to the specified world instead of to the overall server, I have been trying for hours now trying to change the vote variable in the .class file and I am totally oblivious on how to get it working, what im trying to do is change the <statsvotes> variable in the .class file to adhere to the server and not the specific world the variable was achieved in. I do believe this is allowed because I am not asking anyone to not say that ktar5 is not the owner, so all work goes to him. This is the .class file I need edited to work on the server instead of just the world:

    Code:
    package com.ktar5.infoboard.Variables;
    
    import com.ktar5.infoboard.Util.Time;
    import nl.lolmewn.stats.api.StatsAPI;
    import nl.lolmewn.stats.player.StatData;
    import nl.lolmewn.stats.player.StatsPlayer;
    import org.bukkit.Bukkit;
    import org.bukkit.Server;
    import org.bukkit.World;
    import org.bukkit.entity.EntityType;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.RegisteredServiceProvider;
    import org.bukkit.plugin.ServicesManager;
    
    public class StatsVariables
    {
      private static StatData getStatsData(String player, World world, String stat)
      {
        RegisteredServiceProvider<StatsAPI> stats = Bukkit.getServer().getServicesManager().getRegistration(StatsAPI.class);
        StatsAPI statsAPI = (StatsAPI)stats.getProvider();
        if (statsAPI.isUsingBetaFunctions()) {
          return statsAPI.getPlayer(player).getStatData(statsAPI.getStat(stat), world.getName(), true);
        }
        return statsAPI.getPlayer(player).getStatData(statsAPI.getStat(stat), world.getName(), true);
      }
     
      public static String replaceVariables(String string, Player player)
      {
        String newString = string;
        String name = player.getName();
        if (newString.contains("<statstime>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "Playtime");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statstime>", String.valueOf(value));
        }
        if (newString.contains("<statstimeformated>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "Playtime");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statstime>", String.valueOf(Time.getFormatTime(Long.valueOf(value))));
        }
        if (newString.contains("<statsmoves>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "Move");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statsmoves>", String.valueOf(value));
        }
        if (newString.contains("<statsarrows>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "Arrows");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statsarrows>", String.valueOf(value));
        }
        if (newString.contains("<statsjoins>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "Joins");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statsjoins>", String.valueOf(value));
        }
        if (newString.contains("<statsfish>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "Fish catched");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statsfish>", String.valueOf(value));
        }
        if (newString.contains("<statsdamagetaken>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "Damage taken");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statsdamagetaken>", String.valueOf(value));
        }
        if (newString.contains("<statskicked>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "Times kicked");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statskicked>", String.valueOf(value));
        }
        if (newString.contains("<statstoolsbroken>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "Tools broken");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statstoolsbroken>", String.valueOf(value));
        }
        if (newString.contains("<statseggs>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "Eggs thrown");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statseggs>", String.valueOf(value));
        }
        if (newString.contains("<statsitemscrafted>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "Items crafted");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statsitemscrafted>", String.valueOf(value));
        }
        if (newString.contains("<statsate>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "Omnomnom");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statsate>", String.valueOf(value));
        }
        if (newString.contains("<statsonfire>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "On fire");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statsonfire>", String.valueOf(value));
        }
        if (newString.contains("<statswords>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "Words said");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statswords>", String.valueOf(value));
        }
        if (newString.contains("<statscommands>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "Commands done");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statscommaneds>", String.valueOf(value));
        }
        if (newString.contains("<statsvotes>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "Votes");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statsvotes>", String.valueOf(value));
        }
        if (newString.contains("<statsworldchange>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "Worldchange");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statsworldchange>", String.valueOf(value));
        }
        if (newString.contains("<statsbucketfill>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "Bucketfill");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statsbucketfill>", String.valueOf(value));
        }
        if (newString.contains("<statsbucketempty>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "Bucketempty");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statsabucketempty>", String.valueOf(value));
        }
        if (newString.contains("<statsbedenter>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "Bedenter");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statsbedenter>", String.valueOf(value));
        }
        if (newString.contains("<statsitemdrops>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "Itemdrops");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statsitemdrops>", String.valueOf(value));
        }
        if (newString.contains("<statsitempickups>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "Itempickups");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statsitempickups>", String.valueOf(value));
        }
        if (newString.contains("<statsteleports>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "Teleports");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statsteleports>", String.valueOf(value));
        }
        if (newString.contains("<statsshear>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "Shear");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statsshear>", String.valueOf(value));
        }
        if (newString.contains("<statsxpgained>"))
        {
          int value = 0;
         
          StatData stat = getStatsData(name, player.getWorld(), "Xp gained");
          for (Object[] vars : stat.getAllVariables()) {
            value = (int)(value + stat.getValue(vars));
          }
          newString = newString.replaceAll("<statsxpgained>", String.valueOf(value));
        }
        if (newString.contains("<statsplaced"))
        {
          String s = newString.split("<statsplaced")[1].split(">")[0];
          int value = 0;
          String id = s;
          if (id.equals("all")) {
            id = null;
          }
          StatData blockStat = getStatsData(name, player.getWorld(), "Block place");
          for (Object[] vars : blockStat.getAllVariables()) {
            if ((id == null) || (vars[0].toString().equals(s))) {
              value = (int)(value + blockStat.getValue(vars));
            }
          }
          newString = newString.replaceAll("<statsplaced" + s + ">", String.valueOf(value));
        }
        if (newString.contains("<statsbroken"))
        {
          String s = newString.split("<statsplaced")[1].split(">")[0];
          int value = 0;
          String id = s;
          if (id.equals("all")) {
            id = null;
          }
          StatData blockStat = getStatsData(name, player.getWorld(), "Block break");
          for (Object[] vars : blockStat.getAllVariables()) {
            if ((id == null) || (vars[0].toString().equals(s))) {
              value = (int)(value + blockStat.getValue(vars));
            }
          }
          newString = newString.replaceAll("<statsbroken" + s + ">", String.valueOf(value));
        }
        if (newString.contains("<statskills"))
        {
          String s = newString.split("<statskills")[1].split(">")[0];
          EntityType mob = null;
          int value = 0;
          if (s.equals("all")) {
            mob = null;
          } else {
            try
            {
              mob = EntityType.valueOf(s.toUpperCase());
            }
            catch (Exception e)
            {
              value = 0;
            }
          }
          StatData blockStat = getStatsData(name, player.getWorld(), "Kill");
          for (Object[] vars : blockStat.getAllVariables()) {
            if ((mob == null) || (EntityType.valueOf(vars[0].toString().toUpperCase()) == mob)) {
              value = (int)(value + blockStat.getValue(vars));
            }
          }
          newString = newString.replaceAll("<statskills" + s + ">", String.valueOf(value));
        }
        if (newString.contains("<statsdeaths"))
        {
          String s = newString.split("<statsdeaths")[1].split(">")[0];
          int value = 0;
          String cause = s;
          if (s.equals("all")) {
            cause = null;
          }
          StatData blockStat = getStatsData(name, player.getWorld(), "Death");
          for (Object[] vars : blockStat.getAllVariables()) {
            if ((cause == null) || (vars[0].toString().toUpperCase().equals(s.toUpperCase()))) {
              value = (int)(value + blockStat.getValue(vars));
            }
          }
          newString = newString.replaceAll("<statsdeaths" + s + ">", String.valueOf(value));
        }
        return newString;
      }
    }
    
     
Thread Status:
Not open for further replies.

Share This Page