aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me
diff options
context:
space:
mode:
authorUnknown <shekwancheung0528@gmail.com>2019-01-08 18:23:00 +0800
committerUnknown <shekwancheung0528@gmail.com>2019-01-08 18:23:00 +0800
commit4c175cf8a0f02dc3c4ef4e0c92eaa54f4e0bafd5 (patch)
tree468a1d03c3a7295b43f28e71b84856a512e72b3f /src/main/java/me
parenteea47c59b58b000e0a3d329102c7a26c67e37039 (diff)
downloadRoughlyEnoughItems-4c175cf8a0f02dc3c4ef4e0c92eaa54f4e0bafd5.tar.gz
RoughlyEnoughItems-4c175cf8a0f02dc3c4ef4e0c92eaa54f4e0bafd5.tar.bz2
RoughlyEnoughItems-4c175cf8a0f02dc3c4ef4e0c92eaa54f4e0bafd5.zip
Craftable Only WIP
Diffstat (limited to 'src/main/java/me')
-rwxr-xr-xsrc/main/java/me/shedaniel/Core.java7
-rwxr-xr-xsrc/main/java/me/shedaniel/api/IDisplayCategory.java1
-rw-r--r--src/main/java/me/shedaniel/api/IDisplayCategoryCraftable.java (renamed from src/main/java/me/shedaniel/api/DisplayCategoryCraftable.java)2
-rwxr-xr-xsrc/main/java/me/shedaniel/api/IDisplayHelper.java7
-rwxr-xr-xsrc/main/java/me/shedaniel/api/IDrawable.java4
-rwxr-xr-xsrc/main/java/me/shedaniel/api/IRecipe.java4
-rwxr-xr-xsrc/main/java/me/shedaniel/api/IRecipeManager.java1
-rwxr-xr-xsrc/main/java/me/shedaniel/api/TriBooleanSupplier.java (renamed from src/main/java/me/shedaniel/api/TriBooleanProducer.java)2
-rw-r--r--src/main/java/me/shedaniel/config/REIConfig.java3
-rw-r--r--src/main/java/me/shedaniel/config/REIItemListOrdering.java1
-rw-r--r--src/main/java/me/shedaniel/config/REIRuntimeConfig.java8
-rw-r--r--src/main/java/me/shedaniel/gui/ConfigGui.java29
-rwxr-xr-xsrc/main/java/me/shedaniel/gui/Drawable.java2
-rwxr-xr-xsrc/main/java/me/shedaniel/gui/GuiItemList.java74
-rwxr-xr-xsrc/main/java/me/shedaniel/gui/REIRenderHelper.java6
-rwxr-xr-xsrc/main/java/me/shedaniel/gui/RecipeGui.java11
-rw-r--r--src/main/java/me/shedaniel/gui/SearchArgument.java1
-rwxr-xr-xsrc/main/java/me/shedaniel/gui/widget/Button.java2
-rwxr-xr-xsrc/main/java/me/shedaniel/gui/widget/Control.java6
-rwxr-xr-xsrc/main/java/me/shedaniel/gui/widget/IFocusable.java2
-rwxr-xr-xsrc/main/java/me/shedaniel/gui/widget/REISlot.java1
-rwxr-xr-xsrc/main/java/me/shedaniel/gui/widget/TextBox.java1
-rwxr-xr-xsrc/main/java/me/shedaniel/gui/widget/WidgetArrow.java2
-rwxr-xr-xsrc/main/java/me/shedaniel/impl/REIRecipeManager.java56
-rw-r--r--src/main/java/me/shedaniel/library/KeyBindFunction.java1
-rwxr-xr-xsrc/main/java/me/shedaniel/library/Sink.java2
-rwxr-xr-xsrc/main/java/me/shedaniel/listenerdefinitions/CharInput.java1
-rw-r--r--src/main/java/me/shedaniel/listenerdefinitions/ClientTickable.java2
-rwxr-xr-xsrc/main/java/me/shedaniel/listenerdefinitions/DoneLoading.java2
-rwxr-xr-xsrc/main/java/me/shedaniel/listenerdefinitions/DrawContainer.java2
-rwxr-xr-xsrc/main/java/me/shedaniel/listenerdefinitions/GuiClick.java (renamed from src/main/java/me/shedaniel/listenerdefinitions/GuiCickListener.java)4
-rwxr-xr-xsrc/main/java/me/shedaniel/listenerdefinitions/GuiKeyDown.java1
-rwxr-xr-xsrc/main/java/me/shedaniel/listenerdefinitions/GuiMouseScroll.java (renamed from src/main/java/me/shedaniel/listenerdefinitions/MouseScrollListener.java)4
-rwxr-xr-xsrc/main/java/me/shedaniel/listenerdefinitions/IMixinContainerGui.java2
-rw-r--r--src/main/java/me/shedaniel/listenerdefinitions/KeybindHandler.java7
-rwxr-xr-xsrc/main/java/me/shedaniel/listenerdefinitions/MinecraftResize.java2
-rw-r--r--src/main/java/me/shedaniel/listenerdefinitions/PotionCraftingAdder.java2
-rwxr-xr-xsrc/main/java/me/shedaniel/listenerdefinitions/RecipeLoadListener.java2
-rwxr-xr-xsrc/main/java/me/shedaniel/listeners/DrawContainerListener.java3
-rwxr-xr-xsrc/main/java/me/shedaniel/mixins/MixinContainerGui.java26
-rw-r--r--src/main/java/me/shedaniel/mixins/MixinCreativePlayerInventoryGui.java18
-rwxr-xr-xsrc/main/java/me/shedaniel/mixins/MixinDoneLoading.java2
-rwxr-xr-xsrc/main/java/me/shedaniel/mixins/MixinKeyboardListener.java2
-rwxr-xr-xsrc/main/java/me/shedaniel/mixins/MixinRecipeManager.java1
-rw-r--r--src/main/java/me/shedaniel/plugin/RandomRecipe.java7
-rw-r--r--src/main/java/me/shedaniel/plugin/TestRandomCategory.java1
-rwxr-xr-xsrc/main/java/me/shedaniel/plugin/blastfurnace/VanillaBlastFurnaceCategory.java4
-rwxr-xr-xsrc/main/java/me/shedaniel/plugin/blastfurnace/VanillaBlastFurnaceRecipe.java12
-rwxr-xr-xsrc/main/java/me/shedaniel/plugin/crafting/VanillaCraftingCategory.java5
-rwxr-xr-xsrc/main/java/me/shedaniel/plugin/crafting/VanillaCraftingRecipe.java9
-rwxr-xr-xsrc/main/java/me/shedaniel/plugin/furnace/VanillaFurnaceCategory.java5
-rwxr-xr-xsrc/main/java/me/shedaniel/plugin/furnace/VanillaFurnaceRecipe.java9
-rwxr-xr-xsrc/main/java/me/shedaniel/plugin/potion/VanillaPotionRecipe.java8
-rwxr-xr-xsrc/main/java/me/shedaniel/plugin/smoker/VanillaSmokerCategory.java4
-rwxr-xr-xsrc/main/java/me/shedaniel/plugin/smoker/VanillaSmokerRecipe.java12
55 files changed, 289 insertions, 106 deletions
diff --git a/src/main/java/me/shedaniel/Core.java b/src/main/java/me/shedaniel/Core.java
index 498b0a43b..2cc74161b 100755
--- a/src/main/java/me/shedaniel/Core.java
+++ b/src/main/java/me/shedaniel/Core.java
@@ -1,6 +1,7 @@
package me.shedaniel;
import me.shedaniel.config.REIConfig;
+import me.shedaniel.config.REIRuntimeConfig;
import me.shedaniel.listenerdefinitions.ClientTickable;
import me.shedaniel.listenerdefinitions.IEvent;
import me.shedaniel.listeners.DrawContainerListener;
@@ -31,8 +32,8 @@ public class Core implements ClientModInitializer {
private static List<IEvent> events = new LinkedList<>();
public static final File configFile = new File(FabricLoader.INSTANCE.getConfigDirectory(), "rei.json");
public static REIConfig config;
+ public static REIRuntimeConfig runtimeConfig;
public static ClientListener clientListener;
- public static boolean centreSearchBox;
public static Logger LOGGER = LogManager.getFormatterLogger("REI");
@Override
@@ -42,7 +43,7 @@ public class Core implements ClientModInitializer {
registerFabricEvents();
try {
loadConfig();
- centreSearchBox = config.centreSearchBox;
+ runtimeConfig = new REIRuntimeConfig();
} catch (IOException e) {
e.printStackTrace();
}
@@ -52,6 +53,8 @@ public class Core implements ClientModInitializer {
private void registerFabricEvents() {
ClientTickEvent.CLIENT.register(minecraftClient -> {
getListeners(ClientTickable.class).forEach(ClientTickable::clientTick);
+ if (!Core.config.enableCraftableOnlyButton)
+ Core.runtimeConfig.craftableOnly = false;
});
}
diff --git a/src/main/java/me/shedaniel/api/IDisplayCategory.java b/src/main/java/me/shedaniel/api/IDisplayCategory.java
index 3e4c938cb..309a836ac 100755
--- a/src/main/java/me/shedaniel/api/IDisplayCategory.java
+++ b/src/main/java/me/shedaniel/api/IDisplayCategory.java
@@ -10,6 +10,7 @@ import java.util.List;
* Created by James on 8/7/2018.
*/
public interface IDisplayCategory<T extends IRecipe> {
+
public String getId();
public String getDisplayName();
diff --git a/src/main/java/me/shedaniel/api/DisplayCategoryCraftable.java b/src/main/java/me/shedaniel/api/IDisplayCategoryCraftable.java
index c0be7bd11..c34c1e37b 100644
--- a/src/main/java/me/shedaniel/api/DisplayCategoryCraftable.java
+++ b/src/main/java/me/shedaniel/api/IDisplayCategoryCraftable.java
@@ -8,7 +8,7 @@ import net.minecraft.client.gui.Gui;
import java.util.List;
-public interface DisplayCategoryCraftable<T extends IRecipe> extends IDisplayCategory<T> {
+public interface IDisplayCategoryCraftable<T extends IRecipe> extends IDisplayCategory<T> {
public boolean canAutoCraftHere(Class<? extends Gui> guiClass, T recipe);
diff --git a/src/main/java/me/shedaniel/api/IDisplayHelper.java b/src/main/java/me/shedaniel/api/IDisplayHelper.java
deleted file mode 100755
index 6f230d3b5..000000000
--- a/src/main/java/me/shedaniel/api/IDisplayHelper.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package me.shedaniel.api;
-
-/**
- * Created by James on 8/7/2018.
- */
-public interface IDisplayHelper {
-}
diff --git a/src/main/java/me/shedaniel/api/IDrawable.java b/src/main/java/me/shedaniel/api/IDrawable.java
index 102b7e1c5..48294bea7 100755
--- a/src/main/java/me/shedaniel/api/IDrawable.java
+++ b/src/main/java/me/shedaniel/api/IDrawable.java
@@ -4,7 +4,9 @@ package me.shedaniel.api;
* Created by James on 8/7/2018.
*/
public interface IDrawable {
+
public void draw();
-
+
public boolean isHighlighted();
+
}
diff --git a/src/main/java/me/shedaniel/api/IRecipe.java b/src/main/java/me/shedaniel/api/IRecipe.java
index 84cce4c79..a79123ddd 100755
--- a/src/main/java/me/shedaniel/api/IRecipe.java
+++ b/src/main/java/me/shedaniel/api/IRecipe.java
@@ -1,5 +1,7 @@
package me.shedaniel.api;
+import net.minecraft.item.ItemStack;
+
import java.util.List;
/**
@@ -13,4 +15,6 @@ public interface IRecipe<T> {
public List<List<T>> getInput();
+ public List<List<T>> getRecipeRequiredInput();
+
}
diff --git a/src/main/java/me/shedaniel/api/IRecipeManager.java b/src/main/java/me/shedaniel/api/IRecipeManager.java
index 355a1cd4d..82135bf3f 100755
--- a/src/main/java/me/shedaniel/api/IRecipeManager.java
+++ b/src/main/java/me/shedaniel/api/IRecipeManager.java
@@ -17,4 +17,5 @@ public interface IRecipeManager {
public void addDisplayAdapter(IDisplayCategory adapter);
public Map<IDisplayCategory, List<IRecipe>> getRecipesFor(ItemStack stack);
+
}
diff --git a/src/main/java/me/shedaniel/api/TriBooleanProducer.java b/src/main/java/me/shedaniel/api/TriBooleanSupplier.java
index 0925fee75..241307740 100755
--- a/src/main/java/me/shedaniel/api/TriBooleanProducer.java
+++ b/src/main/java/me/shedaniel/api/TriBooleanSupplier.java
@@ -3,6 +3,6 @@ package me.shedaniel.api;
/**
* Created by James on 8/4/2018.
*/
-public interface TriBooleanProducer {
+public interface TriBooleanSupplier {
public boolean accept(int first, int second, int third);
}
diff --git a/src/main/java/me/shedaniel/config/REIConfig.java b/src/main/java/me/shedaniel/config/REIConfig.java
index c3dad7b6f..c9e2efe47 100644
--- a/src/main/java/me/shedaniel/config/REIConfig.java
+++ b/src/main/java/me/shedaniel/config/REIConfig.java
@@ -9,8 +9,6 @@ public class REIConfig {
public static Gson GSON = new GsonBuilder()
.setPrettyPrinting()
- .serializeNulls()
- .disableHtmlEscaping()
.create();
public int recipeKeyBind = KeyEvent.VK_R;
@@ -19,5 +17,6 @@ public class REIConfig {
public boolean centreSearchBox = false;
public REIItemListOrdering itemListOrdering = REIItemListOrdering.REGISTRY;
public boolean isAscending = true;
+ public boolean enableCraftableOnlyButton = false;
}
diff --git a/src/main/java/me/shedaniel/config/REIItemListOrdering.java b/src/main/java/me/shedaniel/config/REIItemListOrdering.java
index 20bbaddab..f0a6b5356 100644
--- a/src/main/java/me/shedaniel/config/REIItemListOrdering.java
+++ b/src/main/java/me/shedaniel/config/REIItemListOrdering.java
@@ -17,4 +17,5 @@ public enum REIItemListOrdering {
public String getNameTranslationKey() {
return nameTranslationKey;
}
+
}
diff --git a/src/main/java/me/shedaniel/config/REIRuntimeConfig.java b/src/main/java/me/shedaniel/config/REIRuntimeConfig.java
new file mode 100644
index 000000000..b13a72bfb
--- /dev/null
+++ b/src/main/java/me/shedaniel/config/REIRuntimeConfig.java
@@ -0,0 +1,8 @@
+package me.shedaniel.config;
+
+public class REIRuntimeConfig {
+
+ public boolean craftableOnly = false;
+ public boolean centreSearchBox = false;
+
+}
diff --git a/src/main/java/me/shedaniel/gui/ConfigGui.java b/src/main/java/me/shedaniel/gui/ConfigGui.java
index 266347adf..6deeb24ea 100644
--- a/src/main/java/me/shedaniel/gui/ConfigGui.java
+++ b/src/main/java/me/shedaniel/gui/ConfigGui.java
@@ -76,6 +76,30 @@ public class ConfigGui extends Gui {
addButton(new ButtonWidget(1001, parent.width / 2 - 90, 150, 150, 20, "") {
@Override
public void onPressed(double double_1, double double_2) {
+ Core.config.enableCraftableOnlyButton = !Core.config.enableCraftableOnlyButton;
+ try {
+ Core.saveConfig();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void draw(int int_1, int int_2, float float_1) {
+ GuiLighting.disable();
+ this.text = I18n.translate("text.rei.enable_craftable_only.button", Core.config.enableCraftableOnlyButton ? "§a" : "§c", Core.config.enableCraftableOnlyButton);
+ super.draw(int_1, int_2, float_1);
+ if (this.hovered)
+ drawSuggestion(int_1, int_2);
+ }
+
+ protected void drawSuggestion(int x, int y) {
+ drawTooltip(Arrays.asList(I18n.translate("text.rei.enable_craftable_only.tooltip").split("\n")), x, y);
+ }
+ });
+ addButton(new ButtonWidget(1002, parent.width / 2 - 90, 180, 150, 20, "") {
+ @Override
+ public void onPressed(double double_1, double double_2) {
int index = Arrays.asList(REIItemListOrdering.values()).indexOf(Core.config.itemListOrdering) + 1;
if (index >= REIItemListOrdering.values().length) {
index = 0;
@@ -89,7 +113,7 @@ public class ConfigGui extends Gui {
e.printStackTrace();
}
}
-
+
@Override
public void draw(int int_1, int int_2, float float_1) {
GuiLighting.disable();
@@ -112,7 +136,7 @@ public class ConfigGui extends Gui {
text = I18n.translate("key.rei.hide") + ": ";
drawString(MinecraftClient.getInstance().fontRenderer, text, parent.width / 2 - 25 - MinecraftClient.getInstance().fontRenderer.getStringWidth(text), 90 + 6, -1);
text = I18n.translate("text.rei.list_ordering") + ": ";
- drawString(MinecraftClient.getInstance().fontRenderer, text, parent.width / 2 - 95 - MinecraftClient.getInstance().fontRenderer.getStringWidth(text), 150 + 6, -1);
+ drawString(MinecraftClient.getInstance().fontRenderer, text, parent.width / 2 - 95 - MinecraftClient.getInstance().fontRenderer.getStringWidth(text), 180 + 6, -1);
}
@Override
@@ -126,4 +150,5 @@ public class ConfigGui extends Gui {
return super.keyPressed(p_keyPressed_1_, p_keyPressed_2_, p_keyPressed_3_);
}
}
+
}
diff --git a/src/main/java/me/shedaniel/gui/Drawable.java b/src/main/java/me/shedaniel/gui/Drawable.java
index 76d49e049..a2e5740a4 100755
--- a/src/main/java/me/shedaniel/gui/Drawable.java
+++ b/src/main/java/me/shedaniel/gui/Drawable.java
@@ -9,6 +9,7 @@ import java.awt.*;
* Created by James on 7/28/2018.
*/
public abstract class Drawable implements IDrawable {
+
protected Rectangle rect;
public Drawable(int x, int y, int width, int height) {
@@ -30,4 +31,5 @@ public abstract class Drawable implements IDrawable {
}
return false;
}
+
}
diff --git a/src/main/java/me/shedaniel/gui/GuiItemList.java b/src/main/java/me/shedaniel/gui/GuiItemList.java
index 18ea59d9b..18f8c3db8 100755
--- a/src/main/java/me/shedaniel/gui/GuiItemList.java
+++ b/src/main/java/me/shedaniel/gui/GuiItemList.java
@@ -1,8 +1,10 @@
package me.shedaniel.gui;
+import com.google.common.collect.ImmutableList;
import com.mojang.blaze3d.platform.GlStateManager;
import me.shedaniel.ClientListener;
import me.shedaniel.Core;
+import me.shedaniel.api.IRecipe;
import me.shedaniel.config.REIItemListOrdering;
import me.shedaniel.gui.widget.Button;
import me.shedaniel.gui.widget.Control;
@@ -14,12 +16,15 @@ import net.fabricmc.fabric.client.itemgroup.FabricCreativeGuiComponents;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.ContainerGui;
import net.minecraft.client.network.ClientPlayerEntity;
+import net.minecraft.client.render.GuiLighting;
import net.minecraft.client.resource.language.I18n;
import net.minecraft.client.util.Window;
+import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
import net.minecraft.text.TextComponent;
import net.minecraft.text.TranslatableTextComponent;
+import net.minecraft.util.DefaultedList;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.registry.Registry;
@@ -45,10 +50,11 @@ public class GuiItemList extends Drawable {
protected boolean visible = true;
private int oldGuiLeft = 0;
private boolean cheatMode = false;
+ private List<ItemStack> lastPlayerItems = new ArrayList<>();
public GuiItemList(ContainerGui overlayedGui) {
super(calculateRect(overlayedGui));
- FOOTERSIZE = Core.centreSearchBox ? 18 : 44;
+ FOOTERSIZE = Core.runtimeConfig.centreSearchBox ? 18 : 44;
displaySlots = new ArrayList<>();
controls = new ArrayList<>();
this.overlayedGui = overlayedGui;
@@ -102,11 +108,21 @@ public class GuiItemList extends Drawable {
}
searchBox = new TextBox(getSearchBoxArea());
searchBox.setText(savedText);
+ if (Core.config.enableCraftableOnlyButton) {
+ Button buttonCraftableOnly = new Button(getCraftableToggleArea(), "");
+ buttonCraftableOnly.setOnClick(i -> {
+ Core.runtimeConfig.craftableOnly = !Core.runtimeConfig.craftableOnly;
+ REIRenderHelper.updateSearch();
+ return true;
+ });
+ controls.add(buttonCraftableOnly);
+ }
controls.add(searchBox);
buttonCheating = new Button(5, 5, 45, 20, getCheatModeText());
buttonCheating.onClick = this::cheatClicked;
buttonConfig = new Button(5, 28, 45, 20, I18n.translate("text.rei.config"));
buttonConfig.onClick = i -> {
+ MinecraftClient.getInstance().openGui(null);
MinecraftClient.getInstance().openGui(new ConfigGui(overlayedGui));
return true;
};
@@ -119,13 +135,21 @@ public class GuiItemList extends Drawable {
}
private Rectangle getSearchBoxArea() {
+ int widthOffset = Core.config.enableCraftableOnlyButton ? -24 : 0;
int ch = ((IMixinContainerGui) overlayedGui).getContainerHeight(), cw = ((IMixinContainerGui) overlayedGui).getContainerWidth();
- if (Core.centreSearchBox) {
+ if (Core.runtimeConfig.centreSearchBox) {
if (ch + 4 + 18 > MinecraftClient.getInstance().window.getScaledHeight()) //Will be out of bounds
- return new Rectangle(overlayedGui.width / 2 - cw / 2, rect.height + 100, cw, 18);
- return new Rectangle(overlayedGui.width / 2 - cw / 2, rect.height - 31, cw, 18);
+ return new Rectangle(overlayedGui.width / 2 - cw / 2, rect.height + 100, cw + widthOffset, 18);
+ return new Rectangle(overlayedGui.width / 2 - cw / 2, rect.height - 31, cw + widthOffset, 18);
}
- return new Rectangle(rect.x, rect.height - 31, rect.width - 4, 18);
+ return new Rectangle(rect.x, rect.height - 31, rect.width - 4 + widthOffset, 18);
+ }
+
+ private Rectangle getCraftableToggleArea() {
+ Rectangle searchBoxArea = getSearchBoxArea();
+ searchBoxArea.setLocation(searchBoxArea.x + searchBoxArea.width + 4, searchBoxArea.y - 2);
+ searchBoxArea.setSize(20, 20);
+ return searchBoxArea;
}
private void fillSlots() {
@@ -184,11 +208,22 @@ public class GuiItemList extends Drawable {
public void draw() {
if (!visible)
return;
+ if (MinecraftClient.getInstance().currentGui instanceof ContainerGui)
+ overlayedGui = (ContainerGui) MinecraftClient.getInstance().currentGui;
+ if (Core.runtimeConfig.craftableOnly) {
+ List<ItemStack> currentPlayerItems = getInventoryItemsTypes();
+ for(ItemStack item : lastPlayerItems)
+ if (!currentPlayerItems.contains(item) || currentPlayerItems.size() != lastPlayerItems.size()) {
+ lastPlayerItems = new ArrayList<>(currentPlayerItems);
+ updateView();
+ }
+ }
if (needsResize == true || oldGuiLeft != ((IMixinContainerGui) overlayedGui).getGuiLeft())
resize();
GlStateManager.pushMatrix();
updateButtons();
controls.forEach(Control::draw);
+ GuiLighting.disable();
String header = String.format("%s/%s", page + 1, MathHelper.ceil(view.size() / displaySlots.size()) + 1);
MinecraftClient.getInstance().fontRenderer.drawWithShadow(header, rect.x + (rect.width / 2) - (MinecraftClient.getInstance().fontRenderer.getStringWidth(header) / 2),