From ebf569a9065d3d69e615cb1b9d709097b77d94a5 Mon Sep 17 00:00:00 2001 From: Thomas Guillemard Date: Tue, 13 Dec 2016 17:24:38 +0100 Subject: [PATCH 1/3] Make treetap working with the IC2 rubber tree (Fix #786) (#831) Changes: - The dependency of IC2 have been updated to the last version - This implementation follow the original treetap logic but use Techreborn original electrical cost. --- build.gradle | 4 ++-- .../techreborn/blocks/BlockRubberLog.java | 3 ++- .../items/tools/ItemElectricTreetap.java | 22 +++++++++++++++++- .../techreborn/items/tools/ItemTreeTap.java | 23 +++++++++++++++++++ 4 files changed, 48 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 891f739f6..d2c672101 100644 --- a/build.gradle +++ b/build.gradle @@ -100,7 +100,7 @@ dependencies { deobfCompile "slimeknights:TConstruct:1.10.2-2.5.3.jenkins384" deobfCompile "slimeknights.mantle:Mantle:1.10.2-1.0.0.jenkins170" deobfCompile "mcjty.theoneprobe:TheOneProbe:1.9.4-1.0.4-14" - deobfCompile 'net.industrial-craft:industrialcraft-2:2.6.58-ex110:dev' + deobfCompile 'net.industrial-craft:industrialcraft-2:2.6.129-ex110' } @@ -175,7 +175,7 @@ uploadArchives { } } else - { + { //this is when the build is executed on the master node println 'Uploading to local Maven Repo' repository(url: "file:///var/www/maven/") diff --git a/src/main/java/techreborn/blocks/BlockRubberLog.java b/src/main/java/techreborn/blocks/BlockRubberLog.java index 346a82f89..b6f2c5a8e 100644 --- a/src/main/java/techreborn/blocks/BlockRubberLog.java +++ b/src/main/java/techreborn/blocks/BlockRubberLog.java @@ -151,7 +151,7 @@ public class BlockRubberLog extends Block implements ITexturedBlock { super.onBlockActivated(worldIn, pos, state, playerIn, hand, heldItem, side, hitX, hitY, hitZ); ItemStack stack = playerIn.getHeldItem(EnumHand.MAIN_HAND); if (stack != null) - if ((stack.getItem() instanceof ItemElectricTreetap && PoweredItem.canUseEnergy(20, stack)) || stack.getItem() instanceof ItemTreeTap) + if ((stack.getItem() instanceof ItemElectricTreetap && PoweredItem.canUseEnergy(20, stack)) || stack.getItem() instanceof ItemTreeTap) { if (state.getValue(HAS_SAP)) { if (state.getValue(SAP_SIDE) == side) { worldIn.setBlockState(pos, @@ -180,6 +180,7 @@ public class BlockRubberLog extends Block implements ITexturedBlock { return true; } } + } return false; } diff --git a/src/main/java/techreborn/items/tools/ItemElectricTreetap.java b/src/main/java/techreborn/items/tools/ItemElectricTreetap.java index 212dd224b..36c58bf42 100644 --- a/src/main/java/techreborn/items/tools/ItemElectricTreetap.java +++ b/src/main/java/techreborn/items/tools/ItemElectricTreetap.java @@ -1,17 +1,26 @@ package techreborn.items.tools; +import ic2.core.item.tool.ItemTreetap; import me.modmuss50.jsonDestroyer.api.ITexturedItem; +import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.block.model.ModelResourceLocation; 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.EnumActionResult; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import reborncore.RebornCore; import reborncore.api.power.IEnergyItemInfo; import reborncore.common.powerSystem.PoweredItem; import techreborn.client.TechRebornCreativeTab; +import techreborn.compat.CompatManager; import techreborn.lib.ModInfo; import java.util.List; @@ -26,13 +35,24 @@ public class ItemElectricTreetap extends Item implements IEnergyItemInfo, ITextu public int cost = 20; public ItemElectricTreetap() { - super(); setUnlocalizedName("techreborn.electric_treetap"); setCreativeTab(TechRebornCreativeTab.instance); setMaxStackSize(1); RebornCore.jsonDestroyer.registerObject(this); } + @Override + public EnumActionResult onItemUse(ItemStack stack, EntityPlayer playerIn, World worldIn, BlockPos pos, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) { + IBlockState state = worldIn.getBlockState(pos); + Block block = state.getBlock(); + if(CompatManager.isIC2Loaded && block == Block.getBlockFromName("ic2:rubber_wood") && PoweredItem.canUseEnergy(20, stack)) + if (ItemTreetap.attemptExtract(playerIn, worldIn, pos, side, state, null) && !worldIn.isRemote) { + PoweredItem.useEnergy(20, stack); + return EnumActionResult.SUCCESS; + } + return EnumActionResult.PASS; + } + @Override public double getMaxPower(ItemStack stack) { return maxCharge; diff --git a/src/main/java/techreborn/items/tools/ItemTreeTap.java b/src/main/java/techreborn/items/tools/ItemTreeTap.java index 6ceb5551a..c63d4dbb0 100644 --- a/src/main/java/techreborn/items/tools/ItemTreeTap.java +++ b/src/main/java/techreborn/items/tools/ItemTreeTap.java @@ -1,14 +1,23 @@ package techreborn.items.tools; +import ic2.core.item.tool.ItemTreetap; import me.modmuss50.jsonDestroyer.api.ITexturedItem; +import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import reborncore.RebornCore; import techreborn.client.TechRebornCreativeTab; +import techreborn.compat.CompatManager; import techreborn.lib.ModInfo; public class ItemTreeTap extends Item implements ITexturedItem { @@ -21,6 +30,20 @@ public class ItemTreeTap extends Item implements ITexturedItem { setCreativeTab(TechRebornCreativeTab.instance); } + + @Override + public EnumActionResult onItemUse(ItemStack stack, EntityPlayer playerIn, World worldIn, BlockPos pos, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) { + IBlockState state = worldIn.getBlockState(pos); + Block block = state.getBlock(); + if(CompatManager.isIC2Loaded && block == Block.getBlockFromName("ic2:rubber_wood")) { + ItemTreetap.attemptExtract(playerIn, worldIn, pos, side, state, null); + if (!worldIn.isRemote) + stack.damageItem(1, playerIn); + return EnumActionResult.SUCCESS; + } + return EnumActionResult.PASS; + } + @Override public boolean showDurabilityBar(ItemStack stack) { return stack.getMetadata() != 0; From ee9690877599632ab68e1ca6b18da19c4ae61d52 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Tue, 13 Dec 2016 19:19:12 +0000 Subject: [PATCH 2/3] Disable recipe, to fix crash with a certain set of mods. #releaseBuild --- src/main/java/techreborn/init/ModRecipes.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/java/techreborn/init/ModRecipes.java b/src/main/java/techreborn/init/ModRecipes.java index 0aff4c1e9..737c7851c 100644 --- a/src/main/java/techreborn/init/ModRecipes.java +++ b/src/main/java/techreborn/init/ModRecipes.java @@ -3159,12 +3159,13 @@ public class ModRecipes { RecipeHandler.addRecipe(new IndustrialElectrolyzerRecipe(ItemDusts.getDustByName("darkAshes"), ItemCells.getCellByName("empty", 2), ItemCells.getCellByName("carbon", 2), null, null, null, 20, 30)); - if (OreUtil.doesOreExistAndValid("dustSalt")) { - ItemStack salt = OreDictionary.getOres("dustSalt").get(0); - salt.stackSize = 2; - RecipeHandler.addRecipe(new IndustrialElectrolyzerRecipe(salt, ItemCells.getCellByName("empty", 2), - ItemCells.getCellByName("sodium"), ItemCells.getCellByName("chlorine"), null, null, 40, 60)); - } + //Disable recipe to fix crash. +// if (OreUtil.doesOreExistAndValid("dustSalt")) { +// ItemStack salt = OreDictionary.getOres("dustSalt").get(0); +// salt.stackSize = 2; +// RecipeHandler.addRecipe(new IndustrialElectrolyzerRecipe(salt, ItemCells.getCellByName("empty", 2), +// ItemCells.getCellByName("sodium"), ItemCells.getCellByName("chlorine"), null, null, 40, 60)); +// } Item drill = OreDictionary.getOres("drillBasic").get(0).getItem(); ItemStack drillStack = new ItemStack(drill, 1, OreDictionary.WILDCARD_VALUE); From 47df52a7f29c934232cfef82f0ef8e2067f9f157 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Wed, 14 Dec 2016 09:13:30 +0000 Subject: [PATCH 3/3] Improve power transfur between items, closes https://github.com/TechReborn/TechReborn/issues/835 --- src/main/java/techreborn/tiles/storage/TileEnergyStorage.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/techreborn/tiles/storage/TileEnergyStorage.java b/src/main/java/techreborn/tiles/storage/TileEnergyStorage.java index 58f56c237..1b47be17c 100644 --- a/src/main/java/techreborn/tiles/storage/TileEnergyStorage.java +++ b/src/main/java/techreborn/tiles/storage/TileEnergyStorage.java @@ -75,7 +75,7 @@ public class TileEnergyStorage extends TilePowerAcceptor implements IWrenchable, } IEnergyItemInfo item = (IEnergyItemInfo) stack.getItem(); if (item.canProvideEnergy(stack)) { - if (getEnergy() != getMaxPower()) { + if (getEnergy() != getMaxPower() && PoweredItem.getEnergy(stack) > 0) { addEnergy(item.getMaxTransfer(stack)); PoweredItem.setEnergy(PoweredItem.getEnergy(stack) - item.getMaxTransfer(stack), stack); }