diff --git a/mechanical/src/main/java/resonantinduction/mechanical/fluid/pipe/RenderPipe.java b/mechanical/src/main/java/resonantinduction/mechanical/fluid/pipe/RenderPipe.java index 3d9294e4..e045545a 100644 --- a/mechanical/src/main/java/resonantinduction/mechanical/fluid/pipe/RenderPipe.java +++ b/mechanical/src/main/java/resonantinduction/mechanical/fluid/pipe/RenderPipe.java @@ -113,7 +113,9 @@ public class RenderPipe implements ISimpleItemRenderer public void renderInventoryItem(ItemStack itemStack) { GL11.glPushMatrix(); - render(itemStack.getItemDamage(), Byte.parseByte("000011", 2)); + GL11.glTranslatef(0.5F, 1.5F, 0.5F); + GL11.glScalef(1.0F, -1F, -1F); + render(itemStack.getItemDamage(), Byte.parseByte("001100", 2)); GL11.glPopMatrix(); } } \ No newline at end of file diff --git a/mechanical/src/main/java/resonantinduction/mechanical/process/BlockFilter.java b/mechanical/src/main/java/resonantinduction/mechanical/process/BlockFilter.java index 23ecbfe9..a321e00d 100644 --- a/mechanical/src/main/java/resonantinduction/mechanical/process/BlockFilter.java +++ b/mechanical/src/main/java/resonantinduction/mechanical/process/BlockFilter.java @@ -6,6 +6,10 @@ import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.IFluidHandler; import resonantinduction.api.recipe.MachineRecipes; import resonantinduction.api.recipe.MachineRecipes.RecipeType; import resonantinduction.api.recipe.RecipeResource; @@ -50,10 +54,18 @@ public class BlockFilter extends BlockTile Block bAbove = Block.blocksList[checkAbove.getBlockID(world)]; Block bBelow = Block.blocksList[checkAbove.getBlockID(world)]; - if (bAbove instanceof BlockFluidMixture && world.isAirBlock(checkBelow.intX(), checkBelow.intY(), checkBelow.intZ())) + if (bAbove instanceof BlockFluidMixture && (world.isAirBlock(checkBelow.intX(), checkBelow.intY(), checkBelow.intZ()) || checkBelow.getTileEntity(world) instanceof IFluidHandler)) { world.spawnParticle("dripWater", x + 0.5, y, z + 0.5, 0, 0, 0); + if (checkBelow.getTileEntity(world) instanceof IFluidHandler) + { + IFluidHandler handler = ((IFluidHandler) checkBelow.getTileEntity(world)); + + if (handler.fill(ForgeDirection.UP, new FluidStack(FluidRegistry.WATER, FluidContainerRegistry.BUCKET_VOLUME), false) <= 0) + return; + } + /** * Leak the fluid down. */ @@ -68,9 +80,9 @@ public class BlockFilter extends BlockTile InventoryUtility.dropItemStack(world, checkAbove.clone().add(0.5), resoure.getItemStack().copy()); } - //TODO: Check if this is correct? + // TODO: Check if this is correct? int remaining = amount - 2; - + /** * Remove liquid from top. */ @@ -80,7 +92,15 @@ public class BlockFilter extends BlockTile /** * Add liquid to bottom. */ - checkBelow.setBlock(world, Block.waterMoving.blockID); + if (checkBelow.getTileEntity(world) instanceof IFluidHandler) + { + IFluidHandler handler = ((IFluidHandler) checkBelow.getTileEntity(world)); + handler.fill(ForgeDirection.UP, new FluidStack(FluidRegistry.WATER, FluidContainerRegistry.BUCKET_VOLUME), true); + } + else + { + checkBelow.setBlock(world, Block.waterMoving.blockID); + } } } diff --git a/src/main/java/resonantinduction/core/nei/RITemplateRecipeHandler.java b/src/main/java/resonantinduction/core/nei/RITemplateRecipeHandler.java index 89ee865b..cd21ce3a 100644 --- a/src/main/java/resonantinduction/core/nei/RITemplateRecipeHandler.java +++ b/src/main/java/resonantinduction/core/nei/RITemplateRecipeHandler.java @@ -18,41 +18,34 @@ import codechicken.nei.recipe.TemplateRecipeHandler; public abstract class RITemplateRecipeHandler extends TemplateRecipeHandler { - int[][] inputSlots = new int[][] { - {11, 5}, {29, 5}, - {11, 23}, {29, 23}, - {11, 41}, {29, 41} - }; - int[][] outputSlots = new int[][] { - {121, 5}, {139, 5}, - {121, 23}, {139, 23}, - {121, 41}, {139, 41} - }; + int[][] inputSlots = new int[][] { { 11, 5 }, { 29, 5 }, { 11, 23 }, { 29, 23 }, { 11, 41 }, { 29, 41 } }; + int[][] outputSlots = new int[][] { { 121, 5 }, { 139, 5 }, { 121, 23 }, { 139, 23 }, { 121, 41 }, { 139, 41 } }; @Override public abstract String getRecipeName(); - + public abstract MachineRecipes.RecipeType getMachine(); - @Override - public String getOverlayIdentifier() - { - return getMachine().name().toLowerCase(); - } - + @Override + public String getOverlayIdentifier() + { + return getMachine().name().toLowerCase(); + } + @Override public void loadTransferRects() { - //transferRects.add(new TemplateRecipeHandler.RecipeTransferRect(new Rectangle(57, 26, 52, 22), getMachine().name().toLowerCase(), new Object[0])); + // transferRects.add(new TemplateRecipeHandler.RecipeTransferRect(new Rectangle(57, 26, 52, + // 22), getMachine().name().toLowerCase(), new Object[0])); // No point, there is no GUI class to use it... :( } - @Override - public int recipiesPerPage() - { - return 1; - } - + @Override + public int recipiesPerPage() + { + return 1; + } + @Override public String getGuiTexture() { @@ -114,12 +107,15 @@ public abstract class RITemplateRecipeHandler extends TemplateRecipeHandler if (output instanceof ItemStackResource) { this.outputs.add(new PositionedStack(((ItemStackResource) output).itemStack, outputSlots[i][0], outputSlots[i++][1])); - } else if (output instanceof OreDictResource) + } + else if (output instanceof OreDictResource) { this.outputs.add(new PositionedStack(OreDictionary.getOres(((OreDictResource) output).name), outputSlots[i][0], outputSlots[i++][1])); - } else if (output instanceof FluidStackResource) + } + else if (output instanceof FluidStackResource) { - //this.inputs.add(new PositionedStack(((FluidStackResource) output), outputSlots[i][0], outputSlots[i++][1])); + // this.inputs.add(new PositionedStack(((FluidStackResource) output), + // outputSlots[i][0], outputSlots[i++][1])); // TODO fluidstack compatibility } this.outputs.get(this.outputs.size() - 1).generatePermutations(); @@ -140,15 +136,20 @@ public abstract class RITemplateRecipeHandler extends TemplateRecipeHandler if (input instanceof ItemStackResource) { this.inputs.add(new PositionedStack(((ItemStackResource) input).itemStack, inputSlots[i][0], inputSlots[i++][1])); - } else if (input instanceof OreDictResource) + } + else if (input instanceof OreDictResource) { this.inputs.add(new PositionedStack(OreDictionary.getOres(((OreDictResource) input).name), inputSlots[i][0], inputSlots[i++][1])); - } else if (input instanceof FluidStackResource) + } + else if (input instanceof FluidStackResource) { - //this.inputs.add(new PositionedStack(((FluidStackResource) input), inputSlots[i][0], inputSlots[i++][1])); + // this.inputs.add(new PositionedStack(((FluidStackResource) input), + // inputSlots[i][0], inputSlots[i++][1])); // TODO fluidstack compatibility } - this.inputs.get(this.inputs.size() - 1).generatePermutations(); + + if (this.inputs.size() > 0) + this.inputs.get(this.inputs.size() - 1).generatePermutations(); } return inputs; } @@ -170,8 +171,8 @@ public abstract class RITemplateRecipeHandler extends TemplateRecipeHandler { boolean canProduce = false; this.getOtherStacks(); - - for (int i = 0; i < this.outputResources.length; i ++) + + for (int i = 0; i < this.outputResources.length; i++) { RecipeResource rStack = this.outputResources[i]; if (rStack.equals(product)) @@ -188,7 +189,7 @@ public abstract class RITemplateRecipeHandler extends TemplateRecipeHandler { boolean doesUse = false; this.getIngredients(); - + for (int i = 0; i < this.inputResources.length; i++) { RecipeResource rStack = this.inputResources[i];