diff options
Diffstat (limited to 'src/main/java/gregtech/api')
6 files changed, 50 insertions, 40 deletions
diff --git a/src/main/java/gregtech/api/gui/GT_GUICover.java b/src/main/java/gregtech/api/gui/GT_GUICover.java index 760d888c02..b182f6f6d5 100644 --- a/src/main/java/gregtech/api/gui/GT_GUICover.java +++ b/src/main/java/gregtech/api/gui/GT_GUICover.java @@ -1,6 +1,7 @@ package gregtech.api.gui; import gregtech.api.enums.Dyes; +import gregtech.api.gui.widgets.GT_GuiFakeItemButton; import gregtech.api.gui.widgets.GT_GuiTooltip; import gregtech.api.gui.widgets.GT_GuiTooltipManager; import gregtech.api.gui.widgets.GT_GuiTooltipManager.GT_IToolTipRenderer; @@ -10,6 +11,7 @@ import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; @@ -26,15 +28,20 @@ public abstract class GT_GUICover extends GuiScreen implements GT_IToolTipRender protected int guiTop, guiLeft; protected boolean drawButtons = true; private GuiButton selectedButton; + public String header; + public GT_GuiFakeItemButton headerIcon; + protected List<IGuiElement> elements = new ArrayList<>(); public GT_GUICover() { } - public GT_GUICover(int width, int height) { + public GT_GUICover(int width, int height, ItemStack cover) { this.gui_width = width; this.gui_height = height; + this.header = (cover != null) ? cover.getDisplayName() : ""; + this.headerIcon = new GT_GuiFakeItemButton(this, 5, 5, null).setItem(cover); } @Override @@ -98,7 +105,9 @@ public abstract class GT_GUICover extends GuiScreen implements GT_IToolTipRender drawTexturedModalRect(guiLeft, guiTop, 0,0, gui_width, gui_height); } - public void drawExtras(int mouseX, int mouseY, float parTicks) {} + public void drawExtras(int mouseX, int mouseY, float parTicks) { + this.fontRendererObj.drawString(header, 25, 9, 0xFF222222); + } @Override public boolean doesGuiPauseGame() diff --git a/src/main/java/gregtech/api/gui/widgets/GT_GuiFakeItemButton.java b/src/main/java/gregtech/api/gui/widgets/GT_GuiFakeItemButton.java index 25af30965a..db7029d60f 100644 --- a/src/main/java/gregtech/api/gui/widgets/GT_GuiFakeItemButton.java +++ b/src/main/java/gregtech/api/gui/widgets/GT_GuiFakeItemButton.java @@ -26,8 +26,9 @@ public class GT_GuiFakeItemButton implements IGuiScreen.IGuiElement { gui.addElement(this); } - public void setItem(ItemStack i) { + public GT_GuiFakeItemButton setItem(ItemStack i) { item = i; + return this; } public ItemStack getItem(){ diff --git a/src/main/java/gregtech/api/gui/widgets/GT_GuiIconButton.java b/src/main/java/gregtech/api/gui/widgets/GT_GuiIconButton.java index bd1e921592..f68962f58f 100644 --- a/src/main/java/gregtech/api/gui/widgets/GT_GuiIconButton.java +++ b/src/main/java/gregtech/api/gui/widgets/GT_GuiIconButton.java @@ -56,7 +56,7 @@ public class GT_GuiIconButton extends GuiButton implements IGuiScreen.IGuiElemen int x = xPosition; int y = yPosition; if(!this.field_146123_n) { - GL11.glColor4f(160F/255F, 170F/255F, 1, 1); + GL11.glColor4f(200F/255F, 210F/255F, 1, 1); } else GL11.glColor4f(1, 1, 1, 1); diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java index 439da50f24..0b9ec848b1 100644 --- a/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java +++ b/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java @@ -804,15 +804,6 @@ public class BaseMetaPipeEntity extends BaseTileEntity implements IGregTechTileE return hasValidMetaTileEntity() && !isDead; } - public boolean shouldDisplayWrenchGrid(ItemStack heldItem, byte side) { - return (getCoverIDAtSide(side) == 0) && ( - GT_Utility.isStackInList(heldItem, GregTech_API.sCovers.keySet()) || - GT_Utility.isStackInList(heldItem, GregTech_API.sCrowbarList) || - GT_Utility.isStackInList(heldItem, GregTech_API.sWireCutterList) || - GT_Utility.isStackInList(heldItem, GregTech_API.sScrewdriverList) || - GT_Utility.isStackInList(heldItem, GregTech_API.sSolderingToolList)); - } - @Override public void doExplosion(long aAmount) { if (canAccessData()) { @@ -841,14 +832,13 @@ public class BaseMetaPipeEntity extends BaseTileEntity implements IGregTechTileE @Override public boolean onRightclick(EntityPlayer aPlayer, byte aSide, float aX, float aY, float aZ) { if (isClientSide()) { - byte tSide = aSide; - ItemStack tCurrentItem = aPlayer.inventory.getCurrentItem(); - - if (shouldDisplayWrenchGrid(tCurrentItem, aSide)) { - tSide = GT_Utility.determineWrenchingSide(aSide, aX, aY, aZ); + //Configure Cover, sneak can also be: screwdriver, wrench, side cutter, soldering iron + if (aPlayer.isSneaking()) { + byte tSide = (getCoverIDAtSide(aSide) == 0) ? GT_Utility.determineWrenchingSide(aSide, aX, aY, aZ) : aSide; + return (getCoverBehaviorAtSide(tSide).hasCoverGUI()); + } else if (getCoverBehaviorAtSide(aSide).onCoverRightclickClient(aSide, this, aPlayer, aX, aY, aZ)) { + return true; } - - if (getCoverBehaviorAtSide(tSide).onCoverRightclickClient(tSide, this, aPlayer, aX, aY, aZ)) return true; } if (isServerSide()) { ItemStack tCurrentItem = aPlayer.inventory.getCurrentItem(); @@ -944,6 +934,10 @@ public class BaseMetaPipeEntity extends BaseTileEntity implements IGregTechTileE } } } + else if (aPlayer.isSneaking()) { //Sneak click, no tool -> open cover config if possible. + aSide = (getCoverIDAtSide(aSide) == 0) ? GT_Utility.determineWrenchingSide(aSide, aX, aY, aZ) : aSide; + return getCoverIDAtSide(aSide) > 0 && getCoverBehaviorAtSide(aSide).onCoverShiftRightclick(aSide, getCoverIDAtSide(aSide), getCoverDataAtSide(aSide), this, aPlayer); + } if (getCoverBehaviorAtSide(aSide).onCoverRightclick(aSide, getCoverIDAtSide(aSide), getCoverDataAtSide(aSide), this, aPlayer, aX, aY, aZ)) return true; @@ -953,7 +947,7 @@ public class BaseMetaPipeEntity extends BaseTileEntity implements IGregTechTileE return false; try { - if (hasValidMetaTileEntity()) return mMetaTileEntity.onRightclick(this, aPlayer, aSide, aX, aY, aZ); + if (!aPlayer.isSneaking() && hasValidMetaTileEntity()) return mMetaTileEntity.onRightclick(this, aPlayer, aSide, aX, aY, aZ); } catch (Throwable e) { GT_Log.err.println("Encountered Exception while rightclicking TileEntity, the Game should've crashed now, but I prevented that. Please report immediately to GregTech Intergalactical!!!"); e.printStackTrace(GT_Log.err); diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java index 52c010afbd..fa0263c28e 100644 --- a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java @@ -1318,19 +1318,17 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE return (mMuffler ? 1 : 0) + (mLockUpgrade ? 1 : 0) + (mSteamConverter ? 1 : 0) + mOtherUpgrades; } - public boolean shouldDisplayWrenchGrid(ItemStack heldItem, byte side) { - return (getCoverIDAtSide(side) == 0) && ( - GT_Utility.isStackInList(heldItem, GregTech_API.sCovers.keySet()) || - GT_Utility.isStackInList(heldItem, GregTech_API.sCrowbarList) || - GT_Utility.isStackInList(heldItem, GregTech_API.sWireCutterList) || - GT_Utility.isStackInList(heldItem, GregTech_API.sScrewdriverList) || - GT_Utility.isStackInList(heldItem, GregTech_API.sSolderingToolList)); - } - @Override public boolean onRightclick(EntityPlayer aPlayer, byte aSide, float aX, float aY, float aZ) { if (isClientSide()) { - if (getCoverBehaviorAtSide(aSide).onCoverRightclickClient(aSide, this, aPlayer, aX, aY, aZ)) return true; + //Configure Cover, sneak can also be: screwdriver, wrench, side cutter, soldering iron + if (aPlayer.isSneaking()) { + byte tSide = (getCoverIDAtSide(aSide) == 0) ? GT_Utility.determineWrenchingSide(aSide, aX, aY, aZ) : aSide; + return (getCoverBehaviorAtSide(tSide).hasCoverGUI()); + } else if (getCoverBehaviorAtSide(aSide).onCoverRightclickClient(aSide, this, aPlayer, aX, aY, aZ)) { + return true; + } + if (!getCoverBehaviorAtSide(aSide).isGUIClickable(aSide, getCoverIDAtSide(aSide), getCoverDataAtSide(aSide), this)) return false; } @@ -1415,7 +1413,7 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE byte tSide = GT_Utility.determineWrenchingSide(aSide, aX, aY, aZ); if (getCoverIDAtSide(tSide) == 0) { if (GregTech_API.sCovers.containsKey(new GT_ItemStack(tCurrentItem))) { - if (GregTech_API.getCoverBehavior(tCurrentItem).isCoverPlaceable(tSide, new GT_ItemStack(tCurrentItem), this) && mMetaTileEntity.allowCoverOnSide(aSide, new GT_ItemStack(tCurrentItem))) { + if (GregTech_API.getCoverBehavior(tCurrentItem).isCoverPlaceable(tSide, new GT_ItemStack(tCurrentItem), this) && mMetaTileEntity.allowCoverOnSide(tSide, new GT_ItemStack(tCurrentItem))) { setCoverItemAtSide(tSide, tCurrentItem); if (!aPlayer.capabilities.isCreativeMode) tCurrentItem.stackSize--; GT_Utility.sendSoundToPlayers(worldObj, GregTech_API.sSoundList.get(100), 1.0F, -1, xCoord, yCoord, zCoord); @@ -1432,6 +1430,10 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE } } } + else if (aPlayer.isSneaking()) { //Sneak click, no tool -> open cover config if possible. + aSide = (getCoverIDAtSide(aSide) == 0) ? GT_Utility.determineWrenchingSide(aSide, aX, aY, aZ) : aSide; + return getCoverIDAtSide(aSide) > 0 && getCoverBehaviorAtSide(aSide).onCoverShiftRightclick(aSide, getCoverIDAtSide(aSide), getCoverDataAtSide(aSide), this, aPlayer); + } if (getCoverBehaviorAtSide(aSide).onCoverRightclick(aSide, getCoverIDAtSide(aSide), getCoverDataAtSide(aSide), this, aPlayer, aX, aY, aZ)) return true; @@ -1439,7 +1441,7 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE if (!getCoverBehaviorAtSide(aSide).isGUIClickable(aSide, getCoverIDAtSide(aSide), getCoverDataAtSide(aSide), this)) return false; - if (isUpgradable() && aPlayer.inventory.getCurrentItem() != null) {/* + if (isUpgradable() && tCurrentItem != null) {/* if (ItemList.Upgrade_SteamEngine.isStackEqual(aPlayer.inventory.getCurrentItem())) { if (addSteamEngineUpgrade()) { GT_Utility.sendSoundToPlayers(worldObj, GregTech_API.sSoundList.get(3), 1.0F, -1, xCoord, yCoord, zCoord); @@ -1469,13 +1471,13 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE } try { - if (hasValidMetaTileEntity()) return mMetaTileEntity.onRightclick(this, aPlayer, aSide, aX, aY, aZ); + if (!aPlayer.isSneaking() && hasValidMetaTileEntity()) return mMetaTileEntity.onRightclick(this, aPlayer, aSide, aX, aY, aZ); } catch (Throwable e) { GT_Log.err.println("Encountered Exception while rightclicking TileEntity, the Game should've crashed now, but I prevented that. Please report immediately to GregTech Intergalactical!!!"); e.printStackTrace(GT_Log.err); } - return true; + return false; } @Override diff --git a/src/main/java/gregtech/api/util/GT_CoverBehavior.java b/src/main/java/gregtech/api/util/GT_CoverBehavior.java index 38c01b9d92..c0ad751add 100644 --- a/src/main/java/gregtech/api/util/GT_CoverBehavior.java +++ b/src/main/java/gregtech/api/util/GT_CoverBehavior.java @@ -46,14 +46,18 @@ public abstract class GT_CoverBehavior { * return the new Value of the Cover Variable */ public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) { - if (!hasCoverGUI()) - return aCoverVariable; + return aCoverVariable; + } - if(aPlayer instanceof EntityPlayerMP) { + /** + * Called when someone shift-rightclicks this Cover with no tool. Doesn't call @onCoverRightclick in this Case. + */ + public boolean onCoverShiftRightclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer) { + if(hasCoverGUI() && aPlayer instanceof EntityPlayerMP) { GT_Values.NW.sendToPlayer(new GT_Packet_TileEntityCoverGUI(aSide, aCoverID, aCoverVariable, aTileEntity, (EntityPlayerMP) aPlayer), (EntityPlayerMP) aPlayer); + return true; } - - return aCoverVariable; + return false; } public boolean hasCoverGUI() { |
