aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api
diff options
context:
space:
mode:
authormoller21 <42100910+moller21@users.noreply.github.com>2020-05-06 22:25:10 +0200
committermoller21 <42100910+moller21@users.noreply.github.com>2020-05-06 22:25:10 +0200
commit4dec88757f64c0bdf4a87eff8f3d5c7ba65b7217 (patch)
treec89885dc342ba349c08aa02d21c58db6f9c2e0fe /src/main/java/gregtech/api
parentb1f29c6c04170c322cc2f7631147a4c8f86160cd (diff)
downloadGT5-Unofficial-4dec88757f64c0bdf4a87eff8f3d5c7ba65b7217.tar.gz
GT5-Unofficial-4dec88757f64c0bdf4a87eff8f3d5c7ba65b7217.tar.bz2
GT5-Unofficial-4dec88757f64c0bdf4a87eff8f3d5c7ba65b7217.zip
Cover gui: Right click to open instead take.2
Diffstat (limited to 'src/main/java/gregtech/api')
-rw-r--r--src/main/java/gregtech/api/gui/GT_GUICover.java13
-rw-r--r--src/main/java/gregtech/api/gui/widgets/GT_GuiFakeItemButton.java3
-rw-r--r--src/main/java/gregtech/api/gui/widgets/GT_GuiIconButton.java2
-rw-r--r--src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java28
-rw-r--r--src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java30
-rw-r--r--src/main/java/gregtech/api/util/GT_CoverBehavior.java14
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() {