- 30
- 6
Всем привет. Не работает система пакетов. Я уверен, что допускаю где-то ошибку, но не пойму где.
Пытался отлавливать момент передачи пакета и выводить в консоль, реакции ноль
заранее всем спасибо за помощь, если уж какая-то слишком очевидная ошибка - извиняюсь, не столь давно сижу в java
Java:
public final class SPacketParticles extends SimplePacket {
@Override
public void server(EntityPlayerMP player) {
NetworkHandler.sendToAllAround(new CPacketParticles(), player.worldObj, player.posX, player.posY, player.posZ, 10);
}
}
Java:
public final class CPacketParticles extends SimplePacket {
public CPacketParticles(){}
public CPacketParticles(double x, double y, double z) {
buf().writeDouble(x);
buf().writeDouble(y);
buf().writeDouble(z);
}
@Override
public void client(EntityPlayer player) {
double
x = buf().readDouble(),
y = buf().readDouble(),
z = buf().readDouble(),
newPosX, newPosZ, speedX, speedZ,
doublePi = 2 * Math.PI;
final double RADIUS = 0.4;
for (double i = 0; i < doublePi; i += doublePi / 50) {
newPosX = x + RADIUS * Math.cos(i);
newPosZ = z + RADIUS * Math.sin(i);
speedX = (newPosX - x) * 0.2D;
speedZ = (newPosZ - z) * 0.2D;
player.worldObj.spawnParticle("flame", newPosX, y, newPosZ, speedX, 0.0D, speedZ);
}
}
}
Java:
public class SimplePacket implements IMessage, IMessageHandler<SimplePacket, SimplePacket> {
private ByteBuf buf;
@Override
public SimplePacket onMessage(SimplePacket sp, MessageContext ctx) {
if (ctx.side.isServer())
sp.server(ctx.getServerHandler().playerEntity);
else
sp.client(clientPlayer());
return null;
}
protected ByteBuf buf() {
return buf != null ? buf : (buf = Unpooled.buffer());
}
public void client(EntityPlayer player) {}
public void server(EntityPlayerMP player) {}
@Override
public final void fromBytes(ByteBuf buf) {
this.buf = buf;
}
@Override
public final void toBytes(ByteBuf buf) {
if (buf != null)
buf.writeBytes(this.buf);
}
@SideOnly(Side.CLIENT)
private EntityPlayer clientPlayer() {
return Minecraft.getMinecraft().thePlayer;
}
}
Java:
public final class NetworkHandler {
private short id;
public static final SimpleNetworkWrapper NETWORK = NetworkRegistry.INSTANCE.newSimpleChannel("NewChannel");
public NetworkHandler() {
register(CPacketParticles.class, Side.CLIENT);
register(SPacketParticles.class, Side.SERVER);
}
public static void sendToAllAround(SimplePacket packet, World world, double x, double y, double z, double distance) {
NETWORK.sendToAllAround(packet, new NetworkRegistry.TargetPoint(world.provider.dimensionId, x, y, z, distance));
}
public static void sendToServer(SimplePacket packet) {
NETWORK.sendToServer(packet);
}
public static void sendToClient(SimplePacket packet, EntityPlayerMP player) {
NETWORK.sendTo(packet, player);
}
private void register(Class<? extends SimplePacket> packet, Side side) {
try {
NETWORK.registerMessage(packet.newInstance(), packet, id++, side);
} catch (InstantiationException | IllegalAccessException e) {
e.printStackTrace();
}
}
}
Пытался отлавливать момент передачи пакета и выводить в консоль, реакции ноль
заранее всем спасибо за помощь, если уж какая-то слишком очевидная ошибка - извиняюсь, не столь давно сижу в java