It is quite interesting I solved problem but it is weird...
if(data.readInt() == 2002)
is not working...
int id = data.readInt();
if(id ==2002)
is working...
Weird but it is working
And I just realised that I am getting this exception when I try to data.readInt()
java.io.EOFException
2013-08-04 00:15:05 [iNFO] [sTDERR] at java.io.DataInputStream.readInt(Unknown Source)
2013-08-04 00:15:05 [iNFO] [sTDERR] at netherfors.misc.PacketReadStream.readInt(PacketReadStream.java:53)
2013-08-04 00:15:05 [iNFO] [sTDERR] at netherfors.ServerModPacketHandler.onPacketData(ServerModPacketHandler.java:28)
2013-08-04 00:15:05 [iNFO] [sTDERR] at cpw.mods.fml.common.network.NetworkRegistry.handlePacket(NetworkRegistry.java:255)
2013-08-04 00:15:05 [iNFO] [sTDERR] at cpw.mods.fml.common.network.NetworkRegistry.handleCustomPacket(NetworkRegistry.java:245)
2013-08-04 00:15:05 [iNFO] [sTDERR] at cpw.mods.fml.common.network.FMLNetworkHandler.handlePacket250Packet(FMLNetworkHandler.java:83)
2013-08-04 00:15:05 [iNFO] [sTDERR] at net.minecraft.network.NetServerHandler.handleCustomPayload(NetServerHandler.java:1098)
2013-08-04 00:15:05 [iNFO] [sTDERR] at net.minecraft.network.packet.Packet250CustomPayload.processPacket(Packet250CustomPayload.java:70)
2013-08-04 00:15:05 [iNFO] [sTDERR] at net.minecraft.network.MemoryConnection.processReadPackets(MemoryConnection.java:89)
2013-08-04 00:15:05 [iNFO] [sTDERR] at net.minecraft.network.NetServerHandler.networkTick(NetServerHandler.java:134)
2013-08-04 00:15:05 [iNFO] [sTDERR] at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:53)
2013-08-04 00:15:05 [iNFO] [sTDERR] at net.minecraft.server.integrated.IntegratedServerListenThread.networkTick(IntegratedServerListenThread.java:109)
2013-08-04 00:15:05 [iNFO] [sTDERR] at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:675)
2013-08-04 00:15:05 [iNFO] [sTDERR] at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:571)
2013-08-04 00:15:05 [iNFO] [sTDERR] at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:127)
2013-08-04 00:15:05 [iNFO] [sTDERR] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:469)
2013-08-04 00:15:05 [iNFO] [sTDERR] at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)
And this is how I handle my packets
http://www.minecraftforge.net/wiki/Organising_packet_handlers
I added this code to the handler :
System.out.println("PACKET ARRIVED!");
System.out.println(packet.channel);
System.out.println(data.readInt());
And channel is ok , packet is arriving , integer is running but the if statement its not working it looks like ... :?
I can get the packet in single player so yes!
IPacketHandler packetServer = new ServerModPacketHandler();
IPacketHandler packetClient = new ClientModPacketHandler();
NetworkRegistry.instance().registerChannel(packetServer, "netherfors", Side.SERVER);
NetworkRegistry.instance().registerChannel(packetClient, "netherfors", Side.CLIENT);
When I send a packet to the server If I am in the client it does work but in the multiplayer it doesnt work...
I send my packet :
EntityClientPlayerMP pl = (EntityClientPlayerMP) player;
pl.sendQueue.addToSendQueue(stream.makePacket("netherfors"));
And my server packet handler :
package netherfors;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.network.INetworkManager;
import net.minecraft.network.packet.Packet250CustomPayload;
import netherfors.misc.PacketReadStream;
import cpw.mods.fml.common.network.IPacketHandler;
import cpw.mods.fml.common.network.Player;
public class ServerModPacketHandler implements IPacketHandler {
@Override
public void onPacketData(INetworkManager manager,
Packet250CustomPayload packet, Player player) {
EntityPlayer p = (EntityPlayer) player;
if(packet.channel.equals("netherfors")){
PacketReadStream data = new PacketReadStream(packet);
if(data.readInt() == 1001){
p.addChatMessage("Done!");
}
if(data.readInt() == 2002){
System.out.println("2002");
destroyPhoxNote(p);
}
}
}
public void destroyPhoxNote(EntityPlayer player){
player.closeScreen();
player.inventory.decrStackSize(player.inventory.currentItem, 1);
player.addChatMessage("You have successfully learned what this Phox Note teaches!");
}
}
Can anyone help with this ?
Hey dude! Thank you for your help I successfully defined the server and the client proxy but here is the deal :
With an item I am sending a packet to server with int(1001)
When packet handler gets the int(1001) prints a "Done!"
It works on singleplayer still but doesnt work on the multiplayer
And I am okey with you saying me I am newbie! Because I am a newbie
You know about packets it looks like Can you give me an example about how to send integers and execute them a fast one Because the packet tutorial on wiki is very complicated