Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

PacketAdapter nie działa... ;-;


Rekomendowane odpowiedzi

Opublikowano

Witajcie! mianowicie potrzebuję owego pakietu... 

ProtocolLibrary.getProtocolManager().addPacketListener(packetListener = new PacketAdapter(plugin, PacketType.Play.Client.UPDATE_SIGN));

Tylko że PacketAdapter podświetla się na czerwono ... methods są zaimplementowane a plugin dodany jako external jar file... i jest jaki drugi :/ jak mam to naprawić?

Info:

cannot instantiate the type PacketAdapter

 

jak to ogarnąć?

@Entify

 

package pl.therazerpl.sklepsms.me.yamler;

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.Material;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.bukkit.util.Vector;

import com.comphenix.protocol.events.ListenerPriority;
import com.comphenix.protocol.events.PacketAdapter;
import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.events.PacketEvent;
import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.ProtocolManager;

public class SignGUI {
	protected ProtocolManager protocolManager;
	protected PacketAdapter packetListener;
	protected Map<String, SignGUIListener> listneres;
	protected Map<String, Vector> signLocations;
	private Plugin plugin;
	private Object listeners;
	
	public SignGUI(Plugin plugin){
		this.protocolManager = ProtocolLibrary.getProtocolManager();
		this.listneres = new ConcurrentHashMap<String, SignGUIListener>();
		this.signLocations = new ConcurrentHashMap<String, Vector>();
		ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(this, ListenerPriority.NORMAL, PacketType.Play.Client.UPDATE_SIGN));
	}
	public void onPacketReceiving(PacketEvent event){
		final Player player = event.getPlayer();
		Vector v = (Vector)SignGUI.this.signLocations.remove(player.getName());
		if(v == null){
			return;
		}
		List<Integer> list = event.getPacket().getIntegers().getValues();
		if(((Integer)list.get(0)).intValue() != v.getBlockX()){
			return;
		}
		if(((Integer)list.get(1)).intValue() != v.getBlockY()){
			return;	
		}
		if (((Integer)list.get(2)).intValue() != v.getBlockZ()){
			return;
		}
		final String[] lines = (String[])event.getPacket().getStringArrays().getValues().get(0);
		final SignGUI.SignGUIListener response = (SignGUI.SignGUIListener)SignGUI.this.listneres.remove(event.getPlayer().getName());
		if(response != null){
			event.setCancelled(true);
			Bukkit.getScheduler().scheduleSyncDelayedTask(this.plugin, new Runnable(){
				@Override
				public void run() {
					response.onSignDone(player, lines);
					
				}
			});
		}
	}
	public void open(Player player, String[] defaultText, SignGUIListener response){
		List<PacketContainer> packets = new ArrayList();
		int x = 0;
		int y = 0;
		int z = 0;
		if (defaultText != null){
			x = player.getLocation().getBlockX();
			z = player.getLocation().getBlockZ();
			PacketContainer packet53 = this.protocolManager.createPacket(PacketType.Play.Server.BLOCK_CHANGE);
			packet53.getIntegers().write(0, Integer.valueOf(x)).write(1, Integer.valueOf(0)).write(2, Integer.valueOf(z));
			packet53.getBlocks().write(0, Material.SIGN_POST);
			packets.add(packet53);
			PacketContainer packet2 = this.protocolManager.createPacket(PacketType.Play.Server.UPDATE_SIGN);
			packet2.getIntegers().write(0, Integer.valueOf(x)).write(1, Integer.valueOf(0)).write(2, Integer.valueOf(z));
			packet2.getStringArrays().write(0, defaultText);
			packets.add(packet2);
			}
			PacketContainer packet3 = this.protocolManager.createPacket(PacketType.Play.Server.OPEN_SIGN_ENTITY);
			packet3.getIntegers().write(0, Integer.valueOf(x)).write(2, Integer.valueOf(z));
			packets.add(packet3);
			if (defaultText != null){
				PacketContainer packet4 = this.protocolManager.createPacket(PacketType.Play.Server.BLOCK_CHANGE);
				packet4.getIntegers().write(0, Integer.valueOf(x)).write(1, Integer.valueOf(0)).write(2, Integer.valueOf(z));
				packet4.getBlocks().write(0, Material.BEDROCK);
				packets.add(packet4);
			}
			try{
				for (PacketContainer packet5 : packets) {
					this.protocolManager.sendServerPacket(player, packet5);
				}
				this.signLocations.put(player.getName(), new Vector(x, 0, z));
				this.listeners.put(player.getName(), response);
			}
			catch (InvocationTargetException e){
				e.printStackTrace();
			}
		}
		public void destroy(){
			this.protocolManager.removePacketListener(this.packetListener);
			this.listeners.clear();
			this.signLocations.clear();
		}
		public static abstract interface SignGUIListener{
			public abstract void onSignDone(Player paramPlayer, String[] paramArrayOfString);
		}
	}

 

TheMinecraft

#LetsPlayOnceAgain

#TheMinecraft

Śledź nas na FaceBook/TheMinecraftpl!

 

 

Opublikowano

Ehhhhh.....

PacketAdapter

to klasa abstrakcyjna, czyli musisz inną klase rozszerzyć nią....

public class SignGUI extends PacketAdatper {


a potem zrobić tak:

public SignGUI() {
        super(GlownaKlasa.getInstance(), ListenerPriority.NORMAL, PacketType.Play.Client.UPDATE_SIGN);
    }

następnie gdzies w onEnable

protocolManager.addPacketListener(new SignGUI())

i wtedy będzie działać, łał

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...