Ray_Hughes
详细使用方法:
https://shimo.im/docs/2wAlXL71R5SwWBAP


简单使用方法:
下载Artifex把文件放到scripts即可
  1. @file:Import("Slimefun:io.github.thebusybiscuit.slimefun4")
  2. @file:Import("Slimefun:me.mrCookieSlime")
  3. @file:Import("RaySlimefunAddon:ray.mintcat.rayslimefunaddon")

  4. object API {
  5.     val mainGroup = {
  6.         val categoryId = NamespacedKey("testmain", "test_main")
  7.         val categoryItem = CustomItemStack(Material.APPLE, "&f测试脚本")
  8.         NestedItemGroup(categoryId, categoryItem)
  9.     }.invoke()
  10.     val itemGroup = {
  11.         val categoryId = NamespacedKey("testmain", "test_block")
  12.         val categoryItem = CustomItemStack(Material.GLASS, "&e物品")
  13.         SubItemGroup(categoryId, mainGroup, categoryItem)
  14.     }.invoke()
  15. }

  16. class TestGoldPan constructor(
  17.     itemGroup: ItemGroup,
  18.     item: SlimefunItemStack,
  19.     recipeType: RecipeType,
  20.     recipe: Array<ItemStack?>
  21. ) : AContainer(itemGroup, item, recipeType, recipe), RecipeDisplayItem {
  22.     private val goldPan = SlimefunItems.GOLD_PAN.getItem(GoldPan::class.java)
  23.     private val netherGoldPan = SlimefunItems.NETHER_GOLD_PAN.getItem(GoldPan::class.java)
  24.     private val gravel = ItemStack(Material.GRAVEL)
  25.     private val soulSand = ItemStack(Material.SOUL_SAND)

  26.     override fun getMachineIdentifier(): String {
  27.         return "TEST_GOLD_PAN"
  28.     }

  29.     override fun getDisplayRecipes(): List<ItemStack> {
  30.         val recipes: MutableList<ItemStack> = java.util.ArrayList()
  31.         recipes.addAll(goldPan!!.displayRecipes)
  32.         recipes.addAll(netherGoldPan!!.displayRecipes)
  33.         return recipes
  34.     }

  35.     override fun getProgressBar(): ItemStack {
  36.         return ItemStack(Material.DIAMOND_SHOVEL)
  37.     }

  38.     override fun findNextRecipe(menu: BlockMenu): MachineRecipe? {
  39.         if (!hasFreeSlot(menu)) {
  40.             return null
  41.         }
  42.         for (slot in inputSlots) {
  43.             val item = menu.getItemInSlot(slot)
  44.             if (SlimefunUtils.isItemSimilar(item, gravel, true, false)) {
  45.                 val output = goldPan!!.randomOutput
  46.                 val recipe = MachineRecipe(3 / speed, arrayOf(gravel), arrayOf(output))
  47.                 if (output.type != Material.AIR && menu.fits(output, *outputSlots)) {
  48.                     menu.consumeItem(slot)
  49.                     return recipe
  50.                 }
  51.             } else if (SlimefunUtils.isItemSimilar(item, soulSand, true, false)) {
  52.                 val output = netherGoldPan!!.randomOutput
  53.                 val recipe = MachineRecipe(4 / speed, arrayOf(soulSand), arrayOf(output))
  54.                 if (output.type != Material.AIR && menu.fits(output, *outputSlots)) {
  55.                     menu.consumeItem(slot)
  56.                     return recipe
  57.                 }
  58.             }
  59.         }
  60.         return null
  61.     }

  62.     private fun hasFreeSlot(menu: BlockMenu): Boolean {
  63.         for (slot in outputSlots) {
  64.             if (menu.getItemInSlot(slot) == null) {
  65.                 return true
  66.             }
  67.         }
  68.         return false
  69.     }
  70. }

  71. object TestGoldPanAPI {
  72.     fun register() {
  73.         AddonAPI.register(
  74.             TestGoldPan(
  75.                 API.itemGroup,
  76.                 SlimefunItemStack("TEST_GOLD_PAN", Material.STONE, "测试电动淘金盘"),
  77.                 RecipeType.ENHANCED_CRAFTING_TABLE,
  78.                 arrayOf(
  79.                     null, SlimefunItems.GOLD_PAN, null,
  80.                     ItemStack(Material.FLINT), SlimefunItems.ELECTRIC_MOTOR, ItemStack(Material.FLINT),
  81.                     SlimefunItems.ALUMINUM_INGOT, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.ALUMINUM_INGOT
  82.                 )
  83.             ).apply {
  84.                 capacity = 128
  85.                 setProcessingSpeed(1)
  86.                 setEnergyProduction(10)
  87.             }
  88.         )
  89.     }
  90. }

  91. submit(delay = 20) {
  92.     TestGoldPanAPI.register()
  93. }
复制代码



文件版本:http://cc.csor.cn:1150/d/%E5%BC% ... 4%E6%BA%90/Test.kts