why this wont work?

Discussion in 'Plugin Development' started by Schaakmatth, Jun 3, 2014.

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

    Schaakmatth

    maked a config to save the kills but if i open the config nothing in there registered the event
    Code:java
    1. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    2. if(commandLabel.equalsIgnoreCase("kills")) {
    3. Player p = (Player) sender;
    4. String killer = p.getName();
    5. int kills = getConfig().getInt("Players." + killer + ".Kills");
    6. p.sendMessage(ChatColor.DARK_RED + "You now have " + ChatColor.DARK_RED + kills + ChatColor.DARK_RED + " kills!");
    7. }
    8. return true;
    9. }
    10.  
    11. @EventHandler
    12. public void hit(PlayerDeathEvent e) {
    13. String killer = e.getEntity().getKiller().getName();
    14. int killCount = getConfig().getInt("Players." + killer + ".Kills") +1;
    15. getConfig().set("Players." + killer + ".Kills", killCount);
    16. this.saveConfig();
    17. this.reloadConfig();
    18.  
    19. e.getEntity().getKiller().giveExpLevels( +1);
     
  2. Offline

    Jimfutsu

    Have you already made the config with the killer in it or do you have code to add the killer to the config?
     
  3. Offline

    Schaakmatth

    as you can see in the code there we gonna make a setup for the config only maded a config file
     
  4. Offline

    Jimfutsu

    Whaaaat? I don't understand what you are saying... and you are not creating a new config path with this code, I can tell you that.

    Edit: Please thag me if you want me to respond
     
  5. Offline

    Schaakmatth

    Jimfutsu forget to tahg post above

    Jimfutsu ok have maded this code before here is my code:
    Code:java
    1. package nl.Matthijs.Main;
    2.  
    3. import java.util.logging.Logger;
    4.  
    5. import org.bukkit.ChatColor;
    6. import org.bukkit.command.Command;
    7. import org.bukkit.command.CommandSender;
    8. import org.bukkit.entity.Player;
    9. import org.bukkit.event.EventHandler;
    10. import org.bukkit.event.Listener;
    11. import org.bukkit.event.entity.PlayerDeathEvent;
    12. import org.bukkit.plugin.java.JavaPlugin;
    13.  
    14. public class Main extends JavaPlugin implements Listener{
    15. public final Logger log = Logger.getLogger("Minecraft");
    16. public static Main plugin;
    17.  
    18. @Override
    19. public void onEnable() {
    20. this.log.info("[Kills] Enabled!");
    21. getServer().getPluginManager().registerEvents(this, this);
    22. getConfig().options().copyDefaults(true);
    23. saveConfig();
    24. }
    25.  
    26. @Override
    27. public void onDisable() {
    28. this.log.info("[Kills] Disabled!");
    29. }
    30.  
    31.  
    32. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    33. if(commandLabel.equalsIgnoreCase("kills")) {
    34. Player p = (Player) sender;
    35. int kills = getConfig().getInt("Players." + p.getName() + ".Kills");
    36. p.sendMessage(ChatColor.DARK_RED + "You now have " + ChatColor.DARK_RED + kills + ChatColor.DARK_RED + " kills!");
    37. }
    38. return true;
    39. }
    40.  
    41. @EventHandler
    42. public void hit(PlayerDeathEvent e) {
    43. String killer = e.getEntity().getKiller().getName();
    44. int killCount = getConfig().getInt("Players." + killer + ".Kills") +1;
    45. getConfig().set("Players." + killer + ".Kills", killCount);
    46. this.saveConfig();
    47. this.reloadConfig();
    48.  
    49. e.getEntity().getKiller().giveExpLevels( +1);

    this the other code from a other plugin:
    Code:java
    1. package me.Matthijs.SaveConfigKills;
    2.  
    3. import java.util.logging.Logger;
    4. import org.bukkit.event.EventHandler;
    5. import org.bukkit.event.Listener;
    6. import org.bukkit.event.entity.PlayerDeathEvent;
    7. import org.bukkit.plugin.java.JavaPlugin;
    8.  
    9.  
    10. public class SaveConfigKills extends JavaPlugin implements Listener{
    11. public final Logger logger = Logger.getLogger("Minecraft");
    12. public static SaveConfigKills plugin;
    13.  
    14.  
    15. @Override
    16. public void onEnable() {
    17. this.logger.info("[SaveKills] On!");
    18. getServer().getPluginManager().registerEvents(this, this);
    19. getConfig().options().copyDefaults(true);
    20. saveConfig();
    21. }
    22.  
    23. @Override
    24. public void onDisable() {
    25. this.logger.info("[SaveKills] Off!");
    26. }
    27.  
    28. @EventHandler
    29. public void onKill(PlayerDeathEvent e){
    30. String killer = e.getEntity().getKiller().getName();
    31. int killCount = getConfig().getInt("Players." + killer + ".Kills") +1;
    32. getConfig().set("Players." + killer + ".Kills", killCount);
    33. this.saveConfig();
    34. this.reloadConfig();


    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 30, 2016
  6. Offline

    Onlineids

    Anny errors?
     
  7. Offline

    Schaakmatth

  8. Offline

    Onlineids

    I can't help you there then
     
  9. Offline

    Schaakmatth

    i dont see a message with Kills on! so thats weird Onlineids

    Onlineids can you copy and paste my code and try if that works?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 30, 2016
  10. Offline

    Onlineids

    Is it being saved to the config?
     
  11. Offline

    xTrollxDudex

  12. Offline

    Go Hard

    Schaakmatth Check your plugin.yml if you're not getting that the plugin is being enabled.
     
  13. Offline

    Schaakmatth

    As you can see events are registered

    my plugin.yml:
    Code:
    name: Kills
    version: 1.0
    main: nl.Matthijs.Main.Main
    description: kill plugin
    commands:
      kills:
          description: /kills to see how many kills you have made!!
          usage: /kills
    config.yml
    Code:
    # Configuration
    and again my code
    Code:java
    1. package nl.Matthijs.Main;
    2.  
    3. import java.util.logging.Logger;
    4.  
    5. import org.bukkit.ChatColor;
    6. import org.bukkit.command.Command;
    7. import org.bukkit.command.CommandSender;
    8. import org.bukkit.entity.Player;
    9. import org.bukkit.event.EventHandler;
    10. import org.bukkit.event.Listener;
    11. import org.bukkit.event.entity.PlayerDeathEvent;
    12. import org.bukkit.plugin.java.JavaPlugin;
    13.  
    14. public class Main extends JavaPlugin implements Listener{
    15. public final Logger log = Logger.getLogger("Minecraft");
    16. public static Main plugin;
    17.  
    18. @Override
    19. public void onEnable() {
    20. this.log.info("[Kills] Enabled!");
    21. getServer().getPluginManager().registerEvents(this, this);
    22. getConfig().options().copyDefaults(true);
    23. saveConfig();
    24. }
    25.  
    26. @Override
    27. public void onDisable() {
    28. this.log.info("[Kills] Disabled!");
    29. }
    30.  
    31.  
    32. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    33. if(commandLabel.equalsIgnoreCase("kills")) {
    34. Player p = (Player) sender;
    35. int kills = getConfig().getInt("Players." + p.getName() + ".Kills");
    36. p.sendMessage(ChatColor.DARK_RED + "You now have " + ChatColor.DARK_RED + kills + ChatColor.DARK_RED + " kills!");
    37. }
    38. return true;
    39. }
    40.  
    41. @EventHandler
    42. public void hit(PlayerDeathEvent e) {
    43. String killer = e.getEntity().getKiller().getName();
    44. int killCount = getConfig().getInt("Players." + killer + ".Kills") +1;
    45. getConfig().set("Players." + killer + ".Kills", killCount);
    46. saveConfig();
    47. this.reloadConfig();
    48.  
    49. e.getEntity().getKiller().giveExpLevels( +1);
    50. }
    Go Hard xTrollxDudex Onlineids

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 30, 2016
  14. Offline

    PreFiXAUT

    Schaakmatth
    Did you already debug it? When you didn't > Add a System.out.println in and after every if , in every Method, basicly everywhere and print some data with it (Who killed what, how many kills etc).
    When this doesn't solve it, then we can go on, because mostly you just forgot something, and debugging works for nearly every problem.
     
  15. Offline

    Schaakmatth

    ok still doesnt work.
     
  16. Schaakmatth Code with debug & result of debug please.
     
  17. Offline

    jimuskin

    I'm not sure how accurate this is, but by looking through the code, I don't see the player's stats ever being registered to the config before doing the check. Because doing this, the method refuses to run. Maybe you would want to set the player's stats on login?
     
  18. Offline

    fireblast709

    Schaakmatth
    - don't use static instances of the plugin
    - use JavaPlugin#getLogger() instead of Logger.getLogger("Minecraft")
    - check if sender instanceof Player before casting
    - check if Player#getKiller() returns something not null before using it, preventing a lot of NPEs
     
  19. Offline

    Schaakmatth

    ok now it works 1 problem in the config is:
    Code:
    # Configuration
    Players:
      Craftenplayer(=Schaakmatth):
                Kills: 1
    fireblast709
     
  20. Schaakmatth Save their uuid rather than their instance.
     
  21. Offline

    Schaakmatth

  22. Schaakmatth Shocking. Whereever you're doing getConfig().set(player, kills) do getConfig().set(player.getUniqueId(), kills) and access with p.getUniqueId() instead of p.getName()
     
  23. Offline

    Schaakmatth

    ok uuids are not what i need i need to know the name without [Member] Schaakmatth: only Schaakmatth have to save to config you know? AdamQpzm
     
  24. Offline

    xTrollxDudex

    Schaakmatth
    You don't have any idea what registering events is, how do you know your events are registered?
    http://wiki.bukkit.org/Event_API_Reference#Registering_Events

    And what happens when the player changes the name?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Sep 15, 2019
  25. Schaakmatth
    player.getName() and Bukkit.getPlayerExact(String name)
    It's trying to save the CraftPlayer instance rather than the name.
     
Thread Status:
Not open for further replies.

Share This Page