Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

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) {

   }
}

 

 

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.