diff options
Diffstat (limited to 'src/main/java/gregtech/common/covers')
-rw-r--r-- | src/main/java/gregtech/common/covers/GT_Cover_SolarPanel.java | 70 |
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 |