diff --git a/changelog b/changelog index 54fd44341..e03539fb7 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,6 @@ +## Changed +* Light oil and cracked light oil can now be refomred into large quantities of aromatic hydrocarbons a well as some reformate gas + ## Fixed * Fixed thorium bedrock ore using the wrong ore dict key, making it unable to be processed via centrifuge or acidizer * Fixed custom machine NEI slots going out of bounds after the third slot \ No newline at end of file diff --git a/src/main/java/api/hbm/entity/RadarEntry.java b/src/main/java/api/hbm/entity/RadarEntry.java index 540ec925b..56bb41df4 100644 --- a/src/main/java/api/hbm/entity/RadarEntry.java +++ b/src/main/java/api/hbm/entity/RadarEntry.java @@ -1,5 +1,7 @@ package api.hbm.entity; +import cpw.mods.fml.common.network.ByteBufUtils; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -12,6 +14,8 @@ public class RadarEntry { public int posZ; public int dim; + public RadarEntry() { } //blank ctor for packets + public RadarEntry(String name, int level, int x, int y, int z, int dim) { this.unlocalizedName = name; this.blipLevel = level; @@ -32,4 +36,22 @@ public class RadarEntry { public RadarEntry(EntityPlayer player) { this(player.getDisplayName(), IRadarDetectableNT.PLAYER, (int) Math.floor(player.posX), (int) Math.floor(player.posY), (int) Math.floor(player.posZ), player.dimension); } + + public void fromBytes(ByteBuf buf) { + this.unlocalizedName = ByteBufUtils.readUTF8String(buf); + this.blipLevel = buf.readShort(); + this.posX = buf.readInt(); + this.posY = buf.readInt(); + this.posZ = buf.readInt(); + this.dim = buf.readShort(); + } + + public void toBytes(ByteBuf buf) { + ByteBufUtils.writeUTF8String(buf, this.unlocalizedName); + buf.writeShort(this.blipLevel); + buf.writeInt(this.posX); + buf.writeInt(this.posY); + buf.writeInt(this.posZ); + buf.writeShort(this.dim); + } } diff --git a/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java b/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java index 238e5bca9..168fbe902 100644 --- a/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java @@ -32,6 +32,16 @@ public class ReformingRecipes extends SerializableRecipe { new FluidStack(Fluids.AROMATICS, 10), new FluidStack(Fluids.HYDROGEN, 5) )); + recipes.put(Fluids.LIGHTOIL, new Triplet( + new FluidStack(Fluids.AROMATICS, 50), + new FluidStack(Fluids.REFORMGAS, 10), + new FluidStack(Fluids.HYDROGEN, 15) + )); + recipes.put(Fluids.LIGHTOIL_CRACK, new Triplet( + new FluidStack(Fluids.AROMATICS, 50), + new FluidStack(Fluids.REFORMGAS, 5), + new FluidStack(Fluids.HYDROGEN, 20) + )); recipes.put(Fluids.PETROLEUM, new Triplet( new FluidStack(Fluids.UNSATURATEDS, 85), new FluidStack(Fluids.REFORMGAS, 10), diff --git a/src/main/java/com/hbm/packet/BufPacket.java b/src/main/java/com/hbm/packet/BufPacket.java new file mode 100644 index 000000000..b2a158ef8 --- /dev/null +++ b/src/main/java/com/hbm/packet/BufPacket.java @@ -0,0 +1,56 @@ +package com.hbm.packet; + +import com.hbm.tileentity.IBufPacketReceiver; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.tileentity.TileEntity; + +public class BufPacket implements IMessage { + + int x; + int y; + int z; + IBufPacketReceiver rec; + ByteBuf buf; + + public BufPacket() { } + + public BufPacket(int x, int y, int z, IBufPacketReceiver rec) { + this.x = x; + this.y = y; + this.z = z; + this.rec = rec; + } + + @Override + public void fromBytes(ByteBuf buf) { + this.buf = buf; + } + + @Override + public void toBytes(ByteBuf buf) { + this.rec.serialize(buf); + } + + public static class Handler implements IMessageHandler { + + @Override + public IMessage onMessage(BufPacket m, MessageContext ctx) { + + if(Minecraft.getMinecraft().theWorld == null) + return null; + + TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); + + if(te instanceof IBufPacketReceiver) { + ((IBufPacketReceiver) te).deserialize(m.buf); + } + + return null; + } + } +} diff --git a/src/main/java/com/hbm/packet/NBTPacket.java b/src/main/java/com/hbm/packet/NBTPacket.java index 80645347d..3bd5afbcb 100644 --- a/src/main/java/com/hbm/packet/NBTPacket.java +++ b/src/main/java/com/hbm/packet/NBTPacket.java @@ -14,6 +14,8 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.PacketBuffer; import net.minecraft.tileentity.TileEntity; + +@Deprecated // rest in peace sweet little prince public class NBTPacket implements IMessage { PacketBuffer buffer; diff --git a/src/main/java/com/hbm/packet/PacketDispatcher.java b/src/main/java/com/hbm/packet/PacketDispatcher.java index 3d94f2d10..d56e9407a 100644 --- a/src/main/java/com/hbm/packet/PacketDispatcher.java +++ b/src/main/java/com/hbm/packet/PacketDispatcher.java @@ -21,8 +21,6 @@ public class PacketDispatcher { wrapper.registerMessage(TEDrillPacket.Handler.class, TEDrillPacket.class, i++, Side.CLIENT); //Mining drill torque for sounds wrapper.registerMessage(TEDrillSoundPacket.Handler.class, TEDrillSoundPacket.class, i++, Side.CLIENT); - //Assembler cog rotation for rendering - wrapper.registerMessage(TEAssemblerPacket.Handler.class, TEAssemblerPacket.class, i++, Side.CLIENT); //Missile type for rendering wrapper.registerMessage(TEMissilePacket.Handler.class, TEMissilePacket.class, i++, Side.CLIENT); //Fluid packet for GUI @@ -33,16 +31,12 @@ public class PacketDispatcher { wrapper.registerMessage(ItemFolderPacket.Handler.class, ItemFolderPacket.class, i++, Side.SERVER); //Electricity gauge for GUI rendering wrapper.registerMessage(AuxElectricityPacket.Handler.class, AuxElectricityPacket.class, i++, Side.CLIENT); - //Universal package for machine gauges and states - wrapper.registerMessage(AuxGaugePacket.Handler.class, AuxGaugePacket.class, i++, Side.CLIENT); //Siren packet for looped sounds wrapper.registerMessage(TESirenPacket.Handler.class, TESirenPacket.class, i++, Side.CLIENT); //Signals server to change ItemStacks wrapper.registerMessage(ItemDesignatorPacket.Handler.class, ItemDesignatorPacket.class, i++, Side.SERVER); //Siren packet for looped sounds wrapper.registerMessage(TERadarPacket.Handler.class, TERadarPacket.class, i++, Side.CLIENT); - //Siren packet for looped sounds - wrapper.registerMessage(TERadarDestructorPacket.Handler.class, TERadarDestructorPacket.class, i++, Side.CLIENT); //Signals server to perform orbital strike, among other things wrapper.registerMessage(SatLaserPacket.Handler.class, SatLaserPacket.class, i++, Side.SERVER); //Universal package for sending small info packs back to server @@ -57,7 +51,7 @@ public class PacketDispatcher { wrapper.registerMessage(ExtPropPacket.Handler.class, ExtPropPacket.class, i++, Side.CLIENT); //Entity sound packet that keeps client and server separated wrapper.registerMessage(LoopedEntitySoundPacket.Handler.class, LoopedEntitySoundPacket.class, i++, Side.CLIENT); - //Entity sound packet that keeps client and server separated + //Packet for force fields wrapper.registerMessage(TEFFPacket.Handler.class, TEFFPacket.class, i++, Side.CLIENT); //Sends button information for ItemGunBase wrapper.registerMessage(GunButtonPacket.Handler.class, GunButtonPacket.class, i++, Side.SERVER); @@ -67,8 +61,6 @@ public class PacketDispatcher { wrapper.registerMessage(ItemBobmazonPacket.Handler.class, ItemBobmazonPacket.class, i++, Side.SERVER); //Packet to send missile multipart information to TEs wrapper.registerMessage(TEMissileMultipartPacket.Handler.class, TEMissileMultipartPacket.class, i++, Side.CLIENT); - //Packet to send NBT data to tile entities - wrapper.registerMessage(NBTPacket.Handler.class, NBTPacket.class, i++, Side.CLIENT); //Aux Particle Packet, New Technology: like the APP but with NBT wrapper.registerMessage(AuxParticlePacketNT.Handler.class, AuxParticlePacketNT.class, i++, Side.CLIENT); //Signals server to do coord based satellite stuff @@ -97,6 +89,11 @@ public class PacketDispatcher { wrapper.registerMessage(PermaSyncPacket.Handler.class, PermaSyncPacket.class, i++, Side.CLIENT); //Syncs biome information for single positions or entire chunks wrapper.registerMessage(BiomeSyncPacket.Handler.class, BiomeSyncPacket.class, i++, Side.CLIENT); + + //Tile sync + wrapper.registerMessage(AuxGaugePacket.Handler.class, AuxGaugePacket.class, i++, Side.CLIENT); //The horrid one + wrapper.registerMessage(NBTPacket.Handler.class, NBTPacket.class, i++, Side.CLIENT); //The convenient but laggy one + wrapper.registerMessage(BufPacket.Handler.class, BufPacket.class, i++, Side.CLIENT); //The not-so-convenient but not laggy one } } diff --git a/src/main/java/com/hbm/packet/TEAssemblerPacket.java b/src/main/java/com/hbm/packet/TEAssemblerPacket.java deleted file mode 100644 index fddaeedcb..000000000 --- a/src/main/java/com/hbm/packet/TEAssemblerPacket.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.hbm.packet; - -import com.hbm.tileentity.machine.TileEntityMachineAssembler; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; - -public class TEAssemblerPacket implements IMessage { - - int x; - int y; - int z; - boolean progress; - - public TEAssemblerPacket() - { - - } - - public TEAssemblerPacket(int x, int y, int z, boolean bool) - { - this.x = x; - this.y = y; - this.z = z; - this.progress = bool; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - progress = buf.readBoolean(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeBoolean(progress); - } - - public static class Handler implements IMessageHandler { - - @Override - public IMessage onMessage(TEAssemblerPacket m, MessageContext ctx) { - TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - if (te != null && te instanceof TileEntityMachineAssembler) { - - TileEntityMachineAssembler gen = (TileEntityMachineAssembler) te; - gen.isProgressing = m.progress; - } - return null; - } - } -} diff --git a/src/main/java/com/hbm/packet/TERadarDestructorPacket.java b/src/main/java/com/hbm/packet/TERadarDestructorPacket.java deleted file mode 100644 index 4b5a14763..000000000 --- a/src/main/java/com/hbm/packet/TERadarDestructorPacket.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.hbm.packet; - -import com.hbm.tileentity.machine.TileEntityMachineRadar; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; - -public class TERadarDestructorPacket implements IMessage { - - int x; - int y; - int z; - - public TERadarDestructorPacket() { - - } - - public TERadarDestructorPacket(int x, int y, int z) { - this.x = x; - this.y = y; - this.z = z; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - } - - public static class Handler implements IMessageHandler { - - @Override - @SideOnly(Side.CLIENT) - public IMessage onMessage(TERadarDestructorPacket m, MessageContext ctx) { - TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - try { - if (te != null && te instanceof TileEntityMachineRadar) { - - TileEntityMachineRadar radar = (TileEntityMachineRadar) te; - radar.nearbyMissiles.clear(); - } - } catch (Exception x) { - } - return null; - } - } -} diff --git a/src/main/java/com/hbm/tileentity/IBufPacketReceiver.java b/src/main/java/com/hbm/tileentity/IBufPacketReceiver.java new file mode 100644 index 000000000..4250d6edd --- /dev/null +++ b/src/main/java/com/hbm/tileentity/IBufPacketReceiver.java @@ -0,0 +1,9 @@ +package com.hbm.tileentity; + +import io.netty.buffer.ByteBuf; + +public interface IBufPacketReceiver { + + public void serialize(ByteBuf buf); + public void deserialize(ByteBuf buf); +} diff --git a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java index 996a216b9..f90a124e2 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java @@ -2,10 +2,12 @@ package com.hbm.tileentity; import com.hbm.blocks.ModBlocks; import com.hbm.packet.AuxGaugePacket; +import com.hbm.packet.BufPacket; import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; @@ -14,7 +16,7 @@ import net.minecraft.nbt.NBTTagList; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.FluidTank; -public abstract class TileEntityMachineBase extends TileEntityLoadedBase implements ISidedInventory, INBTPacketReceiver { +public abstract class TileEntityMachineBase extends TileEntityLoadedBase implements ISidedInventory, INBTPacketReceiver, IBufPacketReceiver { public ItemStack slots[]; @@ -147,23 +149,23 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme @Override public abstract void updateEntity(); - @Deprecated - public void updateGauge(int val, int id, int range) { - - if(!worldObj.isRemote) - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, val, id), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); + @Deprecated public void updateGauge(int val, int id, int range) { + if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, val, id), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); + } + @Deprecated public void processGauge(int val, int id) { } + + @Deprecated public void networkPack(NBTTagCompound nbt, int range) { + if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); + } + @Deprecated public void networkUnpack(NBTTagCompound nbt) { } + + /** Sends a sync packet that uses ByteBuf for efficient information-cramming */ + public void networkPackNT(int range) { + if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); } - @Deprecated - public void processGauge(int val, int id) { } - - public void networkPack(NBTTagCompound nbt, int range) { - - if(!worldObj.isRemote) - PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); - } - - public void networkUnpack(NBTTagCompound nbt) { } + @Override public void serialize(ByteBuf buf) { } + @Override public void deserialize(ByteBuf buf) { } @Deprecated public void handleButtonPacket(int value, int meta) { } diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 4e0500c15..2cf953045 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -231,6 +231,9 @@ public class TileMappings { putMachines(); putPile(); putRBMK(); + + TileEntityMachineRadarNT.registerEntityClasses(); + TileEntityMachineRadarNT.registerConverters(); } private static void putBombs() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index db8f40435..e9d80203b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -1,25 +1,33 @@ package com.hbm.tileentity.machine; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.function.Function; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.extprop.HbmLivingProps; +import com.hbm.lib.Library; +import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.Tuple.Pair; import api.hbm.entity.IRadarDetectable; import api.hbm.entity.IRadarDetectableNT; import api.hbm.entity.RadarEntry; +import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.WorldServer; /** - * Now with SmЯt™ lag-free entity detection! + * Now with SmЯt™ lag-free entity detection! (patent pending) * @author hbm */ -public class TileEntityMachineRadarNT extends TileEntityMachineBase { +public class TileEntityMachineRadarNT extends TileEntityMachineBase implements IConfigurableMachine { public boolean scanMissiles = true; public boolean scanPlayers = true; @@ -28,6 +36,42 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase { public boolean jammed = false; + public float prevRotation; + public float rotation; + + public long power = 0; + + public static int maxPower = 100_000; + public static int consumption = 500; + public static int radarRange = 1_000; + public static int radarBuffer = 30; + public static int radarAltitude = 55; + + public List entries = new ArrayList(); + + @Override + public String getConfigName() { + return "radar"; + } + + @Override + public void readIfPresent(JsonObject obj) { + maxPower = IConfigurableMachine.grab(obj, "L:powerCap", maxPower); + consumption = IConfigurableMachine.grab(obj, "L:consumption", consumption); + radarRange = IConfigurableMachine.grab(obj, "I:radarRange", radarRange); + radarBuffer = IConfigurableMachine.grab(obj, "I:radarBuffer", radarBuffer); + radarAltitude = IConfigurableMachine.grab(obj, "I:radarAltitude", radarAltitude); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("L:powerCap").value(maxPower); + writer.name("L:consumption").value(consumption); + writer.name("I:radarRange").value(radarRange); + writer.name("I:radarBuffer").value(radarBuffer); + writer.name("I:radarAltitude").value(radarAltitude); + } + public TileEntityMachineRadarNT() { super(1); } @@ -40,10 +84,81 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase { @Override public void updateEntity() { + if(!worldObj.isRemote) { + + this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); + this.jammed = false; + allocateTargets(); + + this.networkPackNT(25); + } } - //List of lambdas that are supplied a Pair with the entity and radar in question to generate a RadarEntry - //The converters coming first have the highest priority + protected void allocateTargets() { + this.entries.clear(); + + if(this.yCoord < radarAltitude) return; + if(this.power <= consumption) return; + this.power -= consumption; + + int scan = this.scanRange(); + + for(Entity e : matchingEntities) { + + if(e.dimension == worldObj.provider.dimensionId && Math.abs(e.posX - (xCoord + 0.5)) <= scan && Math.abs(e.posZ - (zCoord + 0.5)) <= scan && e.posY - yCoord < radarBuffer) { + + if(e instanceof EntityLivingBase && HbmLivingProps.getDigamma((EntityLivingBase) e) > 0.001) { + this.jammed = true; + entries.clear(); + return; + } + + for(Function, RadarEntry> converter : converters) { + + RadarEntry entry = converter.apply(new Pair(e, this)); + if(entry != null) { + this.entries.add(entry); + break; + } + } + } + } + } + + protected int scanRange() { + return radarRange; + } + + @Override + public void serialize(ByteBuf buf) { + buf.writeLong(this.power); + buf.writeBoolean(this.scanMissiles); + buf.writeBoolean(this.scanPlayers); + buf.writeBoolean(this.smartMode); + buf.writeBoolean(this.redMode); + buf.writeBoolean(this.jammed); + buf.writeInt(entries.size()); + for(RadarEntry entry : entries) entry.toBytes(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + this.power = buf.readLong(); + this.scanMissiles = buf.readBoolean(); + this.scanPlayers = buf.readBoolean(); + this.smartMode = buf.readBoolean(); + this.redMode = buf.readBoolean(); + this.jammed = buf.readBoolean(); + int count = buf.readInt(); + for(int i = 0; i < count; i++) { + RadarEntry entry = new RadarEntry(); + entry.fromBytes(buf); + this.entries.add(entry); + } + } + + /** List of lambdas that are supplied a Pair with the entity and radar in question to generate a RadarEntry + The converters coming first have the highest priority */ public static List, RadarEntry>> converters = new ArrayList(); public static List classes = new ArrayList(); public static List matchingEntities = new ArrayList(); @@ -87,18 +202,12 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase { }); //IRadarDetectable, Legacy converters.add(x -> { - Entity e = x.getKey(); - if(e instanceof IRadarDetectable) { - return new RadarEntry((IRadarDetectable) e, e); - } + if(x.getKey() instanceof IRadarDetectable) return new RadarEntry((IRadarDetectable) x.getKey(), x.getKey()); return null; }); //Players converters.add(x -> { - Entity e = x.getKey(); - if(e instanceof EntityPlayer) { - return new RadarEntry((EntityPlayer) e); - } + if(x.getKey() instanceof EntityPlayer) return new RadarEntry((EntityPlayer) x.getKey()); return null; }); }