protected void updateAdjacentHandlers() { for (int i = 0; i < 6; i++) { accelerables[i] = null; TileEntity tile = BlockHelper.getAdjacentTileEntity(this, i); if (tile instanceof IAccelerable) { accelerables[i] = (IAccelerable) tile; } } cached = true; }
public static List<ItemStack> breakBlock(World worldObj, BlockPos pos, IBlockState state, int fortune, boolean doBreak, boolean silkTouch) { return breakBlock(worldObj, null, pos, state, fortune, doBreak, silkTouch); }
@Override public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase living, ItemStack stack) { if (stack.getTagCompound() != null) { TileDeviceBase tile = (TileDeviceBase) world.getTileEntity(pos); int facing = BlockHelper.determineXZPlaceFacing(living); int storedFacing = ReconfigurableHelper.getFacing(stack); byte[] sideCache = ReconfigurableHelper.getSideCache(stack, tile.getDefaultSides()); tile.sideCache[0] = sideCache[0]; tile.sideCache[1] = sideCache[1]; tile.sideCache[facing] = sideCache[storedFacing]; tile.sideCache[BlockHelper.getLeftSide(facing)] = sideCache[BlockHelper.getLeftSide(storedFacing)]; tile.sideCache[BlockHelper.getRightSide(facing)] = sideCache[BlockHelper.getRightSide(storedFacing)]; tile.sideCache[BlockHelper.getOppositeSide(facing)] = sideCache[BlockHelper.getOppositeSide(storedFacing)]; } super.onBlockPlacedBy(world, pos, state, living, stack); }
@Override protected boolean readPortableTagInternal(EntityPlayer player, NBTTagCompound tag) { int storedFacing = ReconfigurableHelper.getFacingFromNBT(tag); byte[] storedSideCache = ReconfigurableHelper.getSideCacheFromNBT(tag, getDefaultSides()); sideCache[0] = storedSideCache[0]; sideCache[1] = storedSideCache[1]; sideCache[facing] = storedSideCache[storedFacing]; sideCache[BlockHelper.getLeftSide(facing)] = storedSideCache[BlockHelper.getLeftSide(storedFacing)]; sideCache[BlockHelper.getRightSide(facing)] = storedSideCache[BlockHelper.getRightSide(storedFacing)]; sideCache[BlockHelper.getOppositeSide(facing)] = storedSideCache[BlockHelper.getOppositeSide(storedFacing)]; for (int i = 0; i < 6; i++) { if (sideCache[i] >= getNumConfig(i)) { sideCache[i] = 0; } } if (hasAutoInput) { enableAutoInput = tag.getBoolean("EnableIn"); } if (hasAutoOutput) { enableAutoOutput = tag.getBoolean("EnableOut"); } if (hasRedstoneControl) { super.readPortableTagInternal(player, tag); } return true; }
@Override public EnumActionResult onItemUseFirst(EntityPlayer player, World world, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ, EnumHand hand) { IBlockState state = world.getBlockState(pos); Block block = state.getBlock(); if (world.isAirBlock(pos)) { return EnumActionResult.PASS; } PlayerInteractEvent.RightClickBlock event = new PlayerInteractEvent.RightClickBlock(player, hand, pos, side, new Vec3d(hitX, hitY, hitZ)); if (MinecraftForge.EVENT_BUS.post(event) || event.getResult() == Result.DENY || event.getUseBlock() == Result.DENY || event.getUseItem() == Result.DENY) { return EnumActionResult.PASS; } if (ServerHelper.isServerWorld(world) && player.isSneaking() && block instanceof IDismantleable && ((IDismantleable) block).canDismantle(world, pos, state, player)) { ((IDismantleable) block).dismantleBlock(world, pos, state, player, false); return EnumActionResult.SUCCESS; } if (BlockHelper.canRotate(block)) { world.setBlockState(pos, BlockHelper.rotateVanillaBlock(world, state, pos), 3); player.swingArm(hand); return ServerHelper.isServerWorld(world) ? EnumActionResult.SUCCESS : EnumActionResult.PASS; } else if (!player.isSneaking() && block.rotateBlock(world, pos, side)) { player.swingArm(hand); return ServerHelper.isServerWorld(world) ? EnumActionResult.SUCCESS : EnumActionResult.PASS; } return EnumActionResult.PASS; }
@Override public void onNeighborChange() { super.onNeighborChange(); TileEntity adjacentTileEntity = BlockHelper.getAdjacentTileEntity(baseTile, side); clearCache(); boolean wasValidInput = isValidInput; isValidInput = isValidTile(adjacentTileEntity); if (isValidInput) { cacheTile(adjacentTileEntity); } boolean wasPowered = isPowered; isPowered = rsMode.isDisabled() || rsMode.getState() == getPowerState(); if (wasPowered != isPowered || isValidInput != wasValidInput) { BlockHelper.callBlockUpdate(baseTile.getWorld(), baseTile.getPos()); } }
if (BlockHelper.canRotate(block)) { world.setBlockState(pos, BlockHelper.rotateVanillaBlock(world, state, pos), 3); if (!player.capabilities.isCreativeMode) { useEnergy(stack, false);
@Override public TileEntity getNextConnectedTile(EnumFacing direction) { return BlockHelper.getAdjacentTileEntity(duct, direction); }
@Override public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase living, ItemStack stack) { if (stack.getTagCompound() != null) { TileApparatusBase tile = (TileApparatusBase) world.getTileEntity(pos); tile.readAugmentsFromNBT(stack.getTagCompound()); tile.updateAugmentStatus(); tile.setEnergyStored(stack.getTagCompound().getInteger(CoreProps.ENERGY)); int facing = BlockHelper.determineXZPlaceFacing(living); int storedFacing = ReconfigurableHelper.getFacing(stack); byte[] sideCache = ReconfigurableHelper.getSideCache(stack, tile.getDefaultSides()); tile.sideCache[0] = sideCache[0]; tile.sideCache[1] = sideCache[1]; tile.sideCache[facing] = sideCache[storedFacing]; tile.sideCache[BlockHelper.getLeftSide(facing)] = sideCache[BlockHelper.getLeftSide(storedFacing)]; tile.sideCache[BlockHelper.getRightSide(facing)] = sideCache[BlockHelper.getRightSide(storedFacing)]; tile.sideCache[BlockHelper.getOppositeSide(facing)] = sideCache[BlockHelper.getOppositeSide(storedFacing)]; } super.onBlockPlacedBy(world, pos, state, living, stack); }
if (BlockHelper.canRotate(block)) { world.setBlockState(pos, BlockHelper.rotateVanillaBlock(world, state, pos), 3); if (!player.capabilities.isCreativeMode) { useEnergy(stack, false);
stuffedItems.addAll(BlockHelper.breakBlock(world, fakePlayer, target, state, 0, true, false));
public static TileEntity getAdjacentTileEntity(World world, BlockPos pos, int side) { return world == null ? null : getAdjacentTileEntity(world, pos, EnumFacing.VALUES[side]); }
@Override public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase living, ItemStack stack) { if (stack.getTagCompound() != null) { TileMachineBase tile = (TileMachineBase) world.getTileEntity(pos); tile.setLevel(stack.getTagCompound().getByte("Level")); tile.readAugmentsFromNBT(stack.getTagCompound()); tile.updateAugmentStatus(); tile.setEnergyStored(stack.getTagCompound().getInteger(CoreProps.ENERGY)); int facing = BlockHelper.determineXZPlaceFacing(living); int storedFacing = ReconfigurableHelper.getFacing(stack); byte[] sideCache = ReconfigurableHelper.getSideCache(stack, tile.getDefaultSides()); for (int i = 0; i < sideCache.length; i++) { if (sideCache[i] >= tile.getNumConfig(i)) { sideCache[i] = 0; } } tile.sideCache[0] = sideCache[0]; tile.sideCache[1] = sideCache[1]; tile.sideCache[facing] = 0; tile.sideCache[BlockHelper.getLeftSide(facing)] = sideCache[BlockHelper.getLeftSide(storedFacing)]; tile.sideCache[BlockHelper.getRightSide(facing)] = sideCache[BlockHelper.getRightSide(storedFacing)]; tile.sideCache[BlockHelper.getOppositeSide(facing)] = sideCache[BlockHelper.getOppositeSide(storedFacing)]; } super.onBlockPlacedBy(world, pos, state, living, stack); }
protected void updateAdjacentHandlers(boolean packet) { if (ServerHelper.isClientWorld(world)) { return; } boolean curAutoOutput = enableAutoOutput; adjacentTanks[0] = BlockHelper.getAdjacentTileEntity(this, EnumFacing.DOWN) instanceof TileTank; adjacentTanks[1] = BlockHelper.getAdjacentTileEntity(this, EnumFacing.UP) instanceof TileTank; if (!lock && getTankFluid() == null) { enableAutoOutput |= adjacentTanks[0]; } if (packet && curAutoOutput != enableAutoOutput) { sendTilePacket(Side.CLIENT); } cached = true; }
@Override public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase living, ItemStack stack) { if (stack.getTagCompound() != null) { TileCell tile = (TileCell) world.getTileEntity(pos); tile.isCreative = (stack.getTagCompound().getBoolean("Creative")); tile.enchantHolding = (byte) MathHelper.clamp(EnchantmentHelper.getEnchantmentLevel(CoreEnchantments.holding, stack), 0, CoreEnchantments.holding.getMaxLevel()); tile.setLevel(stack.getTagCompound().getByte("Level")); tile.amountRecv = stack.getTagCompound().getInteger("Recv"); tile.amountSend = stack.getTagCompound().getInteger("Send"); tile.setEnergyStored(stack.getTagCompound().getInteger(CoreProps.ENERGY)); int facing = BlockHelper.determineXZPlaceFacing(living); int storedFacing = ReconfigurableHelper.getFacing(stack); byte[] sideCache = ReconfigurableHelper.getSideCache(stack, tile.getDefaultSides()); tile.sideCache[0] = sideCache[0]; tile.sideCache[1] = sideCache[1]; tile.sideCache[facing] = sideCache[storedFacing]; tile.sideCache[BlockHelper.getLeftSide(facing)] = sideCache[BlockHelper.getLeftSide(storedFacing)]; tile.sideCache[BlockHelper.getRightSide(facing)] = sideCache[BlockHelper.getRightSide(storedFacing)]; tile.sideCache[BlockHelper.getOppositeSide(facing)] = sideCache[BlockHelper.getOppositeSide(storedFacing)]; } super.onBlockPlacedBy(world, pos, state, living, stack); }
public static boolean isAdjacentEnergyProviderFromSide(TileEntity tile, EnumFacing side) { TileEntity handler = BlockHelper.getAdjacentTileEntity(tile, side); return isEnergyProviderFromSide(handler, side.getOpposite()); }
public static boolean isAdjacentFluidHandler(TileEntity tile, EnumFacing side) { TileEntity handler = BlockHelper.getAdjacentTileEntity(tile, side); return handler != null && handler.hasCapability(FLUID_HANDLER, side.getOpposite()); }
public static boolean isAdjacentEnergyConnectableFromSide(TileEntity tile, EnumFacing side) { TileEntity handler = BlockHelper.getAdjacentTileEntity(tile, side); return isEnergyConnectableFromSide(handler, side.getOpposite()); }
public static boolean isAdjacentEnergyReceiverFromSide(TileEntity tile, EnumFacing side) { TileEntity handler = BlockHelper.getAdjacentTileEntity(tile, side); return isEnergyReceiverFromSide(handler, side.getOpposite()); }
public static boolean isAdjacentEnergyHandler(TileEntity tile, EnumFacing side) { TileEntity handler = BlockHelper.getAdjacentTileEntity(tile, side); return handler != null && handler.hasCapability(ENERGY_HANDLER, side.getOpposite()); }