From 0427ab89f1753a44b30cbc35ce021cbbdc845109 Mon Sep 17 00:00:00 2001 From: Foghrye4 Date: Thu, 10 Aug 2017 18:52:45 +0300 Subject: fix missing source folder --- src/main/java/ihl/handpump/IHLHandPump.java | 351 ++++++++++++++++++++++++++++ 1 file changed, 351 insertions(+) create mode 100644 src/main/java/ihl/handpump/IHLHandPump.java (limited to 'src/main/java/ihl/handpump/IHLHandPump.java') diff --git a/src/main/java/ihl/handpump/IHLHandPump.java b/src/main/java/ihl/handpump/IHLHandPump.java new file mode 100644 index 0000000..a21919d --- /dev/null +++ b/src/main/java/ihl/handpump/IHLHandPump.java @@ -0,0 +1,351 @@ +package ihl.handpump; + +import java.util.LinkedList; +import java.util.List; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ic2.api.item.ElectricItem; +import ic2.api.item.IBoxable; +import ic2.api.item.IC2Items; +import ic2.api.item.IElectricItem; +import ic2.api.item.IItemHudInfo; +import ic2.core.item.resources.ItemCell; +import ic2.core.util.LiquidUtil; +import ihl.IHLCreativeTab; +import ihl.IHLMod; +import ihl.IHLModInfo; +import ihl.utils.IHLUtils; +import ihl.worldgen.ores.IHLFluid; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; +import net.minecraftforge.fluids.BlockFluidBase; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.IFluidContainerItem; + +public class IHLHandPump extends Item implements IElectricItem, IBoxable, IItemHudInfo { + + protected int tier=1; + protected int maxCharge=30000; + protected int operationEUCost=600; + protected int transferLimit = 2000; + + public IHLHandPump() + { + super(); + this.setMaxDamage(27); + this.maxCharge=IHLMod.config.handpumpMaxCharge; + this.operationEUCost=IHLMod.config.handpumpOperationEUCost; + this.tier=IHLMod.config.handpumpTier; + this.setCreativeTab(IHLCreativeTab.tab); + this.maxStackSize=1; + } + + @Override + public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer entityPlayer) + { + MovingObjectPosition movingobjectposition = IHLUtils.returnMOPFromPlayer(entityPlayer, world); + if(movingobjectposition!=null) + { + int x=movingobjectposition.blockX; + int y=movingobjectposition.blockY; + int z=movingobjectposition.blockZ; + Block block = world.getBlock(x, y, z); + if(!block.getMaterial().isLiquid()) + { + y++; + block = world.getBlock(x, y, z); + if(!block.getMaterial().isLiquid()) + { + return itemStack; + } + } + if(world.isRemote && ElectricItem.manager.use(itemStack, this.operationEUCost, entityPlayer)) + { + entityPlayer.playSound(IHLModInfo.MODID+":handpumpOne", (float) (Math.random()*0.2D+0.6D), (float) (Math.random()*0.1D+0.9D)); + return itemStack; + } + else + { + BlockWithCoordinates blockXYZ = this.searchSource(world, x, y, z); + if(blockXYZ==null) + { + return itemStack; + } + block = blockXYZ.block; + FluidStack fluid1 = null; + if(block instanceof BlockFluidBase) + { + fluid1 = ((BlockFluidBase)block).drain(world, blockXYZ.x, blockXYZ.y, blockXYZ.z, false); + } + else if(blockXYZ.isWaterBlock()) + { + fluid1 = new FluidStack(FluidRegistry.WATER, 1000); + } + else if(blockXYZ.isLavaBlock()) + { + fluid1 = new FluidStack(FluidRegistry.LAVA, 1000); + } + int amount2=0; + ItemStack stack = this.getItemStackContains(fluid1, entityPlayer); + if(stack!=null && fluid1 != null) + { + amount2 = LiquidUtil.fillContainerStack(stack, entityPlayer, fluid1, true); + } + if(amount2 > 0) + { + if(ElectricItem.manager.use(itemStack, this.operationEUCost, entityPlayer) && blockXYZ.setMetadataOrDestroyBlock(world, blockXYZ.meta+1,7)) + { + ElectricItem.manager.discharge(itemStack,this.operationEUCost,1,false,false, false); + LiquidUtil.fillContainerStack(stack, entityPlayer, fluid1, false); + entityPlayer.inventoryContainer.detectAndSendChanges(); + } + return itemStack; + } + else if(entityPlayer.inventory.hasItemStack(IC2Items.getItem("cell"))) + { + if(ElectricItem.manager.use(itemStack, this.operationEUCost, entityPlayer) && blockXYZ.setMetadataOrDestroyBlock(world, blockXYZ.meta+1,7)) + { + ElectricItem.manager.discharge(itemStack,this.operationEUCost,1,false,false, false); + this.fillFluidCell(fluid1, entityPlayer); + entityPlayer.inventoryContainer.detectAndSendChanges(); + return itemStack; + } + } + } + } + return itemStack; + } + + + protected ItemStack getItemStackContains(FluidStack fluidStack, EntityPlayer player) { + for (int i=0;i 0) + { + return player.inventory.getStackInSlot(i); + } + } + } + } + return null; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister par1IconRegister) + { + this.itemIcon = par1IconRegister.registerIcon(IHLModInfo.MODID + ":itemElectricHandpump"); + } + + @Override + public boolean canProvideEnergy(ItemStack itemStack) { + return false; + } + + @Override + public Item getChargedItem(ItemStack itemStack) { + return this; + } + + @Override + public Item getEmptyItem(ItemStack itemStack) { + return this; + } + + @Override + public double getMaxCharge(ItemStack itemStack) { + return this.maxCharge; + } + + @Override + public double getTransferLimit(ItemStack itemStack) { + return this.transferLimit; + } + + @Override + public int getTier(ItemStack itemStack) { + return this.tier; + } + + @Override + public List getHudInfo(ItemStack itemStack) { + LinkedList info = new LinkedList(); + info.add(ElectricItem.manager.getToolTip(itemStack)); + info.add("Power Tier: " + this.tier); + return info; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + public void addInformation(ItemStack itemStack, EntityPlayer player, List info, boolean b) + { + info.add("PowerTier: " + this.tier); + } + + @Override + public boolean canBeStoredInToolbox(ItemStack itemstack) { + return true; + } + + @Override + public boolean isBookEnchantable(ItemStack itemstack1, ItemStack itemstack2) + { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + @SuppressWarnings({ "unchecked", "rawtypes" }) + public void getSubItems(Item item, CreativeTabs tabs, List itemList) + { + itemList.add(this.getItemStack(this.maxCharge)); + itemList.add(this.getItemStack(0)); + } + + public ItemStack getItemStack(int charge) + { + ItemStack ret = new ItemStack(this); + ElectricItem.manager.charge(ret, charge, this.maxCharge, true, false); + return ret; + } + + + @Override + public double getDurabilityForDisplay(ItemStack stack) + { + return (this.maxCharge-ElectricItem.manager.getCharge(stack))/this.maxCharge; + } + + protected void fillFluidCell(FluidStack fluid1, EntityPlayer player) + { + ItemStack cell = IHLFluid.getCell(fluid1.getFluid().getName()); + if(cell==null) + { + return; + } + ItemStack[] inv = player.inventory.mainInventory; + for (int i=0;i<=35;i++) + { + if(inv[i]!=null) + { + if(inv[i].getItem() instanceof ItemCell) + { + if(inv[i].getItemDamage()==0) + { + if (IHLUtils.addItemStackToInventory(player, cell)) + { + if(inv[i].stackSize<=1) + { + ItemStack sourceItemStack = inv[i].copy(); + sourceItemStack.stackSize=player.inventory.clearInventory(sourceItemStack.getItem(),0)-1; + if(sourceItemStack.stackSize>0) + { + player.inventory.addItemStackToInventory(sourceItemStack); + } + } + else + { + inv[i].stackSize--; + } + return; + } + } + } + } + } + } + + protected BlockWithCoordinates searchSource(World world, int startx, int starty, int startz) + { + int currentFlowDecay=getFlowDecay(world, startx, starty, startz); + for (int i=0; i<256;i++) + { + if(getFlowDecay(world, startx, starty+1, startz)>=0) + { + starty++; + currentFlowDecay=getFlowDecay(world, startx, starty, startz); + } + + else if(getFlowDecay(world, startx+1, starty+1, startz)>=0) + { + starty++; + startx++; + currentFlowDecay=getFlowDecay(world, startx, starty, startz); + } + + else if(getFlowDecay(world, startx-1, starty+1, startz)>=0) + { + starty++; + startx--; + currentFlowDecay=getFlowDecay(world, startx, starty, startz); + } + + else if(getFlowDecay(world, startx, starty+1, startz+1)>=0) + { + starty++; + startz++; + currentFlowDecay=getFlowDecay(world, startx, starty, startz); + } + + else if(getFlowDecay(world, startx, starty+1, startz-1)>=0) + { + starty++; + startz--; + currentFlowDecay=getFlowDecay(world, startx, starty, startz); + } + //Start checking neighbor blocks to lower flow decay. + else if(getFlowDecay(world, startx-1, starty, startz)