Estou tentando usar a classe SignGUI porem estou tendo problema com ela, esta dando um erro e nao sei resolver, se alguem puder ajudar agradeço.
Erro:
[17:24:08 WARN]: [ProtocolLib] [PacketFilterManager] [ProjectAPI] Unsupported client packet ID in current Minecraft version: UNREGISTERED[LEGACY, CLIENT, -1, legacy: 130, classNames: []]
[17:24:08 ERROR]: Could not pass event InventoryClickEvent to ProjectEconomy v1.0
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot_server.jar:git-Spigot-3ccadba-fb568fd]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot_server.jar:git-Spigot-3ccadba-fb568fd]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot_server.jar:git-Spigot-3ccadba-fb568fd]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot_server.jar:git-Spigot-3ccadba-fb568fd]
at net.minecraft.server.v1_10_R1.PlayerConnection.a(PlayerConnection.java:1850) [spigot_server.jar:git-Spigot-3ccadba-fb568fd]
at net.minecraft.server.v1_10_R1.PacketPlayInWindowClick.a(SourceFile:33) [spigot_server.jar:git-Spigot-3ccadba-fb568fd]
at net.minecraft.server.v1_10_R1.PacketPlayInWindowClick.a(SourceFile:10) [spigot_server.jar:git-Spigot-3ccadba-fb568fd]
at net.minecraft.server.v1_10_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot_server.jar:git-Spigot-3ccadba-fb568fd]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_101]
at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_101]
at net.minecraft.server.v1_10_R1.SystemUtils.a(SourceFile:45) [spigot_server.jar:git-Spigot-3ccadba-fb568fd]
at net.minecraft.server.v1_10_R1.MinecraftServer.D(MinecraftServer.java:733) [spigot_server.jar:git-Spigot-3ccadba-fb568fd]
at net.minecraft.server.v1_10_R1.DedicatedServer.D(DedicatedServer.java:399) [spigot_server.jar:git-Spigot-3ccadba-fb568fd]
at net.minecraft.server.v1_10_R1.MinecraftServer.C(MinecraftServer.java:672) [spigot_server.jar:git-Spigot-3ccadba-fb568fd]
at net.minecraft.server.v1_10_R1.MinecraftServer.run(MinecraftServer.java:571) [spigot_server.jar:git-Spigot-3ccadba-fb568fd]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_101]
Caused by: com.comphenix.protocol.reflect.FieldAccessException: Field index out of bounds. (Index: 1, Size: 1)
at com.comphenix.protocol.reflect.StructureModifier.writeInternal(StructureModifier.java:352) ~[?:?]
at com.comphenix.protocol.reflect.StructureModifier.write(StructureModifier.java:328) ~[?:?]
at ProjectAPI.SignGUI.open(SignGUI.java:73) ~[?:?]
at ProjectEconomyListener.BankMenuMananger.withdrawGUI(BankMenuMananger.java:44) ~[?:?]
at ProjectEconomyListener.BankMenuMananger.e(BankMenuMananger.java:27) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_101]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_101]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot_server.jar:git-Spigot-3ccadba-fb568fd]
... 15 more
O meu codigo:
public static void withdrawGUI(Player p){
SignGUI sg = new SignGUI(Main.getMain());
sg.open(p, new String[] {"","---------------", "===============", "Digite ali /\\"}, new SignGUI.SignGUIListener() {
public void onSignDone(Player p, String[] lines) {
if(lines[0] != null){
try{
double withdraw = Double.valueOf(lines[0]);
ProjectEconomyAPI.withdrawBank(p, withdraw);
}catch(NumberFormatException e){
p.sendMessage("§cVoce so pode usar numeros na primeira linha");
}
}else{
p.sendMessage("§cA primeira linha estava vazia");
}
}
});
}
O codigo do SignGUI:
package ProjectAPI;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.bukkit.util.Vector;
import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.ProtocolManager;
import com.comphenix.protocol.events.ConnectionSide;
import com.comphenix.protocol.events.ListenerPriority;
import com.comphenix.protocol.events.PacketAdapter;
import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.events.PacketEvent;
public class SignGUI {
protected ProtocolManager protocolManager;
protected PacketAdapter packetListener;
protected Map<String, SignGUIListener> listeners;
protected Map<String, Vector> signLocations;
public SignGUI(Plugin plugin) {
protocolManager = ProtocolLibrary.getProtocolManager();
packetListener = new PacketListener(plugin);
protocolManager.addPacketListener(packetListener);
listeners = new ConcurrentHashMap<String, SignGUIListener>();
signLocations = new ConcurrentHashMap<String, Vector>();
}
public void open(Player player, SignGUIListener response) {
open(player, (Location)null, response);
}
@SuppressWarnings("deprecation")
public void open(Player player, Location signLocation, SignGUIListener response) {
int x = 0, y = 0, z = 0;
if (signLocation != null) {
x = signLocation.getBlockX();
y = signLocation.getBlockY();
z = signLocation.getBlockZ();
}
PacketContainer packet = protocolManager.createPacket(133);
packet.getIntegers().write(0, 0).write(1, x).write(2, y).write(3, z);
try {
protocolManager.sendServerPacket(player, packet);
signLocations.put(player.getName(), new Vector(x, y, z));
listeners.put(player.getName(), response);
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
@SuppressWarnings("deprecation")
public void open(Player player, String[] defaultText, SignGUIListener response) {
List<PacketContainer> packets = new ArrayList<PacketContainer>();
int x = 0, y = 0, z = 0;
if (defaultText != null) {
x = player.getLocation().getBlockX();
z = player.getLocation().getBlockZ();
PacketContainer packet53 = protocolManager.createPacket(53);
packet53.getIntegers().write(0, x).write(1, y).write(2, z).write(3, 63).write(4, 0); //Linha 73
packets.add(packet53);
PacketContainer packet130 = protocolManager.createPacket(130);
packet130.getIntegers().write(0, x).write(1, y).write(2, z);
packet130.getStringArrays().write(0, defaultText);
packets.add(packet130);
}
PacketContainer packet133 = protocolManager.createPacket(133);
packet133.getIntegers().write(0, 0).write(1, x).write(2, y).write(3, z);
packets.add(packet133);
if (defaultText != null) {
PacketContainer packet53 = protocolManager.createPacket(53);
packet53.getIntegers().write(0, x).write(1, y).write(2, z).write(3, 7).write(4, 0);
packets.add(packet53);
}
try {
for (PacketContainer packet : packets) {
protocolManager.sendServerPacket(player, packet);
}
signLocations.put(player.getName(), new Vector(x, y, z));
listeners.put(player.getName(), response);
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
public void destroy() {
protocolManager.removePacketListener(packetListener);
listeners.clear();
signLocations.clear();
}
public interface SignGUIListener {
public void onSignDone(Player player, String[] lines);
}
class PacketListener extends PacketAdapter {
Plugin plugin;
@SuppressWarnings("deprecation")
public PacketListener(Plugin plugin) {
super(plugin, ConnectionSide.CLIENT_SIDE, ListenerPriority.NORMAL, 0x82);
this.plugin = plugin;
}
@Override
public void onPacketReceiving(PacketEvent event) {
final Player player = event.getPlayer();
Vector v = signLocations.remove(player.getName());
if (v == null) return;
List<Integer> list = event.getPacket().getIntegers().getValues();
if (list.get(0) != v.getBlockX()) return;
if (list.get(1) != v.getBlockY()) return;
if (list.get(2) != v.getBlockZ()) return;
final String[] lines = event.getPacket().getStringArrays().getValues().get(0);
final SignGUIListener response = listeners.remove(event.getPlayer().getName());
if (response != null) {
event.setCancelled(true);
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
public void run() {
response.onSignDone(player, lines);
}
});
}
}
}
}
Pergunta
Guest VitorEmanoel
Estou tentando usar a classe SignGUI porem estou tendo problema com ela, esta dando um erro e nao sei resolver, se alguem puder ajudar agradeço.
Erro:
O meu codigo:
O codigo do SignGUI:
Link para o comentário
Compartilhar em outros sites
17 respostass a esta questão
Posts Recomendados