类net.minecraftforge.common.capabilities.ICapabilityProvider源码实例Demo

下面列出了怎么用net.minecraftforge.common.capabilities.ICapabilityProvider的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: GregTech   文件: GlassBottleFluidHandler.java
private IFluidHandlerItem getNextInChain() {
    if(rawCapabilityProviders != null) {
        boolean foundMyself = false;
        for(ICapabilityProvider provider : rawCapabilityProviders) {
            IFluidHandlerItem fluidHandlerItem = provider.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null);
            if(fluidHandlerItem != null) {
                if(fluidHandlerItem == this) {
                    foundMyself = true;
                } else if(foundMyself) {
                    this.nextHandlerInChain = fluidHandlerItem;
                    break;
                }
            }
        }
        this.rawCapabilityProviders = null;
    }
    return nextHandlerInChain;
}
 
源代码2 项目: Signals   文件: RailManager.java
public void onTileEntityCapabilityAttachEvent(AttachCapabilitiesEvent<TileEntity> event){
    ICapabilityProvider provider = new CapabilityDestinationProvider.Provider();
    boolean requiresCap = false;

    CapabilityDestinationProvider cap = provider.getCapability(CapabilityDestinationProvider.INSTANCE, null);
    for(IDestinationProvider destinationProvider : destinationProviders) {
        if(destinationProvider.isTileEntityApplicable(event.getObject())) {
            try {
                cap.addDestinationProvider(destinationProvider.getClass().newInstance());
                if(!requiresCap) {
                    requiresCap = true;
                    event.addCapability(new ResourceLocation(Constants.MOD_ID, "destinationProviderCapability"), provider);
                }
            } catch(Exception e) {
                e.printStackTrace();
            }
        }
    }
}
 
源代码3 项目: patchwork-api   文件: BaseCapabilityProvider.java
@Override
public void gatherCapabilities(@Nullable ICapabilityProvider parent) {
	AttachCapabilitiesEvent<T> event = new AttachCapabilitiesEvent<>(baseClass, provider);
	MinecraftForge.EVENT_BUS.post(event);

	if (!event.getCapabilities().isEmpty() || parent != null) {
		capabilities = new CapabilityDispatcher(event.getCapabilities(), event.getListeners(), parent);
	} else {
		capabilities = null;
	}
}
 
源代码4 项目: GregTech   文件: CombinedCapabilityProvider.java
@Override
public boolean hasCapability(@Nonnull Capability<?> capability, @Nullable EnumFacing facing) {
    for (ICapabilityProvider provider : providers) {
        if (provider.hasCapability(capability, facing)) {
            return true;
        }
    }
    return false;
}
 
源代码5 项目: GregTech   文件: CombinedCapabilityProvider.java
@Nullable
@Override
public <T> T getCapability(@Nonnull Capability<T> capability, @Nullable EnumFacing facing) {
    for (ICapabilityProvider provider : providers) {
        T cap = provider.getCapability(capability, facing);
        if (cap != null) {
            return cap;
        }
    }
    return null;
}
 
源代码6 项目: GregTech   文件: ToolMetaItem.java
@Override
public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable NBTTagCompound nbt) {
    ICapabilityProvider capabilityProvider = super.initCapabilities(stack, nbt);
    if (capabilityProvider != null && capabilityProvider.hasCapability(GregtechCapabilities.CAPABILITY_ELECTRIC_ITEM, null)) {
        IElectricItem electricItem = capabilityProvider.getCapability(GregtechCapabilities.CAPABILITY_ELECTRIC_ITEM, null);
        //noinspection ConstantConditions
        electricItem.addChargeListener((itemStack, newCharge) -> {
            int newDamage = (newCharge == 0 ? 16000 : 0) + itemStack.getItemDamage() % 16000;
            if (newDamage != itemStack.getItemDamage()) {
                itemStack.setItemDamage(newDamage);
            }
        });
    }
    return capabilityProvider;
}
 
源代码7 项目: GregTech   文件: FluidStats.java
@Override
public ICapabilityProvider createProvider(ItemStack itemStack) {
    if (allowPartlyFill) {
        return new ThermalFluidHandlerItemStack(itemStack, maxCapacity, minFluidTemperature, maxFluidTemperature);
    }
    return new SimpleThermalFluidHandlerItemStack(itemStack, maxCapacity, minFluidTemperature, maxFluidTemperature);
}
 
源代码8 项目: GregTech   文件: MetaItem.java
@Override
public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable NBTTagCompound nbt) {
    T metaValueItem = getItem(stack);
    if (metaValueItem == null) {
        return null;
    }
    ArrayList<ICapabilityProvider> providers = new ArrayList<>();
    for (IMetaItemStats metaItemStats : metaValueItem.getAllStats()) {
        if (metaItemStats instanceof IItemCapabilityProvider) {
            IItemCapabilityProvider provider = (IItemCapabilityProvider) metaItemStats;
            providers.add(provider.createProvider(stack));
        }
    }
    return new CombinedCapabilityProvider(providers);
}
 
源代码9 项目: GregTech   文件: MetaTileEntityTank.java
@Override
public ICapabilityProvider initItemStackCapabilities(ItemStack itemStack) {
    return new FluidHandlerItemStack(itemStack, tankSize) {
        @Override
        public boolean canFillFluidType(FluidStack fluid) {
            return MetaTileEntityTank.this.canFillFluidType(fluid);
        }
    };
}
 
源代码10 项目: GregTech   文件: FoamSprayerBehavior.java
@Override
public ICapabilityProvider createProvider(ItemStack itemStack) {
    return new FluidHandlerItemStack(itemStack, 10000) {
        @Override
        public boolean canFillFluidType(FluidStack fluid) {
            return fluid != null && fluid.isFluidEqual(Materials.ConstructionFoam.getFluid(1));
        }
    };
}
 
源代码11 项目: customstuff4   文件: ItemWithSubtypesMixin.java
@Nullable
@Override
public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable NBTTagCompound nbt)
{
    if (!getContent().modules.isEmpty())
    {
        return new CapabilityProviderItem(stack, getContent());
    } else
    {
        return null;
    }
}
 
源代码12 项目: Survivalist   文件: ItemBreakingTracker.java
@SubscribeEvent
public void attachCapabilities(AttachCapabilitiesEvent<Entity> e)
{
    if (!ConfigManager.SERVER.enableScraping.get())
        return;
    final Entity entity = e.getObject();

    if (!(entity instanceof ServerPlayerEntity))
        return;

    if (entity.world == null || entity.world.isRemote)
        return;

    e.addCapability(PROP_KEY, new ICapabilityProvider()
    {
        ItemBreakingTracker cap = new ItemBreakingTracker();
        LazyOptional<ItemBreakingTracker> cap_provider = LazyOptional.of(() -> cap);

        {
            cap.init(entity, entity.world);
        }

        @SuppressWarnings("unchecked")
        @Override
        public <T> LazyOptional<T> getCapability(Capability<T> capability, @Nullable Direction facing)
        {
            if (capability == TRACKER)
                return cap_provider.cast();
            return LazyOptional.empty();
        }
    });
}
 
源代码13 项目: NOVA-Core   文件: WrapperEvent.java
public CapabilityToComponent(ICapabilityProvider capabilities, Class<NOVA> component, Set<NOVA> defaultInstances, Direction direction) {
	this.capabilities = capabilities;
	this.component = component;
	this.defaultInstances = Collections.unmodifiableSet(defaultInstances);
	this.instances = new HashSet<>();
	this.direction = direction;
}
 
@SubscribeEvent
public void attachCapabilities(AttachCapabilitiesEvent<ItemStack> evt)
{
	if (evt.getCapabilities().containsKey(KEY)) {
		return;
	}
	Item item = evt.getObject().getItem();
	if (item instanceof ItemSpaceArmor) {
		evt.addCapability(KEY, (ICapabilityProvider) item);
	}
}
 
源代码15 项目: patchwork-api   文件: AttachCapabilitiesEvent.java
/**
 * @return An unmodifiable view of the capabilities that will be attached to this object.
 */
public Map<Identifier, ICapabilityProvider> getCapabilities() {
	return view;
}
 
源代码16 项目: patchwork-api   文件: CapabilityProviderHolder.java
default void gatherCapabilities(@Nullable ICapabilityProvider parent) {
	getCapabilityProvider().gatherCapabilities(parent);
}
 
源代码17 项目: MiningGadgets   文件: MiningGadget.java
@Nullable
@Override
public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundNBT nbt) {
    return new CapabilityEnergyProvider(stack, Config.MININGGADGET_MAXPOWER.get());
}
 
源代码18 项目: GregTech   文件: MachineItemBlock.java
@Nullable
@Override
public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable NBTTagCompound nbt) {
    MetaTileEntity metaTileEntity = getMetaTileEntity(stack);
    return metaTileEntity == null ? null : metaTileEntity.initItemStackCapabilities(stack);
}
 
源代码19 项目: GregTech   文件: MetaTileEntity.java
public ICapabilityProvider initItemStackCapabilities(ItemStack itemStack) {
    return null;
}
 
源代码20 项目: GregTech   文件: CombinedCapabilityProvider.java
public CombinedCapabilityProvider(ICapabilityProvider... providers) {
    this.providers = providers;
}
 
源代码21 项目: GregTech   文件: CombinedCapabilityProvider.java
public CombinedCapabilityProvider(List<ICapabilityProvider> providers) {
    this.providers = providers.toArray(new ICapabilityProvider[0]);
}
 
源代码22 项目: GregTech   文件: WrenchItemStat.java
@Override
public ICapabilityProvider createProvider(ItemStack itemStack) {
    return new CapabilityProvider(itemStack);
}
 
源代码23 项目: GregTech   文件: ScrewdriverItemStat.java
@Override
public ICapabilityProvider createProvider(ItemStack itemStack) {
    return new CapabilityProvider(itemStack);
}
 
源代码24 项目: GregTech   文件: SoftMalletItemStat.java
@Override
public ICapabilityProvider createProvider(ItemStack itemStack) {
    return new CapabilityProvider(itemStack);
}
 
源代码25 项目: GregTech   文件: ElectricStats.java
@Override
public ICapabilityProvider createProvider(ItemStack itemStack) {
    return new ElectricItem(itemStack, maxCharge, tier, chargeable, dischargeable);
}
 
源代码26 项目: GregTech   文件: GlassBottleFluidHandler.java
public GlassBottleFluidHandler(ItemStack itemStack, Collection<ICapabilityProvider> rawCapabilityProviders) {
    this.itemStack = itemStack;
    this.rawCapabilityProviders = rawCapabilityProviders;
}
 
源代码27 项目: GT-Classic   文件: GTItemFluidTube.java
@Override
public ICapabilityProvider initCapabilities(ItemStack stack, NBTTagCompound nbt) {
	return new GTFluidItemStackHandler(stack, stack, size);
}
 
源代码28 项目: Wizardry   文件: ItemJar.java
@Nullable
@Override
public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable NBTTagCompound nbt) {
	return new ManaCapabilityProvider(new CustomManaCapability(1000, 1000, 0, 0));
}
 
源代码29 项目: Wizardry   文件: ItemPearlBelt.java
@Nullable
@Override
public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable NBTTagCompound nbt) {
	return new BeltItemHandler(stack);
}
 
源代码30 项目: Wizardry   文件: NacrePearlSpell.java
@Nullable
@Override
public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable NBTTagCompound nbt) {
	return new ManaCapabilityProvider(new CustomManaCapability(300, 300, 0, 0));
}
 
 类方法
 同包方法