Aufruf Einer Methode aus einer anderen Klasse - Static Fehler

scooter757

Mitglied
So Hallo liebe Community!
Ich bin wegen Minecraft auf Java umgesprungen und versuche grad ein simples Plugin zu schreiben.
Es Funktioniert auch alles gut, bis (worauf wir schon beim Thema sind) ich eine Methode der "Hauptklasse" von einer anderen Klasse aufrufen möchte.

andere Klasse:
Java:
if (Blockset.getTypeId() == 35)
				 {
			      if (Blockabove.getTypeId() == 0)
			      {
			    	  if (me.scooter757.selfredstone.selfredstone.Player_enabled(p) == true) {
			    		  //player prüfen
				    	  Blockabove.setTypeId(55);
			    	  }
			      }
			      }

Die Abfrage, ob ein Player diese Funktion angeschaltet hat, kann man nur über die "Hauptklasse" abfragen, da man dort nur auf die config zugriff hat. dies sieht so aus:
Java:
public STATIC boolean Player_enabled(Player p)
	{
		String name = p.getName();
		Boolean ok = false;
		
		List<String> enabled =  THIS.getConfig().getStringList("enabled");
		for (String s : enabled){
			if (s == name){
				ok = true;
			}else{
				ok = false;
			}
		}
		return ok;
	}
Ich hab das Static schon mal großgeschrieben, da mit Eclipse sagt, das muss eine Statische Methode sein (Sonst kann ich von der anderen Klasse nicht darauf zugreifen). Wenn dies Keine static wär, würde ich aber kein Fehler bei dem this kriegen... --> jetzt kann ich nicht auf die config zugreifen -.-

Gibt es da irgend ein Trick in Java, oder kann man das umschreiben??

LG Scooter757
 
Ins blaue geraten könnte es mit [c]p.getConfig...[/c] richtig sein. Deine Codeschnipsel reichen aber nicht aus um das zu beantworten.

Ist dir die Bedeutung des Fehlers denn klar?
Beziehungsweise ist dir klar, was eine statische Methode ist und was this bedeutet?

Gruß Fant
 
Java:
@EventHandler
	    public void Block_place(BlockPlaceEvent event) {
	        
		 Block Blockset = event.getBlock(); //block speichern
		 Location Blocksetloc =  new Location(Blockset.getWorld(),Blockset.getX(),Blockset.getY(),Blockset.getZ()); //ort der Blockes Bestimmen
		 World w = Blocksetloc.getWorld(); //welt wo der block ist herkommt
		 
		 Blocksetloc.setY(Blocksetloc.getY() +1); //der block darüber
		 Block Blockabove = w.getBlockAt(Blocksetloc); //block angeben
		 //mit Blockset.setTypeId(55); zu redstone
		 //y höhe
		 //x nord-süd
		 //z
		  Player p = event.getPlayer();
		 
		 if (Blockset.getTypeId() == 35) //alter block
				 { 
			      if (Blockabove.getTypeId() == 0) //block darüber
			      {
			    	  if (me.scooter757.selfredstone.selfredstone.Player_enabled(p) == true) {
			    		  //player prüfen
				    	  Blockabove.setTypeId(55); //blockID auf 55 setzen
			    	  }
			      }
			      }
	    }

das mit equals is behoben 😉
und das mit p.getconfig geht nicht, da p die Variable für den player ist
So halbwegs.. morgen(oder übermorgen, so wie es die Zeit hergibt), wird sich aber vernünftig in Java eingelesen etc. denken Könnte ich mir das aber schon 😉 Ich schreibe wieder, wenn ich mehr weiß

LG scooter757
 
Ok, Java is halt anders als VB 😉
Auf jeden Fall weis Ich jetzt wie es genau geht dank OO03 Nicht-statische Methoden - Java als erste Programmiersprache - Javaschublade:

Java:
 if (Blockset.getTypeId() == 35)
				 {
			      if (Blockabove.getTypeId() == 0)
			      {
			    	  //p.sendMessage("leerer block"); 
			    	  selfredstone C = new selfredstone();
			    	  
			    	  if (C.Player_enabled(p) == true) {
			    		  //player prüfen
				    	  Blockabove.setTypeId(55);
			    	  }
			      }
			      }

ganz nach variablenname.methodenname(parameter);
Sorry, das ich nicht erst selber geguckt hab.. Ich hab mir gedacht, "das kann doch net so schwer sein"
Ich werd auf jeden Fall jetzt weiter mit Java Programmieren.. Also wenn ich noch nen Fehler irgendwann finde erst gucken, dann schreiben 😉
Trotztem Danke scooter757 😀
 

Zurück
Oben