package com.Test.Nothing.ModSlicer.slashFX;
import java.util.List;
import java.util.Random;
import com.Test.Nothing.ModSlicer.interfaces.IFabledBlades;
import com.Test.Nothing.ModSlicer.network.PacketHandler;
import com.Test.Nothing.ModSlicer.network.message.MsgSlashFX;
import com.Test.Nothing.ModSlicer.util.Utilities;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.datasync.DataParameter;
import net.minecraft.network.datasync.DataSerializers;
import net.minecraft.network.datasync.EntityDataManager;
import net.minecraft.util.DamageSource;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
public class EntitySlice extends Entity
{
public static final DataParameter<Integer> lifetime = EntityDataManager.createKey(EntitySlice.class, DataSerializers.VARINT);
public static final DataParameter<Float> RED = EntityDataManager.createKey(EntitySlice.class, DataSerializers.FLOAT);
public static final DataParameter<Float> GREEN = EntityDataManager.createKey(EntitySlice.class, DataSerializers.FLOAT);
public static final DataParameter<Float> BLUE = EntityDataManager.createKey(EntitySlice.class, DataSerializers.FLOAT);
public static final DataParameter<ItemStack> SWORD = EntityDataManager.createKey(EntitySlice.class, DataSerializers.ITEM_STACK);
public static final DataParameter<Integer> LIFE_EFFECT = EntityDataManager.createKey(EntitySlice.class, DataSerializers.VARINT);
public static final DataParameter<Float> ALPHA = EntityDataManager.createKey(EntitySlice.class, DataSerializers.FLOAT);
public static final DataParameter<Boolean> SLASH_IMMEDIATELY = EntityDataManager.createKey(EntitySlice.class, DataSerializers.BOOLEAN);
public EntityPlayer player = null;
public EntitySlice(EntityPlayer player, World worldIn, float red, float green, float blue, ItemStack stack, int lifeeffect, float alpha)
{
super(worldIn);
this.setSize(0, 0);
this.setInvisible(true);
this.getDataManager().set(RED, red);
this.getDataManager().set(GREEN, green);
this.getDataManager().set(BLUE, blue);
this.getDataManager().set(ALPHA, alpha);
if(stack != null)
this.getDataManager().set(SWORD, stack);
this.getDataManager().set(LIFE_EFFECT, lifeeffect);
this.getDataManager().set(SLASH_IMMEDIATELY, true);
this.player = player;
}
public EntitySlice(World worldIn)
{
super(worldIn);
}
public void setPlayer(EntityPlayer player)
{
this.player = player;
}
@Override
public void onUpdate()
{
float red = this.getDataManager().get(RED).floatValue();
float green = this.getDataManager().get(GREEN).floatValue();
float blue = this.getDataManager().get(BLUE).floatValue();
boolean slashImmediately = this.getDataManager().get(SLASH_IMMEDIATELY).booleanValue();
ItemStack stack = this.getDataManager().get(SWORD);
if(player == null) {
this.setDead();
return;
}
if (slashImmediately && !this.world.isRemote || ((((Integer)getDataManager().get(lifetime)).intValue() % 3 == 0) && (!this.world.isRemote)))
{
this.getDataManager().set(SLASH_IMMEDIATELY, false);
float offX = 0.5F * (float)Math.sin(Math.toRadians(-90.0F - this.player.rotationYaw));
float offZ = 0.5F * (float)Math.cos(Math.toRadians(-90.0F - this.player.rotationYaw));
double x1 = this.player.posX + this.player.getLookVec().x * 0.5D + offX;
double y1 = this.player.posY + this.player.getLookVec().y * 0.5D + this.player.getEyeHeight();
double z1 = this.player.posZ + this.player.getLookVec().z * 0.5D + offZ;
double x2 = this.player.posX + this.player.getLookVec().x * 4.0D;
double y2 = this.player.posY + this.player.getEyeHeight() + this.player.getLookVec().y * 4.0D;
double z2 = this.player.posZ + this.player.getLookVec().z * 4.0D;
this.posX = this.player.posX;
this.posY = this.player.posY;
this.posZ = this.player.posZ;
float slashYaw = this.player.rotationYaw;
float slashPitch = this.player.rotationPitch;
float angle = 30.0F + new Random().nextFloat() * 120.0F;
float radius = 2;
float thickness = 1.5f;
float arc = 150;
Effect slash = new EffectSlash(this.player.world.provider.getDimension()).setSlashProperties(slashYaw, slashPitch, angle, radius, thickness, arc).setPosition(x1, y1, z1).setMotion((x2 - x1) / 5.0D, (y2 - y1) / 5.0D, (z2 - z1) / 5.0D).setLife(this.getDataManager().get(LIFE_EFFECT).intValue()).setAdditive(true).setColor(red, green, blue, 1.0F);
IMessage mess = new MsgSlashFX(MysticRegistry.FX_SLASH, slash.write());
PacketHandler.sendToAll(new MsgSlashFX(MysticRegistry.FX_SLASH, slash.write()));
//Log.logger.info(mess + " idiot null");
//PacketHandler.sendToAll();
double lx = this.player.posX + this.player.getLookVec().x * 2.0D;
double ly = this.player.posY + this.player.getEyeHeight() + this.player.getLookVec().y * 2.0D;
double lz = this.player.posZ + this.player.getLookVec().z * 2.0D;
float dist = 4f;
float dist2 = 4f;
List<EntityLivingBase> entities = this.world.getEntitiesWithinAABB(EntityLivingBase.class, new AxisAlignedBB(lx - dist, ly - dist / 3, lz - dist, lx + dist2, ly + dist2 / 3, lz + dist2));
for (EntityLivingBase e : entities) {
if (e.getUniqueID().compareTo(this.player.getUniqueID()) != 0)
{
e.hurtResistantTime = 0;
if (e.getHealth() > 0.0F)
{
Effect cut = new EffectCut(this.world.provider.getDimension()).setSlashProperties(this.player.rotationYaw, this.player.rotationPitch, new Random().nextFloat() * 360.0F).setColor(red, green, blue, 1.0F).setPosition(e.posX, e.posY + e.height / 2.0F, e.posZ).setAdditive(true).setLife(12);
PacketHandler.sendToAll(new MsgSlashFX(MysticRegistry.FX_CUT, cut.write()));
// Log.logger.info(cut + " idiot null");
}
if(stack.getItem() instanceof IFabledBlades && stack.getItem() instanceof ItemSword) {
Utilities.spawnAppropriateSwordColor(stack, world, e, player);
ItemSword sword = (ItemSword) stack.getItem();
//Separate chance for different swords
if(player.getRNG().nextInt(4) <= 0)
sword.hitEntity(stack, e, player);
float attackDamageSlash = (float) player.getEntityAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).getAttributeValue();
e.attackEntityFrom(DamageSource.causePlayerDamage(this.player).setDamageBypassesArmor(), e.getMaxHealth() * 0.025f + (attackDamageSlash / 5));
}
}
}
}
getDataManager().set(lifetime, Integer.valueOf(((Integer)getDataManager().get(lifetime)).intValue() - 1));
if (((Integer)getDataManager().get(lifetime)).intValue() <= 0) {
setDead();
}
}
protected void entityInit()
{
getDataManager().register(lifetime, Integer.valueOf(18));
getDataManager().register(RED, Float.valueOf(1));
getDataManager().register(GREEN, Float.valueOf(1));
getDataManager().register(BLUE, Float.valueOf(1));
getDataManager().register(SWORD, ItemStack.EMPTY);
getDataManager().register(LIFE_EFFECT, Integer.valueOf(0));
getDataManager().register(ALPHA, Float.valueOf(0));
getDataManager().register(SLASH_IMMEDIATELY, Boolean.valueOf(true));
getDataManager().setDirty(lifetime);
}
protected void readEntityFromNBT(NBTTagCompound compound)
{
//setDead();
}
protected void writeEntityToNBT(NBTTagCompound compound) {}
}
The code above is the code for the EntitySlice.
package com.Test.Nothing.ModSlicer.network;
import com.Test.Nothing.ModSlicer.network.message.MsgAlterHealthPercentage;
import com.Test.Nothing.ModSlicer.network.message.MsgAlterHealthPercentageClient;
import com.Test.Nothing.ModSlicer.network.message.MsgDecreaseDamage;
import com.Test.Nothing.ModSlicer.network.message.MsgDecreaseDamageClient;
import com.Test.Nothing.ModSlicer.network.message.MsgIncreaseDamage;
import com.Test.Nothing.ModSlicer.network.message.MsgIncreaseDamageClient;
import com.Test.Nothing.ModSlicer.network.message.MsgIncrementConsecutiveStrikes;
import com.Test.Nothing.ModSlicer.network.message.MsgIncrementConsecutiveStrikesClient;
import com.Test.Nothing.ModSlicer.network.message.MsgIncrementHitCount;
import com.Test.Nothing.ModSlicer.network.message.MsgIncrementHitCountClient;
import com.Test.Nothing.ModSlicer.network.message.MsgIncrementSwordModeClient;
import com.Test.Nothing.ModSlicer.network.message.MsgIncrementSwordSign;
import com.Test.Nothing.ModSlicer.network.message.MsgIncrementSwordSignClient;
import com.Test.Nothing.ModSlicer.network.message.MsgNewIncrementSwordMode;
import com.Test.Nothing.ModSlicer.network.message.MsgRemoveAwakened;
import com.Test.Nothing.ModSlicer.network.message.MsgRemoveAwakenedClient;
import com.Test.Nothing.ModSlicer.network.message.MsgResetConsecutiveStrikes;
import com.Test.Nothing.ModSlicer.network.message.MsgResetConsecutiveStrikesClient;
import com.Test.Nothing.ModSlicer.network.message.MsgResetHitCount;
import com.Test.Nothing.ModSlicer.network.message.MsgResetHitCountClient;
import com.Test.Nothing.ModSlicer.network.message.MsgResetSwordMode;
import com.Test.Nothing.ModSlicer.network.message.MsgResetSwordModeClient;
import com.Test.Nothing.ModSlicer.network.message.MsgResetSwordSign;
import com.Test.Nothing.ModSlicer.network.message.MsgResetSwordSignClient;
import com.Test.Nothing.ModSlicer.network.message.MsgSetAwakenEnergy;
import com.Test.Nothing.ModSlicer.network.message.MsgSetAwakenEnergyClient;
import com.Test.Nothing.ModSlicer.network.message.MsgSetAwakened;
import com.Test.Nothing.ModSlicer.network.message.MsgSetAwakenedClient;
import com.Test.Nothing.ModSlicer.network.message.MsgSetModeSelection;
import com.Test.Nothing.ModSlicer.network.message.MsgSetModeSelectionClient;
import com.Test.Nothing.ModSlicer.network.message.MsgSetReadyAwaken;
import com.Test.Nothing.ModSlicer.network.message.MsgSetSkillDuration;
import com.Test.Nothing.ModSlicer.network.message.MsgSetSkillDurationClient;
import com.Test.Nothing.ModSlicer.network.message.MsgSetUsingSkillOrSign;
import com.Test.Nothing.ModSlicer.network.message.MsgSetUsingSkillOrSignClient;
import com.Test.Nothing.ModSlicer.network.message.MsgSlashFX;
import com.Test.Nothing.ModSlicer.network.message.MsgSpecificAlterSwordMode;
import com.Test.Nothing.ModSlicer.network.message.MsgSpecificAlterSwordModeClient;
import com.Test.Nothing.ModSlicer.network.message.MsgSpecificAlterSwordSign;
import com.Test.Nothing.ModSlicer.network.message.MsgSpecificAlterSwordSignClient;
import com.Test.Nothing.ModSlicer.network.message.MsgSuspend;
import com.Test.Nothing.ModSlicer.network.message.MsgUseLunarEnergyClient;
import com.Test.Nothing.ModSlicer.reference.RefStrings;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraftforge.fml.common.network.NetworkRegistry;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper;
import net.minecraftforge.fml.relauncher.Side;
public class PacketHandler
{
public static final SimpleNetworkWrapper INSTANCE = NetworkRegistry.INSTANCE.newSimpleChannel(RefStrings.MODID);
public static int id;
public static void init()
{
INSTANCE.registerMessage(MsgIncreaseDamage.class, MsgIncreaseDamage.class, id++, Side.SERVER);
INSTANCE.registerMessage(MsgIncreaseDamageClient.class, MsgIncreaseDamageClient.class, id++, Side.CLIENT);
INSTANCE.registerMessage(MsgSetAwakened.class, MsgSetAwakened.class, id++, Side.SERVER);
INSTANCE.registerMessage(MsgSetAwakenedClient.class, MsgSetAwakenedClient.class, id++, Side.CLIENT);
INSTANCE.registerMessage(MsgSetUsingSkillOrSign.class, MsgSetUsingSkillOrSign.class, id++, Side.SERVER);
INSTANCE.registerMessage(MsgDecreaseDamage.class, MsgDecreaseDamage.class, id++, Side.SERVER);
INSTANCE.registerMessage(MsgDecreaseDamageClient.class, MsgDecreaseDamageClient.class, id++, Side.CLIENT);
INSTANCE.registerMessage(MsgNewIncrementSwordMode.class, MsgNewIncrementSwordMode.class, id++, Side.SERVER);
INSTANCE.registerMessage(MsgIncrementSwordModeClient.class, MsgIncrementSwordModeClient.class, id++, Side.CLIENT);
INSTANCE.registerMessage(MsgUseLunarEnergyClient.class, MsgUseLunarEnergyClient.class, id++, Side.CLIENT);
INSTANCE.registerMessage(MsgRemoveAwakened.class, MsgRemoveAwakened.class, id++, Side.SERVER);
INSTANCE.registerMessage(MsgRemoveAwakenedClient.class, MsgRemoveAwakenedClient.class, id++, Side.CLIENT);
INSTANCE.registerMessage(MsgIncrementSwordSign.class, MsgIncrementSwordSign.class, id++, Side.SERVER);
INSTANCE.registerMessage(MsgIncrementSwordSignClient.class, MsgIncrementSwordSignClient.class, id++, Side.CLIENT);
INSTANCE.registerMessage(MsgResetSwordMode.class, MsgResetSwordMode.class, id++, Side.SERVER);
INSTANCE.registerMessage(MsgResetSwordModeClient.class, MsgResetSwordModeClient.class, id++, Side.CLIENT);
INSTANCE.registerMessage(MsgResetConsecutiveStrikes.class, MsgResetConsecutiveStrikes.class, id++, Side.SERVER);
INSTANCE.registerMessage(MsgResetConsecutiveStrikesClient.class, MsgResetConsecutiveStrikesClient.class, id++, Side.CLIENT);
INSTANCE.registerMessage(MsgIncrementConsecutiveStrikes.class, MsgIncrementConsecutiveStrikes.class, id++, Side.SERVER);
INSTANCE.registerMessage(MsgIncrementConsecutiveStrikesClient.class, MsgIncrementConsecutiveStrikesClient.class, id++, Side.CLIENT);
INSTANCE.registerMessage(MsgResetSwordSign.class, MsgResetSwordSign.class, id++, Side.SERVER);
INSTANCE.registerMessage(MsgResetSwordSignClient.class, MsgResetSwordSignClient.class, id++, Side.CLIENT);
INSTANCE.registerMessage(MsgSetReadyAwaken.class, MsgSetReadyAwaken.class, id++, Side.CLIENT);
INSTANCE.registerMessage(MsgIncrementHitCount.class, MsgIncrementHitCount.class, id++, Side.SERVER);
INSTANCE.registerMessage(MsgIncrementHitCountClient.class, MsgIncrementHitCountClient.class, id++, Side.CLIENT);
INSTANCE.registerMessage(MsgResetHitCount.class, MsgResetHitCount.class, id++, Side.SERVER);
INSTANCE.registerMessage(MsgResetHitCountClient.class, MsgResetHitCountClient.class, id++, Side.CLIENT);
INSTANCE.registerMessage(MsgSuspend.class, MsgSuspend.class, id++, Side.SERVER);
INSTANCE.registerMessage(MsgAlterHealthPercentage.class, MsgAlterHealthPercentage.class, id++, Side.SERVER);
INSTANCE.registerMessage(MsgAlterHealthPercentageClient.class, MsgAlterHealthPercentageClient.class, id++, Side.CLIENT);
INSTANCE.registerMessage(MsgSetSkillDuration.class, MsgSetSkillDuration.class, id++, Side.SERVER);
INSTANCE.registerMessage(MsgSetSkillDurationClient.class, MsgSetSkillDurationClient.class, id++, Side.CLIENT);
INSTANCE.registerMessage(MsgSpecificAlterSwordMode.class, MsgSpecificAlterSwordMode.class, id++, Side.SERVER);
INSTANCE.registerMessage(MsgSpecificAlterSwordModeClient.class, MsgSpecificAlterSwordModeClient.class, id++, Side.CLIENT);
INSTANCE.registerMessage(MsgSpecificAlterSwordSign.class, MsgSpecificAlterSwordSign.class, id++, Side.SERVER);
INSTANCE.registerMessage(MsgSpecificAlterSwordSignClient.class, MsgSpecificAlterSwordSignClient.class, id++, Side.CLIENT);
INSTANCE.registerMessage(MsgSetUsingSkillOrSignClient.class, MsgSetUsingSkillOrSignClient.class, id++, Side.CLIENT);
INSTANCE.registerMessage(MsgSetAwakenEnergy.class, MsgSetAwakenEnergy.class, id++, Side.SERVER);
INSTANCE.registerMessage(MsgSetAwakenEnergyClient.class, MsgSetAwakenEnergyClient.class, id++, Side.CLIENT);
INSTANCE.registerMessage(MsgSetModeSelection.class, MsgSetModeSelection.class, id++, Side.SERVER);
INSTANCE.registerMessage(MsgSetModeSelectionClient.class, MsgSetModeSelectionClient.class, id++, Side.CLIENT);
INSTANCE.registerMessage(MsgSlashFX.MessageHolder.class, MsgSlashFX.class, id++, Side.CLIENT);
}
public static void sendToAll(IMessage message)
{
if(message != null)
INSTANCE.sendToAll(message);
}
public static void sendTo(IMessage message, EntityPlayerMP player)
{
INSTANCE.sendTo(message, player);
}
public static void sendToDimension(IMessage message, int dimensionId)
{
INSTANCE.sendToDimension(message, dimensionId);
}
public static void sendToServer(IMessage message)
{
INSTANCE.sendToServer(message);
}
}
The code above is for the PacketHandler (U idiot I wish u cAN DIE).
package com.Test.Nothing.ModSlicer.network.message;
import com.Test.Nothing.ModSlicer.slashFX.EffectsRegistry;
import io.netty.buffer.ByteBuf;
import net.minecraft.client.Minecraft;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fml.common.network.ByteBufUtils;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
//Server Packet
public class MsgSlashFX implements IMessage {
public int id = 0;
public NBTTagCompound tag = new NBTTagCompound();
public MsgSlashFX() {
}
public MsgSlashFX(int id, NBTTagCompound tag) {
this.tag = tag;
this.id = id;
}
@Override
public void fromBytes(ByteBuf buf) {
id = buf.readInt();
tag = ByteBufUtils.readTag(buf);
}
@Override
public void toBytes(ByteBuf buf) {
buf.writeInt(id);
ByteBufUtils.writeTag(buf, tag);
}
public static class MessageHolder implements IMessageHandler<MsgSlashFX, IMessage> {
@SideOnly(Side.CLIENT)
@Override
public IMessage onMessage(final MsgSlashFX message, final MessageContext ctx) {
Minecraft.getMinecraft().addScheduledTask(() -> {
EffectsRegistry.effects.get(message.id).apply(message.tag);
});
return null;
}
}
}
The code for the specific message. No need to tackle about EffectsRegistry. Its not the cause of the prob...
[20:12:04] [Server thread/ERROR] [FML]: SimpleChannelHandlerWrapper exception
java.lang.NullPointerException: null
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:770) ~[guava-21.0.jar:?]
at com.google.common.collect.SingletonImmutableList.<init>(SingletonImmutableList.java:38) ~[guava-21.0.jar:?]
at com.google.common.collect.ImmutableList.of(ImmutableList.java:93) ~[guava-21.0.jar:?]
at net.minecraftforge.fml.common.network.FMLOutboundHandler$OutboundTarget$3.selectNetworks(FMLOutboundHandler.java:120) ~[FMLOutboundHandler$OutboundTarget$3.class:?]
at net.minecraftforge.fml.common.network.FMLOutboundHandler.write(FMLOutboundHandler.java:378) ~[FMLOutboundHandler.class:?]
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:730) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:816) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:723) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:111) ~[MessageToMessageEncoder.class:4.1.9.Final]
at io.netty.handler.codec.MessageToMessageCodec.write(MessageToMessageCodec.java:116) ~[MessageToMessageCodec.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:801) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:814) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:794) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:831) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1032) ~[DefaultChannelPipeline.class:4.1.9.Final]
at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:296) ~[AbstractChannel.class:4.1.9.Final]
at net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper.sendToAll(SimpleNetworkWrapper.java:236) [SimpleNetworkWrapper.class:?]
at com.Test.Nothing.ModSlicer.network.PacketHandler.sendToAll(PacketHandler.java:110) [PacketHandler.class:?]
at com.Test.Nothing.ModSlicer.slashFX.EntitySlice.onUpdate(EntitySlice.java:107) [EntitySlice.class:?]
at net.minecraft.world.World.updateEntityWithOptionalForce(World.java:2171) [World.class:?]
at net.minecraft.world.WorldServer.updateEntityWithOptionalForce(WorldServer.java:871) [WorldServer.class:?]
at net.minecraft.world.World.updateEntity(World.java:2130) [World.class:?]
at net.minecraft.world.World.updateEntities(World.java:1931) [World.class:?]
at net.minecraft.world.WorldServer.updateEntities(WorldServer.java:643) [WorldServer.class:?]
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:842) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:743) [MinecraftServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:192) [IntegratedServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:592) [MinecraftServer.class:?]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_201]
[20:12:04] [Netty Server IO #1/ERROR] [FML]: There was a critical exception handling a packet on channel theeightfabledblades
java.lang.NullPointerException: null
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:770) ~[guava-21.0.jar:?]
at com.google.common.collect.SingletonImmutableList.<init>(SingletonImmutableList.java:38) ~[guava-21.0.jar:?]
at com.google.common.collect.ImmutableList.of(ImmutableList.java:93) ~[guava-21.0.jar:?]
at net.minecraftforge.fml.common.network.FMLOutboundHandler$OutboundTarget$3.selectNetworks(FMLOutboundHandler.java:120) ~[FMLOutboundHandler$OutboundTarget$3.class:?]
at net.minecraftforge.fml.common.network.FMLOutboundHandler.write(FMLOutboundHandler.java:378) ~[FMLOutboundHandler.class:?]
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:730) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:816) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:723) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:111) ~[MessageToMessageEncoder.class:4.1.9.Final]
at io.netty.handler.codec.MessageToMessageCodec.write(MessageToMessageCodec.java:116) ~[MessageToMessageCodec.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:801) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:814) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:794) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:831) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1032) ~[DefaultChannelPipeline.class:4.1.9.Final]
at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:296) ~[AbstractChannel.class:4.1.9.Final]
at net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper.sendToAll(SimpleNetworkWrapper.java:236) ~[SimpleNetworkWrapper.class:?]
at com.Test.Nothing.ModSlicer.network.PacketHandler.sendToAll(PacketHandler.java:110) ~[PacketHandler.class:?]
at com.Test.Nothing.ModSlicer.slashFX.EntitySlice.onUpdate(EntitySlice.java:107) ~[EntitySlice.class:?]
at net.minecraft.world.World.updateEntityWithOptionalForce(World.java:2171) ~[World.class:?]
at net.minecraft.world.WorldServer.updateEntityWithOptionalForce(WorldServer.java:871) ~[WorldServer.class:?]
at net.minecraft.world.World.updateEntity(World.java:2130) ~[World.class:?]
at net.minecraft.world.World.updateEntities(World.java:1931) ~[World.class:?]
at net.minecraft.world.WorldServer.updateEntities(WorldServer.java:643) ~[WorldServer.class:?]
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:842) ~[MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:743) ~[MinecraftServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:192) ~[IntegratedServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:592) ~[MinecraftServer.class:?]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_201]
And the null pointer crash.
Okay, now that the supplied codes are provided, I will describe how it'll occur. The crash will be thrown if I attempt to lets say summon the EntitySlice 6x in a quick session (like for 3 seconds). If not spammed/quickly summoned, the probability of the crash reduces into infinitesimal(?). What is wrong with the code?