Bei Hashmap 1 hinzufügen

Wenn ihr bei eurem Plugin nicht weiter kommt, könnt ihr hier euer Problem beschreiben und um Hilfe bitten.

Bei Hashmap 1 hinzufügen

Beitragvon SaynexHD » Mo 27. Mär 2017, 18:12

Hey,

Ich wollte heute Stats mit HashMaps programmieren.
Also, ich habe eine Hashmap:
Code: Alles auswählen
  1. public static HashMap<Player, Integer> kills = new HashMap<>();


Wie kann ich beim PlayerDeathEvent dem Killer dann den Integer in der HashMap um 1 erhöhen?

Ich habe es schon so versucht:

Code: Alles auswählen
  1. kills.put(k, + 1);


Das funktioniert leider nicht.
Die Kills bleiben immer auf 1.

Ich hoffe ihr könnt mir helfen :D
Benutzeravatar
SaynexHD
 
Beiträge: 7
Registriert: Mo 27. Mär 2017, 18:08

Re: Bei Hashmap 1 hinzufügen

Beitragvon monst12 » Mo 27. Mär 2017, 18:42

Hallo,

so an sich geht das auch nicht, dass du in der put()-Methode ein "inkrement" angibst.
Für dein konkretes Problem ist die Lösung relativ simpel:
Zuerst holst du dir den eingetragenen Wert anhand des Spielers und erhöhst ihn dann einfach um deine gewünschte Zahl.
Code: Alles auswählen
  1. kills.put(p, kills.get(p)+1);


Jedoch würde ich, besonders im Blick auf dein eigentliches Ziel des Speicherns von Statistiken, eine am Objekt orientierte Lösung vorschlagen.

Dazu mal eine kleine "Anleitung" (, die du dementsprechend auch beliebig erweitern kannst).
Ich setze hierbei voraus, dass du verstehst was Klassen, Instanzen, Referenzen und noch ein paar weitere wichtige Dinge bzgl. (simplem) OOP sind.

Wir legen uns erst einmal eine neue Klasse namens PlayerStats an.
Diese wird dann später für jeden Spieler eine Sammlung an verschiedenen Daten (Kills, Tode, Kits, etc.) widerspiegeln. Diese Klasse kannst du zudem je nach Spiel wieder beliebig Erweitern/Beschränken.
Für jeden Wert in diese PlayerStats-Klasse brauchen wir zudem erstmal ein paar Methoden, um mit den Werten arbeiten zu können.

Code: Alles auswählen
  1. public class PlayerStats {
  2. private int kills = 0;
  3. public int getKills(){
  4. return this.kills;
  5. }
  6. }

Soweit so gut. Nun können wir schonmal ohne Probleme die Kills bekommen. Nur blöd, dass wir die gar nicht ändern können. Hier brauchen wir ebenfalls eine Methode:
Code: Alles auswählen
  1. public void addKill(){
  2. this.kills+=1;
  3. }

Diese erhöht nun die obigen Kills um Eins. Je nach Geschmack/Nutzen kann man auch eine setKills(int added)-Methode einbauen.
Jetzt wollen wir das ganze aber noch mit deiner HashMap verknüpfen, da ja irgendwo diese PlayerStats auch mit unserem Player in Zusammenhang stehen wollen:

Code: Alles auswählen
  1. public class StatsManager{
  2. private final HashMap<Player, PlayerStats> stats = new HashMap<>();
  3. public PlayerStats getStats(Player player){
  4. return this.stats.get(player);
  5. }
  6. }

So nun haben wir es (fast) geschafft. Wir haben jetzt eine HashMap<Player, PlayerStats> in einer neue Klasse namens StatsManager, wo jeder Spieler seine ganz eigenen Stats bekommt. Schön und gut, doch wie nutzen wir das jetzt?
Ganz einfach:
Code: Alles auswählen
  1. public void onDeath(PlayerDeathEvent e){
  2. Player p; //Spieler hier holen
  3. StatsManager.getStats(p).addKill();
  4. }


Hierbei sind aber noch ein paar Dinge zu beachten:
1) Irgendwo musst du eine neue Instanz des StatsManagers "hinterlegt" haben. Meistens kommt sowas in die Hauptklasse deines Plugins.
2) Falls der Spieler nicht in der HashMap ist wirst du eine NullPointerException bekommen, da es dann auch keine Stats von ihm gibt. Also achte darauf, dass die Daten auch da sind!
3) Du kannst jetzt deine Stats-Klasse nach belieben Erweitern und Ausbauen (Automatisch Laden/Speichern etc.) und hast durch die Methoden, wie addKill() auch die Möglichkeit beispielsweise zu prüfen, ob der Spieler dadurch eine Runde gewonnen hat (wie bei OITC).

Bei Fragen kannst du dich gerne hier melden.
Ich empfehle dir sehr, zumindest mal diesen Vorschlag durchzusehen und dir eine Meinung davon zu bilden. Zudem ist das keine "ultimative komplett Lösung", also versuche dich darin (durch Recherche und Probieren) die für dich aktuell beste Lösung zu finden.
Soweit die Theorie.

MfG
monst12
Benutzeravatar
monst12
 
Beiträge: 239
Registriert: Sa 19. Apr 2014, 22:14

Re: Bei Hashmap 1 hinzufügen

Beitragvon SaynexHD » Mo 27. Mär 2017, 19:31

Erstmal danke dass du dir so viel mühe für die Antwort gemacht hast.
Wenn ich das richtig verstanden habe hast du mir erklärt wie ich Objekt Orientiert die Stats abspeichere.
Das will ich garnicht. Die Stats sind für ein GunGame Plugin, dass die Stats nach jedem Leave wieder löschen soll.
Aber trotzdem danke! ^^

EDIT:

Ich habe als ich es ausprobiert habe ein Problem.
Beim PlayerDeathEvent in meiner Klasse kommt eine NullPointerException:

Code: Alles auswählen
  1. [20:36:31] [Server thread/ERROR]: Could not pass event PlayerDeathEvent to GunGame v1.0
  2. org.bukkit.event.EventException
  3.    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot-1.8.7-R0.1-SNAPSHOT.jar:git-Spigot-f928e7a-994b2aa]
  4.    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.8.7-R0.1-SNAPSHOT.jar:git-Spigot-f928e7a-994b2aa]
  5.    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot-1.8.7-R0.1-SNAPSHOT.jar:git-Spigot-f928e7a-994b2aa]
  6.    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot-1.8.7-R0.1-SNAPSHOT.jar:git-Spigot-f928e7a-994b2aa]
  7.    at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callPlayerDeathEvent(CraftEventFactory.java:382) [spigot-1.8.7-R0.1-SNAPSHOT.jar:git-Spigot-f928e7a-994b2aa]
  8.    at net.minecraft.server.v1_8_R3.EntityPlayer.die(EntityPlayer.java:417) [spigot-1.8.7-R0.1-SNAPSHOT.jar:git-Spigot-f928e7a-994b2aa]
  9.    at net.minecraft.server.v1_8_R3.EntityLiving.damageEntity(EntityLiving.java:811) [spigot-1.8.7-R0.1-SNAPSHOT.jar:git-Spigot-f928e7a-994b2aa]
  10.    at net.minecraft.server.v1_8_R3.EntityHuman.damageEntity(EntityHuman.java:800) [spigot-1.8.7-R0.1-SNAPSHOT.jar:git-Spigot-f928e7a-994b2aa]
  11.    at net.minecraft.server.v1_8_R3.EntityPlayer.damageEntity(EntityPlayer.java:496) [spigot-1.8.7-R0.1-SNAPSHOT.jar:git-Spigot-f928e7a-994b2aa]
  12.    at net.minecraft.server.v1_8_R3.EntityHuman.attack(EntityHuman.java:1001) [spigot-1.8.7-R0.1-SNAPSHOT.jar:git-Spigot-f928e7a-994b2aa]
  13.    at net.minecraft.server.v1_8_R3.EntityPlayer.attack(EntityPlayer.java:1063) [spigot-1.8.7-R0.1-SNAPSHOT.jar:git-Spigot-f928e7a-994b2aa]
  14.    at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:1328) [spigot-1.8.7-R0.1-SNAPSHOT.jar:git-Spigot-f928e7a-994b2aa]
  15.    at net.minecraft.server.v1_8_R3.PacketPlayInUseEntity.a(SourceFile:52) [spigot-1.8.7-R0.1-SNAPSHOT.jar:git-Spigot-f928e7a-994b2aa]
  16.    at net.minecraft.server.v1_8_R3.PacketPlayInUseEntity.a(SourceFile:11) [spigot-1.8.7-R0.1-SNAPSHOT.jar:git-Spigot-f928e7a-994b2aa]
  17.    at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.8.7-R0.1-SNAPSHOT.jar:git-Spigot-f928e7a-994b2aa]
  18.    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_121]
  19.    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_121]
  20.    at net.minecraft.server.v1_8_R3.SystemUtils.a(SystemUtils.java:19) [spigot-1.8.7-R0.1-SNAPSHOT.jar:git-Spigot-f928e7a-994b2aa]
  21.    at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:718) [spigot-1.8.7-R0.1-SNAPSHOT.jar:git-Spigot-f928e7a-994b2aa]
  22.    at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:367) [spigot-1.8.7-R0.1-SNAPSHOT.jar:git-Spigot-f928e7a-994b2aa]
  23.    at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:657) [spigot-1.8.7-R0.1-SNAPSHOT.jar:git-Spigot-f928e7a-994b2aa]
  24.    at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:560) [spigot-1.8.7-R0.1-SNAPSHOT.jar:git-Spigot-f928e7a-994b2aa]
  25.    at java.lang.Thread.run(Unknown Source) [?:1.8.0_121]
  26. Caused by: java.lang.NullPointerException
  27.    at Listener.Events.onKill(Events.java:96) ~[?:?]
  28.    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_121]
  29.    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_121]
  30.    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_121]
  31.    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_121]
  32.    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.8.7-R0.1-SNAPSHOT.jar:git-Spigot-f928e7a-994b2aa]
  33.    ... 22 more


Ich frage die Stats so ab:

Code: Alles auswählen
  1. p.sendMessage("§3Kills: §a" + Events.kills.get(p));


Dort verändert sich die Zahl jedoch bei nem Kill nicht.

Hier is mein Deathevent:

Code: Alles auswählen
  1.    @EventHandler
  2.    public void onKill(PlayerDeathEvent e) {
  3.       Player p = (Player) e.getEntity();
  4.       Player k = (Player) e.getEntity().getKiller();
  5.       // if (ingame.contains(p) && ingame.contains(k)) {
  6.       
  7.       kills.put(k, kills.get(k)+1);
  8.       e.setDeathMessage(null);
  9.       if (p.getWorld().getName().equals(Config.getWorld()) && k.getWorld().getName().equals(Config.getWorld())) {
  10.          if (k.getLevel() == 1) {
  11.             k.getInventory().addItem(i.create(Material.WOOD_SWORD));
  12.             k.sendMessage(var.pr + "Du hast §e" + p.getName() + "§7 getötet!");
  13.             k.setLevel(k.getLevel() + 1);
  14.          } else {
  15.             if (k.getLevel() == 2) {
  16.                k.getInventory().setChestplate(i.create(Material.LEATHER_CHESTPLATE));
  17.                k.sendMessage(var.pr + "Du hast §e" + p.getName() + "§7 getötet!");
  18.                k.setLevel(k.getLevel() + 1);
  19.             } else {
  20.                if (k.getLevel() == 3) {
  21.                   k.getInventory().setBoots(i.create(Material.LEATHER_BOOTS));
  22.                   k.sendMessage(var.pr + "Du hast §e" + p.getName() + "§7 getötet!");
  23.                   k.setLevel(k.getLevel() + 1);
  24.                } else {
  25.                   if (k.getLevel() == 4) {
  26.                      k.getInventory().setHelmet(i.create(Material.LEATHER_HELMET));
  27.                      k.sendMessage(var.pr + "Du hast §e" + p.getName() + "§7 getötet!");
  28.                      k.setLevel(k.getLevel() + 1);
  29.                   } else {
  30.                      if (k.getLevel() == 5) {
  31.                         k.getInventory().setLeggings(i.create(Material.LEATHER_LEGGINGS));
  32.                         k.sendMessage(var.pr + "Du hast §e" + p.getName() + "§7 getötet!");
  33.                         k.setLevel(k.getLevel() + 1);
  34.                      } else {
  35.                         if (k.getLevel() == 6) {
  36.                            k.setLevel(k.getLevel() + 1);
  37.                            k.sendMessage(var.pr + "Du hast §e" + p.getName() + "§7 getötet!");
  38.                         }else{
  39.                            
  40.                            if (k.getLevel() == 7) {
  41.                               
  42.                               k.getInventory().setChestplate(i.createE(Material.LEATHER_CHESTPLATE, Enchantment.PROTECTION_ENVIRONMENTAL, 1));
  43.                               k.getInventory().setBoots(i.createE(Material.LEATHER_BOOTS, Enchantment.PROTECTION_ENVIRONMENTAL, 1));
  44.                               k.sendMessage(var.pr + "Du hast §e" + p.getName() + "§7 getötet!");
  45.                               k.setLevel(k.getLevel() + 1);
  46.                            }else{
  47.                               
  48.                               if (k.getLevel() == 8) {
  49.                                  
  50.                                  k.getInventory().setHelmet(i.createE(Material.LEATHER_HELMET, Enchantment.PROTECTION_ENVIRONMENTAL, 1));
  51.                                  k.getInventory().setLeggings(i.createE(Material.LEATHER_LEGGINGS, Enchantment.PROTECTION_ENVIRONMENTAL, 1));
  52.                                  k.sendMessage(var.pr + "Du hast §e" + p.getName() + "§7 getötet!");
  53.                                  k.setLevel(k.getLevel() + 1);
  54.                               }else{
  55.                                  
  56.                                  if (k.getLevel() == 9) {
  57.                                     
  58.                                     k.getInventory().setItem(0, i.create(Material.GOLD_AXE));
  59.                                     k.sendMessage(var.pr + "Du hast §e" + p.getName() + "§7 getötet!");
  60.                                     k.setLevel(k.getLevel() + 1);
  61.                                  }else{
  62.                                     
  63.                                     if (k.getLevel() == 10) {
  64.                                        
  65.                                        k.getInventory().setItem(0, i.createE(Material.GOLD_AXE, Enchantment.DAMAGE_ALL, 1));
  66.                                        k.sendMessage(var.pr + "Du hast §e" + p.getName() + "§7 getötet!");
  67.                                        k.setLevel(k.getLevel() + 1);
  68.                                     }else{
  69.                                        
  70.                                        if (k.getLevel() == 11) {
  71.                                           
  72.                                           k.getInventory().setItem(0, i.create(Material.GOLD_SWORD));
  73.                                           k.sendMessage(var.pr + "Du hast §e" + p.getName() + "§7 getötet!");
  74.                                           k.setLevel(k.getLevel() + 1);
  75.                                        }else{
  76.                                           
  77.                                           if (k.getLevel() == 12) {
  78.                                              
  79.                                              k.getInventory().setItem(0, i.createE(Material.GOLD_SWORD, Enchantment.DAMAGE_ALL, 1));
  80.                                              k.sendMessage(var.pr + "Du hast §e" + p.getName() + "§7 getötet!");
  81.                                              k.setLevel(k.getLevel() + 1);
  82.                                           }else{
  83.                                              
  84.                                              if (k.getLevel() == 13) {
  85.                                                 
  86.                                                 k.getInventory().setChestplate(i.create(Material.IRON_CHESTPLATE));
  87.                                                 k.sendMessage(var.pr + "Du hast §e" + p.getName() + "§7 getötet!");
  88.                                                 k.setLevel(k.getLevel() + 1);
  89.                                              }else{
  90.                                                 
  91.                                                 if (k.getLevel() == 14) {
  92.                                                    
  93.                                                    k.getInventory().setBoots(i.create(Material.IRON_BOOTS));
  94.                                                    k.getInventory().setHelmet(i.create(Material.IRON_HELMET));
  95.                                                    k.sendMessage(var.pr + "Du hast §e" + p.getName() + "§7 getötet!");
  96.                                                    k.setLevel(k.getLevel() + 1);
  97.                                                 }else{
  98.                                                    
  99.                                                    if (k.getLevel() == 15) {
  100.                                                       
  101.                                                       k.getInventory().setItem(0, i.create(Material.IRON_AXE));
  102.                                                       k.getInventory().setLeggings(i.create(Material.IRON_LEGGINGS));
  103.                                                       k.sendMessage(var.pr + "Du hast §e" + p.getName() + "§7 getötet!");
  104.                                                       k.setLevel(k.getLevel() + 1);
  105.                                                    }else{
  106.                                                       
  107.                                                       if (k.getLevel() == 16) {
  108.                                                          
  109.                                                          k.getInventory().setItem(0, i.createE(Material.IRON_AXE, Enchantment.DAMAGE_ALL, 1));
  110.                                                          k.sendMessage(var.pr + "Du hast §e" + p.getName() + "§7 getötet!");
  111.                                                          k.setLevel(k.getLevel() + 1);
  112.                                                       }else{
  113.                                                          
  114.                                                          if (k.getLevel() == 17) {
  115.                                                             
  116.                                                             k.getInventory().setChestplate(i.createE(Material.IRON_CHESTPLATE, Enchantment.PROTECTION_ENVIRONMENTAL, 1));
  117.                                                             k.getInventory().setBoots(i.createE(Material.IRON_BOOTS, Enchantment.PROTECTION_ENVIRONMENTAL, 1));
  118.                                                             k.sendMessage(var.pr + "Du hast §e" + p.getName() + "§7 getötet!");
  119.                                                             k.setLevel(k.getLevel() + 1);
  120.                                                          }else{
  121.                                                             
  122.                                                             if (k.getLevel() == 18) {
  123.                                                                
  124.                                                                k.getInventory().setItem(0, i.create(Material.IRON_SWORD));
  125.                                                                k.sendMessage(var.pr + "Du hast §e" + p.getName() + "§7 getötet!");
  126.                                                                k.setLevel(k.getLevel() + 1);
  127.                                                             }else{
  128.                                                                
  129.                                                                if (k.getLevel() == 19) {
  130.                                                                   
  131.                                                                   k.getInventory().setItem(0, i.createE(Material.IRON_SWORD, Enchantment.DAMAGE_ALL, 1));
  132.                                                                   k.sendMessage(var.pr + "Du hast §e" + p.getName() + "§7 getötet!");
  133.                                                                   k.setLevel(k.getLevel() + 1);
  134.                                                                }else{
  135.                                                                   
  136.                                                                   if (k.getLevel() == 20) {
  137.                                                                      
  138.                                                                      k.getInventory().setHelmet(i.createE(Material.IRON_HELMET, Enchantment.PROTECTION_ENVIRONMENTAL, 1));
  139.                                                                      k.getInventory().setLeggings(i.createE(Material.IRON_LEGGINGS, Enchantment.PROTECTION_ENVIRONMENTAL, 1));
  140.                                                                      k.sendMessage(var.pr + "Du hast §e" + p.getName() + "§7 getötet!");
  141.                                                                      k.setLevel(k.getLevel() + 1);
  142.                                                                   }else{
  143.                                                                      
  144.                                                                      if (k.getLevel() == 21) {
  145.                                                                         
  146.                                                                         for(ItemStack iv : k.getInventory().getContents()) {
  147.                                                                            
  148.                                                                            if(iv != null && iv.getDurability() != 0) {
  149.                                                                               
  150.                                                                               iv.setDurability((short)0);
  151.                                                                               
  152.                                                                            }
  153.                                                                            
  154.                                                                         }
  155.                                                                         
  156.                                                                         k.sendMessage(var.pr + "Du hast das höchste Level erreicht!");
  157.                                                                         
  158.                                                                      }
  159.                                                                      
  160.                                                                   }
  161.                                                                   
  162.                                                                }
  163.                                                                
  164.                                                             }
  165.                                                             
  166.                                                          }
  167.                                                          
  168.                                                       }
  169.                                                       
  170.                                                    }
  171.                                                    
  172.                                                 }
  173.                                                 
  174.                                              }
  175.                                              
  176.                                           }
  177.                                           
  178.                                        }
  179.                                        
  180.                                     }
  181.                                     
  182.                                  }
  183.                                  
  184.                               }
  185.                               
  186.                            }
  187.                            
  188.                         }
  189.                         respawn(p, 1);
  190.                      }
  191.                   }
  192.                }
  193.             }
  194.          }
  195.       }
  196.       // }
  197.    }


Ich hoffe du kannst mir wieder helfen!^^
Benutzeravatar
SaynexHD
 
Beiträge: 7
Registriert: Mo 27. Mär 2017, 18:08

Re: Bei Hashmap 1 hinzufügen

Beitragvon monst12 » Mo 27. Mär 2017, 20:10

Erstmal danke dass du dir so viel mühe für die Antwort gemacht hast.
Wenn ich das richtig verstanden habe hast du mir erklärt wie ich Objekt Orientiert die Stats abspeichere.
Das will ich garnicht. Die Stats sind für ein GunGame Plugin, dass die Stats nach jedem Leave wieder löschen soll.
Aber trotzdem danke! ^^


Das war natürlich rein optional von mir. Dennoch möchte ich kurz nochmal was korrigieren. Ein Objekt orientiertes Programm Design hängt erstmal nicht mit einer persistenten (über die Anwendungslaufzeit hinweg) Speicherungen der Stats zusammen! Es geht in dem "Design-Vorschlag" lediglich um eine vereinfachte Arbeit, bessere Performance und bessere Wartbarkeit. Wenn du aktuell noch nicht bereit bist das umzusetzen ist das natürlich kein Problem.
Hier mal ein guter Anfang, um etwas mehr Über Klassen, Objekte, Instanzen und den Sinn hinter OOP herauszufinden.

Bezüglich deines Fehlers mal ein Link zu einem How-To "Fehler lesen" (hier Abschnitt 2).
Viele Fehler lassen sich meist durch nochmaliges "genaues Hinschauen" oder "Durchdenken" des Codes sehr einfach lösen.

Es hilft also schonmal zu wissen was für ein Fehler es ist. Reicht aber bei der Menge Code nicht aus besser sagen zu können, was vermutlich "null" ist.
Abhilfe schafft hier aus dem StackTrace die Zeile:
at Listener.Events.onKill(Events.java:96) ~[?:?]


Dementsprechend bräuchten wir mal die Zeile 96 in deinem Listener in der Methode onKill markiert, sodass wir weiterhelfen können. Andernfalls kannst du auch einfach (mit Imports) die gesamte Klasse kopieren, dann finden wir die Zeile 96 von selber ;).
Aber eventuell fällt es dir auch jetzt beim genaueren hinschauen auf.
Soweit die Theorie.

MfG
monst12
Benutzeravatar
monst12
 
Beiträge: 239
Registriert: Sa 19. Apr 2014, 22:14

Re: Bei Hashmap 1 hinzufügen

Beitragvon SaynexHD » Mo 27. Mär 2017, 20:46

Ich wusste, dass man dort den Fehler auslesen kann.
In der Zeile ist der Code den du geschrieben hast.

Also damit meine ich das mit der HashMap 1 hinzufüge n.

Ich habe die Antwort schnell geschrieben. Da hab ich vergessen zu sagen was in der Zeile steht.
Benutzeravatar
SaynexHD
 
Beiträge: 7
Registriert: Mo 27. Mär 2017, 18:08

Re: Bei Hashmap 1 hinzufügen

Beitragvon monst12 » Di 28. Mär 2017, 13:12

Dann gibt es die Möglichkeit, dass der Spieler nicht in der HashMap ist oder der Killer nicht existiert. Fügst du den Spieler denn bspw. beim Betreten des Servers der Map hinzu?
Wichtig ist bei deinem aktullen Code, dass der Spieler bereits einmal drin war (mit halt 0 Kills) und der Killer nicht null ist (vorher prüfen!).
Ansonsten kannst du dir einfach eine Methode schreiben, die dir das abnimmt (kleines Beispiel) :
Code: Alles auswählen
  1. public void addKill(Player player){
  2. if(player == null) return;
  3. if(!kills.contains(player)){
  4. kills.put(player, 0);
  5. return;
  6. }
  7. kills.put(player, kills.get(player));
  8. }


Dennoch muss ich dazu sagen, dass es dadurch zunehmend zu einer Art "bad practice" kommt, da wir bereits dreimal auf die HashMap zugreifen müssen für nur ein Spieler-Update.
Überlege dir also gut, wie du das angehen willst und versuch eventuell etwas mehr über Java zu lernen, sodass du seine volle Kraft und Möglichkeiten mitnutzen kannst.
Hier mal ein guter Start dafür.
Soweit die Theorie.

MfG
monst12
Benutzeravatar
monst12
 
Beiträge: 239
Registriert: Sa 19. Apr 2014, 22:14

Re: Bei Hashmap 1 hinzufügen

Beitragvon SaynexHD » Di 28. Mär 2017, 16:18

Danke, hat jetzt funktioniert! ^^
Benutzeravatar
SaynexHD
 
Beiträge: 7
Registriert: Mo 27. Mär 2017, 18:08


Zurück zu Hilfe und Support

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], Majestic-12 [Bot] und 1 Gast

cron