Advertisement
Guest User

Untitled

a guest
Mar 13th, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.44 KB | None | 0 0
  1. package com.theishiopian.BeamCannon;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.Random;
  6. import java.util.UUID;
  7.  
  8. import io.netty.buffer.ByteBuf;
  9. import net.minecraft.block.state.IBlockState;
  10. import net.minecraft.client.Minecraft;
  11. import net.minecraft.entity.EntityLivingBase;
  12. import net.minecraft.util.EnumParticleTypes;
  13. import net.minecraft.util.math.AxisAlignedBB;
  14. import net.minecraft.util.math.BlockPos;
  15. import net.minecraft.world.World;
  16. import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
  17. import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
  18. import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
  19. import net.minecraftforge.fml.relauncher.Side;
  20. import net.minecraftforge.fml.relauncher.SideOnly;
  21.  
  22. public class EnergyBeam implements IMessage
  23. {
  24.     public static Random random = new Random();
  25.     double posX = 0, posY = 0, posZ = 0;
  26.     double dX = 0, dY = 0, dZ = 0;
  27.     public UUID id = null;
  28.  
  29.     public EnergyBeam()
  30.     {
  31.         super();
  32.     }
  33.  
  34.     public EnergyBeam(UUID id, double x, double y, double z, double dX, double dY, double dZ)
  35.     {
  36.         super();
  37.         this.posX = x;
  38.         this.posY = y;
  39.         this.posZ = z;
  40.         this.dX = dX;
  41.         this.dY = dY;
  42.         this.dZ = dZ;
  43.         this.id = id;
  44.     }
  45.  
  46.     @Override
  47.     public void fromBytes(ByteBuf buf)
  48.     {
  49.         posX = buf.readDouble();
  50.         posY = buf.readDouble();
  51.         posZ = buf.readDouble();
  52.         dX = buf.readDouble();
  53.         dY = buf.readDouble();
  54.         dZ = buf.readDouble();
  55.         id = new UUID(buf.readLong(), buf.readLong());
  56.     }
  57.  
  58.     @Override
  59.     public void toBytes(ByteBuf buf)
  60.     {
  61.         buf.writeDouble(posX);
  62.         buf.writeDouble(posY);
  63.         buf.writeDouble(posZ);
  64.         buf.writeDouble(dX);
  65.         buf.writeDouble(dY);
  66.         buf.writeDouble(dZ);
  67.         buf.writeLong(id.getMostSignificantBits());
  68.         buf.writeLong(id.getLeastSignificantBits());
  69.     }
  70.  
  71.     public static class MessageHolder implements IMessageHandler<EnergyBeam, IMessage>
  72.     {
  73.         @SideOnly(Side.CLIENT)
  74.         @Override
  75.         public IMessage onMessage(final EnergyBeam message, final MessageContext ctx)
  76.         {
  77.             World world = Minecraft.getMinecraft().world;
  78.             boolean doContinue = true;
  79.             for (double i = 0; i < 384.0 && doContinue; i++)
  80.             {
  81.                 for (int j = 0; j < 5; j++)
  82.                 {
  83.                     message.posX += 0.2 * i * message.dX / 384.0;
  84.                     message.posY += 0.2 * i * message.dY / 384.0;
  85.                     message.posZ += 0.2 * i * message.dZ / 384.0;
  86. //                  ParticleUtil.spawnParticleGlow(world, (float) message.posX, (float) message.posY,
  87. //                          (float) message.posZ, 0, 0, 0, 255, 64, 16, 2.0f, 24);
  88.                     world.spawnParticle(EnumParticleTypes.REDSTONE, true, message.posX, message.posY, message.posZ, 0, 0, 0, new int[0]);
  89.                 }
  90.                 IBlockState state = world.getBlockState(new BlockPos(message.posX, message.posY, message.posZ));
  91.                 if(state.isFullCube() && state.isOpaqueCube())
  92.                 {
  93.                     doContinue = false;
  94.                     for (int k = 0; k < 80; k++)
  95.                     {
  96. //                      ParticleUtil.spawnParticleGlow(world, (float) message.posX - (float) (i * message.dX / 384.0f),
  97. //                              (float) message.posY - (float) (i * message.dY / 384.0f),
  98. //                              (float) message.posZ - (float) (i * message.dZ / 384.0f),
  99. //                              0.125f * (random.nextFloat() - 0.5f), 0.125f * (random.nextFloat() - 0.5f),
  100. //                              0.125f * (random.nextFloat() - 0.5f), 255, 64, 16, 2.0f, 24);
  101.                         world.spawnParticle(EnumParticleTypes.REDSTONE, true, message.posX, message.posY, message.posZ, 0, 0, 0, new int[0]);
  102.                     }
  103.                 }
  104.                 List<EntityLivingBase> rawEntities = world.getEntitiesWithinAABB(EntityLivingBase.class,
  105.                         new AxisAlignedBB(message.posX - 0.85, message.posY - 0.85, message.posZ - 0.85,
  106.                                 message.posX + 0.85, message.posY + 0.85, message.posZ + 0.85));
  107.                 ArrayList<EntityLivingBase> entities = new ArrayList<EntityLivingBase>();
  108.                 for (int j = 0; j < rawEntities.size(); j++)
  109.                 {
  110.                     if(rawEntities.get(j).getUniqueID().compareTo(message.id) != 0)
  111.                     {
  112.                         entities.add(rawEntities.get(j));
  113.                     }
  114.                 }
  115.                 if(entities.size() > 0)
  116.                 {
  117.                     doContinue = false;
  118.                     for (int k = 0; k < 80; k++)
  119.                     {
  120. //                      ParticleUtil.spawnParticleGlow(world, (float) message.posX, (float) message.posY,
  121. //                              (float) message.posZ, 0.125f * (random.nextFloat() - 0.5f),
  122. //                              0.125f * (random.nextFloat() - 0.5f), 0.125f * (random.nextFloat() - 0.5f), 255, 64, 16,
  123. //                              2.0f, 24);
  124.                         world.spawnParticle(EnumParticleTypes.REDSTONE, true, message.posX, message.posY, message.posZ, 0, 0, 0, new int[0]);
  125.                     }
  126.                 }
  127.             }
  128.             return null;
  129.         }
  130.     }
  131.  
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement