• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Problem beim coden!

rednael500

Minecrafter
Registriert
16 März 2013
Beiträge
7
Diamanten
0
Minecraft
rednael500
Liebe Commiunity,

ich bin relativ neu, was das coden von Plugins angeht und habe deshalb eine Frage.
Wie mache ich es, dass wenn ich ein Schild auf dem Server habe, auf dem z.B. "Server 1" steht, das Plugin diesen Text und die zugehörige Linie erkennt und den Text dann durch "§2Server 1" ersetzt?

Ich wäre sehr dankbar, wenn ihr mir helfen könntet :D

PS: Ich weiß auf alle Fälle mal, dass man einen EventHandler benötigt, aber habe leider keine Ahnung, wie es das weitergeht...

MfG
rednael500
 

ReolatHD

Kuhfänger
Registriert
22 März 2014
Beiträge
51
Diamanten
0
Hi rednael500 ich bin momentan nicht am PC wenn du willst kann Ich es dir später oder morgen Codes.
Auf jeden Fall benötigst du ein OnSignCreate event. Dan mit if (sign.getline(zahl) == "Server 1" ) abfragen und mit sign.setLine setzen. Wobei Zahl 0=schild Zeile 1 Zahl 1 =Schild zeile2........
Schreib einfach wenn du noch Hilfe brauchst.
Lg
Reolat
 

rednael500

Minecrafter
Registriert
16 März 2013
Beiträge
7
Diamanten
0
Minecraft
rednael500
Leider klappt mein Versuch nicht so ganz...

Also ich habe jetzt schonmal ein bischen rumprobiert, aber folgendes klappt leider nicht:

Code:
package de.minesuite.MineSystem;

import org.bukkit.block.Block;
import org.bukkit.block.Sign;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.SignChangeEvent;

public class JoinSchilder implements Listener {
	
	@EventHandler
	public void onSignCreate(SignChangeEvent e) {
		Block b = e.getBlock();
		Sign s = (Sign) b.getState();
		if(s.getLine(1) == "Warten...") {
			s.setLine(1, "§2Warten...");
		}
	}
}

Wäre echt nice, wenn ihr mir vielleich sagen könntet, was ich ändern muss :D
 

rednael500

Minecrafter
Registriert
16 März 2013
Beiträge
7
Diamanten
0
Minecraft
rednael500
Hallo, zuerst fehlt entweder die Verknüpfung zur Hauptklasse, oder on enable on disable usw fehlt. Außerdem musst du Im onEnable pluginmanager. Registerevents() Machen.

Also was Du geschrieben hast, ist sicher simpel, aber ich habe leider keine Vorstellungen, was genau Du meinst.
Bitte helfe mir noch:
- Wo muss ich das einragen?
- Muss ich noch was hinzufügen?
- Wie sollte der Code aussehen?

Wäre cool, wenn Du mir das sagen könntest :D

MfG
rednael500
 

rednael500

Minecrafter
Registriert
16 März 2013
Beiträge
7
Diamanten
0
Minecraft
rednael500
Du musst daran denken, dass Java bei 0 anfängt zu zählen.

Also 1. Zeile auf Schild = s.getLine(0);

Ja, danke, das habe ich schon beachtet, und in die 2 Zeile (also getLine(1) benutzt) geschrieben.
Aber leider klappt es noch nicht...

Wie könnte ich das denn lösen, dass das Schild auch geändert wird, wenn es bereits plaziert ist.
Also wenn ein Schild auf dem Server hängt und sich der Text durch ein anderes Plugin ändert, soll dieser geänderte Text von diesem Plugin geändert werden.
(Klingt vieleicht unnötig und dumm, aber ich habe mir was dabei gedacht ;))
 
G

games6471

Guest
DU vergleichst Strings über einen Referenzvergleich. Dies geht nur, wenn diese Objekte wirklich die Selben sind. Dies trifft auf z.B. auf Strings zu, die im String-Pool der JVM liegen und daher ein und das selbe Objekt sind. Festgelegte Strings im Source-Code als auch Strings, auf denen intern() aufgerufen wurde, werden zu diesem Pool hinzugefügt.

Um die Gleichheit eines Strings zu überprüfen, verwendet man stets die Methode equals() oder equalsIgnoreCase().
 
Zuletzt bearbeitet von einem Moderator:

rednael500

Minecrafter
Registriert
16 März 2013
Beiträge
7
Diamanten
0
Minecraft
rednael500
Hilfe? ;)

Kurz mal so ne Frage:

Wenn jemand den Beitrag liest, kann der/die mir, wenn er/sie bescheid weiß, mir ein mögliches Script in diesem beitrag schicken?
Das wäre cool, weil ich leider noch nichts gefunden habe...

Wäre super nice! :D

MfG
rednael500
 

Scrayos

Vorarbeiter
Registriert
11 Februar 2012
Beiträge
296
Alter
29
Diamanten
338
Minecraft
Scrayos
Du musst das Event zuletzt noch canceln, da sonst nachdem du deine Sachen ausgeführt hast noch das eigentliche Verhalten bei diesem Event ausgeführt wird. Sprich: Der ursprüngliche Text wird wieder eingesetzt.

Das machst du ganz einfach via e.setCancelled(true);
 

rednael500

Minecrafter
Registriert
16 März 2013
Beiträge
7
Diamanten
0
Minecraft
rednael500
Vielen Dank für die bisherige Hilfe, aber ich komme trotzdem einfach nicht weiter.
Ich habe es geschafft, dass wenn ich ein Schild platziere und z.B., wenn ich es so eingestellt habe, in Zeile 2 (also 1) "Warten..." schreibe, dass dann der Text in dieser Zeile entsprechend geändert wird.

Aber ich brauche eig. folgendes:
Schilder, die bereits paltziert sind, sollen gefunden und ausgelesen werden. Dauerhaft soll überprüft werden, ob angegebener Text auf dem Schild auftaucht. Wenn dies passiert, soll er duch den anderen angegebenen Text überschrieben werden UND DAS DAUERHAFT!

Grund dieser Entscheidung:
Ich verwende das Plugin "TeleportSigns" und bin noch nicht so weit, so etwas selbst zu coden. Dieses liest die MotD des jeweiligen Servers auf und schreibt sie auf das entsprechende Schild (Die Minigames der einzelnen Server verändern die MotD automatisch, sodass sie z.B. zwischen Start, Voting etc. wechselt). Wenn die MotD jedoch farbig ist, stellt das Schild diese Zeile folgendermaßen da (durch TeleportSigns):
"??Voting". Dies sollte dann eig. "Voting" heißen.
Das Plugin, was ich deswegen zu coden versuche, soll neben anderen, nützlichen Funktionen eben diesen text, der dann nur schwarz ist erkennen und durch den text überschreiben, den ich festgelegt habe (in dem Fall der gleiche Text in blau.)
Da, wie schon gesagt, die MotD der Server je nach Spielphase immer ändert, sodass man das inder Lobby mitverfolgen kann, müsste halt dauerhaft geprüft werden und ich weiß einfach nicht, wie man das macht.

Übrigens: Im Moment wird die Zeile des Schildes gefärbt, wenn ich es wo hin stelle (also nicht automatisch), aber NUR, wenn ich vorher einen Befehl aus dem Plugin eingegeben habe.

Ich würde mich über einen Code wirklich freuen, den ich dann auch auf Bedürfniss, mit meiner Kentniss, anpassen kann.

MfG
rednael500
 
Oben