• 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!

Einige Fragen!

Masterfran99

Schafhirte
Gesperrt
Registriert
13 Oktober 2012
Beiträge
100
Diamanten
0
Hallo,

1.
Ist es möglich die Befehle die in der plugin.yml stehen sie automatisch eintragen zulassen?
Weil in der Hauptklasse müssen die Befehle ja auch registriert werden wenn sie in einer anderen Klasse sind.

2.
Was muss bei p.gettargetblock(arg1 arg2) rein??
Das ist doch den block den man schaut seine location oder?

3.
p.setCustomname
p.setdisplayname
Was ist der unterschied und wie benutzt man es richtig?

4.
Was muss man machen das man z.B. keine Villager verschieben kann sie sollen an der Stelle bleiben wo man sie spawnt, man kann ja Slowness geben aber wie noch?

5.
Das Scoreboard unter dem Spielername?
Wie macht man so etwas?
Link zu einen Tut wäre toll.

6.
Code:
World w = p.getWorld(); 				
w.setSpawnLocation(p.getLocation().getBlockX(), p.getLocation().getBlockY(), p.getLocation().getBlockZ());
Wo was muss ich ändern das auch noch die Richtung wo der Spieler hinschaut gesetzt wird?

EDIT BungeeCord Fragen:
7.
Wenn man BungeeCord installiert hat usw.. kann man doch bestimmt abfragen welche Spieler auf einen Server sind und wie viele oder?

8.
Zu BungeeCord kann man doch auch noch bestimmt abfragen welche Server vorhanden sind?

9.
Mit BungeeCord sollte doch auch möglich sein zu überprüfen wenn jemand den Server wechselt das da nicht steht Spieler ist offline oder sonstiges?

EDIT:

10.
Hier habe ich was interresantes gefunden:
https://board.nitrado.net/community...er-minecraft-gekauft-hat/index2.html?8f91eb5e
Wie ist es den mit BungeeCord möglich das Login/Register Event wegzulassen wenn der Spieler den Premium Launcher benutzt?
Das wäre ein Vorteil für Premium Spieler aber trotzdem sollten Cracked Spieler spielen können.

Vielen Dank:D
 
Zuletzt bearbeitet:

MiCrJonas

Threadripper
Registriert
29 Oktober 2012
Beiträge
1.064
Diamanten
0
1. Nein, du kannst mit der Bukkit API keinen Befehl in die plugin.yml hinzufügen. Du kannst aber mit dem "PlayerCommandProcessEvent" aus einem Nichtvorhandenen Befehl einen machen.

2. "getTargetBlock()" ist deprecated und sollte dahei nicht (mehr) benutzt werden.

3. "setCustomName()" stammt aus der Klasse LivingEntity. Weil ein Player ein LivingEntity ist, hat er auch die Methode. Um aber den Namen im Chat zu setzten, musst du "setDisplayName()" benutzen.

4. Du musst den Spielern ein Package senden, welches einen Villager beinhaltet, den es aber eigentlich nicht gibt.

5. Du musst auf ein Objekt der Klasse "Objective" für das Scoreboard die Methode "setDisplaySlot(DisplaySlot.BELOW_NAME)" anwenden.

6. Dafür musst du einen anderen Konstruktor von Location benutzen:
Code:
w.setSpawnLocation(p.getLocation().getBlockX(), p.getLocation().getBlockY(), p.getLocation().getBlockZ(), p.getLocation().getYaw(), p.getLocation().getPitch());

7. - 9. Weiß ich leider nicht.
 
Zuletzt bearbeitet:

Pappi

Schafhirte
Gesperrt
Registriert
28 Oktober 2012
Beiträge
141
Alter
41
Diamanten
0
Minecraft
Pappi / PapaHarni
Hallo,

EDIT BungeeCord Fragen:
7.
Wenn man BungeeCord installiert hat usw.. kann man doch bestimmt abfragen welche Spieler auf einen Server sind und wie viele oder?

8.
Zu BungeeCord kann man doch auch noch bestimmt abfragen welche Server vorhanden sind?

9.
Mit BungeeCord sollte doch auch möglich sein zu überprüfen wenn jemand den Server wechselt das da nicht steht Spieler ist offline oder sonstiges?

Vielen Dank:D

Verwende mal /glist
 
G

games6471

Guest
Verwende mal /glist

Es geht um die Programmierung, da sind Commands nicht sinnvoll.

Hallo,
7.
Wenn man BungeeCord installiert hat usw.. kann man doch bestimmt abfragen welche Spieler auf einen Server sind und wie viele oder?

8.
Zu BungeeCord kann man doch auch noch bestimmt abfragen welche Server vorhanden sind?

9.
Mit BungeeCord sollte doch auch möglich sein zu überprüfen wenn jemand den Server wechselt das da nicht steht Spieler ist offline oder sonstiges?

Vielen Dank:D
BungeeCord wiki

7.
PlayerCount
PlayerList

8.
GetServers

9.
http://jd.bukkit.org/dev/apidocs/
KickEvent
QuitEvent
 

Masterfran99

Schafhirte
Gesperrt
Registriert
13 Oktober 2012
Beiträge
100
Diamanten
0
1. Nein, du kannst mit der Bukkit API keinen Befehl in die plugin.yml hinzufügen. Du kannst aber mit dem "PlayerCommandProcessEvent" aus einem Nichtvorhandenen Befehl einen machen.

6. Dafür musst du einen anderen Konstruktor von Location benutzen:
Code:
w.setSpawnLocation(p.getLocation().getBlockX(), p.getLocation().getBlockY(), p.getLocation().getBlockZ(), p.getYaw(), p.getPitch());

Lol bei p.getYaw(), usw.. muss doch vorne ran p.getLocation.getYaw() jedoch steht dann bei w.setspawnlocation rot unterstrichen float float muss weg.

Danke an alle Antworten!
 

Masterfran99

Schafhirte
Gesperrt
Registriert
13 Oktober 2012
Beiträge
100
Diamanten
0
G

games6471

Guest
Ich muss sagen ich versteh die Seite nicht.
Ich möchte z.B. für jeden Server den es gibt 1 Item in einem Inventar:

Code:
for(Server s : Ka hier eine Liste der Server){
Den Rest weiß ich also die Items setzen.
Was z.B. muss ich bei Server s : <Hier> eingeben?

Sobald du die PluginMessage abgeschickt hast kannst du hiermit deine Antwort auslesen:

Code:
String[] serverList = in.readUTF().split(", ");

Dies ist ein Array aus den Servernamen, die in deiner BungeeCord Konfiguration stehen (Achtung die Server könnten offline, aber auch nicht für den Spieler zugänglich sein). Darauf kannst du dann die For-Schleife anwenden.

Kennst du den Spruch , Wieso es machen wenn es schon vorhanden ist?

Lesen will gelernt sein.
Wo stehts denn?

Commands sind für die Spieler gedacht und nicht für Plugins. Das Design könnte sich ändern,- Das Resultat von Commands muss immer geparst werden,- Du willst echt ein BungeeCord Command von einem Plugin ausführen? - Denk mal drüber nach wie BungeeCord funktioniert.
 
Zuletzt bearbeitet von einem Moderator:

Pappi

Schafhirte
Gesperrt
Registriert
28 Oktober 2012
Beiträge
141
Alter
41
Diamanten
0
Minecraft
Pappi / PapaHarni
BItte sagen wo wie genau Authme das macht.

AuthMe schützt Premium und Offline Spieler, somit kann dort jeder sein eigenen Account nochmals anlegen.

Ich glaube kaum das es möglich ist , das sich Premium Spieler nicht einlogen brauchen und nur Cracked dafür. Das problem ist dann , das du dann nur Cracked Namen zulassen dürftest zu Registrieren und die Kids mit zB "Gronkh" es prüfen müsstest ob er Original ist. Aber selbst dafür musst du meineswissens den Bukkit selbst umschreiben erst einmal. ( www.gidf.de )



Commands sind für die Spieler gedacht und nicht für Plugins. Das Design könnte sich ändern,- Das Resultat von Commands muss immer geparst werden,- Du willst echt ein BungeeCord Command von einem Plugin ausführen? - Denk mal drüber nach wie BungeeCord funktioniert.

Denk mal drüber nach wo steht das er ein neues Plugin schreiben will für BungeeCord. ;-)

Auch wenn es die Plugin Ecke ist , werden hier auch einfach Plugins und Befehle Teilweise einfach nur gesucht. Und vorallem bei mehreren Frage auf einmal , da mach ich dafür kein Extra Thema auf ;-)

Zuerst denken dann Schreiben ;-)
 
Zuletzt bearbeitet:

Masterfran99

Schafhirte
Gesperrt
Registriert
13 Oktober 2012
Beiträge
100
Diamanten
0
Also 1. ich rede hier über Programmierung weil alles was man selber macht kann man besser anwenden und kombinieren.

Code:
	public void server(Player p){
		ByteArrayOutputStream b = new ByteArrayOutputStream();
		DataOutputStream out = new DataOutputStream(b);
		ByteArrayInputStream bx = new ByteArrayInputStream(null);
		DataInputStream in = new DataInputStream(bx);
		
		try{
		out.writeUTF("GetServers");
		}catch(IOException ex){
			
		}
		p.sendPluginMessage(plugin, "BungeeCord", b.toByteArray());
	
		try{
		String[] serverList = in.readUTF().split(", ");
		}catch(IOException ex){}
	}

So nun das ist meine Void Methode die sendet eine Message nur das auslesen weiß ich nicht wo das hinkommt.
 
G

games6471

Guest
Denk mal drüber nach wo steht das er ein neues Plugin schreiben will für BungeeCord. ;-)

Auch wenn es die Plugin Ecke ist , werden hier auch einfach Plugins und Befehle Teilweise einfach nur gesucht. Und vorallem bei mehreren Frage auf einmal , da mach ich dafür kein Extra Thema auf ;-)

Zuerst denken dann Schreiben ;-)

Nichtsdestotrotz ändert dies nichts an den Nachteilen bei der Verwendung von Commands über ein Bukkit-Plugin.

EDIT: Wie der Autor dieses Threads selbst gesagt, geht es um die Programmierung. Überlege mal wie BungeeCord funktioniert. Ich gebe dir mal ein Tipp, achte mal von welche Richtung aus die Commands von BungeeCord ausgeführt werden. (UpStreambridge)
https://github.com/SpigotMC/BungeeC...d_5/bungee/connection/UpstreamBridge.java#L92


Also 1. ich rede hier über Programmierung weil alles was man selber macht kann man besser anwenden und kombinieren.

Code:
	public void server(Player p){
		ByteArrayOutputStream b = new ByteArrayOutputStream();
		DataOutputStream out = new DataOutputStream(b);
		ByteArrayInputStream bx = new ByteArrayInputStream(null);
		DataInputStream in = new DataInputStream(bx);
		
		try{
		out.writeUTF("GetServers");
		}catch(IOException ex){
			
		}
		p.sendPluginMessage(plugin, "BungeeCord", b.toByteArray());
	
		try{
		String[] serverList = in.readUTF().split(", ");
		}catch(IOException ex){}
	}

So nun das ist meine Void Methode die sendet eine Message nur das auslesen weiß ich nicht wo das hinkommt.

BungeeCord arbeitet über die PluginChannnels. Das bedeutet, dass du erst beide Richtungen registrieren musst.

Code:
public void onEnable() {
        this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
        this.getServer().getMessenger().registerIncomingPluginChannel(this, "BungeeCord", this);
    }

Dazu brauchst du dann noch ein Listener für die eingehende Nachricht. Dort wirst du dann diese Antwort bekommen.

Code:
    @Override
    public void onPluginMessageReceived(String channel, Player player, byte[] message) {
        if (!channel.equals("BungeeCord")) {
            return;
        }

        DataInputStream in = new DataInputStream(new ByteArrayInputStream(message));

        try {
            String subchannel = in.readUTF();
            if (subchannel.equals("SomeSubChannel")) {
                // Use the code sample in the 'Response' sections below to read
                // the data.
            } else if (subchannel.equals("SomeOtherSubChannel")) {
                // Read the data for a different subchannel.
            } else if (subchannel.equals("GetServer")) {
                // Example: GetServer subchannel
                serverName = in.readUTF();
            }
        } catch (IOException e) {
            // There was an issue in creating the subchannel string
        }
    }
 
Zuletzt bearbeitet von einem Moderator:

Pappi

Schafhirte
Gesperrt
Registriert
28 Oktober 2012
Beiträge
141
Alter
41
Diamanten
0
Minecraft
Pappi / PapaHarni
Wenn es ein Plugin für BungeeCord wird dann schaut das ganze so aus :

Code:
public class plist extends Command {
    
    public plist() {
        super("plist", "plist.use");
    }

    @Override
    public void execute(CommandSender s, String[] args) {
        ProxiedPlayer p = (ProxiedPlayer)s;
        
        if(p == null)
            return;
        
        if(!p.hasPermission("plist.use"))
            return;
    
        for (Map.Entry<String, ServerInfo> e : ProxyServer.getInstance().getServers().entrySet()) {
            ServerInfo sinfo = e.getValue();
            String list = "";
            int i = 0;
            p.sendMessage("Auf dem Server " + e.getKey() + " sind derzeit " + sinfo.getPlayers().size() + " Spieler Online :");
            for(ProxiedPlayer pl: sinfo.getPlayers()) {
                list += ((list.length() <= 1)?"":", ") + pl.getDisplayName();
                i++
                if(i % 5 == 0) {
                    p.sendMessage(list);
                    list = "";
                }
            }
            if(list.length() > 1)
                p.sendMessage(list);
        }
    }
}

Dann spart man sich einiges an Arbeit für Bukkit ;-)

P.S. Code ungetestet.
 
Oben