Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Pytanie]Bukkit Plugin


Rekomendowane odpowiedzi

Opublikowano

Witam przy włączaniu serwera pobieram dane z mysql i dodaje je do hashmap-y :

	      		ArrayList<String> map_czlonkowie = new ArrayList<String>();
	    		ArrayList<String> map_sojusze = new ArrayList<String>();
	    		ArrayList<String> map_wojny = new ArrayList<String>();
	    		String tag = "";
	    		String name = "";
	    		String nick = "";
	              
	              
		    		String select = "SELECT * FROM Guild";
		    		ResultSet rs = mysql.query(select);
		    		try {
						addLog(pref + "Ladowanie informacji o gildiach ..");
						while(rs.next()){
							tag = rs.getString("tag");
							name = rs.getString("guild");
							nick = rs.getString("nick");
							//sojusze
							String sojusze = rs.getString("sojusz");
							String[] str = sojusze.split(",");
							for(String i : str){
								addLog("dodaje sojusze");
								map_sojusze.add(i);
							}
							//wojny
							String wrog = rs.getString("wrog");
							String[] str_wrog = wrog.split(",");
							for(String w : str_wrog){
								addLog("dodaje wojny");
								map_wojny.add(w);
							}
							
							String select1 = "SELECT * FROM Guild WHERE tag='" + tag + "'";
				    		ResultSet rs1 = mysql.query(select1);
				    		try {
				    			while(rs1.next()){
				    				String nick1 = rs1.getString("nick");
									addLog("dodaje nick");
										map_czlonkowie.add(nick1);
				    			}
				    		} catch (SQLException e) {
				    			e.printStackTrace();
				    		}
				    	    map_tag.put(nick, new TagPlayer(tag, name, map_czlonkowie, map_sojusze, map_wojny));
				    	    map_sojusze.clear();
				    	    map_wojny.clear();
				    	    map_czlonkowie.clear();
					}		    	    
		    	    addLog(pref + "Ladowanie zakonczone");
		    	    
		    		}catch (SQLException e) {
						e.printStackTrace();
					}

Oto klasa TagPlayer :

package me.rafalol.guilds;

import java.util.List;

public class TagPlayer {
		public  String tag;
		public  String name;
		public  List<String> members;
		public  List<String> ally;
		public  List<String> wars;

		public TagPlayer(String tag, String name, List<String> members, List<String> ally, List<String> wars){
	        this.tag = tag;
	        this.name = name;
	        this.members = members;
	        this.ally = ally;
	        this.wars = wars;
	    }
		public String getTag(){ return this.tag; }
		public String getNazwa(){ return this.name; }
		public List<String> getMembers(){ return this.members; }
		public List<String> getAlly(){ return this.ally; }
		public List<String> getWars(){ return this.wars; }
}

Przy pobieraniu wartosci kodem :

String tag_you = map_tag.get(you).getTag();

wyskakuje mi NullPointerExeption. :v nie mam pomysłu co zje**lem może macie jakieś pomysły ?

Opublikowano

Daj cały kod. Nie widzę deklaracji zmiennej map_tag oraz miejsca, gdzie jest ten błąd.

 

PS. Zmiennych w javie nie nazywa się map_tag, tylko mapTag - Słowa rozdziela się wielką literą.

708121422388637873334.png

Opublikowano

Ma, wielkie :p Zarówno możesz nazywać klasy z małej, zmienne i package z dużej. Ale wtedy jak ktoś spojrzy (np. ja) to dużo trudniej mu ten kod rozczytać i pomóc Ci. A obiekt "you"? Każda ze zmiennych może jakimś cudem nie mieć referencji i wywoływać ten błąd. Możesz dać też kod, przy którym błąd występuje? I daj treść błędu.

708121422388637873334.png

Opublikowano

Oczywiście :)

	@EventHandler
	public void onNameTag(PlayerReceiveNameTagEvent e) {

			String they = e.getNamedPlayer().getName();
			String you = e.getPlayer().getName();
			
			String tag_you = map_tag.get(you).getTag();
			String tag_they = map_tag.get(they).getTag();
			
			List<String> ally_you = map_tag.get(you).getAlly();
			
			List<String> war_you = map_tag.get(you).getWars();
			
			if(tag_you.equalsIgnoreCase(tag_they)){
				Bukkit.getPlayer(you).sendMessage("tag api - jestescie w tej samej gildii");
						e.setTag(ChatColor.DARK_GRAY + "[" + ChatColor.DARK_GREEN + tag_they + ChatColor.DARK_GRAY + "] " + ChatColor.DARK_GREEN + they);
			}
			else if(ally_you.contains(they)){
				Bukkit.getPlayer(you).sendMessage("tag api - jestescie sojusznikami");
				e.setTag(ChatColor.DARK_GRAY + "[" + ChatColor.BLUE + tag_they + ChatColor.DARK_GRAY + "] " + ChatColor.BLUE + they);
			}
			else if(war_you.contains(they)){
				Bukkit.getPlayer(you).sendMessage("tag api - jestescie wrogami");
						e.setTag(ChatColor.DARK_GRAY + "[" + ChatColor.DARK_RED + tag_they + ChatColor.DARK_GRAY + "] " + ChatColor.DARK_RED + they);
			}
			else{
				Bukkit.getPlayer(you).sendMessage("tag api - neutralni");
				e.setTag(ChatColor.DARK_GRAY + "[" + ChatColor.GRAY + tag_they + ChatColor.DARK_GRAY + "] " + ChatColor.GRAY + they);
			}
	}

A to błąd z konsolki :

[18:05:02] [Server thread/ERROR]: Could not pass event PlayerReceiveNameTagEvent to GuildPlug v2.0
org.bukkit.event.EventException
	at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
	at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
	at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:481) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:466) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
	at org.kitteh.tag.TagAPI$1.call(TagAPI.java:321) [TagAPI.jar:?]
	at org.kitteh.tag.TagAPI$1.call(TagAPI.java:318) [TagAPI.jar:?]
	at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftFuture.run(CraftFuture.java:89) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
	at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:345) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
	at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:587) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
	at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:250) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
	at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:545) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
	at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:457) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
	at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
Caused by: java.lang.NullPointerException
	at me.rafalol.guilds.events.onNameTag(events.java:160) ~[?:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_25]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_25]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_25]
	at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_25]
	at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
	... 12 more
  • 2 tygodnie później...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...