aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/covers
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/common/covers')
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_Arm.java11
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_FluidRegulator.java13
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_Fluidfilter.java256
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_ItemFilter.java215
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java18
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java19
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_SolarPanel.java24
7 files changed, 352 insertions, 204 deletions
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_Arm.java b/src/main/java/gregtech/common/covers/GT_Cover_Arm.java
index ed60929719..c64aaa16a1 100644
--- a/src/main/java/gregtech/common/covers/GT_Cover_Arm.java
+++ b/src/main/java/gregtech/common/covers/GT_Cover_Arm.java
@@ -11,6 +11,7 @@ import gregtech.api.interfaces.tileentity.IMachineProgress;
import gregtech.api.net.GT_Packet_TileEntityCover;
import gregtech.api.util.GT_CoverBehavior;
import gregtech.api.util.GT_Utility;
+import gregtech.api.util.ISerializableObject;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
@@ -111,6 +112,16 @@ public class GT_Cover_Arm extends GT_CoverBehavior {
}
@Override
+ protected boolean onCoverRightClickImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) {
+ int step = (GT_Utility.getClickedFacingCoords(aSide, aX, aY, aZ)[0] >= 0.5F) ? 1 : -1;
+ int tCoverVariable = getNewVar(aCoverVariable.get(), step);
+ sendMessageToPlayer(aPlayer, tCoverVariable);
+ aCoverVariable.set(tCoverVariable);
+ return true;
+ }
+
+ @Override
+ @SuppressWarnings("deprecation")
public boolean onCoverRightclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) {
int step = (GT_Utility.getClickedFacingCoords(aSide, aX, aY, aZ)[0] >= 0.5F) ? 1 : -1;
aCoverVariable = getNewVar(aCoverVariable, step);
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_FluidRegulator.java b/src/main/java/gregtech/common/covers/GT_Cover_FluidRegulator.java
index a53545802a..83a8f20ea9 100644
--- a/src/main/java/gregtech/common/covers/GT_Cover_FluidRegulator.java
+++ b/src/main/java/gregtech/common/covers/GT_Cover_FluidRegulator.java
@@ -9,6 +9,7 @@ import gregtech.api.interfaces.tileentity.ICoverable;
import gregtech.api.net.GT_Packet_TileEntityCover;
import gregtech.api.util.GT_CoverBehavior;
import gregtech.api.util.GT_Utility;
+import gregtech.api.util.ISerializableObject;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraftforge.common.util.ForgeDirection;
@@ -136,6 +137,18 @@ public class GT_Cover_FluidRegulator extends GT_CoverBehavior {
}
@Override
+ protected boolean onCoverRightClickImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) {
+ if (GT_Utility.getClickedFacingCoords(aSide, aX, aY, aZ)[0] >= 0.5F) {
+ aCoverVariable.set(adjustSpeed(aPlayer, aCoverVariable.get(), 1));
+ } else {
+ aCoverVariable.set(adjustSpeed(aPlayer, aCoverVariable.get(), -1));
+ }
+ aTileEntity.setCoverDataAtSide(aSide, aCoverVariable);
+ return true;
+ }
+
+ @Override
+ @SuppressWarnings("deprecation")
public boolean onCoverRightclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity,
EntityPlayer aPlayer, float aX, float aY, float aZ) {
if (GT_Utility.getClickedFacingCoords(aSide, aX, aY, aZ)[0] >= 0.5F) {
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_Fluidfilter.java b/src/main/java/gregtech/common/covers/GT_Cover_Fluidfilter.java
index 7aab35ddaa..99836c1d99 100644
--- a/src/main/java/gregtech/common/covers/GT_Cover_Fluidfilter.java
+++ b/src/main/java/gregtech/common/covers/GT_Cover_Fluidfilter.java
@@ -1,22 +1,33 @@
package gregtech.common.covers;
+import com.google.common.io.ByteArrayDataInput;
import gregtech.api.enums.GT_Values;
import gregtech.api.gui.GT_GUICover;
import gregtech.api.gui.widgets.GT_GuiFakeItemButton;
import gregtech.api.gui.widgets.GT_GuiIcon;
import gregtech.api.gui.widgets.GT_GuiIconButton;
import gregtech.api.interfaces.tileentity.ICoverable;
-import gregtech.api.net.GT_Packet_TileEntityCover;
-import gregtech.api.util.GT_CoverBehavior;
+import gregtech.api.net.GT_Packet_TileEntityCoverNew;
+import gregtech.api.util.GT_CoverBehaviorBase;
import gregtech.api.util.GT_Utility;
+import gregtech.api.util.ISerializableObject;
+import io.netty.buffer.ByteBuf;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
-import net.minecraftforge.fluids.*;
+import net.minecraft.nbt.NBTBase;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.world.World;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidRegistry;
+import net.minecraftforge.fluids.FluidStack;
+
+import javax.annotation.Nonnull;
import static gregtech.api.enums.GT_Values.E;
-public class GT_Cover_Fluidfilter extends GT_CoverBehavior {
+public class GT_Cover_Fluidfilter extends GT_CoverBehaviorBase<GT_Cover_Fluidfilter.FluidFilterData> {
// Uses the lower 3 bits of the cover variable, so we have 8 options to work with (0-7)
private final int FILTER_INPUT_DENY_OUTPUT = 0; // 000
@@ -28,99 +39,115 @@ public class GT_Cover_Fluidfilter extends GT_CoverBehavior {
private final int ANY_INPUT_FILTER_OUTPUT = 6; // 110
private final int ANY_INPUT_INVERT_OUTPUT = 7; // 111
+ public GT_Cover_Fluidfilter() {
+ super(FluidFilterData.class);
+ }
+
+ @Override
+ public FluidFilterData createDataObject() {
+ return new FluidFilterData(-1, 0);
+ }
+
+ @Override
+ public FluidFilterData createDataObject(int aLegacyData) {
+ return new FluidFilterData(aLegacyData >>> 3, aLegacyData & 0x7);
+ }
+
@Override
- public String getDescription(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {
- int aFilterMode = aCoverVariable & 7;
- int aFilterFluid = aCoverVariable >>> 3;
- final Fluid fluid = FluidRegistry.getFluid(aFilterFluid);
- if(fluid == null) return E;
-
+ protected String getDescriptionImpl(byte aSide, int aCoverID, FluidFilterData aCoverVariable, ICoverable aTileEntity) {
+ final Fluid fluid = FluidRegistry.getFluid(aCoverVariable.mFluidID);
+ if (fluid == null) return E;
+
final FluidStack sFluid = new FluidStack(fluid, 1000);
- return(String.format("Filtering Fluid: %s Mode: %s", sFluid.getLocalizedName(), getFilterMode(aFilterMode)));
+ return (String.format("Filtering Fluid: %s Mode: %s", sFluid.getLocalizedName(), getFilterMode(aCoverVariable.mFilterMode)));
}
@Override
- public boolean isRedstoneSensitive(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) {
+ protected boolean isRedstoneSensitiveImpl(byte aSide, int aCoverID, FluidFilterData aCoverVariable, ICoverable aTileEntity, long aTimer) {
return false;
}
@Override
- public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) {
+ protected FluidFilterData doCoverThingsImpl(byte aSide, byte aInputRedstone, int aCoverID, FluidFilterData aCoverVariable, ICoverable aTileEntity, long aTimer) {
return aCoverVariable;
}
public String getFilterMode(int aFilterMode) {
- switch(aFilterMode) {
- case FILTER_INPUT_DENY_OUTPUT: return(trans("043", "Filter input, Deny output"));
- case INVERT_INPUT_DENY_OUTPUT: return(trans("044", "Invert input, Deny output"));
- case FILTER_INPUT_ANY_OUTPUT: return(trans("045", "Filter input, Permit any output"));
- case INVERT_INPUT_ANY_OUTPUT: return(trans("046", "Invert input, Permit any output"));
- case DENY_INPUT_FILTER_OUTPUT: return(trans("219", "Deny input, Filter output"));
- case DENY_INPUT_INVERT_OUTPUT: return(trans("220", "Deny input, Invert output"));
- case ANY_INPUT_FILTER_OUTPUT: return(trans("221", "Permit any input, Filter output"));
- case ANY_INPUT_INVERT_OUTPUT: return(trans("222", "Permit any input, Invert output"));
- default: return("UNKNOWN");
+ switch (aFilterMode) {
+ case FILTER_INPUT_DENY_OUTPUT:
+ return (trans("043", "Filter input, Deny output"));
+ case INVERT_INPUT_DENY_OUTPUT:
+ return (trans("044", "Invert input, Deny output"));
+ case FILTER_INPUT_ANY_OUTPUT:
+ return (trans("045", "Filter input, Permit any output"));
+ case INVERT_INPUT_ANY_OUTPUT:
+ return (trans("046", "Invert input, Permit any output"));
+ case DENY_INPUT_FILTER_OUTPUT:
+ return (trans("219", "Deny input, Filter output"));
+ case DENY_INPUT_INVERT_OUTPUT:
+ return (trans("220", "Deny input, Invert output"));
+ case ANY_INPUT_FILTER_OUTPUT:
+ return (trans("221", "Permit any input, Filter output"));
+ case ANY_INPUT_INVERT_OUTPUT:
+ return (trans("222", "Permit any input, Invert output"));
+ default:
+ return ("UNKNOWN");
}
}
@Override
- public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) {
- int aFilterMode = aCoverVariable & 7;
- aCoverVariable ^= aFilterMode;
- aFilterMode = (aFilterMode + (aPlayer.isSneaking()? -1 : 1)) % 8;
- if (aFilterMode < 0) {
- aFilterMode = 7;
+ protected FluidFilterData onCoverScrewdriverClickImpl(byte aSide, int aCoverID, FluidFilterData aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) {
+ aCoverVariable.mFilterMode = (aCoverVariable.mFilterMode + (aPlayer.isSneaking() ? -1 : 1)) % 8;
+ if (aCoverVariable.mFilterMode < 0) {
+ aCoverVariable.mFilterMode = 7;
}
- GT_Utility.sendChatToPlayer(aPlayer, getFilterMode(aFilterMode));
-
- aCoverVariable|=aFilterMode;
+ GT_Utility.sendChatToPlayer(aPlayer, getFilterMode(aCoverVariable.mFilterMode));
return aCoverVariable;
}
@Override
- public boolean onCoverRightclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) {
- //GT_FML_LOGGER.info("rightclick");
+ protected boolean onCoverRightClickImpl(byte aSide, int aCoverID, FluidFilterData aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) {
if (
((aX > 0.375D) && (aX < 0.625D)) ||
- ((aSide > 3) && ((aY > 0.375D) && (aY < 0.625D))) ||
- ((aSide < 2) && ((aZ > 0.375D) && (aZ < 0.625D))) ||
- (aSide == 2) ||
- (aSide == 3)
+ ((aSide > 3) && ((aY > 0.375D) && (aY < 0.625D))) ||
+ ((aSide < 2) && ((aZ > 0.375D) && (aZ < 0.625D))) ||
+ (aSide == 2) ||
+ (aSide == 3)
) {
ItemStack tStack = aPlayer.inventory.getCurrentItem();
if (tStack == null) return true;
- FluidStack tFluid = FluidContainerRegistry.getFluidForFilledItem(tStack);
+ FluidStack tFluid = GT_Utility.getFluidForFilledItem(tStack, true);
if (tFluid != null) {
int aFluid = tFluid.getFluidID();
- aCoverVariable = (aCoverVariable & 7) | (aFluid << 3);
+ aCoverVariable.mFluidID = aFluid;
aTileEntity.setCoverDataAtSide(aSide, aCoverVariable);
FluidStack sFluid = new FluidStack(FluidRegistry.getFluid(aFluid), 1000);
GT_Utility.sendChatToPlayer(aPlayer, trans("047", "Filter Fluid: ") + sFluid.getLocalizedName());
- } else if (tStack.getItem() instanceof IFluidContainerItem) {
- IFluidContainerItem tContainer = (IFluidContainerItem) tStack.getItem();
- if (tContainer.getFluid(tStack) != null) {
- int aFluid = tContainer.getFluid(tStack).getFluidID();
- aCoverVariable = (aCoverVariable & 7) | (aFluid << 3);
- aTileEntity.setCoverDataAtSide(aSide, aCoverVariable);
- FluidStack sFluid = new FluidStack(FluidRegistry.getFluid(aFluid), 1000);
- GT_Utility.sendChatToPlayer(aPlayer, trans("047", "Filter Fluid: ") + sFluid.getLocalizedName());
- }
}
return true;
}
return false;
}
-
+
+ @Override
+ protected boolean letsFluidInImpl(byte aSide, int aCoverID, FluidFilterData aCoverVariable, Fluid aFluid, ICoverable aTileEntity) {
+ return isFluidAllowed(aCoverVariable, aFluid);
+ }
+
@Override
- public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) {
+ protected boolean letsFluidOutImpl(byte aSide, int aCoverID, FluidFilterData aCoverVariable, Fluid aFluid, ICoverable aTileEntity) {
+ return isFluidAllowed(aCoverVariable, aFluid);
+ }
+
+ protected boolean isFluidAllowed(FluidFilterData aCoverVariable, Fluid aFluid) {
if (aFluid == null) return true;
- int aFilterMode = aCoverVariable & 7;
- int aFilterFluid = aCoverVariable >>> 3;
+ int aFilterMode = aCoverVariable.mFilterMode;
+ int aFilterFluid = aCoverVariable.mFluidID;
if (aFilterMode == DENY_INPUT_FILTER_OUTPUT || aFilterMode == DENY_INPUT_INVERT_OUTPUT)
return false;
@@ -130,36 +157,18 @@ public class GT_Cover_Fluidfilter extends GT_CoverBehavior {
return aFilterMode == FILTER_INPUT_DENY_OUTPUT || aFilterMode == FILTER_INPUT_ANY_OUTPUT;
else
return aFilterMode == INVERT_INPUT_DENY_OUTPUT || aFilterMode == INVERT_INPUT_ANY_OUTPUT;
-
}
-
- @Override
- public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) {
- if (aFluid == null) return true;
- int aFilterMode = aCoverVariable & 7;
- int aFilterFluid = aCoverVariable >>> 3;
-
- if (aFilterMode == FILTER_INPUT_DENY_OUTPUT || aFilterMode == INVERT_INPUT_DENY_OUTPUT)
- return false;
- else if (aFilterMode == FILTER_INPUT_ANY_OUTPUT || aFilterMode == INVERT_INPUT_ANY_OUTPUT)
- return true;
- else if (aFluid.getID() == aFilterFluid)
- return aFilterMode == DENY_INPUT_FILTER_OUTPUT || aFilterMode == ANY_INPUT_FILTER_OUTPUT;
- else
- return aFilterMode == DENY_INPUT_INVERT_OUTPUT || aFilterMode == ANY_INPUT_INVERT_OUTPUT;
-
- }
-
@Override
- public boolean alwaysLookConnected(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {
+ protected boolean alwaysLookConnectedImpl(byte aSide, int aCoverID, FluidFilterData aCoverVariable, ICoverable aTileEntity) {
return true;
}
@Override
- public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {
+ protected int getTickRateImpl(byte aSide, int aCoverID, FluidFilterData aCoverVariable, ICoverable aTileEntity) {
return 0;
}
+
/**
* GUI Stuff
*/
@@ -170,14 +179,14 @@ public class GT_Cover_Fluidfilter extends GT_CoverBehavior {
}
@Override
- public Object getClientGUI(byte aSide, int aCoverID, int coverData, ICoverable aTileEntity) {
+ protected Object getClientGUIImpl(byte aSide, int aCoverID, FluidFilterData coverData, ICoverable aTileEntity, EntityPlayer aPlayer, World aWorld) {
return new GT_FluidFilterGUICover(aSide, aCoverID, coverData, aTileEntity);
}
private class GT_FluidFilterGUICover extends GT_GUICover {
private final byte side;
private final int coverID;
- private int coverVariable;
+ private final FluidFilterData coverVariable;
private final GT_GuiFakeItemButton fluidFilterButton;
protected String fluidFilterName;
@@ -186,8 +195,7 @@ public class GT_Cover_Fluidfilter extends GT_CoverBehavior {
private static final int spaceX = 18;
private static final int spaceY = 18;
- public GT_FluidFilterGUICover(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity)
- {
+ public GT_FluidFilterGUICover(byte aSide, int aCoverID, FluidFilterData aCoverVariable, ICoverable aTileEntity) {
super(aTileEntity, 176, 107, GT_Utility.intToStack(aCoverID));
this.side = aSide;
this.coverID = aCoverID;
@@ -201,35 +209,38 @@ public class GT_Cover_Fluidfilter extends GT_CoverBehavior {
b = new GT_GuiIconButton(this, 4, startX + spaceX*0, startY+spaceY*1, GT_GuiIcon.WHITELIST).setTooltipText(trans("236","Whitelist Fluid"));
b = new GT_GuiIconButton(this, 5, startX + spaceX*1, startY+spaceY*1, GT_GuiIcon.BLACKLIST).setTooltipText(trans("237","Blacklist Fluid"));
- fluidFilterButton = new GT_GuiFakeItemButton(this, startX, startY+spaceY*3+2, GT_GuiIcon.SLOT_DARKGRAY);
+ fluidFilterButton = new GT_GuiFakeItemButton(this, startX, startY + spaceY * 3 + 2, GT_GuiIcon.SLOT_DARKGRAY);
}
- private int getNewCoverVariable(int id) {
+ private int getNewFilterMode(int id) {
switch (id) {
case 0:
- return (coverVariable & ~0x7) | (coverVariable & 0x3);
+ return (coverVariable.mFilterMode & 0x3);
case 1:
- return (coverVariable & ~0x7) | (coverVariable | 0x4);
+ return (coverVariable.mFilterMode | 0x4);
case 2:
- return (coverVariable & ~0x7) | (coverVariable & 0x5);
+ return (coverVariable.mFilterMode & 0x5);
case 3:
- return (coverVariable & ~0x7) | (coverVariable | 0x2);
+ return (coverVariable.mFilterMode | 0x2);
case 4:
- return (coverVariable & ~0x7) | (coverVariable & 0x6);
+ return (coverVariable.mFilterMode & 0x6);
case 5:
- return (coverVariable & ~0x7) | (coverVariable | 0x1);
+ return (coverVariable.mFilterMode | 0x1);
}
- return coverVariable;
+ return coverVariable.mFilterMode;
}
private boolean getClickable(int id) {
switch (id) {
- case 0: case 1:
- return (coverVariable>>2 & 0x1) != (id & 0x1);
- case 2: case 3:
- return (coverVariable>>1 & 0x1) != (id & 0x1);
- case 4: case 5:
- return (coverVariable & 0x1) != (id & 0x1);
+ case 0:
+ case 1:
+ return (coverVariable.mFilterMode >> 2 & 0x1) != (id & 0x1);
+ case 2:
+ case 3:
+ return (coverVariable.mFilterMode >> 1 & 0x1) != (id & 0x1);
+ case 4:
+ case 5:
+ return (coverVariable.mFilterMode & 0x1) != (id & 0x1);
}
return false;
}
@@ -250,15 +261,15 @@ public class GT_Cover_Fluidfilter extends GT_CoverBehavior {
}
@Override
- public void buttonClicked(GuiButton btn){
- if (getClickable(btn.id)){
- coverVariable = getNewCoverVariable(btn.id);
- GT_Values.NW.sendToServer(new GT_Packet_TileEntityCover(side, coverID, coverVariable, tile));
+ public void buttonClicked(GuiButton btn) {
+ if (getClickable(btn.id)) {
+ coverVariable.mFilterMode = (byte) getNewFilterMode(btn.id);
+ GT_Values.NW.sendToServer(new GT_Packet_TileEntityCoverNew(side, coverID, coverVariable, tile));
}
updateButtons();
}
- private void updateButtons(){
+ private void updateButtons() {
GT_GuiIconButton b;
for (Object o : buttonList) {
if (o instanceof GT_GuiIconButton) {
@@ -277,7 +288,7 @@ public class GT_Cover_Fluidfilter extends GT_CoverBehavior {
}
}
}
- Fluid f = FluidRegistry.getFluid(coverVariable >>> 3);
+ Fluid f = FluidRegistry.getFluid(coverVariable.mFluidID);
if (f != null) {
ItemStack item = GT_Utility.getFluidDisplayStack(f);
if (item != null) {
@@ -290,4 +301,51 @@ public class GT_Cover_Fluidfilter extends GT_CoverBehavior {
fluidFilterName = trans("224", "Filter Empty");
}
}
+
+ public static class FluidFilterData implements ISerializableObject {
+ private int mFluidID;
+ private int mFilterMode;
+
+ public FluidFilterData(int mFluidID, int mFilterMode) {
+ this.mFluidID = mFluidID;
+ this.mFilterMode = mFilterMode;
+ }
+
+ @Override
+ @Nonnull
+ public ISerializableObject copy() {
+ return new FluidFilterData(mFluidID, mFilterMode);
+ }
+
+ @Override
+ @Nonnull
+ public NBTBase saveDataToNBT() {
+ NBTTagCompound tNBT = new NBTTagCompound();
+ tNBT.setInteger("mFilterMode", mFilterMode);
+ tNBT.setString("mFluid", FluidRegistry.getFluid(mFluidID).getName());
+ return tNBT;
+ }
+
+ @Override
+ public void writeToByteBuf(ByteBuf aBuf) {
+ aBuf.writeByte(mFilterMode).writeInt(mFluidID);
+ }
+
+ @Override
+ public void loadDataFromNBT(NBTBase aNBT) {
+ if (aNBT instanceof NBTTagCompound) {
+ NBTTagCompound tNBT = (NBTTagCompound) aNBT;
+ mFilterMode = tNBT.getByte("mFilterMod");
+ mFluidID = FluidRegistry.getFluidID(tNBT.getString("mFluid"));
+ }
+ }
+
+ @Override
+ @Nonnull
+ public ISerializableObject readFromPacket(ByteArrayDataInput aBuf, EntityPlayerMP aPlayer) {
+ mFilterMode = aBuf.readByte();
+ mFluidID = aBuf.readInt();
+ return this;
+ }
+ }
}
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_ItemFilter.java b/src/main/java/gregtech/common/covers/GT_Cover_ItemFilter.java
index 99003e18e0..88ef51dd01 100644
--- a/src/main/java/gregtech/common/covers/GT_Cover_ItemFilter.java
+++ b/src/main/java/gregtech/common/covers/GT_Cover_ItemFilter.java
@@ -1,134 +1,142 @@
package gregtech.common.covers;
+import com.google.common.io.ByteArrayDataInput;
+import cpw.mods.fml.common.network.ByteBufUtils;
import gregtech.api.enums.GT_Values;
import gregtech.api.gui.GT_GUICover;
import gregtech.api.gui.widgets.GT_GuiFakeItemButton;
import gregtech.api.gui.widgets.GT_GuiIcon;
-import gregtech.api.gui.widgets.GT_GuiIconButton;
+import gregtech.api.gui.widgets.GT_GuiIconCheckButton;
import gregtech.api.interfaces.tileentity.ICoverable;
-import gregtech.api.net.GT_Packet_TileEntityCover;
-import gregtech.api.util.GT_CoverBehavior;
+import gregtech.api.net.GT_Packet_TileEntityCoverNew;
+import gregtech.api.util.GT_CoverBehaviorBase;
import gregtech.api.util.GT_Utility;
+import gregtech.api.util.ISerializableObject;
+import io.netty.buffer.ByteBuf;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTBase;
+import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+import net.minecraftforge.common.util.Constants;
import net.minecraftforge.fluids.Fluid;
+import javax.annotation.Nonnull;
import java.util.Collections;
import java.util.List;
-import static gregtech.api.util.GT_Utility.*;
+import static gregtech.api.util.GT_Utility.intToStack;
+import static gregtech.api.util.GT_Utility.moveMultipleItemStacks;
-public class GT_Cover_ItemFilter extends GT_CoverBehavior {
+public class GT_Cover_ItemFilter extends GT_CoverBehaviorBase<GT_Cover_ItemFilter.ItemFilterData> {
private final boolean mExport;
- public GT_Cover_ItemFilter(boolean isExport){
+ public GT_Cover_ItemFilter(boolean isExport) {
+ super(ItemFilterData.class);
this.mExport = isExport;
}
@Override
- public boolean isRedstoneSensitive(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) {
+ public ItemFilterData createDataObject(int aLegacyData) {
+ return new ItemFilterData((aLegacyData & 0x1) == 0, intToStack(aLegacyData >>> 1));
+ }
+
+ @Override
+ public ItemFilterData createDataObject() {
+ return new ItemFilterData();
+ }
+
+ @Override
+ protected boolean isRedstoneSensitiveImpl(byte aSide, int aCoverID, ItemFilterData aCoverVariable, ICoverable aTileEntity, long aTimer) {
return false;
}
@Override
- public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) {
+ protected ItemFilterData doCoverThingsImpl(byte aSide, byte aInputRedstone, int aCoverID, ItemFilterData aCoverVariable, ICoverable aTileEntity, long aTimer) {
TileEntity tTileEntity = aTileEntity.getTileEntityAtSide(aSide);
Object fromEntity = mExport ? aTileEntity : tTileEntity,
toEntity = !mExport ? aTileEntity : tTileEntity;
byte fromSide = !mExport ? GT_Utility.getOppositeSide(aSide) : aSide,
toSide = mExport ? GT_Utility.getOppositeSide(aSide) : aSide;
- int FilterId = aCoverVariable >>> 1;
- List<ItemStack> Filter = Collections.singletonList(intToStack(FilterId));
+ List<ItemStack> Filter = Collections.singletonList(aCoverVariable.mFilter);
- boolean isWhiteList = (aCoverVariable & 1) != 0;
-
- moveMultipleItemStacks(fromEntity, toEntity, fromSide , toSide, Filter, isWhiteList, (byte) 64, (byte) 1, (byte) 64, (byte) 1,64);
+ moveMultipleItemStacks(fromEntity, toEntity, fromSide, toSide, Filter, aCoverVariable.mWhitelist, (byte) 64, (byte) 1, (byte) 64, (byte) 1, 64);
return aCoverVariable;
}
@Override
- public boolean onCoverRightclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ){
- ItemStack tStack = aPlayer.inventory.getCurrentItem();
- if (tStack != null){
- aCoverVariable = (stackToInt(tStack) << 1) + (aCoverVariable & 1);
- aTileEntity.setCoverDataAtSide(aSide, aCoverVariable);
- GT_Utility.sendChatToPlayer(aPlayer, trans("301", "Item Filter: ") + tStack.getDisplayName());
- }
- else{
- aCoverVariable = aCoverVariable & 1;
- aTileEntity.setCoverDataAtSide(aSide, aCoverVariable);
- GT_Utility.sendChatToPlayer(aPlayer, trans("300", "Filter Cleared!"));
- }
- return true;
+ protected boolean onCoverRightClickImpl(byte aSide, int aCoverID, ItemFilterData aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) {
+ ItemStack tStack = aPlayer.inventory.getCurrentItem();
+ if (tStack != null) {
+ aCoverVariable.mFilter = tStack;
+ GT_Utility.sendChatToPlayer(aPlayer, trans("301", "Item Filter: ") + tStack.getDisplayName());
+ } else {
+ aCoverVariable.mFilter = null;
+ GT_Utility.sendChatToPlayer(aPlayer, trans("300", "Filter Cleared!"));
+ }
+ return true;
}
@Override
- public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) {
- int mode = aCoverVariable & 1;
- if (mode == 1) mode = 0;
- else mode = 1;
- if (mode == 1){
- GT_Utility.sendChatToPlayer(aPlayer, trans("124", "Blacklist Mode"));
- }
- else{
- GT_Utility.sendChatToPlayer(aPlayer, trans("125", "Whitelist Mode"));
- }
- aCoverVariable = (aCoverVariable & ~0x1) + mode;
+ protected ItemFilterData onCoverScrewdriverClickImpl(byte aSide, int aCoverID, ItemFilterData aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) {
+ aCoverVariable.mWhitelist = !aCoverVariable.mWhitelist;
+ GT_Utility.sendChatToPlayer(aPlayer, aCoverVariable.mWhitelist ? trans("125", "Whitelist Mode") : trans("124", "Blacklist Mode"));
return aCoverVariable;
}
@Override
- public boolean letsRedstoneGoIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {
+ protected boolean letsRedstoneGoInImpl(byte aSide, int aCoverID, ItemFilterData aCoverVariable, ICoverable aTileEntity) {
return true;
}
@Override
- public boolean letsRedstoneGoOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {
+ protected boolean letsRedstoneGoOutImpl(byte aSide, int aCoverID, ItemFilterData aCoverVariable, ICoverable aTileEntity) {
return true;
}
@Override
- public boolean letsEnergyIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {
+ protected boolean letsEnergyInImpl(byte aSide, int aCoverID, ItemFilterData aCoverVariable, ICoverable aTileEntity) {
return true;
}
@Override
- public boolean letsEnergyOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {
+ protected boolean letsEnergyOutImpl(byte aSide, int aCoverID, ItemFilterData aCoverVariable, ICoverable aTileEntity) {
return true;
}
@Override
- public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) {
+ protected boolean letsFluidInImpl(byte aSide, int aCoverID, ItemFilterData aCoverVariable, Fluid aFluid, ICoverable aTileEntity) {
return false;
}
@Override
- public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) {
+ protected boolean letsFluidOutImpl(byte aSide, int aCoverID, ItemFilterData aCoverVariable, Fluid aFluid, ICoverable aTileEntity) {
return false;
}
@Override
- public boolean letsItemsIn(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) {
+ protected boolean letsItemsInImpl(byte aSide, int aCoverID, ItemFilterData aCoverVariable, int aSlot, ICoverable aTileEntity) {
return true;
}
@Override
- public boolean letsItemsOut(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) {
+ protected boolean letsItemsOutImpl(byte aSide, int aCoverID, ItemFilterData aCoverVariable, int aSlot, ICoverable aTileEntity) {
return true;
}
@Override
- public boolean alwaysLookConnected(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {
+ protected boolean alwaysLookConnectedImpl(byte aSide, int aCoverID, ItemFilterData aCoverVariable, ICoverable aTileEntity) {
return true;
}
@Override
- public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {
+ protected int getTickRateImpl(byte aSide, int aCoverID, ItemFilterData aCoverVariable, ICoverable aTileEntity) {
return 1;
}
@@ -142,14 +150,68 @@ public class GT_Cover_ItemFilter extends GT_CoverBehavior {
}
@Override
- public Object getClientGUI(byte aSide, int aCoverID, int coverData, ICoverable aTileEntity) {
- return new GT_Cover_ItemFilter.GUI(aSide, aCoverID, coverData, aTileEntity);
+ protected Object getClientGUIImpl(byte aSide, int aCoverID, ItemFilterData aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, World aWorld) {
+ return new GT_Cover_ItemFilter.GUI(aSide, aCoverID, aCoverVariable, aTileEntity);
+ }
+
+ public static class ItemFilterData implements ISerializableObject {
+ private boolean mWhitelist;
+ private ItemStack mFilter;
+
+ public ItemFilterData() {
+ }
+
+ public ItemFilterData(boolean mWhitelist, ItemStack mFilter) {
+ this.mWhitelist = mWhitelist;
+ this.mFilter = mFilter;
+ }
+
+ @Nonnull
+ @Override
+ public ISerializableObject copy() {
+ return new ItemFilterData(mWhitelist, mFilter);
+ }
+
+ @Nonnull
+ @Override
+ public NBTBase saveDataToNBT() {
+ NBTTagCompound tag = new NBTTagCompound();
+ tag.setBoolean("mWhitelist", mWhitelist);
+ if (mFilter != null)
+ tag.setTag("mFilter", mFilter.writeToNBT(new NBTTagCompound()));
+ return tag;
+ }
+
+ @Override
+ public void writeToByteBuf(ByteBuf aBuf) {
+ aBuf.writeBoolean(mWhitelist);
+ ByteBufUtils.writeItemStack(aBuf, mFilter);
+ }
+
+ @Override
+ public void loadDataFromNBT(NBTBase aNBT) {
+ NBTTagCompound tag = (NBTTagCompound) aNBT;
+ mWhitelist = tag.getBoolean("mWhitelist");
+ if (tag.hasKey("mFilter", Constants.NBT.TAG_COMPOUND))
+ mFilter = ItemStack.loadItemStackFromNBT(tag.getCompoundTag("mFilter"));
+ else
+ mFilter = null;
+ }
+
+ @Nonnull
+ @Override
+ public ISerializableObject readFromPacket(ByteArrayDataInput aBuf, EntityPlayerMP aPlayer) {
+ mWhitelist = aBuf.readBoolean();
+ mFilter = ISerializableObject.readItemStackFromGreggyByteBuf(aBuf);
+ return this;
+ }
}
private class GUI extends GT_GUICover {
private final byte side;
private final int coverID;
- private int coverVariable;
+ private final GT_GuiIconCheckButton btnMode;
+ private final ItemFilterData coverVariable;
private final GT_GuiFakeItemButton itemFilterButtons;
private static final int startX = 10;
@@ -157,17 +219,15 @@ public class GT_Cover_ItemFilter extends GT_CoverBehavior {
private static final int spaceX = 18;
private static final int spaceY = 18;
- public GUI(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {
+ public GUI(byte aSide, int aCoverID, ItemFilterData aCoverVariable, ICoverable aTileEntity) {
super(aTileEntity, 176, 107, GT_Utility.intToStack(aCoverID));
this.side = aSide;
this.coverID = aCoverID;
this.coverVariable = aCoverVariable;
- GT_GuiIconButton b;
- b = new GT_GuiIconButton(this, 0, startX + spaceX*0, startY+spaceY*0, GT_GuiIcon.WHITELIST).setTooltipText(trans("125","Whitelist Mode"));
- b = new GT_GuiIconButton(this, 1, startX + spaceX*1, startY+spaceY*0, GT_GuiIcon.BLACKLIST).setTooltipText(trans("124","Blacklist Mode"));
+ btnMode = new GT_GuiIconCheckButton(this, 0, startX + spaceX * 0, startY + spaceY * 0, GT_GuiIcon.WHITELIST, GT_GuiIcon.BLACKLIST, trans("125", "Whitelist Mode"), trans("124", "Blacklist Mode"));
- itemFilterButtons = new GT_GuiFakeItemButton(this ,startX + spaceX*0, startY+spaceY*2, GT_GuiIcon.SLOT_GRAY);
+ itemFilterButtons = new GT_GuiFakeItemButton(this, startX + spaceX * 0, startY + spaceY * 2, GT_GuiIcon.SLOT_GRAY);
}
@Override
@@ -183,46 +243,19 @@ public class GT_Cover_ItemFilter extends GT_CoverBehavior {
}
@Override
- public void buttonClicked(GuiButton btn){
- if (getClickable(btn.id)){
- coverVariable = getNewCoverVariable(btn.id);
- GT_Values.NW.sendToServer(new GT_Packet_TileEntityCover(side, coverID, coverVariable, tile));
+ public void buttonClicked(GuiButton btn) {
+ if (btn == btnMode) {
+ if (coverVariable.mWhitelist != btnMode.isChecked()) {
+ coverVariable.mWhitelist = btnMode.isChecked();
+ GT_Values.NW.sendToServer(new GT_Packet_TileEntityCoverNew(side, coverID, coverVariable, tile));
+ }
}
updateButtons();
}
- private void updateButtons(){
- GuiButton b;
- for (Object o : buttonList) {
- b = (GuiButton) o;
- b.enabled = getClickable(b.id);
- }
- ItemStack tItemStack = intToStack(coverVariable >>> 1);
- if (tItemStack != null){
- itemFilterButtons.setItem(tItemStack);
- return;
- }
- itemFilterButtons.setItem(null);
- }
-
- private int getNewCoverVariable(int id) {
- switch (id) {
- case 0:
- return coverVariable & ~0x1;
- case 1:
- return coverVariable | 0x1;
- }
- return coverVariable;
- }
-
- private boolean getClickable(int id) {
- switch (id) {
- case 0:
- return (0x1 & coverVariable) != 0;
- case 1:
- return (0x1 & coverVariable) == 0;
- }
- return false;
+ private void updateButtons() {
+ btnMode.setChecked(coverVariable.mWhitelist);
+ itemFilterButtons.setItem(coverVariable.mFilter);
}
}
}
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java b/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java
index f1c1bc7df7..74e5438bde 100644
--- a/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java
+++ b/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java
@@ -14,7 +14,6 @@ import gregtech.api.util.GT_CoverBehavior;
import gregtech.api.util.GT_Utility;
import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_OutputBus_ME;
import gregtech.common.tileentities.storage.GT_MetaTileEntity_DigitalChestBase;
-
import net.minecraft.client.gui.GuiButton;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
@@ -46,25 +45,22 @@ public class GT_Cover_ItemMeter extends GT_CoverBehavior {
long tMax = 0;
long tUsed = 0;
- IMetaTileEntity mte = ((IGregTechTileEntity)aTileEntity).getMetaTileEntity();
+ IMetaTileEntity mte = ((IGregTechTileEntity) aTileEntity).getMetaTileEntity();
if (mte instanceof GT_MetaTileEntity_DigitalChestBase) {
- GT_MetaTileEntity_DigitalChestBase dc = (GT_MetaTileEntity_DigitalChestBase)mte;
+ GT_MetaTileEntity_DigitalChestBase dc = (GT_MetaTileEntity_DigitalChestBase) mte;
tMax = dc.getMaxItemCount(); // currently it is limited by int, but there is not much reason for that
ItemStack[] inv = dc.getStoredItemData();
if (inv != null && inv.length > 1 && inv[1] != null)
tUsed = inv[1].stackSize;
- }
- else if (mte instanceof GT_MetaTileEntity_Hatch_OutputBus_ME) {
- if (((GT_MetaTileEntity_Hatch_OutputBus_ME)mte).isLastOutputFailed())
- {
+ } else if (mte instanceof GT_MetaTileEntity_Hatch_OutputBus_ME) {
+ if (((GT_MetaTileEntity_Hatch_OutputBus_ME) mte).isLastOutputFailed()) {
tMax = 64;
tUsed = 64;
}
- }
- else {
+ } else {
int[] tSlots = (aCoverVariable & SLOT_MASK) > 0 ?
- new int[] {(aCoverVariable & SLOT_MASK) - 1} :
- aTileEntity.getAccessibleSlotsFromSide(aSide);
+ new int[]{(aCoverVariable & SLOT_MASK) - 1} :
+ aTileEntity.getAccessibleSlotsFromSide(aSide);
for (int i : tSlots) {
if (i >= 0 && i < aTileEntity.getSizeInventory()) {
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java
index 577cff3d7a..62f8d3550b 100644
--- a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java
+++ b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java
@@ -12,6 +12,7 @@ import gregtech.api.net.GT_Packet_TileEntityCover;
import gregtech.api.net.GT_Packet_WirelessRedstoneCover;
import gregtech.api.util.GT_CoverBehavior;
import gregtech.api.util.GT_Utility;
+import gregtech.api.util.ISerializableObject;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraftforge.fluids.Fluid;
@@ -25,14 +26,26 @@ public abstract class GT_Cover_RedstoneWirelessBase extends GT_CoverBehavior {
@Override
public boolean onCoverRemoval(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, boolean aForced) {
- GregTech_API.sWirelessRedstone.put(Integer.valueOf(aCoverVariable), Byte.valueOf((byte) 0));
+ GregTech_API.sWirelessRedstone.put(aCoverVariable, (byte) 0);
return true;
}
@Override
+ protected boolean onCoverRightClickImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) {
+ if (((aX > 0.375D) && (aX < 0.625D)) || ((aSide > 3) && ((aY > 0.375D) && (aY < 0.625D)))) {
+ GregTech_API.sWirelessRedstone.put(aCoverVariable.get(), (byte) 0);
+ aCoverVariable.set((aCoverVariable.get() & (PRIVATE_MASK | CHECKBOX_MASK)) | (((Integer)GT_Utility.stackToInt(aPlayer.inventory.getCurrentItem())).hashCode() & PUBLIC_MASK));
+ GT_Utility.sendChatToPlayer(aPlayer, trans("081", "Frequency: ") + aCoverVariable);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ @SuppressWarnings("deprecation")
public boolean onCoverRightclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) {
if (((aX > 0.375D) && (aX < 0.625D)) || ((aSide > 3) && ((aY > 0.375D) && (aY < 0.625D)))) {
- GregTech_API.sWirelessRedstone.put(Integer.valueOf(aCoverVariable), Byte.valueOf((byte) 0));
+ GregTech_API.sWirelessRedstone.put(aCoverVariable, (byte) 0);
int val = GT_Utility.stackToInt(aPlayer.inventory.getCurrentItem()) * (1 + aPlayer.inventory.getCurrentItem().getItemDamage());
@@ -48,7 +61,7 @@ public abstract class GT_Cover_RedstoneWirelessBase extends GT_CoverBehavior {
@Override
public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) {
if (((aX > 0.375D) && (aX < 0.625D)) || ((aSide <= 3) || (((aY > 0.375D) && (aY < 0.625D)) || ((((aZ <= 0.375D) || (aZ >= 0.625D))))))) {
- GregTech_API.sWirelessRedstone.put(Integer.valueOf(aCoverVariable), Byte.valueOf((byte) 0));
+ GregTech_API.sWirelessRedstone.put(aCoverVariable, (byte) 0);
float[] tCoords = GT_Utility.getClickedFacingCoords(aSide, aX, aY, aZ);
short tAdjustVal = 0;
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_SolarPanel.java b/src/main/java/gregtech/common/covers/GT_Cover_SolarPanel.java
index ae1b73b8cb..09a9d5ab69 100644
--- a/src/main/java/gregtech/common/covers/GT_Cover_SolarPanel.java
+++ b/src/main/java/gregtech/common/covers/GT_Cover_SolarPanel.java
@@ -3,6 +3,7 @@ package gregtech.common.covers;
import gregtech.api.interfaces.tileentity.ICoverable;
import gregtech.api.util.GT_CoverBehavior;
import gregtech.api.util.GT_Utility;
+import gregtech.api.util.ISerializableObject;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
@@ -58,6 +59,29 @@ public class GT_Cover_SolarPanel extends GT_CoverBehavior {
}
@Override
+ protected boolean onCoverRightClickImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) {
+ if(aPlayer.capabilities.isCreativeMode){
+ GT_Utility.sendChatToPlayer(aPlayer,"Cleaned solar panel from "+(aCoverVariable.get()>>2)+"% dirt");
+ aCoverVariable.set(aCoverVariable.get() & 0x3);
+ return true;
+ }
+ for(int i=0;i<aPlayer.inventory.mainInventory.length;i++){
+ ItemStack is=aPlayer.inventory.mainInventory[i];
+ if(is==null) continue;
+ if(is.getUnlocalizedName().equals(new ItemStack(Items.water_bucket).getUnlocalizedName())){
+ aPlayer.inventory.mainInventory[i]=new ItemStack(Items.bucket);
+ if (aPlayer.inventoryContainer != null) aPlayer.inventoryContainer.detectAndSendChanges();
+ GT_Utility.sendChatToPlayer(aPlayer,"Cleaned solar panel from "+(aCoverVariable.get()>>2)+"% dirt");
+ aCoverVariable.set(aCoverVariable.get() & 0x3);
+ return true;
+ }
+ }
+ GT_Utility.sendChatToPlayer(aPlayer,"You need water bucket in inventory to clean the panel.");
+ return false;
+ }
+
+ @Override
+ @SuppressWarnings("deprecation")
public boolean onCoverRightclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) {
if(aPlayer.capabilities.isCreativeMode){
GT_Utility.sendChatToPlayer(aPlayer,"Cleaned solar panel from "+(aCoverVariable>>2)+"% dirt");