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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
package me.shedaniel.rei.plugin;
import com.google.common.collect.Lists;
import me.shedaniel.rei.api.*;
import me.shedaniel.rei.client.ConfigHelper;
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.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
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.registry.IRegistry;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class DefaultPlugin implements IRecipePlugin {
static final Identifier CRAFTING = new Identifier("roughlyenoughitems", "plugins/crafting");
static final Identifier SMELTING = new Identifier("roughlyenoughitems", "plugins/smelting");
static final Identifier BREWING = new Identifier("roughlyenoughitems", "plugins/brewing");
static final List<DefaultBrewingDisplay> BREWING_DISPLAYS = Lists.newArrayList();
public static void registerBrewingDisplay(DefaultBrewingDisplay display) {
BREWING_DISPLAYS.add(display);
}
@Override
public void onFirstLoad(IPluginDisabler pluginDisabler) {
if (!ConfigHelper.getInstance().isLoadingDefaultPlugin()) {
pluginDisabler.disablePluginFunction(new Identifier("roughlyenoughitems", "default_plugin"), PluginFunction.REGISTER_ITEMS);
pluginDisabler.disablePluginFunction(new Identifier("roughlyenoughitems", "default_plugin"), PluginFunction.REGISTER_CATEGORIES);
pluginDisabler.disablePluginFunction(new Identifier("roughlyenoughitems", "default_plugin"), PluginFunction.REGISTER_RECIPE_DISPLAYS);
pluginDisabler.disablePluginFunction(new Identifier("roughlyenoughitems", "default_plugin"), PluginFunction.REGISTER_SPEED_CRAFT);
}
}
@Override
public void registerItems(IItemRegisterer itemRegisterer) {
IRegistry.ITEM.stream().forEach(item -> {
itemRegisterer.registerItemStack(item.getDefaultInstance());
try {
itemRegisterer.registerItemStack(itemRegisterer.getAllStacksFromItem(item));
} catch (Exception e) {
}
});
IRegistry.ENCHANTMENT.forEach(enchantment -> {
for(int i = enchantment.getMinLevel(); i < enchantment.getMaxLevel(); i++) {
Map<Enchantment, Integer> map = new HashMap<>();
map.put(enchantment, i);
ItemStack itemStack = new ItemStack(Items.ENCHANTED_BOOK);
EnchantmentHelper.setEnchantments(map, itemStack);
itemRegisterer.registerItemStack(Items.ENCHANTED_BOOK, itemStack);
}
});
}
@Override
public void registerPluginCategories(RecipeHelper recipeHelper) {
recipeHelper.registerCategory(new DefaultCraftingCategory());
recipeHelper.registerCategory(new DefaultSmeltingCategory());
recipeHelper.registerCategory(new DefaultBrewingCategory());
}
@Override
public void registerRecipeDisplays(RecipeHelper recipeHelper) {
for(IRecipe value : recipeHelper.getRecipeManager().getRecipes())
if (value instanceof ShapelessRecipe)
recipeHelper.registerDisplay(CRAFTING, new DefaultShapelessDisplay((ShapelessRecipe) value));
else if (value instanceof ShapedRecipe)
recipeHelper.registerDisplay(CRAFTING, new DefaultShapedDisplay((ShapedRecipe) value));
else if (value instanceof FurnaceRecipe)
recipeHelper.registerDisplay(SMELTING, new DefaultSmeltingDisplay((FurnaceRecipe) value));
BREWING_DISPLAYS.forEach(display -> recipeHelper.registerDisplay(BREWING, display));
}
@Override
public void registerSpeedCraft(RecipeHelper recipeHelper) {
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;
}
}
|