Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 8ae9cae

Browse files
committedJul 15, 2016
Added Manual usage handler for JEI.
1 parent a06dbdb commit 8ae9cae

File tree

3 files changed

+70
-12
lines changed

3 files changed

+70
-12
lines changed
 

‎src/main/scala/li/cil/oc/OpenComputers.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import org.apache.logging.log4j.Logger
1414

1515
@Mod(modid = OpenComputers.ID, name = OpenComputers.Name,
1616
version = OpenComputers.Version,
17-
modLanguage = "scala", useMetadata = true, acceptedMinecraftVersions = "[@MCVERSION@,@MCVERSION@+)")
17+
modLanguage = "scala", useMetadata = true)
1818
object OpenComputers {
1919
final val ID = "OpenComputers"
2020

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package li.cil.oc.integration.jei
2+
3+
import java.util
4+
import javax.annotation.Nonnull
5+
6+
import li.cil.oc.Localization
7+
import li.cil.oc.api
8+
import mezz.jei.api.IItemRegistry
9+
import mezz.jei.api.recipe.BlankRecipeWrapper
10+
import mezz.jei.api.recipe.IRecipeHandler
11+
import mezz.jei.api.recipe.VanillaRecipeCategoryUid
12+
import net.minecraft.client.Minecraft
13+
import net.minecraft.item.ItemStack
14+
import net.minecraftforge.fml.client.config.GuiButtonExt
15+
16+
import scala.collection.convert.WrapAsJava._
17+
import scala.collection.convert.WrapAsScala._
18+
19+
object ManualUsageHandler {
20+
21+
def getRecipes(registry: IItemRegistry): util.List[_] = registry.getItemList.collect {
22+
case stack: ItemStack => api.Manual.pathFor(stack) match {
23+
case s: String => new ManualUsageRecipe(stack, s)
24+
case _ =>
25+
}
26+
}
27+
28+
object ManualUsageRecipeHandler extends IRecipeHandler[ManualUsageRecipe] {
29+
override def getRecipeWrapper(recipe: ManualUsageRecipe) = recipe
30+
31+
override def getRecipeCategoryUid = VanillaRecipeCategoryUid.DESCRIPTION
32+
33+
override def isRecipeValid(recipe: ManualUsageRecipe) = true
34+
35+
override def getRecipeClass = classOf[ManualUsageRecipe]
36+
}
37+
38+
class ManualUsageRecipe(stack: ItemStack, path: String) extends BlankRecipeWrapper {
39+
lazy val button = new GuiButtonExt(0, (160 - 100) / 2, 10, 100, 20, Localization.localizeImmediately("nei.usage.oc.Manual"))
40+
41+
override def getInputs: util.List[_] = List(stack)
42+
43+
override def drawInfo(@Nonnull minecraft: Minecraft, recipeWidth: Int, recipeHeight: Int, mouseX: Int, mouseY: Int): Unit = {
44+
button.displayString = Localization.localizeImmediately("nei.usage.oc.Manual")
45+
button.xPosition = (recipeWidth - button.width) / 2
46+
button.yPosition = button.height / 2
47+
button.drawButton(minecraft, mouseX, mouseY)
48+
}
49+
50+
override def handleClick(@Nonnull minecraft: Minecraft, mouseX: Int, mouseY: Int, mouseButton: Int): Boolean = {
51+
if (button.mousePressed(minecraft, mouseX, mouseY)) {
52+
minecraft.thePlayer.closeScreen()
53+
api.Manual.openFor(minecraft.thePlayer)
54+
api.Manual.navigate(path)
55+
true
56+
}
57+
else false
58+
}
59+
}
60+
61+
}

‎src/main/scala/li/cil/oc/integration/jei/ModPluginOpenComputers.scala

+8-11
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,19 @@ package li.cil.oc.integration.jei
22

33
import java.util
44

5-
import li.cil.oc.Constants
6-
import li.cil.oc.Settings
7-
import li.cil.oc.api
85
import li.cil.oc.common.Loot
96
import li.cil.oc.common.recipe.LootDiskCyclingRecipe
7+
import li.cil.oc.integration.jei.ManualUsageHandler.ManualUsageRecipeHandler
108
import li.cil.oc.integration.util.ItemBlacklist
11-
import mezz.jei.api.IItemRegistry
12-
import mezz.jei.api.IJeiHelpers
13-
import mezz.jei.api.IJeiRuntime
14-
import mezz.jei.api.IModPlugin
15-
import mezz.jei.api.IModRegistry
16-
import mezz.jei.api.IRecipeRegistry
17-
import mezz.jei.api.JEIPlugin
9+
import li.cil.oc.Constants
10+
import li.cil.oc.Settings
11+
import li.cil.oc.api
12+
import mezz.jei.api._
13+
import mezz.jei.api.recipe.wrapper.ICraftingRecipeWrapper
1814
import mezz.jei.api.recipe.BlankRecipeWrapper
1915
import mezz.jei.api.recipe.IRecipeHandler
2016
import mezz.jei.api.recipe.IRecipeWrapper
2117
import mezz.jei.api.recipe.VanillaRecipeCategoryUid
22-
import mezz.jei.api.recipe.wrapper.ICraftingRecipeWrapper
2318
import net.minecraft.item.ItemStack
2419

2520
import scala.collection.convert.WrapAsJava._
@@ -37,6 +32,8 @@ class ModPluginOpenComputers extends IModPlugin {
3732
if (Settings.get.lootRecrafting) {
3833
registry.addRecipeHandlers(LootDiskCyclingRecipeHandler)
3934
}
35+
registry.addRecipeHandlers(ManualUsageRecipeHandler)
36+
registry.addRecipes(ManualUsageHandler.getRecipes(registry.getItemRegistry))
4037
}
4138

4239
override def onRecipeRegistryAvailable(recipeRegistry: IRecipeRegistry): Unit = {

0 commit comments

Comments
 (0)
Please sign in to comment.