Skip to content

Commit

Permalink
Update for new fluid capabilities
Browse files Browse the repository at this point in the history
  • Loading branch information
mezz committed Jun 4, 2016
1 parent dbbb727 commit 7bd5bb1
Show file tree
Hide file tree
Showing 58 changed files with 927 additions and 1,594 deletions.
4 changes: 2 additions & 2 deletions gradle.properties
@@ -1,9 +1,9 @@
mcversion=1.9.4
forgeversion=12.17.0.1948
forgeversion=12.17.0.1950
mcp_mappings=snapshot_20160525

jei_version=3.4.0.+

version_major=5
version_minor=0
version_patch=6
version_patch=7
2 changes: 1 addition & 1 deletion src/main/java/forestry/Forestry.java
Expand Up @@ -49,7 +49,7 @@
name = "Forestry",
version = Constants.VERSION,
guiFactory = "forestry.core.config.ForestryGuiConfigFactory",
dependencies = "required-after:Forge@[12.17.0.1941,);"
dependencies = "required-after:Forge@[12.17.0.1949,);"
+ "after:Buildcraft|Core@[7.2,);"
+ "after:BuildCraft|Energy@[7.2,);"
+ "after:ExtrabiomesXL;"
Expand Down
Expand Up @@ -12,10 +12,10 @@

import net.minecraft.item.ItemStack;

import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidUtil;

import forestry.apiculture.multiblock.TileAlvearyHygroregulator;
import forestry.core.fluids.FluidHelper;
import forestry.core.inventory.InventoryAdapterTile;

public class InventoryHygroregulator extends InventoryAdapterTile<TileAlvearyHygroregulator> {
Expand All @@ -28,8 +28,8 @@ public InventoryHygroregulator(TileAlvearyHygroregulator alvearyHygroregulator)
@Override
public boolean canSlotAccept(int slotIndex, ItemStack itemStack) {
if (slotIndex == SLOT_INPUT) {
Fluid fluid = FluidHelper.getFluidInContainer(itemStack);
return tile.getTankManager().accepts(fluid);
FluidStack fluid = FluidUtil.getFluidContained(itemStack);
return tile.getTankManager().canFillFluidType(fluid);
}
return false;
}
Expand Down
Expand Up @@ -17,10 +17,10 @@
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing;

import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidHandler;
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;

import forestry.api.core.IClimateControlled;
import forestry.api.multiblock.IAlvearyComponent;
Expand All @@ -36,7 +36,7 @@
import forestry.core.inventory.IInventoryAdapter;
import forestry.core.tiles.ILiquidTankTile;

public class TileAlvearyHygroregulator extends TileAlveary implements IInventory, ILiquidTankTile, IFluidHandler, IAlvearyComponent.Climatiser {
public class TileAlvearyHygroregulator extends TileAlveary implements IInventory, ILiquidTankTile, IAlvearyComponent.Climatiser {
private final HygroregulatorRecipe[] recipes;

private final TankManager tankManager;
Expand All @@ -55,7 +55,8 @@ public TileAlvearyHygroregulator() {
Fluid lava = Fluids.LAVA.getFluid();
Fluid liquidIce = Fluids.ICE.getFluid();

this.liquidTank = new FilteredTank(Constants.PROCESSOR_TANK_CAPACITY, water, lava, liquidIce);
this.liquidTank = new FilteredTank(Constants.PROCESSOR_TANK_CAPACITY).setFilters(water, lava, liquidIce);

this.tankManager = new TankManager(this, liquidTank);

this.recipes = new HygroregulatorRecipe[]{new HygroregulatorRecipe(new FluidStack(water, 1), 1, 0.01f, -0.005f),
Expand Down Expand Up @@ -91,7 +92,7 @@ public void changeClimate(int tickCount, IClimateControlled climateControlled) {
currentRecipe = getRecipe(liquidTank.getFluid());

if (currentRecipe != null) {
liquidTank.drain(currentRecipe.liquid.amount, true);
liquidTank.drainInternal(currentRecipe.liquid.amount, true);
transferTime = currentRecipe.transferTime;
}
}
Expand Down Expand Up @@ -150,33 +151,22 @@ public TankManager getTankManager() {
}

@Override
public int fill(EnumFacing from, FluidStack resource, boolean doFill) {
return tankManager.fill(from, resource, doFill);
}

@Override
public FluidStack drain(EnumFacing from, FluidStack resource, boolean doDrain) {
return tankManager.drain(from, resource, doDrain);
}

@Override
public FluidStack drain(EnumFacing from, int maxDrain, boolean doDrain) {
return tankManager.drain(from, maxDrain, doDrain);
}

@Override
public boolean canFill(EnumFacing from, Fluid fluid) {
return tankManager.canFill(from, fluid);
}

@Override
public boolean canDrain(EnumFacing from, Fluid fluid) {
return tankManager.canDrain(from, fluid);
public boolean hasCapability(Capability<?> capability, EnumFacing facing) {
if (super.hasCapability(capability, facing)) {
return true;
}
return capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY;
}

@Override
public FluidTankInfo[] getTankInfo(EnumFacing from) {
return tankManager.getTankInfo(from);
public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
if (super.hasCapability(capability, facing)) {
return super.getCapability(capability, facing);
}
if (capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY) {
return CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY.cast(tankManager);
}
return null;
}

@Override
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/forestry/core/PluginCore.java
Expand Up @@ -17,6 +17,7 @@
import java.util.List;
import java.util.Set;

import forestry.core.fluids.Fluids;
import net.minecraft.command.ICommand;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
Expand Down Expand Up @@ -48,7 +49,6 @@
import forestry.core.commands.RootCommand;
import forestry.core.config.Config;
import forestry.core.config.Constants;
import forestry.core.fluids.Fluids;
import forestry.core.genetics.alleles.AlleleFactory;
import forestry.core.genetics.alleles.AlleleHelper;
import forestry.core.genetics.alleles.AlleleRegistry;
Expand Down Expand Up @@ -336,9 +336,9 @@ public void registerRecipes() {
int bogEarthOutputCan = ForestryAPI.activeMode.getIntegerSetting("recipe.output.bogearth.can");
if (bogEarthOutputCan > 0) {
ItemStack bogEarth = blocks.bogEarth.get(BlockBogEarth.SoilType.BOG_EARTH, bogEarthOutputCan);
ItemStack canWater = PluginFluids.items.getContainer(EnumContainerType.CAN, Fluids.WATER).getItemStack();
ItemStack waxCapsuleWater = PluginFluids.items.getContainer(EnumContainerType.CAPSULE, Fluids.WATER).getItemStack();
ItemStack refractoryWater = PluginFluids.items.getContainer(EnumContainerType.REFRACTORY, Fluids.WATER).getItemStack();
ItemStack canWater = PluginFluids.items.getContainer(EnumContainerType.CAN, Fluids.WATER);
ItemStack waxCapsuleWater = PluginFluids.items.getContainer(EnumContainerType.CAPSULE, Fluids.WATER);
ItemStack refractoryWater = PluginFluids.items.getContainer(EnumContainerType.REFRACTORY, Fluids.WATER);
RecipeUtil.addRecipe(bogEarth, "#Y#", "YXY", "#Y#", '#', Blocks.DIRT, 'X', canWater, 'Y', OreDictUtil.SAND);
RecipeUtil.addRecipe(bogEarth, "#Y#", "YXY", "#Y#", '#', Blocks.DIRT, 'X', waxCapsuleWater, 'Y', OreDictUtil.SAND);
RecipeUtil.addRecipe(bogEarth, "#Y#", "YXY", "#Y#", '#', Blocks.DIRT, 'X', refractoryWater, 'Y', OreDictUtil.SAND);
Expand Down
41 changes: 8 additions & 33 deletions src/main/java/forestry/core/PluginFluids.java
Expand Up @@ -10,33 +10,27 @@
******************************************************************************/
package forestry.core;

import net.minecraft.block.Block;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;

import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fml.common.registry.GameData;
import net.minecraftforge.fml.common.registry.GameRegistry;

import forestry.api.core.ForestryAPI;
import forestry.api.fuels.FuelManager;
import forestry.api.fuels.GeneratorFuel;
import forestry.api.recipes.RecipeManagers;
import forestry.core.config.Config;
import forestry.core.config.Constants;
import forestry.core.fluids.Fluids;
import forestry.core.fluids.LiquidRegistryHelper;
import forestry.core.items.EnumContainerType;
import forestry.core.items.ItemLiquidContainer;
import forestry.core.items.ItemRegistryFluids;
import forestry.core.proxy.Proxies;
import forestry.core.utils.Log;
import forestry.plugins.BlankForestryPlugin;
import forestry.plugins.ForestryPlugin;
import forestry.plugins.ForestryPluginUids;
import net.minecraft.block.Block;
import net.minecraft.item.ItemBlock;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fml.common.registry.GameData;
import net.minecraftforge.fml.common.registry.GameRegistry;

@ForestryPlugin(pluginID = ForestryPluginUids.FLUIDS, name = "Fluids", author = "mezz", url = Constants.URL, unlocalizedDescription = "for.plugin.fluids.description")
public class PluginFluids extends BlankForestryPlugin {
Expand Down Expand Up @@ -99,25 +93,6 @@ public void registerItemsAndBlocks() {

@Override
public void doInit() {
for (Fluids fluidType : Fluids.values()) {
if (fluidType.getFluid() == null) {
continue;
}

for (EnumContainerType type : EnumContainerType.values()) {
ItemLiquidContainer container = items.getContainer(type, fluidType);
if (container == null) {
continue;
}

LiquidRegistryHelper.registerLiquidContainer(fluidType, container.getItemStack());
}

for (ItemStack filledContainer : fluidType.getOtherContainers()) {
LiquidRegistryHelper.registerLiquidContainer(fluidType, filledContainer);
}
}

if (RecipeManagers.squeezerManager != null) {
RecipeManagers.squeezerManager.addContainerRecipe(10, items.canEmpty.getItemStack(), PluginCore.items.ingotTin.copy(), 0.05f);
RecipeManagers.squeezerManager.addContainerRecipe(10, items.waxCapsuleEmpty.getItemStack(), PluginCore.items.beeswax.getItemStack(), 0.10f);
Expand Down
19 changes: 9 additions & 10 deletions src/main/java/forestry/core/blocks/BlockBase.java
Expand Up @@ -20,7 +20,6 @@
import net.minecraft.client.particle.ParticleManager;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
Expand All @@ -40,7 +39,9 @@
import net.minecraft.util.text.TextComponentTranslation;
import net.minecraft.world.World;

import net.minecraftforge.fluids.IFluidHandler;
import net.minecraftforge.fluids.FluidUtil;
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
import net.minecraftforge.fluids.capability.IFluidHandler;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

Expand All @@ -51,7 +52,6 @@
import forestry.api.core.ITextureManager;
import forestry.core.access.IAccessHandler;
import forestry.core.circuits.ISocketable;
import forestry.core.fluids.FluidHelper;
import forestry.core.proxy.Proxies;
import forestry.core.render.MachineParticleCallback;
import forestry.core.render.MachineStateMapper;
Expand Down Expand Up @@ -147,10 +147,6 @@ public TileEntity createNewTileEntity(World world, int meta) {
/* INTERACTION */
@Override
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) {
if (playerIn.isSneaking()) {
return false;
}

TileBase tile = TileUtil.getTile(worldIn, pos, TileBase.class);
if (tile == null) {
return false;
Expand All @@ -162,9 +158,12 @@ public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state,

IAccessHandler access = tile.getAccessHandler();

if (heldItem != null && heldItem.getItem() != Items.BUCKET && tile instanceof IFluidHandler && access.allowsAlteration(playerIn)) {
if (FluidHelper.handleRightClick((IFluidHandler) tile, side, playerIn, true, tile.canDrainWithBucket())) {
return true;
if (!playerIn.isSneaking()) {
if (tile.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, side)) {
IFluidHandler tileFluidHandler = tile.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, side);
if (FluidUtil.interactWithFluidHandler(heldItem, tileFluidHandler, playerIn)) {
return true;
}
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/forestry/core/config/Config.java
Expand Up @@ -297,7 +297,7 @@ private static void loadHints() {
try {
InputStream hintStream = Config.class.getResourceAsStream("/config/forestry/hints.properties");
prop.load(hintStream);
} catch (IOException e) {
} catch (IOException | NullPointerException e) {
Log.error("Failed to load hints file.", e);
}

Expand Down
8 changes: 4 additions & 4 deletions src/main/java/forestry/core/config/Constants.java
Expand Up @@ -13,6 +13,7 @@
import net.minecraft.util.ResourceLocation;

import forestry.api.core.IForestryConstants;
import net.minecraftforge.fluids.Fluid;

public class Constants implements IForestryConstants {
// System
Expand All @@ -25,7 +26,6 @@ public class Constants implements IForestryConstants {
public static final int FLAG_BLOCK_UPDATE = 1;
public static final int FLAG_BLOCK_SYNC = 2;

public static final int BUCKET_VOLUME = 1000;
public static final int FLUID_PER_HONEY_DROP = 100;

public static final int[] SLOTS_NONE = new int[0];
Expand Down Expand Up @@ -63,7 +63,7 @@ public class Constants implements IForestryConstants {
public static final int APIARY_BREEDING_TIME = 100;

// Energy
public static final int ENGINE_TANK_CAPACITY = 10 * BUCKET_VOLUME;
public static final int ENGINE_TANK_CAPACITY = 10 * Fluid.BUCKET_VOLUME;
public static final int ENGINE_CYCLE_DURATION_WATER = 1000;
public static final int ENGINE_CYCLE_DURATION_JUICE = 2500;
public static final int ENGINE_CYCLE_DURATION_HONEY = 2500;
Expand Down Expand Up @@ -101,7 +101,7 @@ public class Constants implements IForestryConstants {
public static final int ENGINE_TIN_MAX_EU_BATTERY = 100;

// Factory
public static final int PROCESSOR_TANK_CAPACITY = 10 * BUCKET_VOLUME;
public static final int PROCESSOR_TANK_CAPACITY = 10 * Fluid.BUCKET_VOLUME;

public static final int MACHINE_MAX_ENERGY = 5000;

Expand All @@ -117,7 +117,7 @@ public class Constants implements IForestryConstants {
public static final float ICE_COOLING_MULTIPLIER = 6f; // multiple of water's cooling value

// Storage
public static final int RAINTANK_TANK_CAPACITY = 30 * BUCKET_VOLUME;
public static final int RAINTANK_TANK_CAPACITY = 30 * Fluid.BUCKET_VOLUME;
public static final int RAINTANK_AMOUNT_PER_UPDATE = 10;
public static final int RAINTANK_FILLING_TIME = 12;
public static final int CARPENTER_CRATING_CYCLES = 5;
Expand Down

0 comments on commit 7bd5bb1

Please sign in to comment.