會長:yukkcake / 晨開設日:2013-08-11 00:32:49
近期編輯:yukkcake ...看更多 |
<<interface>> IPlayerTracker |
onPlayerLogin(player : EntityPlayer) : void onPlayerLogout(player : EntityPlayer) : void onPlayerChangedDimension(player : EntityPlayer) : void onPlaterRespawn(player : EntityPlayer) : void |
//package , import省略 public class PlayerHandler implements IPlayerTracker{ public void onPlayerLogin(Entity Player){} public void onPlayerLogout(Entity Player){} public void onPlayerChangedDimension(Entity Player){} public void onPlayerRespawn(Entity Player){ //生成要傳送的整數 Random random = new Random(); int dataToSend = random.nextInt(); int dataToSend2 = random.nextInt(); ByteArrayOutputStream bos = new ByteArrayOutputStream(4); DataOutputStream outputStream = new DataOutputStream(bos); try { //將資料寫入bos,這裡使用的做法請自行參閱java文件,與Minecraft無關 outputStream.writeInt(dataToSend);//寫入第一個資料 outputStream.writeInt(dataToSend2);//寫入第一個資料 }catch (Exception e){ e.printStackTrace();//例外處理 } //建立新的Packet Packet250CustomPayload packet = new Packet250CustomPayload(); packet.channel = "mychannel"; //發送Packet的頻道名稱 packet.data = bos.toByteArray();//要傳送的資料 packet.length = bos.size();//資料長度 //傳送packet給該Player PacketDispatcher.sendPacketToPlayer(packet, (Player)player); } } |
//package , import省略 public class PacketHandler implements IPacketHandler { //constructor通常沒用到 public PacketHandler() { // TODO Auto-generated constructor stub } //重點,接收到Packet250時此method會被呼叫 @Override public void onPacketData(INetworkManager manager, Packet250CustomPayload packet, Player player) { // TODO Auto-generated method stub } } |
public void onPacketData(INetworkManager manager, Packet250CustomPayload packet, Player player) { DataInputStream inputStream = new DataInputStream(new ByteArrayInputStream(packet.data)); int dataToGet; try { dataToGet = inputStream.readInt();//讀取第一個資料 dataToGet2 = inputStream.readInt(); //讀取第二個資料 } catch (IOException e) { e.printStackTrace(); return; } //自由發揮,看你當時發送數據的目的為何 doSomethingWithDataYouGet(dataToGet,dataToGet2); } |
目前沒有資料連到「網路封包(Packet)」。