use of mods.railcraft.api.signals.IPair in project Railcraft by Railcraft.
the class ItemSignalBlockSurveyor method onItemUse.
// TODO: Add chat name highlighting formatting styles
// TODO: This function could probably be picked apart and pulled into the super class, but meh...
@Override
public EnumActionResult onItemUse(EntityPlayer playerIn, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
// System.out.println("click");
ItemStack stack = playerIn.getHeldItem(hand);
if (actionCleanPairing(stack, playerIn, worldIn, ISignalTileBlock.class, ISignalTileBlock::getSignalBlock)) {
return EnumActionResult.SUCCESS;
}
TileEntity tile = worldIn.getTileEntity(pos);
if (tile != null)
if (tile instanceof ISignalTile) {
// System.out.println("target found");
if (Game.isHost(worldIn)) {
ISignalTile signalTile = (ISignalTile) tile;
IPair signalBlock = signalTile.getPair();
WorldCoordinate signalPos = getPairData(stack);
TrackLocator.Status trackStatus = signalTile.getTrackLocator().getTrackStatus();
if (trackStatus == TrackLocator.Status.INVALID)
ChatPlugin.sendLocalizedChatFromServer(playerIn, "gui.railcraft.surveyor.track", signalTile.getDisplayName());
else if (signalPos == null) {
ChatPlugin.sendLocalizedChatFromServer(playerIn, "gui.railcraft.surveyor.begin");
setPairData(stack, tile);
signalBlock.startPairing();
} else if (!Objects.equals(pos, signalPos.getPos())) {
// System.out.println("attempt pairing");
tile = WorldPlugin.getBlockTile(worldIn, signalPos.getPos());
if (tile instanceof ISignalTile) {
if (signalBlock.createPair(tile)) {
ChatPlugin.sendLocalizedChatFromServer(playerIn, "gui.railcraft.surveyor.success");
clearPairData(stack);
} else
ChatPlugin.sendLocalizedChatFromServer(playerIn, "gui.railcraft.surveyor.invalid");
} else if (WorldPlugin.isBlockLoaded(worldIn, signalPos.getPos())) {
ChatPlugin.sendLocalizedChatFromServer(playerIn, "gui.railcraft.surveyor.lost");
signalBlock.endPairing();
clearPairData(stack);
} else
ChatPlugin.sendLocalizedChatFromServer(playerIn, "gui.railcraft.surveyor.unloaded");
} else {
ChatPlugin.sendLocalizedChatFromServer(playerIn, "gui.railcraft.surveyor.abandon");
signalBlock.endPairing();
clearPairData(stack);
}
}
return EnumActionResult.SUCCESS;
} else if (Game.isHost(worldIn))
ChatPlugin.sendLocalizedChatFromServer(playerIn, "gui.railcraft.surveyor.wrong");
return EnumActionResult.PASS;
}
Aggregations