Posted January 7, 20178 yr Hello, I need to spawn the particles from the player, but to see other players and they could spawn the particles. I used to do this: Press "Q" -> sendToAllAround but in this method there is a problem, the players even though I see the particles but when they spanat, they have crashes error to the console(debug). There was another way to do so sendToServer and server side to send the package sendToAllAround, but I simply do not reach the packages. [spoiler=Events] @SubscribeEvent public void onClientTicks(final TickEvent.ClientTickEvent e) { if(e.phase == TickEvent.Phase.START)//For example { NetworkHandler.sendToServer(new PacketParticles()); } } [spoiler=NetworkHandler] public class NetworkHandler { public static final SimpleNetworkWrapper NETWORK = NetworkRegistry.INSTANCE.newSimpleChannel("ModChannel"); private static int dec; public static void init() { NETWORK.registerMessage(PacketParticles.class, PacketParticles.class, dec++, Side.SERVER); NETWORK.registerMessage(PacketFire.class, PacketFire.class, dec++, Side.CLIENT); } public static void sendToAll(final IMessage message) { NETWORK.sendToAll(message); } public static void sendTo(final IMessage message, final EntityPlayerMP player) { NETWORK.sendTo(message, player); } public static void sendToAllAround(final LocationDoublePacket message, final World world) { sendToAllAround(message, message.getTargetPoint(world)); } public static void sendToAllAround(final IMessage message, final NetworkRegistry.TargetPoint point) { NETWORK.sendToAllAround(message, point); } public static void sendToDimension(final IMessage message, final int dimensionId) { NETWORK.sendToDimension(message, dimensionId); } public static void sendToServer(final IMessage message){ NETWORK.sendToServer(message); } } [spoiler=LocationDoublePacket] public abstract class LocationDoublePacket<REQ extends IMessage> extends AbstractPacket<REQ> { protected double x, y, z; public LocationDoublePacket(){} public LocationDoublePacket(final double x, final double y, final double z) { this.x = x; this.y = y; this.z = z; } @Override public void toBytes(final ByteBuf buf) { buf.writeDouble(x); buf.writeDouble(y); buf.writeDouble(z); } @Override public void fromBytes(final ByteBuf buf) { x = buf.readDouble(); y = buf.readDouble(); z = buf.readDouble(); } public NetworkRegistry.TargetPoint getTargetPoint(final World world){ return getTargetPoint(world, 64); } public NetworkRegistry.TargetPoint getTargetPoint(final World world, double updateDistance) { return new NetworkRegistry.TargetPoint(world.provider.getDimension(), x, y, z, updateDistance); } } [spoiler=AbstractPacket] public abstract class AbstractPacket<REQ extends IMessage> implements IMessage, IMessageHandler<REQ, REQ> { @Override public REQ onMessage(final REQ message, final MessageContext ctx) { if(ctx.side == Side.SERVER) { handleServerSide(message, ctx.getServerHandler().playerEntity); } else { handleClientSide(message, FMLClientHandler.instance().getClientPlayerEntity()); } return null; } public abstract void handleClientSide(final REQ message, final EntityPlayer player); public abstract void handleServerSide(final REQ message, final EntityPlayer player); } [spoiler=PacketParticles] public class PacketParticles extends LocationDoublePacket<PacketParticles> { public PacketParticles() { } @Override public void toBytes(final ByteBuf buffer) { } @Override public void fromBytes(final ByteBuf buffer) { } @Override public void handleClientSide(final PacketParticles message, final EntityPlayer player) { } @Override public void handleServerSide(final PacketParticles message, final EntityPlayer player) { NetworkHandler.sendToAllAround(new PacketFire(), player.worldObj); } } [spoiler=PacketFire] public class PacketFire extends LocationDoublePacket<PacketFire> { public PacketFire() { } @Override public void toBytes(final ByteBuf buffer) { } @Override public void fromBytes(final ByteBuf buffer) { } @Override public void handleClientSide(final PacketFire message, final EntityPlayer player) { Vec3d vec = player.getLookVec(); double x = vec.xCoord / 10, y = vec.yCoord / 10, z = vec.zCoord / 10; Random random = new Random(); for (int i = 0; i < 100; i++) { final double xCoord = player.posX + x * i + random.nextDouble(); final double yCoord = player.posY + y * i + random.nextDouble(); final double zCoord = player.posZ + z * i + random.nextDouble(); player.worldObj.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, xCoord, yCoord, zCoord, x * 5, y * 5, z * 5); } } @Override public void handleServerSide(final PacketFire message, final EntityPlayer player) { } }
January 8, 20178 yr You mention a crash, so a crash report would help us know where to start. The debugger is a powerful and necessary tool in any IDE, so learn how to use it. You'll be able to tell us more and get better help here if you investigate your runtime problems in the debugger before posting.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.