aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/core/fluids
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/gtPlusPlus/core/fluids')
-rw-r--r--src/Java/gtPlusPlus/core/fluids/BlockFluidBase.java54
-rw-r--r--src/Java/gtPlusPlus/core/fluids/FluidRegistryHandler.java51
-rw-r--r--src/Java/gtPlusPlus/core/fluids/GenericFluid.java40
3 files changed, 145 insertions, 0 deletions
diff --git a/src/Java/gtPlusPlus/core/fluids/BlockFluidBase.java b/src/Java/gtPlusPlus/core/fluids/BlockFluidBase.java
new file mode 100644
index 0000000000..ad8d78edb1
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/fluids/BlockFluidBase.java
@@ -0,0 +1,54 @@
+package gtPlusPlus.core.fluids;
+
+import gtPlusPlus.core.creative.AddToCreativeTab;
+import gtPlusPlus.core.lib.CORE;
+import net.minecraft.block.material.Material;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.util.IIcon;
+import net.minecraft.world.IBlockAccess;
+import net.minecraft.world.World;
+import net.minecraftforge.fluids.BlockFluidClassic;
+import net.minecraftforge.fluids.Fluid;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+
+public class BlockFluidBase extends BlockFluidClassic {
+
+ @SideOnly(Side.CLIENT)
+ protected IIcon stillIcon;
+ @SideOnly(Side.CLIENT)
+ protected IIcon flowingIcon;
+
+ protected int colour;
+
+ public BlockFluidBase(Fluid fluid, Material material, int colour) {
+ super(fluid, material);
+ this.colour = colour;
+ setCreativeTab(AddToCreativeTab.tabMisc);
+ }
+
+ @Override
+ public IIcon getIcon(int side, int meta) {
+ return (side == 0 || side == 1)? stillIcon : flowingIcon;
+ }
+
+ @SideOnly(Side.CLIENT)
+ @Override
+ public void registerBlockIcons(IIconRegister register) {
+ stillIcon = register.registerIcon(CORE.MODID+":fluids/fluid.molten.autogenerated");
+ flowingIcon = register.registerIcon(CORE.MODID+":fluids/fluid.molten.autogenerated");
+ }
+
+ @Override
+ public boolean canDisplace(IBlockAccess world, int x, int y, int z) {
+ if (world.getBlock(x, y, z).getMaterial().isLiquid()) return false;
+ return super.canDisplace(world, x, y, z);
+ }
+
+ @Override
+ public boolean displaceIfPossible(World world, int x, int y, int z) {
+ if (world.getBlock(x, y, z).getMaterial().isLiquid()) return false;
+ return super.displaceIfPossible(world, x, y, z);
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/core/fluids/FluidRegistryHandler.java b/src/Java/gtPlusPlus/core/fluids/FluidRegistryHandler.java
new file mode 100644
index 0000000000..1df2b406b8
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/fluids/FluidRegistryHandler.java
@@ -0,0 +1,51 @@
+package gtPlusPlus.core.fluids;
+
+import static gtPlusPlus.core.block.ModBlocks.blockFluidJackDaniels;
+import static gtPlusPlus.core.block.ModBlocks.fluidJackDaniels;
+import gtPlusPlus.core.block.general.fluids.BlockFluidJackDaniels;
+import gtPlusPlus.core.lib.CORE;
+import net.minecraft.block.material.Material;
+import net.minecraftforge.fluids.FluidRegistry;
+import cpw.mods.fml.common.registry.GameRegistry;
+
+public class FluidRegistryHandler {
+
+ //Fluids
+ /**
+ *
+ * Luminosity .setLuminosity(luminosity)
+ How much light does the fluid emit. Default: 0, Lava uses 15
+ Density .setDensity(density)
+ How dense is the fluid, the only effect is whether or not a fluid replaces another fluid when they flow into each other. Default: 1000, the density of water at 4 degrees Celsius in kg/m³
+ Temperature .setTemperature(temp)
+ How hot, or cold is the fluid. Has currently no effect. Default: 295, the "normal" room temperature in degrees Kelvin, this is approximately 72°F or 22°C.
+ Viscosity .setViscosity(viscosity)
+ How thick the fluid is. Determines how fast it flows. Default: 1000 for water, lava uses 6000
+ Is Gaseous .setGaseous(boolean)
+ Indicates if the fluid is gaseous. Used for rendering. Default: false
+ *
+ */
+
+ public static void registerFluids(){
+ run();
+ }
+
+ private static void run(){
+ fluidJackDaniels();
+ }
+
+ private static void fluidJackDaniels(){
+ //testFluid
+ fluidJackDaniels.setLuminosity(12);
+ fluidJackDaniels.setDensity(1200);
+ fluidJackDaniels.setTemperature(420);
+ fluidJackDaniels.setViscosity(750);
+ fluidJackDaniels.setGaseous(true);
+ fluidJackDaniels.setUnlocalizedName("fluidJackDaniels");
+ FluidRegistry.registerFluid(fluidJackDaniels);
+ blockFluidJackDaniels = new BlockFluidJackDaniels(fluidJackDaniels, Material.water).setBlockName("fluidBlockJackDaniels");
+ GameRegistry.registerBlock(blockFluidJackDaniels, CORE.MODID + "_" + blockFluidJackDaniels.getUnlocalizedName().substring(5));
+ fluidJackDaniels.setUnlocalizedName(blockFluidJackDaniels.getUnlocalizedName());
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/core/fluids/GenericFluid.java b/src/Java/gtPlusPlus/core/fluids/GenericFluid.java
new file mode 100644
index 0000000000..f67fda744e
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/fluids/GenericFluid.java
@@ -0,0 +1,40 @@
+package gtPlusPlus.core.fluids;
+
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.Utils;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidRegistry;
+import cpw.mods.fml.common.registry.GameRegistry;
+
+public class GenericFluid extends Fluid{
+
+ protected String fluidName;
+ public Fluid fluidFactory;
+ public Block blockFactory;
+ public short[] rgba;
+
+ public GenericFluid(String fluidName, int luminosity, int density, int temperature, int viscosity, boolean isGas, short[] rgba) {
+ super(fluidName);
+ fluidFactory = this;
+ this.rgba = rgba;
+ fluidFactory.setLuminosity(luminosity);
+ fluidFactory.setDensity(density);
+ fluidFactory.setTemperature(temperature);
+ fluidFactory.setViscosity(viscosity);
+ fluidFactory.setGaseous(isGas);
+ fluidFactory.setUnlocalizedName("fluid"+fluidName);
+ FluidRegistry.registerFluid(fluidFactory);
+ blockFactory = new BlockFluidBase(fluidFactory, Material.water, Utils.rgbtoHexValue(rgba[0], rgba[1], rgba[2])).setBlockName("fluidblock"+fluidName);
+ GameRegistry.registerBlock(blockFactory, CORE.MODID + "_" + blockFactory.getUnlocalizedName().substring(5));
+ //fluidFactory.setUnlocalizedName(blockFactory.getUnlocalizedName());
+
+ }
+
+ @Override
+ public int getColor() {
+ return Math.max(0, Math.min(255, this.rgba[0])) << 16 | Math.max(0, Math.min(255, this.rgba[1])) << 8 | Math.max(0, Math.min(255, this.rgba[2]));
+ }
+
+}