aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/core/fluids
diff options
context:
space:
mode:
authorAlkalus <draknyte1@hotmail.com>2016-09-19 20:08:42 +1000
committerGitHub <noreply@github.com>2016-09-19 20:08:42 +1000
commit9f386c3c2914ba786ece2afddb8eaa6df80a1adc (patch)
treea46fe4cc2ccd26ff83f3de8eeba7d3abb7aea58c /src/Java/gtPlusPlus/core/fluids
parent6c74b062034508a0ef00a68c5b4c164b3f155fc4 (diff)
parent2c4e3716a4b72f67be3bde170096394a39c80480 (diff)
downloadGT5-Unofficial-9f386c3c2914ba786ece2afddb8eaa6df80a1adc.tar.gz
GT5-Unofficial-9f386c3c2914ba786ece2afddb8eaa6df80a1adc.tar.bz2
GT5-Unofficial-9f386c3c2914ba786ece2afddb8eaa6df80a1adc.zip
Merge pull request #13 from draknyte1/NewMatSystem
New Back-end systems for dynamic Material (Alloys) and Tool generation. Also fixes a few issues with other things, which were noticed during development of the new systems.
Diffstat (limited to 'src/Java/gtPlusPlus/core/fluids')
-rw-r--r--src/Java/gtPlusPlus/core/fluids/BlockFluidBase.java107
-rw-r--r--src/Java/gtPlusPlus/core/fluids/FluidRegistryHandler.java52
-rw-r--r--src/Java/gtPlusPlus/core/fluids/GenericFluid.java66
3 files changed, 225 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..ebd84f9654
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/fluids/BlockFluidBase.java
@@ -0,0 +1,107 @@
+package gtPlusPlus.core.fluids;
+
+import gtPlusPlus.core.creative.AddToCreativeTab;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.material.Material;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.math.MathUtils;
+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.common.registry.LanguageRegistry;
+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;
+ protected Material fluidMaterial;
+ final String displayName;
+
+ @SuppressWarnings("deprecation")
+ public BlockFluidBase(Fluid fluid, Material material) {
+ super(fluid, net.minecraft.block.material.Material.water);
+ short[] tempColour = material.getRGBA();
+ this.colour = Utils.rgbtoHexValue(tempColour[0], tempColour[1], tempColour[2]);
+ this.fluidMaterial = material;
+ setCreativeTab(AddToCreativeTab.tabOther);
+ this.displayName = material.getLocalizedName();
+ LanguageRegistry.addName(this, "Molten "+displayName+" ["+MathUtils.celsiusToKelvin(fluidMaterial.getBoilingPoint_C())+"K]");
+ this.setBlockName(GetProperName());
+ }
+
+ @SuppressWarnings("deprecation")
+ public BlockFluidBase(String fluidName, Fluid fluid, short[] colour) {
+ super(fluid, net.minecraft.block.material.Material.water);
+ short[] tempColour = colour;
+ this.colour = Utils.rgbtoHexValue(tempColour[0], tempColour[1], tempColour[2]);
+ setCreativeTab(AddToCreativeTab.tabOther);
+ this.displayName = fluidName;
+ LanguageRegistry.addName(this, "Molten "+displayName);
+ this.setBlockName(GetProperName());
+ }
+
+ @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);
+ }
+
+ @Override
+ public int colorMultiplier(IBlockAccess par1IBlockAccess, int par2, int par3, int par4){
+
+ if (this.colour == 0){
+ return MathUtils.generateSingularRandomHexValue();
+ }
+
+ return this.colour;
+ }
+
+ @Override
+ public int getRenderColor(int aMeta) {
+ if (this.colour == 0){
+ return MathUtils.generateSingularRandomHexValue();
+ }
+
+ return this.colour;
+ }
+
+ public String GetProperName() {
+ String tempIngot;
+
+ tempIngot = "Molten "+displayName;
+
+ return tempIngot;
+ }
+
+ public Material getFluidMaterial(){
+ return fluidMaterial;
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/core/fluids/FluidRegistryHandler.java b/src/Java/gtPlusPlus/core/fluids/FluidRegistryHandler.java
new file mode 100644
index 0000000000..477d5da944
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/fluids/FluidRegistryHandler.java
@@ -0,0 +1,52 @@
+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();
+ }
+
+ @SuppressWarnings("unused")
+ 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..1780cb8577
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/fluids/GenericFluid.java
@@ -0,0 +1,66 @@
+package gtPlusPlus.core.fluids;
+
+import gtPlusPlus.core.item.base.itemblock.ItemBlockFluid;
+import gtPlusPlus.core.material.Material;
+import net.minecraft.block.Block;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidRegistry;
+import cpw.mods.fml.common.registry.GameRegistry;
+
+public class GenericFluid extends Fluid{
+
+ protected final String fluidName;
+ protected final Fluid fluidFactory;
+ protected final Block blockFactory;
+ protected final short[] rgba;
+
+ public GenericFluid(String displayName, String fluidName, int luminosity, int density, int temperature, int viscosity, boolean isGas, short[] rgba) {
+ super(fluidName);
+ fluidFactory = this;
+ this.rgba = rgba;
+ this.fluidName = fluidName;
+ 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(displayName, fluidFactory, rgba).setBlockName("fluidblock"+fluidName);
+ GameRegistry.registerBlock(blockFactory, ItemBlockFluid.class, blockFactory.getUnlocalizedName().substring(5));
+
+ //fluidFactory.setUnlocalizedName(blockFactory.getUnlocalizedName());
+
+ }
+
+ public GenericFluid(Material fluidMaterial, int luminosity, int density, int temperature, int viscosity, boolean isGas) {
+
+ super(fluidMaterial.getUnlocalizedName());
+ //IC2_ItemFluidCell fullFluidCell = emptyCell.fill(emptyCell, FluidUtils.getFluidStack(getUnlocalizedName(), 1), true);
+
+ fluidFactory = this;
+ this.rgba = fluidMaterial.getRGBA();
+ this.fluidName = fluidMaterial.getUnlocalizedName();
+ 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, fluidMaterial).setBlockName("fluidblock"+fluidName);
+ GameRegistry.registerBlock(blockFactory, ItemBlockFluid.class, blockFactory.getUnlocalizedName().substring(5));
+ //IC2_ItemFluidCell emptyCell = new IC2_ItemFluidCell(fluidName);
+ /*if (aFullContainer != null && aEmptyContainer != null && !FluidContainerRegistry.registerFluidContainer(new FluidStack(rFluid, aFluidAmount), aFullContainer, aEmptyContainer)) {
+ GT_Values.RA.addFluidCannerRecipe(aFullContainer, container(aFullContainer, false), null, new FluidStack(rFluid, aFluidAmount));
+ }*/
+ //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]));
+ }
+
+}