diff --git a/src/main/java/com/sosnitzka/ztic_addon/Blocks.java b/src/main/java/com/sosnitzka/ztic_addon/Blocks.java index 5bf237e..d8701cb 100644 --- a/src/main/java/com/sosnitzka/ztic_addon/Blocks.java +++ b/src/main/java/com/sosnitzka/ztic_addon/Blocks.java @@ -98,6 +98,8 @@ public class Blocks { public static Block proxideumBlock = new BasicBlock("proxideum_block", Material.ROCK, 25.0f, 25.0f, 4, PREFIX_BLOCK); public static Block astriumBlock = new BasicBlock("astrium_block", Material.ROCK, 55.0f, 400.0f, 7, PREFIX_BLOCK); + //public static Block fluidBlock = new BlockMolten(Fluids.astriumFluid); + public static void register() { Field[] declaredFields = Blocks.class.getDeclaredFields(); @@ -120,7 +122,6 @@ public class Blocks { } OreDictionary.registerOre(((BasicBlock) block).getOreDictPrefix() + StringUtils.capitalize(oreDictName), block); - System.out.println(String.format("Registered OreDict: %s", ((BasicBlock) block).getOreDictPrefix() + StringUtils.capitalize(oreDictName))); } } } catch (IllegalAccessException e) { diff --git a/src/main/java/com/sosnitzka/ztic_addon/Fluids.java b/src/main/java/com/sosnitzka/ztic_addon/Fluids.java index d0bc80e..c9f904d 100644 --- a/src/main/java/com/sosnitzka/ztic_addon/Fluids.java +++ b/src/main/java/com/sosnitzka/ztic_addon/Fluids.java @@ -2,8 +2,10 @@ package com.sosnitzka.ztic_addon; import com.sosnitzka.ztic_addon.generic.BasicTinkerFluid; +import com.sosnitzka.ztic_addon.util.Utils; import net.minecraft.init.Blocks; import net.minecraftforge.fluids.FluidRegistry; +import slimeknights.tconstruct.smeltery.block.BlockMolten; import java.lang.reflect.Field; @@ -66,6 +68,13 @@ public class Fluids { try { BasicTinkerFluid fluid = (BasicTinkerFluid) field.get(targetType); registerFluid(fluid); + + BlockMolten block = new BlockMolten(fluid); + block.setUnlocalizedName("molten_" + fluid.getName()); + block.setRegistryName(ZTiC.MODID, "molten_" + fluid.getName()); + Utils.registerBlockWithItem(block); + + ZTiC.proxy.registerFluidModels(fluid); } catch (IllegalAccessException e) { e.printStackTrace(); } diff --git a/src/main/java/com/sosnitzka/ztic_addon/ZTiC.java b/src/main/java/com/sosnitzka/ztic_addon/ZTiC.java index f5a85dc..31c0d7a 100644 --- a/src/main/java/com/sosnitzka/ztic_addon/ZTiC.java +++ b/src/main/java/com/sosnitzka/ztic_addon/ZTiC.java @@ -63,18 +63,18 @@ public class ZTiC { public static final AbstractTrait diffuse = new TraitDiffuse(); public static final AbstractTrait randomize = new TraitRandomize(); - static final String MODID = "ztic_addon"; - static final String VERSION = "@VERSION@"; + public static final String MODID = "ztic_addon"; + public static final String VERSION = "@VERSION@"; @SidedProxy(clientSide = "com.sosnitzka.ztic_addon.proxy.ClientProxy", serverSide = "com.sosnitzka.ztic_addon.proxy.ServerProxy") - private static ServerProxy proxy; + public static ServerProxy proxy; private List integrateList = Lists.newArrayList(); @EventHandler public void preInit(FMLPreInitializationEvent e) { Items.register(); - Blocks.register(); Fluids.register(); + Blocks.register(); Fluids.registerfromItem(); Alloys.register(); @@ -155,10 +155,9 @@ public class ZTiC { } */ - proxy.setRenderInfo(material, fluid); + proxy.setRenderInfo(material); MaterialIntegration integration = new MaterialIntegration(material, fluid, oreSuffix); integration.integrate(); integrateList.add(integration); - } } \ No newline at end of file diff --git a/src/main/java/com/sosnitzka/ztic_addon/generic/BasicTinkerFluid.java b/src/main/java/com/sosnitzka/ztic_addon/generic/BasicTinkerFluid.java index 56d93f6..fd47acc 100644 --- a/src/main/java/com/sosnitzka/ztic_addon/generic/BasicTinkerFluid.java +++ b/src/main/java/com/sosnitzka/ztic_addon/generic/BasicTinkerFluid.java @@ -1,16 +1,16 @@ package com.sosnitzka.ztic_addon.generic; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fluids.Fluid; +import slimeknights.tconstruct.library.Util; +import slimeknights.tconstruct.library.fluid.FluidMolten; -public class BasicTinkerFluid extends Fluid { +public class BasicTinkerFluid extends FluidMolten { - private int color; private boolean toolForge; public BasicTinkerFluid(String fluidName, int color, boolean toolForge, int temp, int lumen, int visk) { - super(fluidName, new ResourceLocation("tconstruct:blocks/fluids/molten_metal"), new ResourceLocation("tconstruct:blocks/fluids/molten_metal_flow")); - this.color = color; + super(fluidName, color, new ResourceLocation("tconstruct:blocks/fluids/molten_metal"), new ResourceLocation("tconstruct:blocks/fluids/molten_metal_flow")); + this.setUnlocalizedName(Util.prefix(fluidName)); this.setTemperature(temp); this.setLuminosity(lumen); this.setViscosity(visk); @@ -18,11 +18,6 @@ public class BasicTinkerFluid extends Fluid { this.toolForge = toolForge; } - @Override - public int getColor() { - return color; - } - public boolean isToolForge() { return toolForge; } diff --git a/src/main/java/com/sosnitzka/ztic_addon/proxy/ClientProxy.java b/src/main/java/com/sosnitzka/ztic_addon/proxy/ClientProxy.java index 8955aa9..2914980 100644 --- a/src/main/java/com/sosnitzka/ztic_addon/proxy/ClientProxy.java +++ b/src/main/java/com/sosnitzka/ztic_addon/proxy/ClientProxy.java @@ -2,16 +2,24 @@ package com.sosnitzka.ztic_addon.proxy; import com.sosnitzka.ztic_addon.Blocks; import com.sosnitzka.ztic_addon.Items; +import com.sosnitzka.ztic_addon.ZTiC; import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.ItemMeshDefinition; import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraft.client.renderer.block.statemap.StateMapperBase; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.fluids.Fluid; import slimeknights.tconstruct.library.client.MaterialRenderInfo; import slimeknights.tconstruct.library.client.texture.MetalTextureTexture; import slimeknights.tconstruct.library.materials.Material; +import javax.annotation.Nonnull; import java.lang.reflect.Field; import static com.sosnitzka.ztic_addon.Materials.*; @@ -57,7 +65,7 @@ public class ClientProxy extends ServerProxy { } } - public void setRenderInfo(final Material material, Fluid fluid) { + public void setRenderInfo(final Material material) { /* if (material != bismuth) { material.setRenderInfo(new MaterialRenderInfo.Metal(fluid.getColor(), 0.4f, 0.2f, 0f)); } else bismuth.setRenderInfo(new MaterialRenderInfo.BlockTexture("ztic_addon:blocks/bismuth_block")); */ @@ -81,4 +89,50 @@ public class ClientProxy extends ServerProxy { } }); } + + @Override + public void registerFluidModels(Fluid fluid) { + if (fluid == null) { + return; + } + + Block block = fluid.getBlock(); + if (block != null) { + Item item = Item.getItemFromBlock(block); + FluidStateMapper mapper = new FluidStateMapper(fluid); + + // item-model + if (item != null) { + ModelLoader.registerItemVariants(item); + ModelLoader.setCustomMeshDefinition(item, mapper); + } + // block-model + ModelLoader.setCustomStateMapper(block, mapper); + } + } + + public static class FluidStateMapper extends StateMapperBase implements ItemMeshDefinition { + + public final Fluid fluid; + public final ModelResourceLocation location; + + public FluidStateMapper(Fluid fluid) { + this.fluid = fluid; + + // have each block hold its fluid per nbt? hm + this.location = new ModelResourceLocation(new ResourceLocation(ZTiC.MODID, "fluid_block"), fluid.getName()); + } + + @Nonnull + @Override + protected ModelResourceLocation getModelResourceLocation(@Nonnull IBlockState state) { + return location; + } + + @Nonnull + @Override + public ModelResourceLocation getModelLocation(@Nonnull ItemStack stack) { + return location; + } + } } diff --git a/src/main/java/com/sosnitzka/ztic_addon/proxy/ServerProxy.java b/src/main/java/com/sosnitzka/ztic_addon/proxy/ServerProxy.java index cb181e3..e512442 100644 --- a/src/main/java/com/sosnitzka/ztic_addon/proxy/ServerProxy.java +++ b/src/main/java/com/sosnitzka/ztic_addon/proxy/ServerProxy.java @@ -9,7 +9,10 @@ public class ServerProxy { } - public void setRenderInfo(Material material, Fluid fluid) { + public void setRenderInfo(Material material) { } + + public void registerFluidModels(Fluid fluid) { + } } diff --git a/src/main/java/com/sosnitzka/ztic_addon/util/Utils.java b/src/main/java/com/sosnitzka/ztic_addon/util/Utils.java index 2ae7c3d..794c302 100644 --- a/src/main/java/com/sosnitzka/ztic_addon/util/Utils.java +++ b/src/main/java/com/sosnitzka/ztic_addon/util/Utils.java @@ -18,15 +18,13 @@ public class Utils { public static void registerBlockWithItem(Block block) { - System.out.println(String.format("Register Block: %s", block.getUnlocalizedName())); GameRegistry.register(block); GameRegistry.register(new ItemBlock(block).setRegistryName(block.getRegistryName())); - System.out.println(String.format("Registered: %s", block)); } public static void registerFluid(Fluid fluid) { FluidRegistry.registerFluid(fluid); - FluidRegistry.addBucketForFluid(fluid); + //FluidRegistry.addBucketForFluid(fluid); } public static void registerTinkerAlloys(Fluid alloy, int out, Fluid first, int inOne, Fluid second, int inTwo) { diff --git a/src/main/resources/assets/ztic_addon/blockstates/fluid_block.json b/src/main/resources/assets/ztic_addon/blockstates/fluid_block.json index 2edf31e..4b980cb 100644 --- a/src/main/resources/assets/ztic_addon/blockstates/fluid_block.json +++ b/src/main/resources/assets/ztic_addon/blockstates/fluid_block.json @@ -25,5 +25,12 @@ } } ] + "astrium": [ + { + "custom": { + "fluid": "astrium" + } + } + ] } } \ No newline at end of file