1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
package me.shedaniel.rei.plugin;
import com.google.common.collect.Lists;
import me.shedaniel.rei.api.IRecipePlugin;
import me.shedaniel.rei.api.SpeedCraftFunctional;
import me.shedaniel.rei.client.RecipeHelper;
import me.shedaniel.rei.listeners.IMixinRecipeBookGui;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.inventory.GuiCrafting;
import net.minecraft.client.gui.inventory.GuiFurnace;
import net.minecraft.client.gui.inventory.GuiInventory;
import net.minecraft.item.crafting.FurnaceRecipe;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.item.crafting.ShapedRecipe;
import net.minecraft.item.crafting.ShapelessRecipe;
import net.minecraft.util.ResourceLocation;
import java.util.List;
public class DefaultPlugin implements IRecipePlugin {
static final ResourceLocation CRAFTING = new ResourceLocation("roughlyenoughitems", "plugins/crafting");
static final ResourceLocation SMELTING = new ResourceLocation("roughlyenoughitems", "plugins/smelting");
static final ResourceLocation BREWING = new ResourceLocation("roughlyenoughitems", "plugins/brewing");
static final List<DefaultBrewingDisplay> BREWING_DISPLAYS = Lists.newArrayList();
public static void registerBrewingDisplay(DefaultBrewingDisplay display) {
BREWING_DISPLAYS.add(display);
}
@Override
public void registerPluginCategories() {
RecipeHelper.registerCategory(new DefaultCraftingCategory());
RecipeHelper.registerCategory(new DefaultSmeltingCategory());
RecipeHelper.registerCategory(new DefaultBrewingCategory());
}
@Override
public void registerRecipes() {
for(IRecipe value : RecipeHelper.getRecipeManager().getRecipes())
if (value instanceof ShapelessRecipe)
RecipeHelper.registerRecipe(CRAFTING, new DefaultShapelessDisplay((ShapelessRecipe) value));
else if (value instanceof ShapedRecipe)
RecipeHelper.registerRecipe(CRAFTING, new DefaultShapedDisplay((ShapedRecipe) value));
else if (value instanceof FurnaceRecipe)
RecipeHelper.registerRecipe(SMELTING, new DefaultSmeltingDisplay((FurnaceRecipe) value));
BREWING_DISPLAYS.forEach(display -> RecipeHelper.registerRecipe(BREWING, display));
}
@Override
public void registerSpeedCraft() {
RecipeHelper.registerSpeedCraftButtonArea(DefaultPlugin.BREWING, null);
RecipeHelper.registerSpeedCraftFunctional(DefaultPlugin.CRAFTING, new SpeedCraftFunctional<DefaultCraftingDisplay>() {
@Override
public Class[] getFunctioningFor() {
return new Class[]{GuiInventory.class, GuiCrafting.class};
}
@Override
public boolean performAutoCraft(Gui gui, DefaultCraftingDisplay recipe) {
if (gui.getClass().isAssignableFrom(GuiCrafting.class))
((IMixinRecipeBookGui) (((GuiCrafting) gui).func_194310_f())).getGhostRecipe().clear();
else if (gui.getClass().isAssignableFrom(GuiInventory.class))
((IMixinRecipeBookGui) (((GuiInventory) gui).func_194310_f())).getGhostRecipe().clear();
else return false;
Minecraft.getInstance().playerController.func_203413_a(Minecraft.getInstance().player.openContainer.windowId, recipe.getRecipe(), GuiScreen.isShiftKeyDown());
return true;
}
@Override
public boolean acceptRecipe(Gui gui, DefaultCraftingDisplay recipe) {
return gui instanceof GuiCrafting || (gui instanceof GuiInventory && recipe.getHeight() < 3 && recipe.getWidth() < 3);
}
});
RecipeHelper.registerSpeedCraftFunctional(DefaultPlugin.SMELTING, new SpeedCraftFunctional<DefaultSmeltingDisplay>() {
@Override
public Class[] getFunctioningFor() {
return new Class[]{GuiFurnace.class};
}
@Override
public boolean performAutoCraft(Gui gui, DefaultSmeltingDisplay recipe) {
if (gui instanceof GuiFurnace)
((IMixinRecipeBookGui) (((GuiFurnace) gui).func_194310_f())).getGhostRecipe().clear();
else return false;
Minecraft.getInstance().playerController.func_203413_a(Minecraft.getInstance().player.openContainer.windowId, recipe.getRecipe(), GuiScreen.isShiftKeyDown());
return true;
}
@Override
public boolean acceptRecipe(Gui gui, DefaultSmeltingDisplay recipe) {
return gui instanceof GuiFurnace;
}
});
}
@Override
public int getPriority() {
return -1;
}
}
|