下面列出了怎么用net.minecraftforge.fml.common.Optional.Method的API类实例代码及写法,或者点击链接到github查看源代码。
@Method(modid = GTValues.MODID_FR)
private boolean processButterflyCatch(ItemStack itemStack, EntityPlayer player, Entity entity) {
if (entity instanceof IEntityButterfly) {
if (player.world.isRemote) {
return true;
}
if (player.capabilities.isCreativeMode || GTUtility.doDamageItem(itemStack, this.cost, false)) {
IEntityButterfly butterfly = (IEntityButterfly) entity;
IAlleleButterflySpecies species = butterfly.getButterfly().getGenome().getPrimary();
species.getRoot().getBreedingTracker(entity.world, player.getGameProfile()).registerCatch(butterfly.getButterfly());
player.world.spawnEntity(new EntityItem(player.world, entity.posX, entity.posY, entity.posZ,
species.getRoot().getMemberStack(butterfly.getButterfly().copy(), EnumFlutterType.BUTTERFLY)));
entity.setDead();
}
return true;
}
return false;
}
@Method(modid = "crafttweaker")
public static void doDelayTask()
{
for (IAction act : actions)
{
CraftTweakerAPI.apply(act);
if (act.describe() != null)
{
TofuMain.logger.log(Level.INFO, act.describe());
}
}
actions.clear();
}
@SubscribeEvent
@Method(modid = "immersiveengineering")
public static void registerRecipe(RegistryEvent.Register<IRecipe> event) {
CokeOvenRecipe.addRecipe(new ItemStack(BlockLoader.BAMBOO_CHARCOAL_BLOCK), new ItemStack(BlockLoader.BAMBOO_BLOCK), 3200, 2000);
CokeOvenRecipe.addRecipe(new ItemStack(ItemLoader.MATERIAL, 1,51), new ItemStack(BlockLoader.BAMBOO, 1), 800, 500);
BlastFurnaceRecipe.addBlastFuel(new ItemStack(ItemLoader.MATERIAL, 1,51), 500);
BlastFurnaceRecipe.addBlastFuel(new ItemStack(BlockLoader.BAMBOO_CHARCOAL_BLOCK), 2500);
}
@Method(modid = "crafttweaker")
public static void doDelayTask() {
for (IAction act : actions) {
CraftTweakerAPI.apply(act);
if (act.describe() != null)
SakuraMain.logger.log(Level.INFO, act.describe());
}
actions.clear();
}
@ZenMethod("findRecipe")
@Method(modid = GTValues.MODID_CT)
@Nullable
public CTRecipe ctFindRecipe(long maxVoltage, IItemStack[] itemInputs, ILiquidStack[] fluidInputs, @Optional(valueLong = Integer.MAX_VALUE) int outputFluidTankCapacity) {
List<ItemStack> mcItemInputs = itemInputs == null ? Collections.emptyList() :
Arrays.stream(itemInputs)
.map(CraftTweakerMC::getItemStack)
.collect(Collectors.toList());
List<FluidStack> mcFluidInputs = fluidInputs == null ? Collections.emptyList() :
Arrays.stream(fluidInputs)
.map(CraftTweakerMC::getLiquidStack)
.collect(Collectors.toList());
Recipe backingRecipe = findRecipe(maxVoltage, mcItemInputs, mcFluidInputs, outputFluidTankCapacity);
return backingRecipe == null ? null : new CTRecipe(this, backingRecipe);
}
@ZenGetter("recipes")
@Method(modid = GTValues.MODID_CT)
public List<CTRecipe> ccGetRecipeList() {
return getRecipeList().stream()
.map(recipe -> new CTRecipe(this, recipe))
.collect(Collectors.toList());
}
@ZenGetter("blacklist")
@Method(modid = GTValues.MODID_CT)
public List<crafttweaker.api.block.IBlockState> ctGetBlacklist() {
return blacklist.stream()
.map(CraftTweakerMC::getBlockState)
.collect(Collectors.toList());
}
@ZenMethod("getBiomeWeightModifier")
@Method(modid = GTValues.MODID_CT)
public int ctGetBiomeWeightModifier(IBiome biome) {
int biomeIndex = ArrayUtils.indexOf(CraftTweakerMC.biomes, biome);
Biome mcBiome = Biome.REGISTRY.getObjectById(biomeIndex);
return mcBiome == null ? 0 : getBiomeWeightModifier().apply(mcBiome);
}
@ZenMethod
@Method(modid = GTValues.MODID_CT)
public void generate(long randomSeed, IWorld world, IBlockPos centerPos, IBlockState blockState) {
World mcWorld = CraftTweakerMC.getWorld(world);
net.minecraft.block.state.IBlockState mcBlockState = CraftTweakerMC.getBlockState(blockState);
BlockPos blockPos = CraftTweakerMC.getBlockPos(centerPos);
generate(new Random(randomSeed), (x, y, z) -> mcWorld.setBlockState(blockPos, mcBlockState));
}
@ZenGetter("fluid")
@Method(modid = GTValues.MODID_CT)
@Nullable
public ILiquidDefinition ctGetFluid() {
Fluid materialFluid = getMaterialFluid();
return materialFluid == null ? null : CraftTweakerMC.getILiquidDefinition(materialFluid);
}
@ZenGetter("plasma")
@Method(modid = GTValues.MODID_CT)
@Nullable
public ILiquidDefinition ctGetPlasma() {
Fluid materialFluid = getMaterialPlasma();
return materialFluid == null ? null : CraftTweakerMC.getILiquidDefinition(materialFluid);
}
@Method(modid = GTValues.MODID_FMP)
private static void removeMultipartPipePartFromTile(TileEntity tileEntity) {
if (tileEntity instanceof TileMultipart) {
TileMultipart tileMultipart = (TileMultipart) tileEntity;
List<TMultiPart> partList = tileMultipart.jPartList();
for (TMultiPart tMultiPart : partList) {
if (tMultiPart instanceof IPipeTile) {
tileMultipart.remPart(tMultiPart);
}
}
}
}
@ZenGetter("input")
@Method(modid = GTValues.MODID_CT)
public InputIngredient ctGetInput() {
return new InputIngredient(getInput());
}
@ZenGetter("output")
@Method(modid = GTValues.MODID_CT)
public IItemStack ctGetOutput() {
return CraftTweakerMC.getIItemStack(getOutput());
}
@ZenMethod("create")
@Method(modid = GTValues.MODID_CT)
public static FuelRecipe craftTweakerCreate(ILiquidStack liquidStack, int duration, long minVoltage) {
return new FuelRecipe(CraftTweakerMC.getLiquidStack(liquidStack), duration, minVoltage);
}
@ZenGetter("fluid")
@Method(modid = GTValues.MODID_CT)
public ILiquidStack ctGetFluid() {
return new MCLiquidStack(getRecipeFluid());
}
@ZenGetter("input")
@Method(modid = GTValues.MODID_CT)
public InputIngredient ctGetInput() {
return new InputIngredient(getInput());
}
@ZenGetter("output")
@Method(modid = GTValues.MODID_CT)
public IItemStack ctGetOutput() {
return CraftTweakerMC.getIItemStack(getOutput());
}
@ZenGetter("fluidOutput")
@Method(modid = GTValues.MODID_CT)
public ILiquidStack ctGetLiquidOutput() {
return new MCLiquidStack(getFluidOutput());
}
@ZenMethod("recipeBuilder")
@Method(modid = GTValues.MODID_CT)
public CTRecipeBuilder ctRecipeBuilder() {
return new CTRecipeBuilder(recipeBuilder());
}
@ZenMethod
@Method(modid = GTValues.MODID_CT)
public PBFRecipeBuilder input(IIngredient ingredient) {
return input(new CraftTweakerIngredientWrapper(ingredient), ingredient.getAmount());
}
@ZenMethod
@Method(modid = GTValues.MODID_CT)
public PBFRecipeBuilder output(IItemStack itemStack) {
return output(CraftTweakerMC.getItemStack(itemStack));
}
@ZenMethod
@Method(modid = GTValues.MODID_CT)
public CokeOvenRecipeBuilder input(IIngredient ingredient) {
return input(new CraftTweakerIngredientWrapper(ingredient), ingredient.getAmount());
}
@ZenMethod
@Method(modid = GTValues.MODID_CT)
public CokeOvenRecipeBuilder fluidOutput(ILiquidStack liquidStack) {
return fluidOutput(CraftTweakerMC.getLiquidStack(liquidStack));
}
@ZenMethod
@Method(modid = GTValues.MODID_CT)
public CokeOvenRecipeBuilder output(IItemStack itemStack) {
return output(CraftTweakerMC.getItemStack(itemStack));
}
@ZenMethod("findRecipe")
@Method(modid = GTValues.MODID_CT)
public FuelRecipe ctFindRecipe(long maxVoltage, ILiquidStack inputFluid) {
return findRecipe(maxVoltage, CraftTweakerMC.getLiquidStack(inputFluid));
}
@ZenGetter("enchantment")
@Method(modid = GTValues.MODID_CT)
public IEnchantmentDefinition ctGetEnchantment() {
return new MCEnchantmentDefinition(enchantment);
}
@ZenMethod("checkDimension")
@Method(modid = GTValues.MODID_CT)
public boolean ctCheckDimension(int dimensionId) {
WorldProvider worldProvider = DimensionManager.getProvider(dimensionId);
return worldProvider != null && getDimensionFilter().test(worldProvider);
}
@ZenMethod("canGenerateIn")
@Method(modid = GTValues.MODID_CT)
public boolean ctCanGenerateIn(crafttweaker.api.block.IBlockState blockState, crafttweaker.api.world.IBlockAccess blockAccess, crafttweaker.api.world.IBlockPos blockPos) {
IBlockState mcBlockState = CraftTweakerMC.getBlockState(blockState);
return getGenerationPredicate().test(mcBlockState, (IBlockAccess) blockAccess.getInternal(), (BlockPos) blockPos.getInternal());
}
@ZenMethod("addToolEnchantment")
@Method(modid = GTValues.MODID_CT)
public void ctAddEnchantmentForTools(IEnchantment enchantment) {
Enchantment enchantmentType = (Enchantment) enchantment.getDefinition().getInternal();
toolEnchantments.add(new EnchantmentData(enchantmentType, enchantment.getLevel()));
}