Skip to content

Commit

Permalink
v4.2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
rekadoodle committed Mar 5, 2020
1 parent c65031f commit 9edbc4b
Show file tree
Hide file tree
Showing 26 changed files with 2,542 additions and 1,621 deletions.
243 changes: 243 additions & 0 deletions src/minecraft/hmi/Config.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,243 @@
package hmi;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.lang.reflect.Field;
import java.util.ArrayList;
import org.lwjgl.input.Keyboard;

import hmi.tabs.Tab;
import net.minecraft.client.Minecraft;
import net.minecraft.src.ItemStack;
import net.minecraft.src.KeyBinding;
import net.minecraft.src.mod_HowManyItems;

public class Config {

public static void init() {
if (!configFile.exists())
writeConfig();
readConfig();
}

public static void writeConfig() {
try {
BufferedWriter configWriter = new BufferedWriter(new FileWriter(configFile));
configWriter.write("// Config file for HowManyItems");

for (Field field : Config.class.getFields()) {
if (field.getType() == boolean.class || field.getType() == String.class || field.getType() == int.class)
try {
configWriter.write(System.getProperty("line.separator") + field.getName()
+ "=" + field.get(null).toString());
} catch (Exception exception) {
exception.printStackTrace();
}
}
KeyBinding[] keybindList = {pushRecipe, pushUses, prevRecipe, allRecipes, clearSearchBox, focusSearchBox};
for (KeyBinding keybind : keybindList) {
configWriter.write(System.getProperty("line.separator") + "key_" + keybind.keyDescription + ":" + keybind.keyCode);
}
configWriter.write(System.getProperty("line.separator") + "hiddenItems=");
for(int i = 0; i < GuiOverlay.hiddenItems.size(); i++) {
if(i > 0) configWriter.write(",");
ItemStack item = GuiOverlay.hiddenItems.get(i);
configWriter.write(String.valueOf(item.itemID));
if(item.getHasSubtypes()) {
configWriter.write(":" + String.valueOf(item.getItemDamage()));
int meta = item.getItemDamage();
for(int q = i + 1; q < GuiOverlay.hiddenItems.size() && GuiOverlay.hiddenItems.get(q).itemID == item.itemID; q++) {
if(++meta == GuiOverlay.hiddenItems.get(q).getItemDamage()) {
i = q;
}
else {
meta--;
break;
}
}
if(meta > item.getItemDamage()) {
configWriter.write("-" + String.valueOf(meta));
}
}
}
if(mod_HowManyItems.allTabs != null) {
configWriter.write(System.getProperty("line.separator") + "// Below are the index values for each tab");
configWriter.write(System.getProperty("line.separator") + "// Use -1 to disable the tab");
for(int i = 0; i < Utils.visibleTabSize(); i++) {
for(Tab tab : mod_HowManyItems.allTabs) {
if(tab.index == i) {
configWriter.write(System.getProperty("line.separator") + tab.TAB_CREATOR.getClass().getSimpleName() + ":" + tab.name() + ":" + tab.index);
}
}
}
for(Tab tab : mod_HowManyItems.allTabs) {
if(tab.index == -1) {
configWriter.write(System.getProperty("line.separator") + tab.TAB_CREATOR.getClass().getSimpleName() + ":" + tab.name() + ":" + tab.index);
}
}
}
configWriter.close();
} catch (Exception exception) {
exception.printStackTrace();
}
}

public static void readConfig() {
try {
BufferedReader configReader = new BufferedReader(new FileReader(configFile));
String s;
while ((s = configReader.readLine()) != null) {
if (s.charAt(0) == '/' && s.charAt(1) == '/') {
continue; // Ignore comments
}
if(s.startsWith("key_")) {
String as[] = s.split(":");
String desc = as[0].replaceFirst("key_", "");
for(Field currentField : Config.class.getFields()) {
if(currentField.getType() == KeyBinding.class) {
KeyBinding bind = ((KeyBinding)currentField.get(null));
if(bind.keyDescription.equals(desc)) {
currentField.set(null, new KeyBinding(desc, Integer.parseInt(as[1])));
break;
}
}
}
}
else if(s.startsWith("hiddenItems=")) {
if(GuiOverlay.hiddenItems == null) {
GuiOverlay.hiddenItems = new ArrayList<ItemStack>();
String as[] = s.replaceFirst("hiddenItems=", "").split(",");
for(int i = 0; i < as.length; i++) {
if(as[i].contains(":")) {
String as2[] = as[i].split(":");
if(as2[1].contains("-")) {
String meta[] = as2[1].split("-");
int minmeta = Integer.parseInt(meta[0]);
int maxmeta = Integer.parseInt(meta[1]);
for(int q = minmeta; q <= maxmeta; q++) {
GuiOverlay.hiddenItems.add(new ItemStack(Integer.parseInt(as2[0]), 1, q));
if(minmeta > maxmeta) break;
}

}
else GuiOverlay.hiddenItems.add(new ItemStack(Integer.parseInt(as2[0]), 1, Integer.parseInt(as2[1])));
}
else if(as[i].length() > 0){
GuiOverlay.hiddenItems.add(new ItemStack(Integer.parseInt(as[i]), 1, 0));
}
}
}
}
else if (s.contains("=")) {
String as[] = s.split("=");
for(Field field : Config.class.getDeclaredFields()) {
if(field.getName().equalsIgnoreCase(as[0])) {
if (field.getType() == int.class) {
field.set(null, Integer.parseInt(as[1]));
} else if (field.getType() == boolean.class) {
field.set(null, Boolean.parseBoolean(as[1]));
} else if (field.getType() == String.class) {
if(as.length == 1) {
field.set(null, "");
}
else {
field.set(null, String.valueOf(as[1]));
}
}
}
}

}
else if (s.contains(":") && mod_HowManyItems.allTabs != null) {
String as[] = s.split(":");
for(Tab tab : mod_HowManyItems.allTabs) {
if(tab.TAB_CREATOR.getClass().getSimpleName().equalsIgnoreCase(as[0])
&& tab.name().equalsIgnoreCase(as[1])) {
//TODO tab name
tab.index = Integer.parseInt(as[2]);
}
}
}
}
configReader.close();
} catch (Exception exception) {
exception.printStackTrace();
}
}

public static ArrayList<Tab> orderTabs() {
ArrayList<Tab> orderedTabs = new ArrayList<Tab>();
for(int i = 0; i < mod_HowManyItems.allTabs.size(); i++) {
Tab tab = mod_HowManyItems.allTabs.get(i);
while(orderedTabs.size() < tab.index + 1)
orderedTabs.add(null);
if(tab.index >= 0) {
orderedTabs.set(tab.index, tab);
}
}
while(orderedTabs.remove(null)) {}
for(int i = 0; i < orderedTabs.size(); i++) {
orderedTabs.get(i).index = i;
}
for(int i = 0; i < mod_HowManyItems.allTabs.size(); i++) {
Tab tab = mod_HowManyItems.allTabs.get(i);
if(tab.index == -2) {
tab.index = orderedTabs.size();
orderedTabs.add(tab);
}
else if(tab.index < 0) {
tab.index = -1;
}
}
writeConfig();
return orderedTabs;
}

public static void tabOrderChanged(boolean[] tabEnabled, Tab[] tabOrder) {
for(int i = 0; i < mod_HowManyItems.allTabs.size(); i++) {
Tab tab = mod_HowManyItems.allTabs.get(i);
for(int j = 0; j < tabOrder.length; j++) {
if(tab.equals(tabOrder[j])) {
tab.index = j;
if(!tabEnabled[j]) tab.index = -1;
}
}
}
writeConfig();
}

private static File configFile = new File((Minecraft.getMinecraftDir()) + "/config/HowManyItems.cfg");



public static boolean overlayEnabled = true;
public static boolean cheatsEnabled = false;
public static boolean showItemIDs = false;
public static boolean centredSearchBar = false;
public static boolean fastSearch = false;
public static boolean scrollInverted = false;

public static String mpGiveCommand = "/give {0} {1} {2}";
public static String mpHealCommand = "";
public static String mpTimeDayCommand = "/time set 0";
public static String mpTimeNightCommand = "/time set 13000";
public static String mpRainONCommand = "";
public static String mpRainOFFCommand = "";

public static boolean recipeViewerDraggableGui = false;

public static int recipeViewerGuiWidth = 251;
public static int recipeViewerGuiHeight = 134;

public static KeyBinding pushRecipe = new KeyBinding("Get Recipes", Keyboard.KEY_R);
public static KeyBinding pushUses = new KeyBinding("Get Uses", Keyboard.KEY_U);
public static KeyBinding prevRecipe = new KeyBinding("Previous Recipe", Keyboard.KEY_BACK);
public static KeyBinding allRecipes = new KeyBinding("Show All Recipes", Keyboard.KEY_NONE);

public static KeyBinding toggleOverlay = new KeyBinding("Toggle HMI", Keyboard.KEY_O);
public static KeyBinding clearSearchBox = new KeyBinding("Clear Search", Keyboard.KEY_DELETE);
public static KeyBinding focusSearchBox = new KeyBinding("Focus Search", Keyboard.KEY_RETURN);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3) braces deadcode

package net.minecraft.src;
package hmi;

import net.minecraft.src.*;

// Referenced classes of package net.minecraft.src:
// Container, IInventory, Slot, EntityPlayer,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
package net.minecraft.src;
package hmi;

import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.GL11;

import net.minecraft.client.Minecraft;
import net.minecraft.src.*;

public class GuiButtonHMI extends GuiButton {

public int iconIndex = -1;
public boolean tmiStyle = false;
private ItemStack item;

public GuiButtonHMI(int id, int x, int y, int width, int height, String text) {
super(id, x, y, width, height, text);
Expand All @@ -18,6 +20,11 @@ public GuiButtonHMI(int id, int x, int y, int width, int iconIndex) {
super(id, x, y, width, width, "");
this.iconIndex = iconIndex;
}

public GuiButtonHMI(int id, int x, int y, int width, int iconIndex, ItemStack item) {
this(id, x, y, width, iconIndex);
this.item = item;
}

public void drawButton(Minecraft minecraft, int i, int j)
{
Expand All @@ -26,7 +33,7 @@ public void drawButton(Minecraft minecraft, int i, int j)
return;
}
FontRenderer fontrenderer = minecraft.fontRenderer;
GL11.glBindTexture(3553 /*GL_TEXTURE_2D*/, minecraft.renderEngine.getTexture("/gui/gui.png"));
Utils.bindTexture("/gui/gui.png");
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
boolean isHovered = i >= xPosition && j >= yPosition && i < xPosition + width && j < yPosition + height;
int k = getHoverState(isHovered);
Expand All @@ -35,7 +42,10 @@ public void drawButton(Minecraft minecraft, int i, int j)
drawTexturedModalRect(xPosition, yPosition + height / 2, 0, 46 + k * 20 + 20 - height / 2, width / 2, height / 2);
drawTexturedModalRect(xPosition + width / 2, yPosition + height / 2, 200 - width / 2, 46 + k * 20 + 20 - height / 2, width / 2, height / 2);
mouseDragged(minecraft, i, j);
if(iconIndex < 0) {
if(item != null && (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT))) {
Utils.drawItemStack(xPosition + 2, yPosition + 2, item, true);
}
else if(iconIndex < 0) {
if(!enabled)
{
drawCenteredString(fontrenderer, displayString, xPosition + width / 2, yPosition + (height - 8) / 2, 0xffa0a0a0);
Expand All @@ -49,7 +59,7 @@ public void drawButton(Minecraft minecraft, int i, int j)
}
}
else {
minecraft.renderEngine.bindTexture(minecraft.renderEngine.getTexture("/HowManyItems/icons.png"));
Utils.bindTexture();
drawTexturedModalRect(xPosition, yPosition, (iconIndex % 12)*21, (iconIndex / 12)*21, width, width);
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package net.minecraft.src;
package hmi;

import org.lwjgl.input.Keyboard;

public class GuiControls_HMI extends GuiScreen {
import hmi.GuiOverlay;
import net.minecraft.src.*;

public GuiControls_HMI(GuiScreen guiscreen)
public class GuiControlsHMI extends GuiScreen {

public GuiControlsHMI(GuiScreen guiscreen)
{
parentScreen = guiscreen;
}
Expand Down Expand Up @@ -53,17 +56,17 @@ protected void keyTyped(char c, int i)
if(buttonId >= 0)
{
if(i == 1) i = 0;
if(binds[buttonId] == mod_HowManyItems.toggleOverlay) {
if(binds[buttonId] == Config.toggleOverlay) {
for (int j = 0; j < mc.gameSettings.keyBindings.length; j++) {
if(mc.gameSettings.keyBindings[j] == mod_HowManyItems.toggleOverlay) {
if(mc.gameSettings.keyBindings[j] == Config.toggleOverlay) {
mc.gameSettings.setKeyBinding(j, i);
}
}
}
binds[buttonId].keyCode = i;
((GuiButton)controlList.get(buttonId)).displayString = Keyboard.getKeyName(i);
buttonId = -1;
Gui_HMI.onSettingChanged();
mod_HowManyItems.onSettingChanged();
} else
{
super.keyTyped(c, i);
Expand All @@ -83,7 +86,7 @@ protected void actionPerformed(GuiButton guibutton)
buttonId = guibutton.id;
guibutton.displayString = (new StringBuilder()).append("> ").append(Keyboard.getKeyName(binds[guibutton.id].keyCode)).append(" <").toString();
}
Gui_HMI.onSettingChanged();
mod_HowManyItems.onSettingChanged();
}

public void drawScreen(int i, int j, float f)
Expand All @@ -100,13 +103,13 @@ public void drawScreen(int i, int j, float f)
}

private static KeyBinding[] binds = {
mod_HowManyItems.pushRecipe,
mod_HowManyItems.pushUses,
mod_HowManyItems.prevRecipe,
mod_HowManyItems.allRecipes,
mod_HowManyItems.clearSearchBox,
mod_HowManyItems.focusSearchBox,
mod_HowManyItems.toggleOverlay
Config.pushRecipe,
Config.pushUses,
Config.prevRecipe,
Config.allRecipes,
Config.clearSearchBox,
Config.focusSearchBox,
Config.toggleOverlay
};

private GuiScreen parentScreen;
Expand Down
Loading

0 comments on commit 9edbc4b

Please sign in to comment.