Search in sources :

Example 1 with FakeRadioSender

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();
        }
    }
}
Also used : Pos(icbm.classic.lib.transform.vector.Pos) BlockPos(net.minecraft.util.math.BlockPos) FakeRadioSender(icbm.classic.prefab.FakeRadioSender) TextComponentString(net.minecraft.util.text.TextComponentString)

Example 2 with FakeRadioSender

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();
            }
        }
    }
}
Also used : Pos(icbm.classic.lib.transform.vector.Pos) FakeRadioSender(icbm.classic.prefab.FakeRadioSender) TextComponentString(net.minecraft.util.text.TextComponentString)

Example 3 with FakeRadioSender

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;
}
Also used : LaserRemoteTriggerEvent(icbm.classic.api.events.LaserRemoteTriggerEvent) Pos(icbm.classic.lib.transform.vector.Pos) BlockPos(net.minecraft.util.math.BlockPos) BlockPos(net.minecraft.util.math.BlockPos) ItemStack(net.minecraft.item.ItemStack) FakeRadioSender(icbm.classic.prefab.FakeRadioSender) TextComponentString(net.minecraft.util.text.TextComponentString)

Aggregations

Pos (icbm.classic.lib.transform.vector.Pos)3 FakeRadioSender (icbm.classic.prefab.FakeRadioSender)3 TextComponentString (net.minecraft.util.text.TextComponentString)3 BlockPos (net.minecraft.util.math.BlockPos)2 LaserRemoteTriggerEvent (icbm.classic.api.events.LaserRemoteTriggerEvent)1 ItemStack (net.minecraft.item.ItemStack)1