Cookie clicker not saving clicks to players.yml

Discussion in 'Plugin Development' started by lomd5, Apr 5, 2020.

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

    lomd5

  2. Online

    timtower Administrator Administrator Moderator

    @lomd5 Store using UUID instead of Player objects.
     
  3. Offline

    lomd5

    ah, do you now how to do it? :D
     
    Last edited: Apr 5, 2020
  4. Offline

    CraftCreeper6

    @lomd5
    Change your hashmap to store UUID instead of Player.
     
  5. Offline

    lomd5

    example please
     
  6. Offline

    CraftCreeper6

    @lomd5
    In your main class you have a HashMap
    Code:
    public Map<Player, Integer> Cookies = new HashMap<>();
    Instead of Player, use UUID.

    Also, cookies should have a lower case c, to follow correct naming conventions.
     
  7. Offline

    lomd5

    Its not working... i dont know how i can make working config
     
  8. Online

    timtower Administrator Administrator Moderator

    Where do you save it?
     
  9. Offline

    lomd5

    Its not saving i need to save to file "players.yml"
     
  10. Online

    timtower Administrator Administrator Moderator

    Where do you call the save method?
     
  11. Offline

    lomd5

    I dont know how
     
  12. Online

    timtower Administrator Administrator Moderator

    @lomd5 Start by calling save methods in your onDisable
     
  13. Offline

    lomd5

    Can you make a class or i dont know what... i really need to work this, but i dont know how...
     
  14. Online

    timtower Administrator Administrator Moderator

    Did you write the posted code?
     
  15. Offline

    lomd5

  16. Online

    timtower Administrator Administrator Moderator

    @lomd5 Then you should know when to call savePlayerData
     
  17. Offline

    lomd5

    Oh sorry i smoke lots of weed yesterday :D oh i had savePlayerData in SQLCookie, but they dont work and i remove them... and now i finding on internet, how i can i make saving procces of nickname:clicks
     
  18. Online

    timtower Administrator Administrator Moderator

    @lomd5 config.set(name, value)
     
  19. Offline

    lomd5

    Code:
      @EventHandler
      public void onInteract(PlayerInteractEvent e) {
        Player p = e.getPlayer();
     
        if (e.getAction() == Action.LEFT_CLICK_BLOCK && e.getClickedBlock().getType() == Material.SKULL) {
    
    
       
          Skull skull = (Skull)e.getClickedBlock().getState();
          if (skull.getOwner().equalsIgnoreCase("QuadratCookie")) {
         
            if ((cookie.getInstance()).Cookies.containsKey(p)) {
              (cookie.getInstance()).Cookies.put(p, Integer.valueOf(((Integer)(cookie.getInstance()).Cookies.get(p)).intValue() + 1));
            } else {
              (cookie.getInstance()).Cookies.put(p, Integer.valueOf(1));
            }
            sendActionBar(p, "§7Tvoje cookies: §a" + (cookie.getInstance()).Cookies.get(p));
            p.playSound(p.getLocation(), Sound.CHICKEN_EGG_POP, 1.0F, 1.0F);
          }
        } 
     
    Last edited: Apr 6, 2020
  20. Online

    timtower Administrator Administrator Moderator

    @lomd5 You are never setting values in the config.
     
  21. Offline

    lomd5

    ok i give class SQLCookie(config to save) to cookie(Main)

    Code:
    package me.screm3k.cookieclicker;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;
    import me.screm3k.cookieclicker.PlayerInteractListener;
    import net.md_5.bungee.api.ChatColor;
    
    import org.bukkit.Bukkit;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.configuration.file.YamlConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Listener;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.inventory.meta.SkullMeta;
    import org.bukkit.plugin.Plugin;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class cookie extends JavaPlugin implements Listener{
     
      public Map<Player, Integer> Cookies = new HashMap<>();
    
      private static cookie instance;
    
    
      public void onEnable() {
        Bukkit.getConsoleSender().sendMessage("§8[§aCookieClicker§8] §aPlugin has been enabled!");
        Bukkit.getConsoleSender().sendMessage("§8[§aCookieClicker§8] §aPlugin made by SCREM3k for TrenixOut.eu! ");
     
        instance = this;
        PluginManager pm = Bukkit.getPluginManager();
        pm.registerEvents((Listener)new PlayerInteractListener(), (Plugin)this);
        pm.registerEvents((Listener)new BlockBreakListener(), (Plugin)this);
    }
    
      public void onDisable() {
        Bukkit.getConsoleSender().sendMessage("§8[§aCookieClicker§8] §aPlugin has been disabled!");
      }
    
    
      public static cookie getInstance() { return instance; }
    
    
      public boolean onCommand(CommandSender sender, Command cmd, String cmdlabel, String[] args) {
       
        Player p = (Player)sender;
     
        if (p.hasPermission("cookieclicker.set") || p.hasPermission("*") || p.isOp()) {
            ItemStack item = new ItemStack(Material.SKULL_ITEM, 1, (short)3);
            SkullMeta meta = (SkullMeta)item.getItemMeta();
            meta.setOwner("QuadratCookie");
            meta.setDisplayName("§aCookie hlava");
            item.setItemMeta((ItemMeta)meta);
            p.getInventory().addItem(new ItemStack[] { item });
            p.sendMessage("§8[§aCookieClicker§8] §7Dostal jsi hlavu, kterou nastavis klikání!");
          } else {
            p.sendMessage("§8[§aCookieClicker§8] §cNa toto nemáš dostačující práva!");
    
          return true;
        }
        return false;
      }
    
      private cookie() {}
    
      static cookie instance1 = new cookie();
    
      public static cookie getInstance1() {
          return instance1;
       
      }
      Plugin p;
      FileConfiguration config;
      File cfile;
    
      FileConfiguration playerdata;
      File pdfile;
    
    
      public void savePlayerData(Plugin p) {
          pdfile = new File(p.getDataFolder(), "playerdata.yml");
    
          if (!pdfile.exists()) {
              try {
                  pdfile.createNewFile();
                  config.save(pdfile);
              } catch (IOException e) {
                  Bukkit.getServer().getLogger().severe(ChatColor.RED + "Could not create playerdata.yml.");
              }
          }
      }
    
      public void reloadPlayerData() {
          config = YamlConfiguration.loadConfiguration(pdfile);
      }
    }
    

    and its give me error


    Code:
    [11:17:26] [Server thread/ERROR]: Could not load 'plugins\CookieClicker-1.0.jar' in folder 'plugins'
    org.bukkit.plugin.InvalidPluginException: No public constructor
        at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:78) ~[Server.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:131) ~[Server.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:329) ~[Server.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:251) [Server.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugins(CraftServer.java:292) [Server.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.reload(CraftServer.java:739) [Server.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.Bukkit.reload(Bukkit.java:535) [Server.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:25) [Server.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [Server.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) [Server.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchServerCommand(CraftServer.java:627) [Server.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.DedicatedServer.aO(DedicatedServer.java:412) [Server.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:375) [Server.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [Server.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [Server.jar:git-Spigot-db6de12-18fbb24]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_211]
    Caused by: java.lang.IllegalAccessException: Class org.bukkit.plugin.java.PluginClassLoader can not access a member of class me.screm3k.cookieclicker.cookie with modifiers "private"
        at sun.reflect.Reflection.ensureMemberAccess(Unknown Source) ~[?:1.8.0_211]
        at java.lang.Class.newInstance(Unknown Source) ~[?:1.8.0_211]
        at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:76) ~[Server.jar:git-Spigot-db6de12-18fbb24]
        ... 15 more
    
     
  22. Online

    timtower Administrator Administrator Moderator

    @lomd5 Impressive that you got that to compile.
    Why are most classes getting casted?
    Don't make a constructor for you main class.
     
  23. Offline

    lomd5

    okeej hm i think i dont have some start method
     
  24. Online

    timtower Administrator Administrator Moderator

    You sure?
    Code:
    private cookie() {}
    
    static cookie instance1 = new cookie();
    
     
  25. Offline

    lomd5

    and error
    [11:32:58 ERROR]: Could not load 'plugins\CookieClicker-1.0.jar' in folder 'plugins'
    org.bukkit.plugin.InvalidPluginException: No public constructor
     
  26. Online

    timtower Administrator Administrator Moderator

    I know, that is because you have a constructor in your code.
     
  27. Offline

    lomd5

    cookie(Main)

    Code:
    import java.util.HashMap;
    import java.util.Map;
    import me.screm3k.cookieclicker.PlayerInteractListener;
    
    import org.bukkit.Bukkit;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Listener;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.inventory.meta.SkullMeta;
    import org.bukkit.plugin.Plugin;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    import me.screm3k.cookieclicker.SQLCookie;
    
    public class cookie extends JavaPlugin implements Listener{
       
      public Map<Player, Integer> Cookies = new HashMap<>();
      public Map<Player, Integer> SQLCookie = new HashMap<>();
     
      private cookie() {}
    
      static cookie instance1 = new cookie();
    
      private static cookie instance;
    
     
      public void onEnable() {
        Bukkit.getConsoleSender().sendMessage("§8[§aCookieClicker§8] §aPlugin has been enabled!");
        Bukkit.getConsoleSender().sendMessage("§8[§aCookieClicker§8] §aPlugin made by SCREM3k for TrenixOut.eu! ");
       
        instance = this;
        PluginManager pm = Bukkit.getPluginManager();
        pm.registerEvents((Listener)new PlayerInteractListener(), (Plugin)this);
        pm.registerEvents((Listener)new BlockBreakListener(), (Plugin)this);
    }
     
      public void onDisable() {
        Bukkit.getConsoleSender().sendMessage("§8[§aCookieClicker§8] §aPlugin has been disabled!");
      }
    
     
      public static cookie getInstance() { return instance; }
    
     
      public boolean onCommand(CommandSender sender, Command cmd, String cmdlabel, String[] args) {
         
        Player p = (Player)sender;
       
        if (p.hasPermission("cookieclicker.set") || p.hasPermission("*") || p.isOp()) {
            ItemStack item = new ItemStack(Material.SKULL_ITEM, 1, (short)3);
            SkullMeta meta = (SkullMeta)item.getItemMeta();
            meta.setOwner("QuadratCookie");
            meta.setDisplayName("§aCookie hlava");
            item.setItemMeta((ItemMeta)meta);
            p.getInventory().addItem(new ItemStack[] { item });
            p.sendMessage("§8[§aCookieClicker§8] §7Dostal jsi hlavu, kterou nastavis klikání!");
          } else {
            p.sendMessage("§8[§aCookieClicker§8] §cNa toto nemáš dostačující práva!");
    
          return true;
        }
        return false;
      }
    }
    SQLCookie(to saving and create players.yml)
    Code:
    import java.io.File;
    import java.io.IOException;
    
    import org.bukkit.Bukkit;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.configuration.file.YamlConfiguration;
    import org.bukkit.plugin.Plugin;
    
    public class SQLCookie {
       
          private SQLCookie() {}
    
          static SQLCookie instance = new SQLCookie();
    
          public static SQLCookie getInstance() {
              return instance;
             
          }
          Plugin p;
          FileConfiguration config;
          File cfile;
    
          FileConfiguration playerdata;
          File pdfile;
    
    
          public void savePlayerData(Plugin p) {
              pdfile = new File(p.getDataFolder(), "playerdata.yml");
          
              if (!pdfile.exists()) {
                  try {
                      pdfile.createNewFile();
                      config.save(pdfile);
                  } catch (IOException e) {
                      Bukkit.getServer().getLogger().severe("§8[§aCookieClicker§8] §cCould not create playerdata.yml.");
                  }
              }
          }
         
          public void reloadPlayerData() {
              config = YamlConfiguration.loadConfiguration(pdfile);
          }
    }
     
  28. Online

    timtower Administrator Administrator Moderator

    @lomd5 Posting the same code over and over again won't help.
    You main class contains things that it should not have.
     
  29. Offline

    lomd5

    Hm but i dont know..

    if i remove "private cookie() {}" its workign, but not create some file in /plugins
     
  30. Online

    timtower Administrator Administrator Moderator

    Remove the constructor
     
Thread Status:
Not open for further replies.

Share This Page