use of icbm.classic.prefab.FakeRadioSender in project ICBM-Classic by BuiltBrokenModding.
the class TileCruiseLauncher method receiveRadioWave.
@Override
public // TODO pack as message object
void receiveRadioWave(// TODO pack as message object
float hz, // TODO pack as message object
IRadioWaveSender sender, // TODO pack as message object
String messageHeader, // TODO pack as message object
Object[] data) {
// Floor frequency as we do not care about sub ranges
final int frequency = (int) Math.floor(hz);
if (isServer() && frequency == this.getFrequency()) {
// Laser detonator signal
if (// TODO cache headers somewhere like API references
messageHeader.equals("activateLauncherWithTarget")) {
final Pos pos = (Pos) data[0];
if (!isTooClose(pos)) {
setTarget(pos);
((FakeRadioSender) sender).player.sendMessage(new TextComponentString("Aiming missile at " + pos));
}
} else // Remote detonator signal
if (messageHeader.equals("activateLauncher")) {
((FakeRadioSender) sender).player.sendMessage(new TextComponentString("Firing missile at " + getTarget()));
launch();
}
}
}
use of icbm.classic.prefab.FakeRadioSender in project ICBM-Classic by BuiltBrokenModding.
the class TileLauncherScreen method receiveRadioWave.
@Override
public // TODO pack as message object
void receiveRadioWave(// TODO pack as message object
float hz, // TODO pack as message object
IRadioWaveSender sender, // TODO pack as message object
String messageHeader, // TODO pack as message object
Object[] data) {
// TODO make sure other launchers don't trigger when a laser designator is used
if (isServer()) {
// Floor frequency as we do not care about sub ranges
int frequency = (int) Math.floor(hz);
// Only tier 3 (2 for tier value) can be remotely fired
if (getTier() == EnumTier.THREE && frequency == getFrequency() && launcherBase != null) {
// Laser detonator signal
if (// TODO cache headers somewhere like API references
messageHeader.equals("activateLauncherWithTarget")) {
Pos pos = (Pos) data[0];
if (new Pos((IPos3D) this).distance(pos) < this.launcherBase.getRange()) {
setTarget(pos);
launch();
((FakeRadioSender) sender).player.sendMessage(new TextComponentString("Firing missile at " + pos));
}
} else // Remote detonator signal
if (messageHeader.equals("activateLauncher")) {
((FakeRadioSender) sender).player.sendMessage(new TextComponentString("Firing missile at " + getTarget()));
launch();
}
}
}
}
use of icbm.classic.prefab.FakeRadioSender in project ICBM-Classic by BuiltBrokenModding.
the class ItemLaserDetonator method read.
@Override
public boolean read(ByteBuf buf, int id, EntityPlayer player, IPacket packet) {
ItemStack stack = player.inventory.getCurrentItem();
if (stack != null && stack.getItem() == this) {
if (!player.world.isRemote) {
int x = buf.readInt();
int y = buf.readInt();
int z = buf.readInt();
LaserRemoteTriggerEvent event = new LaserRemoteTriggerEvent(player.world, new BlockPos(x, y, z), player);
if (// event was canceled
MinecraftForge.EVENT_BUS.post(event))
return false;
if (// someone set the pos in the event to null, use original data
event.pos == null)
RadioRegistry.popMessage(player.world, new FakeRadioSender(player, stack, 2000), getBroadCastHz(stack), "activateLauncherWithTarget", new Pos(x, y, z));
else
RadioRegistry.popMessage(player.world, new FakeRadioSender(player, stack, 2000), getBroadCastHz(stack), "activateLauncherWithTarget", new Pos(event.pos.getX(), event.pos.getY(), event.pos.getZ()));
} else {
player.sendMessage(new TextComponentString("Not encoded with launch data! Right click on launcher screen to encode."));
}
}
return true;
}
Aggregations