Merge pull request #8 from tosta3000/master

Added own idea to the GUI and added a language localizer. Added Anvil manager.
This commit is contained in:
0xSeb
2015-11-05 14:45:00 +01:00
8 changed files with 287 additions and 75 deletions
@@ -17,12 +17,10 @@ import de.skate702.craftingkeys.config.GuiConfig;
import de.skate702.craftingkeys.config.GuiConfigHandler;
import de.skate702.craftingkeys.manager.*;
import de.skate702.craftingkeys.proxies.CraftingKeysProxy;
import de.skate702.craftingkeys.util.LanguageLocalizer;
import de.skate702.craftingkeys.util.Logger;
import de.skate702.craftingkeys.util.Util;
import net.minecraft.client.gui.GuiEnchantment;
import net.minecraft.client.gui.GuiMainMenu;
import net.minecraft.client.gui.GuiMerchant;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.*;
import net.minecraft.client.gui.inventory.*;
import net.minecraftforge.client.event.GuiOpenEvent;
import net.minecraftforge.common.MinecraftForge;
@@ -175,6 +173,10 @@ public class CraftingKeys {
((GuiEnchantment) currentScreen).inventorySlots);
con.acceptKey();
} else if (currentScreen instanceof GuiRepair){
ContainerManager con = AnvilManager.getInstance(
((GuiRepair) currentScreen).inventorySlots);
con.acceptKey();
}
}
@@ -5,6 +5,7 @@ import cpw.mods.fml.client.config.GuiConfig;
import cpw.mods.fml.client.config.IConfigElement;
import de.skate702.craftingkeys.CraftingKeys;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.util.StatCollector;
import net.minecraftforge.common.config.ConfigElement;
import java.util.ArrayList;
@@ -1,5 +1,6 @@
package de.skate702.craftingkeys.config;
import de.skate702.craftingkeys.util.LanguageLocalizer;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.util.ResourceLocation;
@@ -13,101 +14,225 @@ public class GuiConfig extends GuiScreen {
private static final Color pureWhite = new Color(255, 255, 255, 255);
private static final Color lightGray = new Color(128, 128, 128, 255);
private static final Color highlight = new Color(86, 144, 72, 255);
private int craftingBasePosition;
private int craftingBaseOffset;
private int guiBasePosition;
private int guiBaseOffset;
private int guiShowBasePosition;
private int guiShowBaseHeight;
private GuiType guiShowType;
//TODO:Give all buttons the name you think are good for the eventhandling
private int buttonSaveID = 901;
private int buttonAbortID = 902;
private int buttonDropID = 903;
private int buttonStackID = 904;
private int buttonAnvilID = 301;
private int buttonBrewingstandID = 302;
private int buttonDispenserID = 303;
private int buttonFurnaceID = 304;
private int buttonEnchantmentID = 305;
private int buttonInventoryID = 306;
private int buttonVillagerID = 307;
public enum GuiType{
ANVIL,
FURNACE,
BREWINGSTAND,
ENCHANTMENT,
INVENTORY,
VILAGER,
DISPENSER;
}
@Override
public void initGui() {
// Fill vars
craftingBasePosition = width / 2 - craftingBaseOffset;
craftingBaseOffset = 35;
guiBaseOffset = 35;
guiBasePosition = width / 2 - guiBaseOffset;
// Add crafting Buttons
buttonList.add((new GuiButton(0, craftingBasePosition - 60, height / 2 - 87, 20, 20, "Q")));
buttonList.add((new GuiButton(1, craftingBasePosition - 41, height / 2 - 87, 20, 20, "W")));
buttonList.add((new GuiButton(2, craftingBasePosition - 22, height / 2 - 87, 20, 20, "E")));
buttonList.add((new GuiButton(3, craftingBasePosition - 60, height / 2 - 68, 20, 20, "A")));
buttonList.add((new GuiButton(4, craftingBasePosition - 41, height / 2 - 68, 20, 20, "S")));
buttonList.add((new GuiButton(5, craftingBasePosition - 22, height / 2 - 68, 20, 20, "D")));
buttonList.add((new GuiButton(6, craftingBasePosition - 60, height / 2 - 49, 20, 20, "Y")));
buttonList.add((new GuiButton(7, craftingBasePosition - 41, height / 2 - 49, 20, 20, "X")));
buttonList.add((new GuiButton(8, craftingBasePosition - 22, height / 2 - 49, 20, 20, "C")));
guiShowBasePosition = width / 2 - 35;
guiShowBaseHeight = height / 2 + 35;
buttonList.add((new GuiButton(9, craftingBasePosition + 34, height / 2 - 67, 22, 20, "Ctrl")));
buttonList.add((new GuiButton(10, craftingBasePosition + 105, height / 2 - 84, 50, 20, "Shift")));
buttonList.add((new GuiButton(11, craftingBasePosition + 105, height / 2 - 46, 50, 20, "Space")));
// Add control buttons
buttonList.add((new GuiButton(12, width - 53, 3, 50, 20, "Abort")));
buttonList.add((new GuiButton(13, width - 53, 26, 50, 20, "Save")));
guiShowType = GuiType.FURNACE;
//Button Init
addStandardButtons();
}
@Override
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
// Fill vars
int infoPositionLeft = 20;
int infoPositionRight = width - 194;
int infoPositionHeight = height / 2 + 25;
// Reset the GL-Color to pure white
//Setting up
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
// Init the Background
drawDefaultBackground(); //drawWorldBackground(0);
//Title
drawCenteredString(fontRendererObj, "Crafting Keys Config", width / 2, height / 2 - 115, pureWhite.getRGB());
// Crafting Table texture
mc.renderEngine.bindTexture(new ResourceLocation("textures/gui/container/crafting_table.png"));
drawTexturedModalRect(craftingBasePosition - 86, height / 2 - 100, 1, 0, 174, 80);
// Key Info
drawCenteredString(fontRendererObj, "Stack Key", craftingBasePosition + 130, height / 2 - 96, pureWhite.getRGB());
drawCenteredString(fontRendererObj, "Drop Key", craftingBasePosition + 130, height / 2 - 58, pureWhite.getRGB());
// Line under crafting table texture
drawHorizontalLine(craftingBasePosition - 100, width / 2 + 100 + craftingBaseOffset,
height / 2 - 20, pureWhite.getRGB());
drawCenteredString(fontRendererObj, LanguageLocalizer.localize("craftingkeys.config.title"), width / 2, height / 2 - 115, pureWhite.getRGB());
// Info-text and fake line
drawCenteredString(fontRendererObj, "Configure your keys here. Click \"Save\" when finished!",
width / 2, height / 2 - 10, pureWhite.getRGB());
drawCenteredString(fontRendererObj, "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -",
width / 2, height / 2 + 8, lightGray.getRGB());
drawCenteredString(fontRendererObj, LanguageLocalizer.localize("craftingkeys.config.description"), width / 2, height / 2 - 10, pureWhite.getRGB());
drawCenteredString(fontRendererObj, "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -", width / 2, height / 2 + 8, lightGray.getRGB());
drawCenteredString(fontRendererObj, LanguageLocalizer.localize("craftingkeys.config.usage"), width / 2, height / 2 + 23, pureWhite.getRGB());
// Key Info
drawCenteredString(fontRendererObj, "Stack Key", guiBasePosition + 130, height / 2 - 96, pureWhite.getRGB());
drawCenteredString(fontRendererObj, "Drop Key", guiBasePosition + 130, height / 2 - 58, pureWhite.getRGB());
//Draw line to let it look better
drawHorizontalLine(guiBasePosition - 86, guiBasePosition + 85, height / 2 - 20, pureWhite.getRGB());
// Insert Info screens
genFurnaceInfo(infoPositionRight, infoPositionHeight);
genBrewingStandInfo(infoPositionLeft, infoPositionHeight);
drawCraftingTable();
// Insert Gui by selected Type
if(guiShowType == GuiType.FURNACE){
genFurnaceInfo();
}else if(guiShowType == GuiType.BREWINGSTAND){
genBrewingStandInfo();
}else if(guiShowType == GuiType.DISPENSER){
genDispenserInfo();
}else if(guiShowType == GuiType.ENCHANTMENT){
genEnchantmentInfo();
}else if(guiShowType == GuiType.INVENTORY){
genInventoryInfo();
}else if(guiShowType == GuiType.VILAGER){
genVillagerInfo();
}else if(guiShowType == GuiType.ANVIL){
genAnvilInfo();
}
//Draw line to let it look better
drawHorizontalLine(guiShowBasePosition - 86, guiShowBasePosition + 85, guiShowBaseHeight + 80, lightGray.getRGB());
super.drawScreen(mouseX, mouseY, partialTicks);
}
private void genFurnaceInfo(int xBase, int yBase) {
GL11.glColor4f(0.5F, 0.5F, 0.5F, 1.0F);
//TODO: Set here the buttons with the function
@Override
public void actionPerformed(GuiButton button) {
if (button.id == buttonAbortID) {
}else if (button.id == buttonSaveID) {
}else if(button.id == buttonInventoryID) {
guiShowType = GuiType.INVENTORY;
}else if(button.id == buttonEnchantmentID){
guiShowType = GuiType.ENCHANTMENT;
}else if(button.id == buttonBrewingstandID){
guiShowType = GuiType.BREWINGSTAND;
}else if(button.id == buttonDispenserID){
guiShowType = GuiType.DISPENSER;
}else if(button.id == buttonFurnaceID){
guiShowType = GuiType.FURNACE;
}else if(button.id == buttonVillagerID){
guiShowType = GuiType.VILAGER;
}else if(button.id == buttonAnvilID){
guiShowType = GuiType.ANVIL;
}
}
//GUI GENERATORS:
/*
TODO: Create strings for showing the Keybindings
*/
private void drawCraftingTable(){
GL11.glColor4f(1F, 1F, 1F, 1F);
mc.renderEngine.bindTexture(new ResourceLocation("textures/gui/container/crafting_table.png"));
drawTexturedModalRect(guiBasePosition - 86, height / 2 - 100, 1, 0, 174, 80);
drawString(fontRendererObj, "Crafting Table", guiBasePosition - 33, height / 2 - 100 + 3, lightGray.getRGB());
}
private void genFurnaceInfo() {
GL11.glColor4f(0.5F, 0.5F, 0.5F, 1F);
mc.renderEngine.bindTexture(new ResourceLocation("textures/gui/container/furnace.png"));
drawTexturedModalRect(xBase, yBase, 1, 0, 174, 80);
drawString(fontRendererObj, "Furnace", xBase + 5, yBase + 5, lightGray.getRGB());
drawCenteredString(fontRendererObj, "W", xBase + 63, yBase + 21, highlight.getRGB());
drawCenteredString(fontRendererObj, "S", xBase + 63, yBase + 57, highlight.getRGB());
drawCenteredString(fontRendererObj, "Ctrl", xBase + 123, yBase + 39, highlight.getRGB());
drawTexturedModalRect(guiShowBasePosition - 86, guiShowBaseHeight, 1, 0, 174, 80);
drawString(fontRendererObj, "Furnace", guiShowBasePosition - 15, guiShowBaseHeight + 3, lightGray.getRGB());
drawCenteredString(fontRendererObj, "W", guiShowBasePosition - 86 + 63, guiShowBaseHeight + 21, highlight.getRGB());
drawCenteredString(fontRendererObj, "S", guiShowBasePosition - 86 + 63, guiShowBaseHeight + 57, highlight.getRGB());
drawCenteredString(fontRendererObj, "Ctrl", guiShowBasePosition - 86 + 123, guiShowBaseHeight + 39, highlight.getRGB());
}
private void genBrewingStandInfo(int xBase, int yBase) {
GL11.glColor4f(0.5F, 0.5F, 0.5F, 1.0F);
private void genBrewingStandInfo() {
GL11.glColor4f(0.5F, 0.5F, 0.5F, 1F);
mc.renderEngine.bindTexture(new ResourceLocation("textures/gui/container/brewing_stand.png"));
drawTexturedModalRect(xBase, yBase, 1, 0, 174, 80);
drawString(fontRendererObj, "Brewing Stand", xBase + 5, yBase + 5, lightGray.getRGB());
drawCenteredString(fontRendererObj, "W", xBase + 86, yBase + 21, highlight.getRGB());
drawCenteredString(fontRendererObj, "S", xBase + 86, yBase + 58, highlight.getRGB());
drawCenteredString(fontRendererObj, "A", xBase + 63, yBase + 50, highlight.getRGB());
drawCenteredString(fontRendererObj, "D", xBase + 109, yBase + 50, highlight.getRGB());
drawTexturedModalRect(guiShowBasePosition - 86, guiShowBaseHeight, 1, 0, 174, 80);
drawString(fontRendererObj, "Brewing Stand", guiShowBasePosition - 33, guiShowBaseHeight + 3, lightGray.getRGB());
drawCenteredString(fontRendererObj, "W", guiBasePosition, guiShowBaseHeight + 21, highlight.getRGB());
drawCenteredString(fontRendererObj, "S", guiBasePosition, guiShowBaseHeight + 58, highlight.getRGB());
drawCenteredString(fontRendererObj, "A", guiBasePosition - 86 + 63, guiShowBaseHeight + 50, highlight.getRGB());
drawCenteredString(fontRendererObj, "D", guiBasePosition - 86 + 109, guiShowBaseHeight + 50, highlight.getRGB());
}
// TODO: generators for all other textures. But... I hate this job. Does anyone wants to do this?
// TODO: We need volunteers! Let's go! Make a pull request. THANK YOU!
private void genEnchantmentInfo(){
GL11.glColor4f(0.5F, 0.5F, 0.5F, 1F);
mc.renderEngine.bindTexture(new ResourceLocation("textures/gui/container/enchanting_table.png"));
drawTexturedModalRect(guiShowBasePosition - 86, guiShowBaseHeight, 1, 0, 174, 80);
drawString(fontRendererObj, "Enchanting", guiShowBasePosition - 20, guiShowBaseHeight + 3, lightGray.getRGB());
}
private void genAnvilInfo(){
GL11.glColor4f(0.5F, 0.5F, 0.5F, 1F);
mc.renderEngine.bindTexture(new ResourceLocation("textures/gui/container/anvil.png"));
drawTexturedModalRect(guiShowBasePosition - 86, guiShowBaseHeight, 1, 0, 174, 80);
drawString(fontRendererObj, "Anvil", guiShowBasePosition - 17, guiShowBaseHeight + 3, lightGray.getRGB());
}
private void genVillagerInfo(){
GL11.glColor4f(0.5F, 0.5F, 0.5F, 1F);
mc.renderEngine.bindTexture(new ResourceLocation("textures/gui/container/villager.png"));
drawTexturedModalRect(guiShowBasePosition - 86, guiShowBaseHeight, 1, 0, 174, 80);
drawString(fontRendererObj, "Villager", guiShowBasePosition - 17, guiShowBaseHeight + 3, lightGray.getRGB());
}
private void genInventoryInfo(){
GL11.glColor4f(0.5F, 0.5F, 0.5F, 1F);
mc.renderEngine.bindTexture(new ResourceLocation("textures/gui/container/inventory.png"));
drawTexturedModalRect(guiShowBasePosition - 86, guiShowBaseHeight, 1, 0, 174, 80);
drawString(fontRendererObj, "Inventory", guiShowBasePosition - 20, guiShowBaseHeight + 3, lightGray.getRGB());
}
private void genDispenserInfo(){
GL11.glColor4f(0.5F, 0.5F, 0.5F, 1F);
mc.renderEngine.bindTexture(new ResourceLocation("textures/gui/container/dispenser.png"));
drawTexturedModalRect(guiShowBasePosition - 86, guiShowBaseHeight, 1, 0, 174, 80);
drawString(fontRendererObj, "Dispenser", guiShowBasePosition - 23, guiShowBaseHeight + 3, lightGray.getRGB());
}
private void addStandardButtons(){
// Add control buttons
buttonList.add((new GuiButton(buttonAbortID, width - 53, 3, 50, 20, LanguageLocalizer.localize("craftingkeys.config.button.abort"))));
buttonList.add((new GuiButton(buttonSaveID, width - 53, 26, 50, 20, LanguageLocalizer.localize("craftingkeys.config.button.save"))));
//I don't know if you want to change those for every gui
buttonList.add((new GuiButton(buttonStackID, guiBasePosition + 105, height / 2 - 84, 50, 20, "Shift")));
buttonList.add((new GuiButton(buttonDropID, guiBasePosition + 105, height / 2 - 46, 50, 20, "Space")));
//Add Switch Buttons
buttonList.add((new GuiButton(buttonInventoryID, guiShowBasePosition - 86 - 70 - 5, guiShowBaseHeight, 70, 20, "Inventory")));
buttonList.add((new GuiButton(buttonFurnaceID, guiShowBasePosition - 86 - 70 - 5, guiShowBaseHeight + 20 + 1, 70, 20, "Furnace")));
buttonList.add((new GuiButton(buttonBrewingstandID, guiShowBasePosition + 86 + 5, guiShowBaseHeight, 90, 20, "Brewing Stand")));
buttonList.add((new GuiButton(buttonDispenserID, guiShowBasePosition - 86 - 70 - 5, guiShowBaseHeight + 2*20 + 2*1, 70, 20, "Dispenser")));
buttonList.add((new GuiButton(buttonVillagerID, guiShowBasePosition + 86 + 5, guiShowBaseHeight + 20 + 1, 70, 20, "Villager")));
buttonList.add((new GuiButton(buttonEnchantmentID, guiShowBasePosition + 86 + 5, guiShowBaseHeight + 2*20 + 2*1, 70, 20, "Enchanting")));
buttonList.add((new GuiButton(buttonAnvilID, guiShowBasePosition - 86 - 70 - 5, guiShowBaseHeight + 3*20 + 3*1, 70, 20, "Anvil")));
//Adding Crafting Buttons
addCraftingButtons();
}
private void addCraftingButtons(){
buttonList.add((new GuiButton(0, guiBasePosition - 60, height / 2 - 87, 20, 20, "Q")));
buttonList.add((new GuiButton(1, guiBasePosition - 41, height / 2 - 87, 20, 20, "W")));
buttonList.add((new GuiButton(2, guiBasePosition - 22, height / 2 - 87, 20, 20, "E")));
buttonList.add((new GuiButton(3, guiBasePosition - 60, height / 2 - 68, 20, 20, "A")));
buttonList.add((new GuiButton(4, guiBasePosition - 41, height / 2 - 68, 20, 20, "S")));
buttonList.add((new GuiButton(5, guiBasePosition - 22, height / 2 - 68, 20, 20, "D")));
buttonList.add((new GuiButton(6, guiBasePosition - 60, height / 2 - 49, 20, 20, "Y")));
buttonList.add((new GuiButton(7, guiBasePosition - 41, height / 2 - 49, 20, 20, "X")));
buttonList.add((new GuiButton(8, guiBasePosition - 22, height / 2 - 49, 20, 20, "C")));
buttonList.add((new GuiButton(9, guiBasePosition + 34, height / 2 - 67, 22, 20, "Ctrl")));
}
//TODO:Get strings from language file(Localizer)...
//TODO:Add things that make this GUI an Config ... :P
}
@@ -20,3 +20,4 @@ public class GuiConfigHandler implements IGuiHandler {
return null;
}
}
@@ -0,0 +1,53 @@
package de.skate702.craftingkeys.manager;
import de.skate702.craftingkeys.util.Logger;
import net.minecraft.inventory.Container;
public class AnvilManager extends ContainerManager {
private static AnvilManager instance = null;
private AnvilManager(Container container) {
super(container);
}
public static AnvilManager getInstance(Container container) {
if (instance == null) {
instance = new AnvilManager(container);
} else {
instance.container = container;
}
return instance;
}
@Override
protected int specificKeyToSlotIndex() {
return mapKeyToSlot(-1, -1, -1, 0, 1, -1 , -1, -1, -1);
}
@Override
protected int getInventoryStartIndex() {
return 3;
}
@Override
protected int getInteractionSlotIndex() {
return 2;
}
@Override
protected void onInteractionKeyPressed() {
interact();
}
@Override
protected int[] getDropSlots() {
return new int[]{0, 1};
}
@Override
protected void interact() {
leftClick(2);
}
}
@@ -0,0 +1,16 @@
package de.skate702.craftingkeys.util;
import net.minecraft.util.StatCollector;
public class LanguageLocalizer {
/**
*If another language than de_DE or en_US is selected the English one is used...
*
* @param unloc The unlocalized string which is in the definded in the language file
* @return localized The localized String
*/
public static String localize(String unloc){
String localized = StatCollector.translateToLocal(unloc);
return localized;
}
}
@@ -27,3 +27,10 @@ de.skate702.craftingkeys.config.other.tooltip=Saemtliche anderen Einstellungen s
de.skate702.craftingkeys.warn.line1=Achtung: Crafting-Keys befindet sich in der Alpha!
de.skate702.craftingkeys.warn.line2=Es gibt noch viele Fehler, und es fehlen noch einige Funktionen.
de.skate702.craftingkeys.warn.line3=Mehr Info's findest du auf: https://github.com/0xSeb/CraftingKeys!
craftingkeys.config.title=Crafting Keys Konfiguration
craftingkeys.config.description=Konfiguriere hier deine Tastenbelegung und klicke dann auf "Sichern".
craftingkeys.config.button.save=Sichern
craftingkeys.config.button.abort=Abbruch
craftingkeys.config.usage=Waehle das GUI, fuer das du die Tastenbelegung sehen moechtest.
@@ -27,3 +27,10 @@ de.skate702.craftingkeys.config.other.tooltip=All other settings are here!
de.skate702.craftingkeys.warn.line1=Warning: Crafting Keys is still in development!
de.skate702.craftingkeys.warn.line2=This mod is not complete and there are some errors left.
de.skate702.craftingkeys.warn.line3=More Information: https://github.com/0xSeb/CraftingKeys!
craftingkeys.config.title=Crafting Keys Config
craftingkeys.config.description=Configure your keys here. Click "Save" when finished!
craftingkeys.config.button.save=Save
craftingkeys.config.button.abort=Abort
craftingkeys.config.usage=Use the buttons to select the GUI which you want to see the Keybindings for!