本文整理汇总了Java中net.minecraft.tileentity.TileEntity.getCapability方法的典型用法代码示例。如果您正苦于以下问题:Java TileEntity.getCapability方法的具体用法?Java TileEntity.getCapability怎么用?Java TileEntity.getCapability使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类net.minecraft.tileentity.TileEntity
的用法示例。
在下文中一共展示了TileEntity.getCapability方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: getEvaluator
import net.minecraft.tileentity.TileEntity; //导入方法依赖的package包/类
@Override
protected DroneAIBlockCondition getEvaluator(IDroneBase drone, IProgWidget widget) {
return new DroneAIBlockCondition(drone, (ProgWidgetAreaItemBase) widget) {
@Override
protected boolean evaluate(BlockPos pos) {
TileEntity te = drone.world().getTileEntity(pos);
int count = 0;
if (te != null && te.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, null) ) {
IFluidHandler handler = te.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, null);
for (IFluidTankProperties prop : handler.getTankProperties()) {
FluidStack stack = prop.getContents();
if (stack != null) {
if (ProgWidgetLiquidFilter.isLiquidValid(stack.getFluid(), widget, 1)) {
count += stack.amount;
}
}
}
} else {
Fluid fluid = FluidRegistry.lookupFluidForBlock(drone.world().getBlockState(pos).getBlock());
if (fluid != null && ProgWidgetLiquidFilter.isLiquidValid(fluid, widget, 1) && FluidUtils.isSourceBlock(drone.world(), pos)) {
count += 1000;
}
}
return ((ICondition) widget).getOperator() == ICondition.Operator.EQUALS ?
count == ((ICondition) widget).getRequiredCount() :
count >= ((ICondition) widget).getRequiredCount();
}
};
}
示例2: getFluidHandler
import net.minecraft.tileentity.TileEntity; //导入方法依赖的package包/类
/**
* Helper method to get an IFluidHandler for at a block position.
*
* Returns null if there is no valid fluid handler.
*/
@Nullable
public static IFluidHandler getFluidHandler(World world, BlockPos blockPos, @Nullable EnumFacing side)
{
IBlockState state = world.getBlockState(blockPos);
Block block = state.getBlock();
if (block.hasTileEntity(state))
{
TileEntity tileEntity = world.getTileEntity(blockPos);
if (tileEntity != null && tileEntity.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, side))
{
return tileEntity.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, side);
}
}
else if (block instanceof IFluidBlock)
{
return new FluidBlockWrapper((IFluidBlock) block, world, blockPos);
}
else if (block instanceof BlockLiquid)
{
return new BlockLiquidWrapper((BlockLiquid) block, world, blockPos);
}
return null;
}
示例3: extract
import net.minecraft.tileentity.TileEntity; //导入方法依赖的package包/类
public static ItemStack extract(TileEntity tile, EnumFacing from, boolean fullStack) {
if (tile.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, from)) {
IItemHandlerModifiable handler = (IItemHandlerModifiable) tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, from);
if (handler != null) {
int invSize = handler.getSlots();
for (int i = 0; i < invSize; i++) {
ItemStack current = handler.getStackInSlot(i);
if (current != null && !current.isEmpty() && current.getItem() != Items.AIR) {
ItemStack stack = handler.extractItem(i, !fullStack ? 1 : current.getCount(), false);
return stack;
}
}
}
} // TODO: TileEntities that don't have capabilities - needs testing
return null;
}
示例4: update
import net.minecraft.tileentity.TileEntity; //导入方法依赖的package包/类
@Override
public void update() {
this.ticksExisted ++;
EnumFacing facing = world.getBlockState(pos).getValue(BlockEmberEmitter.facing);
BlockPos attachPos = pos.offset(facing, -1);
TileEntity attachTile = world.getTileEntity(attachPos);
if (ticksExisted % 2 == 0 && attachTile != null){
if (attachTile.hasCapability(EmberCapabilityProvider.emberCapability, null)){
IEmberCapability cap = attachTile.getCapability(EmberCapabilityProvider.emberCapability, null);
if (cap != null){
if (cap.getEmber() < cap.getEmberCapacity() && capability.getEmber() > 0){
double added = cap.addAmount(Math.min(TRANSFER_SPEED,capability.getEmber()), true);
double removed = capability.removeAmount(added, true);
markDirty();
attachTile.markDirty();
if (!(attachTile instanceof ITileEntityBase) && !world.isRemote){
attachTile.markDirty(); //Idk why this is duplicated but the github source has it, so I carried it over.
EventManager.markTEForUpdate(attachPos, attachTile);
}
}
}
}
}
}
示例5: onItemUse
import net.minecraft.tileentity.TileEntity; //导入方法依赖的package包/类
@Nonnull
@Override
public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
if(player.getHeldItem(hand).getCount() == 1){
TileEntity tile = world.getTileEntity(pos);
if(tile != null && tile.hasCapability(CapabilityEnergy.ENERGY, facing)){
if(!world.isRemote){
IEnergyStorage energy = tile.getCapability(CapabilityEnergy.ENERGY, facing);
if(energy != null && energy.canExtract()){
IEnergyStorage storage = player.getHeldItem(hand).getCapability(CapabilityEnergy.ENERGY, null);
if(storage != null && storage.canReceive()){
storage.receiveEnergy(energy.extractEnergy(storage.receiveEnergy(Integer.MAX_VALUE, true), false), false);
}
}
}
return EnumActionResult.SUCCESS;
}
}
return super.onItemUse(player, world, pos, hand, facing, hitX, hitY, hitZ);
}
示例6: transmitEnergy
import net.minecraft.tileentity.TileEntity; //导入方法依赖的package包/类
public int transmitEnergy(BlockPos from, int energy, boolean simulate){
int oldEnergy = energy;
for(Map.Entry<BlockPos, EnumFacing> entry : this.receiver.entrySet()){
TileEntity tile = this.world.getTileEntity(entry.getKey());
if(tile != null && tile.hasCapability(CapabilityEnergy.ENERGY, entry.getValue())){
IEnergyStorage storage = tile.getCapability(CapabilityEnergy.ENERGY, entry.getValue());
if(storage != null && storage.canReceive()){
energy -= storage.receiveEnergy(energy, simulate);
}
}
if(energy <= 0){
return oldEnergy;
}
}
return oldEnergy - energy;
}
示例7: attemptFETransfer
import net.minecraft.tileentity.TileEntity; //导入方法依赖的package包/类
private int attemptFETransfer(EnumFacing face, int maxTransferLeft) {
BlockPos at = this.getPos().offset(face);
EnumFacing accessingSide = face.getOpposite();
int receivedEnergy = 0;
TileEntity te = world.getTileEntity(at);
if(te != null && !(te instanceof TileEnergyHatch)) {
if(te.hasCapability(CapabilityEnergy.ENERGY, accessingSide)) {
net.minecraftforge.energy.IEnergyStorage ce = te.getCapability(CapabilityEnergy.ENERGY, accessingSide);
if(ce != null && ce.canReceive()) {
receivedEnergy = ce.receiveEnergy(maxTransferLeft, false);
}
}
}
return receivedEnergy;
}
示例8: putInventoryInChestWithMessage
import net.minecraft.tileentity.TileEntity; //导入方法依赖的package包/类
private void putInventoryInChestWithMessage(BlockPos pos, String message, String... parameters) {
if (!InventoryTools.isInventory(entity.getEntityWorld(), pos)) {
// No longer an inventory here. Just drop the items on the ground here
if (message != null) {
showMessage("message.meecreeps.inventory_missing");
}
entity.dropInventory();
} else {
if (message != null) {
showMessage(message, parameters);
}
TileEntity te = entity.getEntityWorld().getTileEntity(pos);
IItemHandler handler = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, EnumFacing.UP);
for (ItemStack stack : entity.getInventory()) {
if (!stack.isEmpty()) {
ItemStack remaining = ItemHandlerHelper.insertItem(handler, stack, false);
if (!remaining.isEmpty()) {
entity.entityDropItem(remaining, 0.0f);
}
}
}
entity.getInventory().clear();
}
}
示例9: breakBlock
import net.minecraft.tileentity.TileEntity; //导入方法依赖的package包/类
@Override
public void breakBlock(World worldIn, BlockPos pos, IBlockState state) {
TileEntity tileentity = worldIn.getTileEntity(pos);
if (tileentity!=null && tileentity.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null)) {
IItemHandler inventory = tileentity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
for (int i=0; i<inventory.getSlots(); i++) {
ItemStack itemstack = inventory.getStackInSlot(i);
if (!itemstack.isEmpty()) {
InventoryHelper.spawnItemStack(worldIn, pos.getX(), pos.getY(), pos.getZ(), itemstack);
}
}
worldIn.updateComparatorOutputLevel(pos, this);
}
super.breakBlock(worldIn, pos, state);
}
示例10: pushEnergy
import net.minecraft.tileentity.TileEntity; //导入方法依赖的package包/类
protected boolean pushEnergy() {
boolean pushed = false;
for(EnumFacing dir : EnumFacing.VALUES) {
TileEntity tile = world.getTileEntity(getPos().offset(dir));
if(tile != null)
if(tile.hasCapability(TeslaCapabilities.CAPABILITY_CONSUMER, dir.getOpposite())) {
BaseTeslaContainer cont = (BaseTeslaContainer) tile.getCapability(TeslaCapabilities.CAPABILITY_CONSUMER, dir.getOpposite());
container.takePower(cont.givePower(container.takePower(container.getOutputRate(), true), false), false);
if(!world.isRemote) {
tile.markDirty();
markDirty();
pushed = true;
}
}
}
return pushed;
}
示例11: getInventory
import net.minecraft.tileentity.TileEntity; //导入方法依赖的package包/类
private Pair<IItemHandler, ISidedInventory> getInventory(BlockPos target, EnumFacing facing) {
if(world.isBlockLoaded(target, false)) {
TileEntity tile = world.getTileEntity(target);
if(tile != null) {
IItemHandler handler = tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, facing);
if(handler == null) handler = tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
return Pair.of(handler, tile instanceof ISidedInventory ? (ISidedInventory) tile : null);
}
}
return Pair.of(null, null);
}
示例12: onBlockActivated
import net.minecraft.tileentity.TileEntity; //导入方法依赖的package包/类
@Override
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer p, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
{
TileEntity te = worldIn.getTileEntity(pos);
if (te != null && te instanceof TileAbstractSingleItem)
{
TileAbstractSingleItem tasi = (TileAbstractSingleItem) te;
IItemHandler handler = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
ItemStack held = p.getHeldItem(hand);
if (!p.isSneaking() && (tasi.isItemValid(held)))
{
ItemStack st = handler.insertItem(0, held, false);
if(!ItemStack.areItemStacksEqualUsingNBTShareTag(st, held))
{
p.setHeldItem(hand, st);
return true;
}
}
if (p.isSneaking() && !handler.getStackInSlot(0).isEmpty())
{
p.inventory.addItemStackToInventory(handler.getStackInSlot(0));
ItemStackUtils.extractAll(handler, 0);
return true;
}
openClientGui(worldIn, pos, state, p, hand, facing, hitX, hitY, hitZ, tasi);
return true;
}
return false;
}
示例13: attemptInsert
import net.minecraft.tileentity.TileEntity; //导入方法依赖的package包/类
private void attemptInsert(TileEntity te, EnumFacing facing)
{
IItemHandler itemHandler = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, facing);
ItemStack returned = ItemHandlerHelper.insertItem(itemHandler, getItem(), false);
if(!returned.isEmpty())
{
onInvalidArrival(returned);
}
this.setDead();
}
示例14: doInteract
import net.minecraft.tileentity.TileEntity; //导入方法依赖的package包/类
@Override
public boolean doInteract(BlockPos pos, IDrone drone, IBlockInteractHandler interactHandler, boolean simulate) {
if (!drone.hasCapability(CapabilityEnergy.ENERGY, null)) return false;
IEnergyStorage droneStorage = drone.getCapability(CapabilityEnergy.ENERGY, null);
if (droneStorage.getEnergyStored() == droneStorage.getMaxEnergyStored()) {
interactHandler.abort();
return false;
} else {
TileEntity te = drone.world().getTileEntity(pos);
if (te == null) return false;
for (EnumFacing face : EnumFacing.values()) {
if (te.hasCapability(CapabilityEnergy.ENERGY, face)) {
IEnergyStorage teStorage = te.getCapability(CapabilityEnergy.ENERGY, face);
int transferredEnergy = droneStorage.receiveEnergy(
teStorage.extractEnergy(interactHandler.useCount() ? interactHandler.getRemainingCount() : Integer.MAX_VALUE, true), true);
if (transferredEnergy > 0) {
if (!simulate) {
interactHandler.decreaseCount(transferredEnergy);
droneStorage.receiveEnergy(transferredEnergy, false);
teStorage.extractEnergy(transferredEnergy, false);
}
return true;
}
}
}
}
return false;
}
示例15: getInventory
import net.minecraft.tileentity.TileEntity; //导入方法依赖的package包/类
private Pair<IItemHandler, ISidedInventory> getInventory(EnumFacing facing) {
BlockPos target = getPos().offset(facing);
if(world.isBlockLoaded(target, false)) {
TileEntity tile = world.getTileEntity(target);
if(tile != null) {
IItemHandler handler = tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, facing.getOpposite());
if(handler == null) handler = tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
return Pair.of(handler, tile instanceof ISidedInventory ? (ISidedInventory) tile : null);
}
}
return Pair.of(null, null);
}