@ZenMethod public static void attuneItem( IIngredient itemStack ) { attune( itemStack, TunnelType.ITEM ); }
@ZenMethod public static void attuneRedstone( String modId ) { attune( modId, TunnelType.REDSTONE ); }
@ZenMethod public static void attuneIC2( String modId ) { attune( modId, TunnelType.IC2_POWER ); }
@ZenMethod public static void attuneLight( IIngredient itemStack ) { attune( itemStack, TunnelType.LIGHT ); }
@ZenMethod public static void attuneRedstone( IIngredient itemStack ) { attune( itemStack, TunnelType.REDSTONE ); }
@ZenMethod public static void attuneRF( String modId ) { attune( modId, TunnelType.FE_POWER ); }
@ZenMethod public static void attuneME( IIngredient itemStack ) { attune( itemStack, TunnelType.ME ); }
@ZenMethod public static void attuneFluid( IIngredient itemStack ) { attune( itemStack, TunnelType.FLUID ); }
@ZenMethod public static void attuneFluid( String modId ) { attune( modId, TunnelType.FLUID ); }
@ZenMethod public static void attuneIC2( IIngredient itemStack ) { attune( itemStack, TunnelType.IC2_POWER ); }
@ZenMethod public static void attuneRF( IIngredient itemStack ) { attune( itemStack, TunnelType.FE_POWER ); }
@ZenMethod public static void attuneME( String modId ) { attune( modId, TunnelType.ME ); }
@ZenMethod public static void attuneItem( String modId ) { attune( modId, TunnelType.ITEM ); }
@ZenMethod public static void attuneLight( String modId ) { attune( modId, TunnelType.LIGHT ); }
@ZenMethod public static void removeRecipe( IIngredient input ) { for( ItemStack inStack : CTModule.toStacks( input ).orElse( Collections.emptySet() ) ) { CTModule.MODIFICATIONS.add( new Remove( inStack ) ); } }
@ZenMethod public static void removeRecipe( IItemStack output ) { CTModule.MODIFICATIONS.add( new Remove( (ItemStack) output.getInternal() ) ); }
@ZenMethod public static void registerAmmo( IIngredient itemStack, double weight ) { IMatterCannonAmmoRegistry registry = AEApi.instance().registries().matterCannon(); CTModule.toStacks( itemStack ).ifPresent( c -> c.forEach( i -> registry.registerAmmo( i, weight ) ) ); } }
@ZenMethod public static void whitelistEntity( String entityClassName ) { Class<? extends TileEntity> entityClass = loadClass( entityClassName ); if( entityClass != null ) { AEApi.instance().registries().movable().whiteListTileEntity( entityClass ); } }
@ZenMethod public static void addRecipe( IItemStack output, IIngredient input, boolean inscribe, @stanhebben.zenscript.annotations.Optional IIngredient top, @stanhebben.zenscript.annotations.Optional IIngredient bottom ) { Optional<Collection<ItemStack>> inStacks = CTModule.toStacks( input ); if( !inStacks.isPresent() ) { return; } Collection<ItemStack> topList = CTModule.toStacks( top ).orElse( Collections.singleton( ItemStack.EMPTY ) ); Collection<ItemStack> bottomList = CTModule.toStacks( bottom ).orElse( Collections.singleton( ItemStack.EMPTY ) ); for( ItemStack topStack : topList ) { for( ItemStack bottomStack : bottomList ) { final IInscriberRecipeBuilder builder = AEApi.instance().registries().inscriber().builder(); builder.withProcessType( inscribe ? InscriberProcessType.INSCRIBE : InscriberProcessType.PRESS ) .withOutput( CTModule.toStack( output ) ) .withInputs( inStacks.get() ); if( !topStack.isEmpty() ) { builder.withTopOptional( topStack ); } if( !bottomStack.isEmpty() ) { builder.withBottomOptional( bottomStack ); } CTModule.MODIFICATIONS.add( new Add( builder.build() ) ); } } }
@ZenMethod public static void addRecipe( IItemStack output, IIngredient input, int turns, @stanhebben.zenscript.annotations.Optional IItemStack secondary1Output, @stanhebben.zenscript.annotations.Optional Float secondary1Chance, @stanhebben.zenscript.annotations.Optional IItemStack secondary2Output, @stanhebben.zenscript.annotations.Optional Float secondary2Chance ) { Collection<ItemStack> inStacks = CTModule.toStacks( input ).orElse( Collections.emptySet() ); for( ItemStack inStack : inStacks ) { IGrinderRecipeBuilder builder = AEApi.instance().registries().grinder().builder(); builder.withInput( inStack ) .withOutput( CTModule.toStack( output ) ) .withTurns( turns ); final ItemStack s1 = CTModule.toStack( secondary1Output ); if( !s1.isEmpty() ) { builder.withFirstOptional( s1, secondary1Chance == null ? 1.0f : secondary1Chance ); } final ItemStack s2 = CTModule.toStack( secondary2Output ); if( !s2.isEmpty() ) { builder.withFirstOptional( s2, secondary2Chance == null ? 1.0f : secondary2Chance ); } CTModule.MODIFICATIONS.add( new Add( builder.build() ) ); } }