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_SolarPanel.java70
1 files changed, 63 insertions, 7 deletions
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 ca25a0a12d..458d2354e3 100644
--- a/src/main/java/gregtech/common/covers/GT_Cover_SolarPanel.java
+++ b/src/main/java/gregtech/common/covers/GT_Cover_SolarPanel.java
@@ -1,7 +1,20 @@
package gregtech.common.covers;
+import forestry.core.items.ItemRegistry;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.OreDictNames;
+import gregtech.api.enums.OrePrefixes;
import gregtech.api.interfaces.tileentity.ICoverable;
+import gregtech.api.objects.XSTR;
import gregtech.api.util.GT_CoverBehavior;
+import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.api.util.GT_Utility;
+import ic2.api.item.ElectricItem;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+import net.minecraft.network.Packet;
public class GT_Cover_SolarPanel
extends GT_CoverBehavior {
@@ -12,21 +25,64 @@ public class GT_Cover_SolarPanel
}
public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) {
+ if(aSide != 1)return 0;
+ int coverState=aCoverVariable&0x3;
+ int coverNum=aCoverVariable>>2;
if (aTimer % 100L == 0L) {
- if ((aSide != 1) || (aTileEntity.getWorld().isThundering())) {
- aCoverVariable = 0;
+ if (aTileEntity.getWorld().isThundering()) {
+ return aTileEntity.getBiome().rainfall > 0.0F && aTileEntity.getSkyAtSide(aSide) ? Math.min(20,coverNum)<<2 : coverNum<<2;
} else {
- boolean bRain = (aTileEntity.getWorld().isRaining()) && (aTileEntity.getBiome().rainfall > 0.0F);
- aCoverVariable = bRain && aTileEntity.getWorld().skylightSubtracted >= 4 || !aTileEntity.getSkyAtSide(aSide) ? 0 : ((int) (!bRain && aTileEntity.getWorld().isDaytime() ? 1 : 2));
+ if(aTileEntity.getWorld().isRaining() && aTileEntity.getBiome().rainfall > 0.0F){//really rains
+ if(aTileEntity.getSkyAtSide(aSide)) coverNum=Math.min(30,coverNum);
+ if(aTileEntity.getWorld().skylightSubtracted >= 4){
+ if(aTileEntity.getWorld().isDaytime()){
+ coverState=2;
+ }else{
+ return coverNum<<2;
+ }
+ }
+ }else{//not rains
+ if(aTileEntity.getWorld().isDaytime()){
+ coverState=1;
+ }else{
+ coverState=2;
+ }
+ }
}
}
- if ((aCoverVariable == 1) || ((aCoverVariable == 2) && (aTimer % 8L == 0L))) {
- aTileEntity.injectEnergyUnits((byte) 6, this.mVoltage, 1L);
+ if (coverState == 1 || (coverState == 2 && aTimer % 8L == 0L))
+ aTileEntity.injectEnergyUnits((byte) 6, ((100L-(long)coverNum)*((long)this.mVoltage))/100L, 1L);
+ if(aTimer % 28800L == 0L && coverNum<100 && (coverNum>10 || (new XSTR()).nextInt(3)==2))
+ coverNum++;
+ return coverState+(coverNum<<2);
+ }
+
+ @Override
+ 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");
+ aTileEntity.setCoverDataAtSide(aSide, (aCoverVariable & 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>>2)+"% dirt");
+ aTileEntity.setCoverDataAtSide(aSide, (aCoverVariable & 0x3));
+ return true;
+ }
}
- return aCoverVariable;
+ GT_Utility.sendChatToPlayer(aPlayer,"You need water bucket in inventory to clean the panel with hand.");
+ return false;
}
+
+
public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {
return 1;
}
+
} \ No newline at end of file