fix: fix more stuff

This commit is contained in:
LordMZTE 2022-11-11 23:10:52 +01:00
parent 57853b60c1
commit dece854363
Signed by: LordMZTE
GPG Key ID: B64802DC33A64FF6
18 changed files with 242 additions and 178 deletions

View File

@ -1,15 +1,12 @@
- glass button doesn't render in inventory
- tons of missing packets (mostly gui stuff)
- unable to mount turret after dismounting
- turret gui kekt
- no electricity in guis
- missing packets (mostly gui stuff)
- EMP tower drops nonsense
- no proper update on multiblock destroy
- condensed explosives doesn't break blocks and explodes instantly
- can push explosive entities
- flying blocks dont properly render
- black hole doesn't suck in blocks
- no missiles??
- remote detonator doesnt work
- radar is completely borked
- emp tower only deletes missiles on client
- see `// TODO: WTF`

View File

@ -1,6 +1,5 @@
package icbm.api;
import icbm.api.ILauncherContainer;
import icbm.api.explosion.IExplosiveContainer;
import universalelectricity.core.vector.Vector3;

View File

@ -23,6 +23,10 @@ import icbm.gangshao.damage.EntityTileDamagable;
import icbm.gangshao.packet.PacketHandlerTurret;
import icbm.gangshao.packet.PacketTurret;
import icbm.gangshao.platform.BlockTurretPlatform;
import icbm.gangshao.terminal.TerminalCommandPacket;
import icbm.gangshao.terminal.TerminalCommandPacketHandler;
import icbm.gangshao.terminal.TerminalOutputPacket;
import icbm.gangshao.terminal.TerminalOutputPacketHandler;
import icbm.gangshao.terminal.command.CommandAccess;
import icbm.gangshao.terminal.command.CommandDestroy;
import icbm.gangshao.terminal.command.CommandGet;
@ -130,6 +134,18 @@ public class ICBMSentry extends MainBase {
channel.registerMessage(
PacketHandlerTurret.class, PacketTurret.class, pktId++, Side.CLIENT
);
channel.registerMessage(
TerminalOutputPacketHandler.class,
TerminalOutputPacket.class,
pktId++,
Side.CLIENT
);
channel.registerMessage(
TerminalCommandPacketHandler.class,
TerminalCommandPacket.class,
pktId++,
Side.SERVER
);
}
@Mod.EventHandler

View File

@ -62,6 +62,7 @@ public class ContainerTurretPlatform extends ContainerTerminal {
}
}
@Override
public ItemStack
transferStackInSlot(final EntityPlayer entityPlayer, final int slotID) {
ItemStack var2 = null;

View File

@ -373,8 +373,6 @@ public class TTurretPlatform extends TileEntityTerminal implements IInventory {
return "ICBM";
}
//TODO: WTF
//@Override
public boolean addStackToInventory(final ItemStack itemStack) {
for (int i = 0; i < 12; ++i) {
final ItemStack checkStack = this.getStackInSlot(i);
@ -409,6 +407,7 @@ public class TTurretPlatform extends TileEntityTerminal implements IInventory {
NBTTagCompound nbt = new NBTTagCompound();
nbt.setDouble("wattsReceived", super.wattsReceived);
super.writeToNBT(nbt);
return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord,
this.getBlockMetadata(), nbt);
@ -419,5 +418,6 @@ public class TTurretPlatform extends TileEntityTerminal implements IInventory {
NBTTagCompound nbt = pkt.func_148857_g();
super.wattsReceived = nbt.getDouble("wattsReceived");
super.readFromNBT(nbt);
}
}

View File

@ -105,9 +105,9 @@ public class GuiPlatformAccess extends GuiPlatformBase implements IScroll {
}
}
// TODO: WTF
// super.tileEntity.sendCommandToServer(super.entityPlayer,
// command + " " + username);
super.tileEntity.sendCommandToServer(
super.entityPlayer, command + " " + username
);
this.commandLine.setText("");
} else {
this.commandLine.textboxKeyTyped(character, keycode);
@ -144,10 +144,10 @@ public class GuiPlatformAccess extends GuiPlatformBase implements IScroll {
}
final AccessLevel newLevel = AccessLevel.get(newLevelOrdinal);
// TODO: WTF
// super.tileEntity.sendCommandToServer(super.entityPlayer,
// "access set " + access.username +
// " " + newLevel.displayName);
super.tileEntity.sendCommandToServer(
super.entityPlayer,
"access set " + access.username + " " + newLevel.displayName
);
break;
}
}
@ -178,7 +178,7 @@ public class GuiPlatformAccess extends GuiPlatformBase implements IScroll {
final String line
= accesInfo.username + " (" + accesInfo.level.displayName + ")";
if (line != null && line != "") {
if (line != null && !line.isEmpty()) {
final Vector2 drawPosition = new Vector2(x, 10 * i + y);
this.outputMap.put(accesInfo, drawPosition);
this.fontRendererObj.drawString(

View File

@ -42,11 +42,6 @@ public abstract class GuiPlatformBase extends GuiBase {
(this.height - super.ySize) / 2 + 44,
2
));
// TODO: WTF
// PacketDispatcher.sendPacketToServer(PacketManager.getPacket(
// "ICBM", this.tileEntity,
// TileEntityTerminal.TerminalPacketType.GUI_EVENT.ordinal(),
// true));
}
@Override
@ -101,16 +96,6 @@ public abstract class GuiPlatformBase extends GuiBase {
}
}
@Override
public void onGuiClosed() {
super.onGuiClosed();
// TODO: WTF
// PacketDispatcher.sendPacketToServer(PacketManager.getPacket(
// "ICBM", this.tileEntity,
// TileEntityTerminal.TerminalPacketType.GUI_EVENT.ordinal(),
// false));
}
@Override
protected void drawForegroundLayer(final int x, final int y, final float var1) {
if (((GuiButtonImage) this.buttonList.get(0)).isIntersect(x, y)) {

View File

@ -86,9 +86,8 @@ public class GuiPlatformTerminal extends GuiPlatformBase {
} else if (keycode == 208) {
this.tileEntity.scroll(1);
} else if (keycode == 28) {
//TODO: WTF
//this.tileEntity.sendCommandToServer(super.entityPlayer,
// this.commandLine.getText());
this.tileEntity.sendCommandToServer(super.entityPlayer,
this.commandLine.getText());
this.commandLine.setText("");
} else {
this.commandLine.textboxKeyTyped(character, keycode);

View File

@ -0,0 +1,36 @@
package icbm.gangshao.terminal;
import cpw.mods.fml.common.network.simpleimpl.IMessage;
import io.netty.buffer.ByteBuf;
import universalelectricity.core.vector.Vector3;
public class TerminalCommandPacket implements IMessage {
Vector3 pos;
String cmd;
public TerminalCommandPacket() {}
public TerminalCommandPacket(Vector3 pos, String cmd) {
this.pos = pos;
this.cmd = cmd;
}
@Override
public void fromBytes(ByteBuf buf) {
this.pos = new Vector3(buf.readInt(), buf.readInt(), buf.readInt());
int len = buf.readInt();
byte[] data = new byte[len];
buf.readBytes(data);
this.cmd = new String(data);
}
@Override
public void toBytes(ByteBuf buf) {
buf.writeInt(this.pos.intX());
buf.writeInt(this.pos.intY());
buf.writeInt(this.pos.intZ());
buf.writeInt(this.cmd.getBytes().length);
buf.writeBytes(this.cmd.getBytes());
}
}

View File

@ -0,0 +1,26 @@
package icbm.gangshao.terminal;
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 icbm.gangshao.terminal.command.CommandRegistry;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
public class TerminalCommandPacketHandler
implements IMessageHandler<TerminalCommandPacket, IMessage> {
@Override
public IMessage onMessage(TerminalCommandPacket message, MessageContext ctx) {
EntityPlayer pl = ctx.getServerHandler().playerEntity;
TileEntity te = message.pos.getTileEntity(pl.worldObj);
if (te instanceof TileEntityTerminal) {
TileEntityTerminal t = (TileEntityTerminal) te;
CommandRegistry.onCommand(pl, t, message.cmd);
t.sendTerminalOutputToClients();
}
return null;
}
}

View File

@ -0,0 +1,47 @@
package icbm.gangshao.terminal;
import java.util.ArrayList;
import java.util.List;
import cpw.mods.fml.common.network.simpleimpl.IMessage;
import io.netty.buffer.ByteBuf;
import universalelectricity.core.vector.Vector3;
public class TerminalOutputPacket implements IMessage {
Vector3 pos;
List<String> output;
public TerminalOutputPacket(Vector3 pos, List<String> output) {
this.pos = pos;
this.output = output;
}
public TerminalOutputPacket() {
this.output = new ArrayList<>();
}
@Override
public void fromBytes(ByteBuf buf) {
this.pos = new Vector3(buf.readInt(), buf.readInt(), buf.readInt());
int c = buf.readInt();
for (int i = 0; i < c; i++) {
int slen = buf.readInt();
byte[] out = new byte[slen];
buf.readBytes(out);
output.add(new String(out));
}
}
@Override
public void toBytes(ByteBuf buf) {
buf.writeInt(this.pos.intX());
buf.writeInt(this.pos.intY());
buf.writeInt(this.pos.intZ());
buf.writeInt(this.output.size());
for (String s : this.output) {
buf.writeInt(s.getBytes().length);
buf.writeBytes(s.getBytes());
}
}
}

View File

@ -0,0 +1,29 @@
package icbm.gangshao.terminal;
import cpw.mods.fml.client.FMLClientHandler;
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 net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public class TerminalOutputPacketHandler
implements IMessageHandler<TerminalOutputPacket, IMessage> {
@Override
public IMessage onMessage(TerminalOutputPacket message, MessageContext ctx) {
World world = FMLClientHandler.instance().getWorldClient();
TileEntity te = message.pos.getTileEntity(world);
if (te instanceof TileEntityTerminal) {
TileEntityTerminal t = (TileEntityTerminal) te;
boolean shouldSetScroll = !t.terminalOutput.equals(message.output);
t.terminalOutput = message.output;
if (shouldSetScroll) {
t.setScroll(t.terminalOutput.size() - 15);
}
}
return null;
}
}

View File

@ -6,18 +6,22 @@ import java.util.List;
import java.util.Set;
import calclavia.lib.TileEntityUniversalRunnable;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import icbm.gangshao.ICBMSentry;
import icbm.gangshao.access.AccessLevel;
import icbm.gangshao.access.UserAccess;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.Packet;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import universalelectricity.core.vector.Vector3;
public abstract class TileEntityTerminal
extends TileEntityUniversalRunnable implements ITerminal {
private final List<String> terminalOutput;
protected List<String> terminalOutput;
private final List<UserAccess> users;
public static final int SCROLL_SIZE = 15;
private int scroll;
@ -51,100 +55,32 @@ public abstract class TileEntityTerminal
);
}
public void sendTerminalOutputToClients() {
// TODO: WTF
// final List data = new ArrayList();
// data.add(TerminalPacketType.TERMINAL_OUTPUT.ordinal());
// data.add(this.getTerminalOuput().size());
// data.addAll(this.getTerminalOuput());
// final Packet packet = PacketManager.getPacket(this.getChannel(), this,
// data.toArray()); for (final EntityPlayer player : this.playersUsing) {
// PacketDispatcher.sendPacketToPlayer(packet, (Player) player);
// }
@Override
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) {
NBTTagCompound nbt = pkt.func_148857_g();
this.readFromNBT(nbt);
}
// TODO: WTF
// public void sendCommandToServer(final EntityPlayer entityPlayer,
// final String cmdInput) {
// if (this.worldObj.isRemote) {
// final Packet packet = PacketManager.getPacket(
// this.getChannel(), this,
// TerminalPacketType.GUI_COMMAND.ordinal(),
// entityPlayer.getDisplayName(), cmdInput);
// PacketDispatcher.sendPacketToServer(packet);
// }
// }
public void sendTerminalOutputToClients() {
ICBMSentry.channel.sendToAllAround(
new TerminalOutputPacket(new Vector3(this), this.terminalOutput),
new TargetPoint(
this.worldObj.provider.dimensionId,
this.xCoord,
this.yCoord,
this.zCoord,
16
)
);
}
// TODO: WHAT THE ACTUAL FUCK!
// @Override
// public void handlePacketData(final INetworkManager network,
// final int packetID,
// final Packet250CustomPayload packet,
// final EntityPlayer player,
// final ByteArrayDataInput dataStream) {
// try {
// final TerminalPacketType packetType =
// TerminalPacketType.values()[dataStream.readInt()]; switch
// (packetType) {
// case DESCRIPTION_DATA: {
// if (this.worldObj.isRemote) {
// final short size = dataStream.readShort();
// if (size > 0) {
// final byte[] byteCode = new byte[size];
// dataStream.readFully(byteCode);
// this.func_70307_a(CompressedStreamTools.func_74792_a(byteCode));
// }
// break;
// }
// break;
// }
// case GUI_COMMAND: {
// if (!this.field_70331_k.isRemote) {
// CommandRegistry.onCommand(
// this.field_70331_k.getPlayerEntityByName(dataStream.readUTF()),
// this, dataStream.readUTF());
// this.sendTerminalOutputToClients();
// break;
// }
// break;
// }
// case GUI_EVENT: {
// if (this.field_70331_k.isRemote) {
// break;
// }
// if (dataStream.readBoolean()) {
// this.playersUsing.add(player);
// this.sendTerminalOutputToClients();
// break;
// }
// this.playersUsing.remove(player);
// break;
// }
// case TERMINAL_OUTPUT: {
// if (this.field_70331_k.isRemote) {
// final int size2 = dataStream.readInt();
// final List oldTerminalOutput = new
// ArrayList(this.terminalOutput);
// this.terminalOutput.clear();
// for (int i = 0; i < size2; ++i) {
// this.terminalOutput.add(dataStream.readUTF());
// }
// if (!this.terminalOutput.equals(oldTerminalOutput) &&
// this.terminalOutput.size() !=
// oldTerminalOutput.size()) {
// this.setScroll(this.getTerminalOuput().size() -
// 15);
// }
// break;
// }
// break;
// }
// }
// } catch (final Exception e) {
// ZhuYaoBase.LOGGER.severe("Terminal error: " + this.toString());
// e.printStackTrace();
// }
// }
public void
sendCommandToServer(final EntityPlayer entityPlayer, final String cmdInput) {
if (this.worldObj.isRemote) {
ICBMSentry.channel.sendToServer(new TerminalCommandPacket(new Vector3(this), cmdInput));
}
}
@Override
public AccessLevel getUserAccess(final String username) {
@ -275,13 +211,4 @@ public abstract class TileEntityTerminal
nbt.setTag("Users", (NBTBase) usersTag);
}
public enum TerminalPacketType {
GUI_EVENT("GUI_EVENT", 0),
GUI_COMMAND("GUI_COMMAND", 1),
TERMINAL_OUTPUT("TERMINAL_OUTPUT", 2),
DESCRIPTION_DATA("DESCRIPTION_DATA", 3);
private TerminalPacketType(final String name, final int ordinal) {}
}
}

View File

@ -65,19 +65,12 @@ public abstract class TTurretSeat extends TTurretBase implements IMultiBlock {
if (entityPlayer == mountedPlayer) {
if (!this.worldObj.isRemote) {
// TODO: WTF
// PacketManager.sendPacketToClients(this.getRotationPacket());
this.tryActivateWeapon();
}
// TODO: WTF
// entityPlayer.unmountEntity((Entity) this.entityFake);
this.entityFake.setDead();
this.entityFake = null;
return true;
}
}
return false;
}
this.mount(entityPlayer);

View File

@ -141,7 +141,7 @@ public class GRadarTower extends GuiBase {
if (this.tileEntity.isDisabled()) {
status = "Disabled!";
} else if (this.tileEntity.prevWatts >= this.tileEntity.getRequest().getWatts()) {
} else if (this.tileEntity.canRun()) {
color = "§2";
status = "Radar On!";
} else {
@ -170,10 +170,11 @@ public class GRadarTower extends GuiBase {
this.info = "";
this.info2 = "";
if (this.tileEntity.prevWatts >= this.tileEntity.getRequest().getWatts()) {
if (this.tileEntity.canRun()) {
int range = 4;
for (final Entity entity : this.tileEntity.xunZhaoEntity) {
for (final Entity entity : this.tileEntity.entitiesInRange) {
System.out.println("AAAAAAAAAALEC: " + entity.getCommandSenderName());
final Vector2 position = new Vector2(
this.radarCenter.x
+ (entity.posX - this.tileEntity.xCoord) / this.radarMapRadius,
@ -222,7 +223,7 @@ public class GRadarTower extends GuiBase {
range = 2;
for (final TileEntity jiQi : this.tileEntity.xunZhaoJiQi) {
for (final TileEntity jiQi : this.tileEntity.tileEntitiesInRange) {
final Vector2 position = new Vector2(
this.radarCenter.x
+ (jiQi.xCoord - this.tileEntity.xCoord) / this.radarMapRadius,

View File

@ -38,22 +38,23 @@ import universalelectricity.prefab.multiblock.IMultiBlock;
public class TRadarTower extends TileEntityUniversalRunnable
implements IRedstoneProvider, IMultiBlock, IPeripheral {
public static final int MAX_BIAN_JING = 500;
public float xuanZhuan;
public float rotation;
public int alarmRadius;
public int safetyRadius;
private List<EMissile> missilesInRange;
public List<Entity> xunZhaoEntity;
public List<TileEntity> xunZhaoJiQi;
public List<Entity> entitiesInRange;
public List<TileEntity> tileEntitiesInRange;
public boolean emitAll;
private ForgeChunkManager.Ticket ticket;
public double wattsForDisplay;
public TRadarTower() {
this.xuanZhuan = 0.0f;
this.rotation = 0.0f;
this.alarmRadius = 100;
this.safetyRadius = 50;
this.missilesInRange = new ArrayList<>();
this.xunZhaoEntity = new ArrayList<>();
this.xunZhaoJiQi = new ArrayList<>();
this.entitiesInRange = new ArrayList<>();
this.tileEntitiesInRange = new ArrayList<>();
this.emitAll = true;
RadarRegistry.register(this);
}
@ -92,6 +93,7 @@ public class TRadarTower extends TileEntityUniversalRunnable
try {
if (!this.worldObj.isRemote) {
this.wattsForDisplay = super.wattsReceived;
if (super.ticks % 40L == 0L) {
this.worldObj.markBlockForUpdate(
this.xCoord, this.yCoord, this.zCoord
@ -100,11 +102,11 @@ public class TRadarTower extends TileEntityUniversalRunnable
}
if (!this.isDisabled()) {
if (super.wattsReceived >= this.getRequest().getWatts()) {
this.xuanZhuan += 0.05f;
if (this.canRun()) {
this.rotation += 0.05f;
if (this.xuanZhuan > 360.0f) {
this.xuanZhuan = 0.0f;
if (this.rotation > 360.0f) {
this.rotation = 0.0f;
}
if (!this.worldObj.isRemote) {
@ -113,23 +115,23 @@ public class TRadarTower extends TileEntityUniversalRunnable
);
}
final int prevShuMu = this.xunZhaoEntity.size();
final int prevShuMu = this.entitiesInRange.size();
this.doScan();
if (prevShuMu != this.xunZhaoEntity.size()) {
if (prevShuMu != this.entitiesInRange.size()) {
this.worldObj.notifyBlocksOfNeighborChange(
this.xCoord, this.yCoord, this.zCoord, this.getBlockType()
);
}
} else {
if (this.xunZhaoEntity.size() > 0) {
if (this.entitiesInRange.size() > 0) {
this.worldObj.notifyBlocksOfNeighborChange(
this.xCoord, this.yCoord, this.zCoord, this.getBlockType()
);
}
this.xunZhaoEntity.clear();
this.xunZhaoJiQi.clear();
this.entitiesInRange.clear();
this.tileEntitiesInRange.clear();
}
}
@ -145,8 +147,8 @@ public class TRadarTower extends TileEntityUniversalRunnable
private void doScan() {
this.missilesInRange.clear();
this.xunZhaoEntity.clear();
this.xunZhaoJiQi.clear();
this.entitiesInRange.clear();
this.tileEntitiesInRange.clear();
final List<Entity> entities
= RadarRegistry.getEntitiesWithinRadius(new Vector3(this).toVector2(), 500);
@ -156,8 +158,8 @@ public class TRadarTower extends TileEntityUniversalRunnable
continue;
}
if (!this.xunZhaoEntity.contains(entity)) {
this.xunZhaoEntity.add(entity);
if (!this.entitiesInRange.contains(entity)) {
this.entitiesInRange.add(entity);
}
if (!this.isWeiXianDaoDan((EMissile) entity)) {
@ -166,7 +168,7 @@ public class TRadarTower extends TileEntityUniversalRunnable
this.missilesInRange.add((EMissile) entity);
} else {
this.xunZhaoEntity.add(entity);
this.entitiesInRange.add(entity);
}
}
@ -200,7 +202,7 @@ public class TRadarTower extends TileEntityUniversalRunnable
continue;
}
this.xunZhaoEntity.add(player);
this.entitiesInRange.add(player);
}
}
@ -214,9 +216,9 @@ public class TRadarTower extends TileEntityUniversalRunnable
continue;
}
this.xunZhaoJiQi.add(jiQi);
this.tileEntitiesInRange.add(jiQi);
} else {
this.xunZhaoJiQi.add(jiQi);
this.tileEntitiesInRange.add(jiQi);
}
}
}
@ -233,17 +235,12 @@ public class TRadarTower extends TileEntityUniversalRunnable
< this.safetyRadius;
}
// TODO: WTF
// private Packet getDescriptionPacket2() {
// return PacketManager.getPacket("ICBM|E", this, 1, this.alarmRadius,
// this.safetyBanJing);
// }
@Override
public Packet getDescriptionPacket() {
NBTTagCompound nbt = new NBTTagCompound();
nbt.setDouble("wattsReceived", super.wattsReceived);
nbt.setDouble("wattsForDisplay", this.wattsForDisplay);
nbt.setInteger("disabledTicks", this.disabledTicks);
nbt.setInteger("safetyRadius", this.safetyRadius);
nbt.setInteger("alarmRadius", this.alarmRadius);
@ -258,6 +255,7 @@ public class TRadarTower extends TileEntityUniversalRunnable
NBTTagCompound nbt = pkt.func_148857_g();
super.wattsReceived = nbt.getDouble("wattsReceived");
this.wattsForDisplay = nbt.getDouble("wattsForDisplay");
this.disabledTicks = nbt.getInteger("disabledTicks");
this.safetyRadius = nbt.getInteger("safetyRadius");
this.alarmRadius = nbt.getInteger("alarmRadius");
@ -436,6 +434,14 @@ public class TRadarTower extends TileEntityUniversalRunnable
);
}
public boolean canRun() {
if (this.worldObj.isRemote) {
return this.wattsForDisplay >= this.getRequest().getWatts();
} else {
return super.wattsReceived >= this.getRequest().getWatts();
}
}
@Override
public String getType() {
return "ICBMRadar";

View File

@ -24,7 +24,7 @@ public class RRadarTower extends TileEntitySpecialRenderer {
GL11.glTranslatef((float) x + 0.5f, (float) y + 1.5f, (float) z + 0.5f);
this.bindTexture(new ResourceLocation("icbm", "textures/models/radar.png"));
GL11.glRotatef(180.0f, 0.0f, 0.0f, 1.0f);
RRadarTower.MODEL.render(tileEntity.xuanZhuan, 0.0625f);
RRadarTower.MODEL.render(tileEntity.rotation, 0.0625f);
GL11.glPopMatrix();
}

View File

@ -32,9 +32,11 @@ public class ExEmpSignal extends ZhaPin {
final List<Entity> entitiesNearby
= RadarRegistry.getEntitiesWithinRadius(position.toVector2(), radius);
System.out.println("AAAAAAALEC: " + entitiesNearby.size());
for (final Entity entity : entitiesNearby) {
if (entity instanceof IMissile && !entity.isEntityEqual(explosionSource)
&& ((IMissile) entity).getTicksInAir() > -1) {
System.out.println("AAAAAAALEC: dropMissileAsItem");
((IMissile) entity).dropMissileAsItem();
}
}