Jump to content

Breeper

Members
  • Posts

    1
  • Joined

  • Last visited

Everything posted by Breeper

  1. I'm using Forge 1.8-11.14.3.1502. From what I can see in the changelog, fluid rendering was added in build 1464. So I would expect this to work in my version. I'm creating a fluid (GenericFluid) and a fluid block (GenericLiquid extends BlockFluidClassic) that uses that fluid in it's constructor. When I place my fluid, it behaves as expected, but renders with the default "not found" block (magenta/black squares). I've created a JSON file in the blockstates and models/block folders for my mod. But no matter what, I cannot get the textures to load. I am able to get all of my other blocks and items the show up properly, just not this fluid. I've tried searching for days and have used up of all of the resources I found on Google. Does anybody know how to do this? I'll post the relevant code below for review. ===================GenericFluid.java======================= package tutorial.generic; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidRegistry; public class GenericFluid extends Fluid { public static final String FLUID_NAME = "genericFluid"; public GenericFluid() { super(FLUID_NAME, new ResourceLocation(Generic.MOD_ID + ":blocks/" + GenericLiquid.BLOCK_NAME + "_still"), new ResourceLocation(Generic.MOD_ID + ":blocks/" + GenericLiquid.BLOCK_NAME + "_flow")); FluidRegistry.registerFluid(this); this.setDensity(2000); this.setTemperature(300); this.setViscosity(2000); this.setUnlocalizedName(Generic.MOD_ID + ":" + FLUID_NAME); } } ===================GenericLiquid.java======================= package tutorial.generic; import java.io.IOException; import java.util.List; import java.util.Set; import com.sun.javafx.sg.prism.NodeEffectInput.RenderType; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.texture.IIconCreator; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.client.resources.IResource; import net.minecraft.client.resources.IResourceManager; import net.minecraft.client.resources.SimpleReloadableResourceManager; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Blocks; import net.minecraft.util.BlockPos; import net.minecraft.util.ResourceLocation; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.fluids.BlockFluidClassic; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; public class GenericLiquid extends BlockFluidClassic { public static final String BLOCK_NAME = "genericLiquid"; public GenericLiquid() { super(Generic.GenericFluid, Material.water); GameRegistry.registerBlock(this, BLOCK_NAME); this.setUnlocalizedName(Generic.MOD_ID + ":" + BLOCK_NAME); this.setCreativeTab(CreativeTabs.tabBlock); } @Override public boolean canDisplace(IBlockAccess objAccess, BlockPos objPosition) { IBlockState objState = objAccess.getBlockState(objPosition); if (objState != null) { if (objState.getBlock().getMaterial() == Material.water) return true; else if (objState.getBlock().getMaterial().isLiquid()) return false; else return super.canDisplace(objAccess, objPosition); } else return true; } @Override public boolean displaceIfPossible(World objWorld, BlockPos objPosition) { IBlockState objState = objWorld.getBlockState(objPosition); if (objState != null) { if (objState.getBlock().getMaterial() == Material.water) return true; else if (objState.getBlock().getMaterial().isLiquid()) return false; else return super.displaceIfPossible(objWorld, objPosition); } else return true; } } ===================Generic.java======================= package tutorial.generic; import net.minecraft.block.Block; import net.minecraft.block.material.MapColor; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ItemMeshDefinition; import net.minecraft.client.renderer.block.statemap.IStateMapper; import net.minecraft.client.renderer.block.statemap.StateMap; import net.minecraft.client.renderer.block.statemap.StateMapperBase; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.client.resources.model.ModelBakery; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fluids.BlockFluidBase; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.*; import net.minecraftforge.fml.common.event.*; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraft.client.renderer.block.statemap.StateMap; @Mod(modid = Generic.MOD_ID, name = Generic.MOD_NAME, version = Generic.MOD_VERSION) public class Generic { public static final String MOD_ID = "tutorial"; public static final String MOD_NAME = "Generic Mod"; public static final String MOD_VERSION = "0.0.0"; @Instance(value = Generic.MOD_ID) public static Generic instance; public static Item GenericIngot, GenericNugget; public static Block GenericOre, GenericLiquid; public static Fluid GenericFluid; public static final ModelResourceLocation GenericLiquidResourceLocation = new ModelResourceLocation(Generic.MOD_ID + ":" + tutorial.generic.GenericLiquid.BLOCK_NAME, "fluid"); @EventHandler public void preInit(FMLPreInitializationEvent objEvent) { //Create fluids GenericFluid = new GenericFluid(); //Create blocks //GenericOre = new GenericOre(); GenericLiquid = new GenericLiquid(); //Create items //GenericNugget = new GenericNugget(); //GenericIngot = new GenericIngot(); //Allow for rendering of fluids? Not really sure what this is, but found the code snippet online. Item objLiquid = Item.getItemFromBlock(Generic.GenericLiquid); ModelBakery.addVariantName(objLiquid); ModelLoader.setCustomMeshDefinition(objLiquid, new ItemMeshDefinition() { public ModelResourceLocation getModelLocation(ItemStack objStack) { return GenericLiquidResourceLocation; } }); ModelLoader.setCustomStateMapper(GenericLiquid, new StateMapperBase() { public ModelResourceLocation getModelResourceLocation(IBlockState objState) { return GenericLiquidResourceLocation; } }); } @EventHandler public void init(FMLInitializationEvent objEvent) { //Add crafting recipies //GameRegistry.addRecipe(new ItemStack(GenericIngot), new Object[] {"DDD", "DDD", "DDD", 'D', GenericNugget}); //Add rendering code if(objEvent.getSide() == Side.CLIENT) { RenderItem renderItem = Minecraft.getMinecraft().getRenderItem(); //renderItem.getItemModelMesher().register(GenericNugget, 0, new ModelResourceLocation(Generic.MOD_ID + ":" + tutorial.generic.GenericNugget.ITEM_NAME, "inventory")); //renderItem.getItemModelMesher().register(GenericIngot, 0, new ModelResourceLocation(Generic.MOD_ID + ":" + tutorial.generic.GenericIngot.ITEM_NAME, "inventory")); //renderItem.getItemModelMesher().register(Item.getItemFromBlock(GenericOre), 0, new ModelResourceLocation(Generic.MOD_ID + ":" + tutorial.generic.GenericOre.BLOCK_NAME, "inventory")); renderItem.getItemModelMesher().register(Item.getItemFromBlock(GenericLiquid), 0, new ModelResourceLocation(Generic.MOD_ID + ":" + tutorial.generic.GenericLiquid.BLOCK_NAME, "inventory")); //More online code, not sure what this achieves. ModelLoader.setCustomStateMapper(GenericLiquid, (new StateMap.Builder()).addPropertiesToIgnore(BlockFluidBase.LEVEL).build()); } } } ================blockstates/genericLiquid.json==================== { "variants": { "normal": { "model": "tutorial:genericLiquid" } } } ================models/block/genericLiquid.json==================== { "parent": "block/cube_all", "textures": { "all": "tutorial:blocks/genericLiquid_still", "flowing": "tutorial:blocks/genericLiquid_flow" } }
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.