DeathSpawn
Members-
Posts
35 -
Joined
-
Last visited
Everything posted by DeathSpawn
-
For people of the future refering to this thread, follow the thread in the first post here. Then follow the below part if you got the same error I did. In the ModelBakery.registerItemVariants, pass all the models you need for the perspective based model, then, in the ModelLoader.setCustomModelResourceLocation, pass a dummy third model. In the custom ICustomModelLoader class, make sure that your dummy third model gets passed through the loader rather than the models which you provided (which is what I did wrong) through ICustomModelLoader#accepts(). Make sure the ModelBakery and ModelLoader functions are happening in the ModelRegistryEvent.
-
I've moved the ModelBakery.registerItemVariants to the ModelRegistryEvent but still the problem stays. I've tested the models without the custom ModelLoader and it works. But when it loads through the custom ModelLoader, it just doesn't seem to want to work. It shows the same result. The problem persists. Also, Is using ModelBakery.registerItemVariants enough for the JSON models have to be loaded and baked by Minecraft or does it still go to the Custom ModelLoader somehow? I've removed the second ModelLoader.setCustomModelResourceLocation. I finally understood what you meant by "location". Please guide me if I have done something wrong.
-
[1.12.2] Entity hands not rendering via an inventory
DeathSpawn replied to Issac29's topic in Modder Support
You have to make the Entitiy class implement ICapabilityProvider which lets Forge know it's using Capabilities. Then you have to initialise an ItemStackHandler. Example from a TileEntity from one my previous projects: private ItemStackHandler inventory = new ItemStackHandler(4); In the get capability method, you check if the capability wanted is a CapabilityItemHandler.ITEM_HANDLER_CAPABILITY and return the ItemStackHandler. In the has capability method, you check if the capability wanted is a CapabilityItemHandler.ITEM_HANDLER_CAPABILITY and return true. Example Code: @Override public boolean hasCapability(Capability<?> capability, @Nullable EnumFacing facing) { return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY || capability == CapabilityEnergy.ENERGY || super.hasCapability(capability, facing); } @Nullable @Override public <T> T getCapability(Capability<T> capability, @Nullable EnumFacing facing) { if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) return (T) this.inventory; else if (capability == CapabilityEnergy.ENERGY) return (T) this.energy; else return super.getCapability(capability, facing); } I am just a newbie so sorry if any of the information provided is wrong. I am only speaking from past experience since I had a similar problem with tileentities. -
[1.12.2] Entity hands not rendering via an inventory
DeathSpawn replied to Issac29's topic in Modder Support
You're supposed to sync the data to the client because by default, I don't think the data is synced to the client. This part of the documentation explains it. So basically, you have to sync it yourself using packets. -
[1.12.2] Entity hands not rendering via an inventory
DeathSpawn replied to Issac29's topic in Modder Support
Please read the documentation here. It should help in getting started with the implementing IItemHandler capability. -
No, sorry but my gradle.properties is the same as the one on my local machine. My local machine's: # Sets default memory used for gradle commands. Can be overridden by user or command line properties. # This is required to provide enough memory for the Minecraft decompilation process. org.gradle.jvmargs=-Xmx3G
-
I wrote the code with changing models on whether it held in hand or in any other perspectives in mind The (failed) result: As you can see, the GUI model is just invisible and the handheld model is a missing texture placeholder. I don't know what is wrong. I already registered my custom ModelLoader class. Also did ModelBakery.registerItemVariants(...) and registered both models in the ModelLoader.setCustomModelResourceLocation(...) Also the log doesn't return any error.
-
In my mod, I implemented a custom IBakedModel class based on the discussion here. But the problem is, both my item in GUI and in hand are not showing. The item in hand is just a missing texture whereas my GUI texture is invisible. My Github Repo is located here: https://github.com/SSJDeathSpawnMod/Rising-of-the-Shield-Hero-Mod I think it has something to do with if(!(model instanceof IFlexibleBakedModel)) model = new IFlexibleBakedModel.Wrapper(model, DefaultVertexFormats.ITEM); since I do not know of the 1.12.2 equivalent. Any help is appreciated.
-
[SOLVED] Fluid Textures Not Showing [1.12.2]
DeathSpawn replied to DeathSpawn's topic in Modder Support
I found the error... In my blockstate file, I misspelled "fluids" as "fluid" which caused the error. I found the same issue on another thread: Which led me to the answer. Thanks to all those who tried to help. -
[SOLVED] Fluid Textures Not Showing [1.12.2]
DeathSpawn replied to DeathSpawn's topic in Modder Support
I realized my fluids were not added to the ModBlocks.FLUIDBLOCKS so I added them. Now, the problem is they come out as water texture. This is the project's Git repository: https://github.com/SSJDeathSpawn/Gem-Enchantment-Mod It will help (I think) in fixing my problem... -
[SOLVED] Fluid Textures Not Showing [1.12.2]
DeathSpawn replied to DeathSpawn's topic in Modder Support
Is this correct? RegistryHandler.java: @SubscribeEvent public static void registerItems(RegistryEvent.Register<Item> event) { ModItems.init(); event.getRegistry().registerAll(ModItems.ITEMS.toArray(new Item[0])); MagicModLogger.getLogger().info("Register Items!"); OreDictionaryHandler.registerOreItems(); OreDictionaryHandler.registerOreBlocks(); } @SubscribeEvent public static void registerBlocks(RegistryEvent.Register<Block> event) { ModBlocks.init(); event.getRegistry().registerAll(ModBlocks.BLOCKS.toArray(new Block[0])); MagicModLogger.getLogger().info("Register Blocks!"); } ModItems.java: public static List<Item> ITEMS = new ArrayList<Item>(); public static Item modIngots; public static Item gemFragments; public static Item corruptFragment; public static Item featherBunch; //ItemBlocks public static ItemBlock itemBlockingots; public static void init() { modIngots = new ModIngot("ingot"); gemFragments = new ItemGemFragment("gem_frag"); corruptFragment = new ItemCorruptedFragments("corrupt_fragment"); featherBunch = new ItemFeatherBunch("feather_bunch"); itemBlockingots = new ItemModIngotBlocks(); } ModBlocks.java: public static List<Block> BLOCKS = new ArrayList<Block>(); public static final List<BlockFluidBase> BLOCKFLUIDS = new ArrayList<BlockFluidBase>(); public static Block blockIngots; public static Block moltenMythrilBlock; public static Block moltenCoal; public static void init() { blockIngots = new ModIngotBlocks(Material.IRON, "block"); moltenMythrilBlock = new BlockMoltenMythril(ModFluids.moltenMythrilFluid); moltenCoal = new BlockLiquifiedCoal(ModFluids.liquifiedCoal); } It still doesn't solve my fluid texture problem though. I am getting the same log... -
[SOLVED] Fluid Textures Not Showing [1.12.2]
DeathSpawn replied to DeathSpawn's topic in Modder Support
And the rest is the same as any 1.12.2 tutorial found on YouTube: @SubscribeEvent public static void registerItems(RegistryEvent.Register<Item> event) { event.getRegistry().registerAll(ModItems.ITEMS.toArray(new Item[0])); MagicModLogger.getLogger().info("Register Items!"); OreDictionaryHandler.registerOreItems(); OreDictionaryHandler.registerOreBlocks(); } @SubscribeEvent public static void registerBlocks(RegistryEvent.Register<Block> event) { event.getRegistry().registerAll(ModBlocks.BLOCKS.toArray(new Block[0])); MagicModLogger.getLogger().info("Register Blocks!"); } -
[SOLVED] Fluid Textures Not Showing [1.12.2]
DeathSpawn replied to DeathSpawn's topic in Modder Support
I fixed up my code to register in events. What do you mean by your first point? Code: public class BlockMoltenMythril extends BlockMoltenFluidCore { Fluid fluid; public BlockMoltenMythril(Fluid fluid) { super(fluid, "molten_mythril", new MaterialLiquid(MapColor.LIGHT_BLUE)); this.fluid = fluid; ModBlocks.BLOCKS.add(this); ModItems.ITEMS.add(new ItemBlock(this).setRegistryName(this.getRegistryName())); } } public class BlockLiquifiedCoal extends BlockMoltenFluidCore{ Fluid fluid; public BlockLiquifiedCoal(Fluid fluid) { super(fluid, "molten_coal", new MaterialLiquid(MapColor.BLACK)); this.fluid = fluid; ModBlocks.BLOCKS.add(this); ModItems.ITEMS.add(new ItemBlock(this).setRegistryName(this.getRegistryName())); } } -
[SOLVED] Fluid Textures Not Showing [1.12.2]
DeathSpawn replied to DeathSpawn's topic in Modder Support
Forgot to provide my ModBlocks: public static List<Block> BLOCKS = new ArrayList<Block>(); public static final List<BlockFluidBase> BLOCKFLUIDS = new ArrayList<BlockFluidBase>(); public static final Block blockIngots = new ModIngotBlocks(Material.IRON, "block"); public static final Block moltenMythrilBlock = new BlockMoltenMythril(ModFluids.moltenMythrilFluid); public static final Block moltenCoal = new BlockLiquifiedCoal(ModFluids.liquifiedCoal); public static void registerBlocks() { registerBlock(moltenMythrilBlock); registerBlock(moltenCoal); } public static void registerBlock(Block block) { ForgeRegistries.BLOCKS.register(block); ItemBlock itemBlock = new ItemBlock(block); itemBlock.setRegistryName(block.getRegistryName()); ForgeRegistries.ITEMS.register(itemBlock); } } I saw ForgeRegistries.BLOCKS/ITEMS.register() method on CoFH's source code so I used it, could it be causing the problem? -
[SOLVED] Fluid Textures Not Showing [1.12.2]
DeathSpawn replied to DeathSpawn's topic in Modder Support
The log file says this: https://pastebin.com/taeQYub2 -
I am not getting any textures for my custom fluids. I think it has to do with StateMappers since the level=10, level=11... are not registered properly but I do not know how to fix this problem. BlockFluidCore public class BlockFluidCore extends BlockFluidClassic implements IHasFluidModel { protected String name; protected float particleRed = 1.0F; protected float particleGreen = 1.0F; protected float particleBlue = 1.0F; protected boolean shouldDisplaceFluids = false; public BlockFluidCore(Fluid fluid, Material material, String unlocalizedName) { super(fluid, material); this.setUnlocalizedName(unlocalizedName); this.setRegistryName(new ResourceLocation(Reference.MODID, unlocalizedName)); this.name = unlocalizedName; } public BlockFluidCore setParticleColor(int c) { return setParticleColor(((c >> 16) & 255) / 255f, ((c >> 8) & 255) / 255f, (c & 255) / 255f); } public BlockFluidCore setParticleColor(float particleRed, float particleGreen, float particleBlue) { this.particleRed = particleRed; this.particleGreen = particleGreen; this.particleBlue = particleBlue; return this; } @Override public Boolean isEntityInsideMaterial(IBlockAccess world, BlockPos blockpos, IBlockState iblockstate, Entity entity, double yToTest, Material materialIn, boolean testingHead) { if (this.density < 0) { return false; } if (testingHead) { return true; } return super.isEntityInsideMaterial(world, blockpos, iblockstate, entity, yToTest, materialIn, testingHead); } @Override public boolean canCreatureSpawn(IBlockState state, IBlockAccess world, BlockPos pos, SpawnPlacementType type) { return false; } @Override public boolean canDisplace(IBlockAccess world, BlockPos pos) { if (!shouldDisplaceFluids && world.getBlockState(pos).getMaterial().isLiquid()) { return false; } return super.canDisplace(world, pos); } @Override public boolean displaceIfPossible(World world, BlockPos pos) { if (!shouldDisplaceFluids && world.getBlockState(pos).getMaterial().isLiquid()) { return false; } return super.displaceIfPossible(world, pos); } /* ACCESSORS */ public int getDensitySafe() { return density; } public int getDensityDirSafe() { return densityDir; } public float getParticleRed() { return particleRed; } public float getParticleGreen() { return particleGreen; } public float getParticleBlue() { return particleBlue; } @Override @SideOnly (Side.CLIENT) public Vec3d getFogColor(World world, BlockPos pos, IBlockState state, Entity entity, Vec3d originalColor, float partialTicks) { return new Vec3d(getParticleRed(), getParticleGreen(), getParticleBlue()); } @Override @SideOnly(Side.CLIENT) public void registerFluidBlockModel() { Item item = Item.getItemFromBlock(this); StateMapper mapper = new StateMapper("fluid", this.name); ModelBakery.registerItemVariants(item); ModelLoader.setCustomMeshDefinition(item, mapper); ModelLoader.setCustomStateMapper(this, mapper); } } Thre registerFluidBlockModel() is being called in my ClientProxy. ClientProxy: @Override public void registerStateMapper() { for(BlockFluidBase bf: ModBlocks.BLOCKFLUIDS) { if(bf instanceof IHasFluidModel) { ((IHasFluidModel)bf).registerFluidBlockModel(); MagicModLogger.getLogger().info("Register FluidBlock: " + bf.getUnlocalizedName().substring(5)); } } } This is later called in my MainMod files' preInit event MainMod event: @EventHandler public static void preInit(FMLPreInitializationEvent e) { MagicModLogger.getLogger().info("Pre-Initialization"); ModFluids.registerFluids(); ModFluids.integrateFluids(); ModBlocks.registerBlocks(); proxy.registerStateMapper(); }
-
[Solved] How to solve the overlay on universal bucket problem?
DeathSpawn replied to DeathSpawn's topic in Modder Support
Thank you for the info. I wasn't aware of the fact till I read your comment that there was this sort of an event (TextureStitchEvent). -
[Solved] How to solve the overlay on universal bucket problem?
DeathSpawn replied to DeathSpawn's topic in Modder Support
You have to it seems. The texture changed as soon as I created a fluid block.