Hey zusammen,
ich habe eine Frage und zwar habe ich BungeeCord Backend plugin laufen und habe jetzt mit einem Custom-Channel eine Brücke gebastelt um das MoveEvent zu canceln ich hab jetzt ein paar tests schon eingebaut der spieler wird auf die ArrayList geaddet wie vorgesehen hab das MoveEvent gecancelt wenn er drauf steht die Nachricht wird Ihm auch gesendet wenn er versucht sich zu bewegen nur das Problem ist man kann trotzdem noch fröhlich durch die Welt hüpfen. Hat jemand eine Idee was ich falsch gemacht habe?
Ich hoffe jemand von euch kann mir da helfen.
LG dmmk218
ich habe eine Frage und zwar habe ich BungeeCord Backend plugin laufen und habe jetzt mit einem Custom-Channel eine Brücke gebastelt um das MoveEvent zu canceln ich hab jetzt ein paar tests schon eingebaut der spieler wird auf die ArrayList geaddet wie vorgesehen hab das MoveEvent gecancelt wenn er drauf steht die Nachricht wird Ihm auch gesendet wenn er versucht sich zu bewegen nur das Problem ist man kann trotzdem noch fröhlich durch die Welt hüpfen. Hat jemand eine Idee was ich falsch gemacht habe?
Code des Listeners:
package de.therealdomm.sauth.events;
import de.therealdomm.sauth.util.Data;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class EventBlocker implements Listener {
public static List<String> frozen = new ArrayList<>();
private HashMap<String, Boolean> msg = new HashMap<>();
@EventHandler(priority = EventPriority.HIGH)
public void onMove(PlayerMoveEvent e) {
Player p = e.getPlayer();
if (frozen.contains(p.getName())) {
e.setCancelled(true);
if (msg.get(p.getName()) == null) {
p.sendMessage(Data.data.needLogin);
msg.put(p.getName(), true);
}
}
}
}
Code des Communicators:
package de.therealdomm.sauth.util;
import com.google.common.io.ByteArrayDataInput;
import com.google.common.io.ByteStreams;
import de.therealdomm.sauth.events.EventBlocker;
import de.therealdomm.sauth.main.Main;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.plugin.messaging.PluginMessageListener;
public class CommunicationAPI implements PluginMessageListener {
public CommunicationAPI() {
Main.getInstance().getServer().getMessenger().registerIncomingPluginChannel(Main.getInstance(), "bauth:channel", this);
}
@Override
public void onPluginMessageReceived(String s, Player player, byte[] bytes) {
if (!s.equals("bauth:channel")) return;
ByteArrayDataInput byteArrayDataInput = ByteStreams.newDataInput(bytes);
String subChannel = byteArrayDataInput.readUTF();
if (subChannel.equalsIgnoreCase("reload")) {
String data1 = byteArrayDataInput.readUTF();
int data2 = byteArrayDataInput.readInt();
String playerName = byteArrayDataInput.readUTF();
if (data1.equalsIgnoreCase("perform") && data2 == 1) {
ConfigUtil configUtil = new ConfigUtil();
configUtil.reload();
System.out.println(playerName + " performed reload!");
}
}
if (subChannel.equalsIgnoreCase("freeze")) {
String data1 = byteArrayDataInput.readUTF();
int data2 = byteArrayDataInput.readInt();
String playerName = byteArrayDataInput.readUTF();
System.out.println(playerName + " Subchannel:" + subChannel);
if (Bukkit.getPlayer(playerName) == null) return;
Player p = Bukkit.getPlayer(playerName);
if (data1.equalsIgnoreCase("perform") && data2 == 1) {
EventBlocker.frozen.add(p.getName());
System.out.println("ArrayList: " + EventBlocker.frozen);
}
}
if (subChannel.equalsIgnoreCase("unfreeze")) {
String data1 = byteArrayDataInput.readUTF();
int data2 = byteArrayDataInput.readInt();
String playerName = byteArrayDataInput.readUTF();
System.out.println(playerName + " SubChannel:" + subChannel);
if (Bukkit.getPlayer(playerName) == null) return;
Player p = Bukkit.getPlayer(playerName);
if (data1.equalsIgnoreCase("perform") && data2 == 1) {
EventBlocker.frozen.remove(p.getName());
System.out.println("ArrayList: " + EventBlocker.frozen);
}
}
}
}
Ich hoffe jemand von euch kann mir da helfen.
LG dmmk218