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

Über ein Gui (Spigot) Leute auf einen Bungeecord Server tpn

SkyIndustry

Minecrafter
Registriert
17 September 2019
Beiträge
6
Diamanten
300
Hey ich habe bereits viel probiert aber komme einfach nicht auf eine Lösung.. Was ich brauche, ich möchte gerne über ein Inventory ein Item haben das man anklickt und dann auf einen Server tpt wird! Aber iwi kriege ich das nicht hin :/ Bitte um hilfe!


Java:
@EventHandler
        public void onInventoryClick (final InventoryClickEvent e){
            if (e.getCurrentItem() == null) return;
            if (e.getClickedInventory().getType() == InventoryType.PLAYER) return;
            String title = e.getView().getTitle();
            String item = e.getCurrentItem().getItemMeta().getDisplayName();

            if (title.contains("§5§lWähle deine Insel aus!")) {
                e.setCancelled(true);
                if(item.equalsIgnoreCase("Insel")) {
                    Player p = (Player) e.getWhoClicked();
                    e.setCancelled(true);


                    p.closeInventory();
                            p.sendTitle("§4§lAchtung!", "§&7Du wirst auf deine Insel geschickt...");
                            p.playEffect(p.getLocation(), Effect.BLAZE_SHOOT, 10);
                            ByteArrayDataOutput out = ByteStreams.newDataOutput();
                            out.writeUTF("Connect");
                            out.writeUTF("SkyBlock-1"); /
                            p.sendPluginMessage((Plugin) SkyBlockBrewing.p, "BungeeCord", out.toByteArray());


                } else if (item.equalsIgnoreCase("§5§l2. Insel")){
                    e.setCancelled(true);


                }



            }

    }
}
 

BloodSKreaper

Vorarbeiter
Registriert
12 Oktober 2014
Beiträge
249
Diamanten
316
Minecraft
BloodSKreaper
Hey ich habe bereits viel probiert aber komme einfach nicht auf eine Lösung.. Was ich brauche, ich möchte gerne über ein Inventory ein Item haben das man anklickt und dann auf einen Server tpt wird! Aber iwi kriege ich das nicht hin :/ Bitte um hilfe!


Java:
@EventHandler
        public void onInventoryClick (final InventoryClickEvent e){
            if (e.getCurrentItem() == null) return;
            if (e.getClickedInventory().getType() == InventoryType.PLAYER) return;
            String title = e.getView().getTitle();
            String item = e.getCurrentItem().getItemMeta().getDisplayName();

            if (title.contains("§5§lWähle deine Insel aus!")) {
                e.setCancelled(true);
                if(item.equalsIgnoreCase("Insel")) {
                    Player p = (Player) e.getWhoClicked();
                    e.setCancelled(true);


                    p.closeInventory();
                            p.sendTitle("§4§lAchtung!", "§&7Du wirst auf deine Insel geschickt...");
                            p.playEffect(p.getLocation(), Effect.BLAZE_SHOOT, 10);
                            ByteArrayDataOutput out = ByteStreams.newDataOutput();
                            out.writeUTF("Connect");
                            out.writeUTF("SkyBlock-1"); /
                            p.sendPluginMessage((Plugin) SkyBlockBrewing.p, "BungeeCord", out.toByteArray());


                } else if (item.equalsIgnoreCase("§5§l2. Insel")){
                    e.setCancelled(true);


                }



            }

    }
}
Was genau geht denn nicht?
 

BloodSKreaper

Vorarbeiter
Registriert
12 Oktober 2014
Beiträge
249
Diamanten
316
Minecraft
BloodSKreaper
Ich gehe mal davon aus, dass du Probleme mit dem Senden über den PluginMessagingChannel hast. Wahrscheinlich hast du vergessen, den Channel zu registrieren
Before using the BungeeCord plugin channel, you'll need to register it with the Bukkit messenger.

Beispielcode von spigotmc.org:
  public void onEnable() {
    this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord"); //Das hier ist für dich wichtig.
    this.getServer().getMessenger().registerIncomingPluginChannel(this, "BungeeCord", this);
  }

Freundliche Grüße
BloodSKreaper
 

SkyIndustry

Minecrafter
Registriert
17 September 2019
Beiträge
6
Diamanten
300
Habe das schon registriert aber es kommt dennoch der gleiche fehler...

wassyydd.PNG
 

SkyIndustry

Minecrafter
Registriert
17 September 2019
Beiträge
6
Diamanten
300
Hey ich habe bereits viel probiert aber komme einfach nicht auf eine Lösung.. Was ich brauche, ich möchte gerne über ein Inventory ein Item haben das man anklickt und dann auf einen Server tpt wird! Aber iwi kriege ich das nicht hin :/ Bitte um hilfe!


Java:
@EventHandler
        public void onInventoryClick (final InventoryClickEvent e){
            if (e.getCurrentItem() == null) return;
            if (e.getClickedInventory().getType() == InventoryType.PLAYER) return;
            String title = e.getView().getTitle();
            String item = e.getCurrentItem().getItemMeta().getDisplayName();

            if (title.contains("§5§lWähle deine Insel aus!")) {
                e.setCancelled(true);
                if(item.equalsIgnoreCase("Insel")) {
                    Player p = (Player) e.getWhoClicked();
                    e.setCancelled(true);


                    p.closeInventory();
                            p.sendTitle("§4§lAchtung!", "§&7Du wirst auf deine Insel geschickt...");
                            p.playEffect(p.getLocation(), Effect.BLAZE_SHOOT, 10);
                            ByteArrayDataOutput out = ByteStreams.newDataOutput();
                            out.writeUTF("Connect");
                            out.writeUTF("SkyBlock-1"); /
                            p.sendPluginMessage((Plugin) SkyBlockBrewing.p, "BungeeCord", out.toByteArray());


                } else if (item.equalsIgnoreCase("§5§l2. Insel")){
                    e.setCancelled(true);


                }



            }

    }
}


Hier hab ich die Klasse doch schon gezeigt :) @Avankziar
 

SkyIndustry

Minecrafter
Registriert
17 September 2019
Beiträge
6
Diamanten
300
Code:
package de.habdxchlieb.events;

import com.google.common.io.ByteArrayDataOutput;
import com.google.common.io.ByteStreams;
import de.habdxchlieb.main.SkyBlockBrewing;
import org.bukkit.Bukkit;
import org.bukkit.Effect;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.plugin.Plugin;




public class ClickEvent implements Listener {

    private SkyBlockBrewing pl;

    public ClickEvent(SkyBlockBrewing main) {
        this.pl = main;
        Bukkit.getPluginManager().registerEvents(this, main);

    }



    @EventHandler
        public void onInventoryClick (final InventoryClickEvent e){
            if (e.getCurrentItem() == null) return;
            if (e.getClickedInventory().getType() == InventoryType.PLAYER) return;
            String title = e.getView().getTitle();
            String item = e.getCurrentItem().getItemMeta().getDisplayName();

            if (title.contains("§5§lWähle deine Insel aus!")) {
                e.setCancelled(true);
                if(item.equalsIgnoreCase("Insel")) {
                    Player p = (Player) e.getWhoClicked();
                    e.setCancelled(true);


                    p.closeInventory();
                            p.sendTitle("§4§lAchtung!", "§&7Du wirst auf deine Insel geschickt...");
                            p.playEffect(p.getLocation(), Effect.BLAZE_SHOOT, 10);
                            ByteArrayDataOutput out = ByteStreams.newDataOutput();
                            out.writeUTF("Connect");
                            out.writeUTF("SkyBlock-1"); // = nazwa serwera dla BungeeCord
                            p.sendPluginMessage((Plugin) SkyBlockBrewing.p, "BungeeCord", out.toByteArray());


                } else if (item.equalsIgnoreCase("§5§l2. Insel")){
                    e.setCancelled(true);


                }



            }

    }
}


Hier :D
 

SkyIndustry

Minecrafter
Registriert
17 September 2019
Beiträge
6
Diamanten
300
Code:
package de.habdxchlieb.main;


import de.habdxchlieb.commands.CMD_OpenGui;
import de.habdxchlieb.commands.CMD_OpenInselGui;
import de.habdxchlieb.commands.CMD_ServerTP;
import de.habdxchlieb.commands.CMD_giveItem;
import de.habdxchlieb.events.ClickEvent;
import de.habdxchlieb.events.JoinEvent;
import de.habdxchlieb.events.RecipeEvent;

import org.bukkit.Bukkit;

import org.bukkit.plugin.java.JavaPlugin;


public class SkyBlockBrewing extends JavaPlugin {


    public static SkyBlockBrewing p;

    private SkyBlockBrewing pl;

    public void onEnable() {
        this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");


        Bukkit.getConsoleSender().sendMessage("§7§lSkyBlockSystem von HabdxchLieb erfolgreich geladen!");
        new RecipeEvent(this);
        new CMD_giveItem(this);
        new CMD_OpenGui(this);
        new JoinEvent(this);
        new CMD_OpenInselGui(this);
        new ClickEvent(this);
        new CMD_ServerTP(this);


    }




    public static String getConfig(String config){
        return Bukkit.getPluginManager().getPlugin("SkyBlockSystemNewV1").getConfig().getString(config);
    }

    public void loadConfig(){
        getConfig().options().copyDefaults(true);
        saveConfig();
    }








}

Zur verständigung vllt nochmal meine Main Klasse
 

SirYwell

PlotSquared Entwickler
Registriert
30 Juni 2017
Beiträge
540
Diamanten
488
Minecraft
SirYwell
Abgesehen, dass p und pl viel zu geringe Aussagekraft haben, um als Variablennamen in diesem Scope zu verwendet zu werden, sind die beiden Felder immer null. Entweder du machst deine Main-Klasse zu einem richtigen Singleton (und verwendest das dann auch so, d.h. du übergibst die Instanz nicht mal hier und hier mal nicht) oder du übergibst die Instanz überall, wo du sie brauchst (was du ja anscheinend schon machst, du hast ja bereits die Instanz deines Plugins in der ClickEvent-Klasse) und verwendest sie dann auch so.
 
Oben