-
[1.14.2] Loot Tables detecting specific item use?
Is there a way to detect when an item is being used in a loot table? I have a custom bush that I would like to drop itself when shears are used on it, and drop seeds otherwise. However, I am not sure how to implement that into a JSON lootable (if at all possible), and the documentation has nothing on this. Do I need to find out if the block is being broken with shears in the class, and then change the JSON loot table? How would I even go about doing that? My Custom Bush: My Bush's JSON loot table:
-
[1.14.4] How to generate a custom tree in my world?
I'm kinda lost on how to generate a tree in my world. I have created a tree that can spawn from a sapling, but I've not been able to generate one naturally in my world. I do have a class that generates a custom ore in my world, but I can't seem to get it to extend to trees, and the source files haven't really been much help for me. Does anyone have a good way to generate trees? I've even looked through the source files of Biomes O' Plenty for 1.14.4 for some help, but they havent given me any. Here is some code. TreeGeneration.java ModBiomeFeatures.java
-
[1.14.4] Any Way to view all .class files in the jar?
I cannot update any higher because I am creating mods for a modded SMP server, and I need to create mods for the version of forge that the server is set up for. Would update forge really be the solution I'm looking for and get me all of the missing sources for the .class files?
-
[1.14.4] Any Way to view all .class files in the jar?
Forge is updated to 28.0.45, I currently cannot update any higher and I need to stay on 28.0.45. This is an image from the result I get from some .class files in net.minecraft if that is any help: Image
-
[1.14.4] Any Way to view all .class files in the jar?
I'm trying to look at the source files to see how to perform some actions (because Forge docs are kinda barren and i cant find anything online for what I need to do) and some files do not show the source code, and instead show "Source not found". Is there any way to remedy this?
-
[SOLVED] [1.14.2] custom tree does not replace sapling
I have a custom tree that is not replacing the sapling when it spawns, and instead forms over the sapling leaving the sapling at the bottom. Code: Custom Sapling: package com.mmyron.bettergameplay.block; import com.mmyron.bettergameplay.block.tree.TallBirchTree; import net.minecraft.block.SaplingBlock; public class TallBirchSaplingBlock extends SaplingBlock{ public TallBirchSaplingBlock(Properties properties) { super(new TallBirchTree(), properties); } } Tree: package com.mmyron.bettergameplay.block.tree; import java.util.Random; import com.mmyron.bettergameplay.world.gen.feature.TallBirchTreeFeature; import net.minecraft.block.trees.Tree; import net.minecraft.world.gen.feature.AbstractTreeFeature; import net.minecraft.world.gen.feature.NoFeatureConfig; public class TallBirchTree extends Tree{ @Override protected AbstractTreeFeature<NoFeatureConfig> getTreeFeature(Random random){ return new TallBirchTreeFeature(NoFeatureConfig::func_214639_a, true); } } TreeFeature: package com.mmyron.bettergameplay.world.gen.feature; import java.util.Random; import java.util.Set; import java.util.function.Function; import com.mmyron.bettergameplay.init.BlockList; import com.mojang.datafixers.Dynamic; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.LogBlock; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MutableBoundingBox; import net.minecraft.world.IBlockReader; import net.minecraft.world.IWorld; import net.minecraft.world.gen.IWorldGenerationReader; import net.minecraft.world.gen.feature.AbstractTreeFeature; import net.minecraft.world.gen.feature.NoFeatureConfig; import net.minecraftforge.common.IPlantable; public class TallBirchTreeFeature extends AbstractTreeFeature<NoFeatureConfig>{ private BlockState blockStateWood = Blocks.OAK_LOG.getDefaultState(); private BlockState blockStateLeaves = Blocks.OAK_LEAVES.getDefaultState(); private final int minTreeHeight = 12; public TallBirchTreeFeature(Function<Dynamic<?>, ? extends NoFeatureConfig> dynamic, boolean notify) { super(dynamic, notify); // TODO Auto-generated constructor stub } private void generateLeaves(IWorld parWorld, BlockPos parBlockPos, int height, Random parRandom) { for (int foliageY = parBlockPos.getY() - 4 + height; foliageY <= parBlockPos.getY() + height; ++foliageY) { int foliageLayer = foliageY - (parBlockPos.getY() + height) - 2; int foliageLayerRadius = 0 - foliageLayer / 2; for (int foliageX = parBlockPos.getX() - foliageLayerRadius; foliageX <= parBlockPos.getX() + foliageLayerRadius; ++foliageX) { int foliageRelativeX = foliageX - parBlockPos.getX(); for (int foliageZ = parBlockPos.getZ() - foliageLayerRadius; foliageZ <= parBlockPos.getZ() + foliageLayerRadius; ++foliageZ) { int foliageRelativeZ = foliageZ - parBlockPos.getZ(); // Fill in layer with some randomness if (Math.abs(foliageRelativeX) != foliageLayerRadius || Math.abs(foliageRelativeZ) != foliageLayerRadius || parRandom.nextInt(2) != 0 && foliageLayer != 0) { BlockPos blockPos = new BlockPos(foliageX, foliageY, foliageZ); BlockState state = parWorld.getBlockState(blockPos); if (state.getBlock().isAir(state, parWorld, blockPos) || state.getBlock() == Blocks.OAK_LOG) { this.setBlockState(parWorld, blockPos, blockStateLeaves); } } } } } } private void generateTrunk(IWorld worldIn, BlockPos parBlockPos, int minHeight) { for(int height = 0; height < minTreeHeight; ++height) { BlockPos upN = parBlockPos.up(height); BlockState state = worldIn.getBlockState(upN); if(state.getBlock().isAir(state, worldIn, upN) || state.getBlock() == Blocks.OAK_LEAVES || state.getBlock() == BlockList.Register.TALL_BIRCH_SAPLING) { this.setBlockState(worldIn, parBlockPos.up(height), blockStateWood.with(LogBlock.AXIS, Direction.Axis.Y)); } } } private boolean isSuitableLocation(IWorldGenerationReader worldIn, BlockPos parBlockPos, int minHeight) { boolean isSuitableLocation = true; for (int checkY = parBlockPos.getY(); checkY <= parBlockPos.getY() + 1 + minHeight; ++checkY) { // Handle increasing space towards top of tree int extraSpaceNeeded = 1; // Handle base location if (checkY == parBlockPos.getY()) { extraSpaceNeeded = 0; } // Handle top location if (checkY >= parBlockPos.getY() + 1 + minHeight - 2) { extraSpaceNeeded = 2; } for (int checkX = parBlockPos.getX() - extraSpaceNeeded; checkX <= parBlockPos.getX() + extraSpaceNeeded && isSuitableLocation; ++checkX) { for (int checkZ = parBlockPos.getZ() - extraSpaceNeeded; checkZ <= parBlockPos.getZ() + extraSpaceNeeded && isSuitableLocation; ++checkZ) { isSuitableLocation = /*isReplaceable(worldIn,blockPos.setPos(checkX, checkY, checkZ))*/ true; } } } return isSuitableLocation; } @Override protected boolean place(Set<BlockPos> changedBlocks, IWorldGenerationReader worldIn, Random random, BlockPos pos, MutableBoundingBox p_208519_5_) { int minHeight = random.nextInt(3) + minTreeHeight; if (pos.getY() >= 1 && pos.getY() + minHeight + 1 <= 256) { if (!isSuitableLocation(worldIn, pos, minHeight)) { return false; } else { BlockState state = ((IBlockReader) worldIn).getBlockState(pos.down()); if (state.getBlock().canSustainPlant(state, (IBlockReader) worldIn, pos.down(), Direction.UP, (IPlantable) BlockList.Register.TALL_BIRCH_SAPLING) && pos.getY() < 256 - minHeight - 1) { state.getBlock().onPlantGrow(state, (IWorld) worldIn, pos.down(), pos); generateLeaves((IWorld) worldIn, pos, minHeight, random); generateTrunk((IWorld) worldIn, pos, minHeight); return true; } else { return false; } } } else { return false; } } }
-
[1.13.2] Problems when attempting to create custom vines.
I got it working actually. I made a custom item class and extended BlockVine, then just instantiated that in my main class. Thanks for the help thought!
-
[1.13.2] Is there any way to give a player a status effect when holding an item?
Right, so I changed that to override inventoryTick (it wasn't showing up correctly for me earlier), and i got this @Override public void inventoryTick(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected) { if(stack.getItem() == ItemList.poison_ivy_leaf && isSelected) { } } However, I'm unable to use the addPotionEffect, since the entityIn doesn't seem to be a player? EDIT: Figured it out.
-
[1.13.2] Unable to give player status effect when holding item. What is wrong with my code?
I figured I would start a new thread because I further narrowed down my problem, and was no longer having an issue with what I said I was on the other thread.
-
mmyron changed their profile photo
-
[1.13.2] Unable to give player status effect when holding item. What is wrong with my code?
I've been trying to get an item that gives the player a status effect when they hold it. Right now I have this piece of code: public class ItemPoisonIvyLeaf extends Item{ public ItemPoisonIvyLeaf(Properties properties) { super(properties); } private void onPlayerTick(EntityPlayer player) { ItemStack itemInSlot = player.inventory.getStackInSlot(0); if(itemInSlot.getItem() == ItemList.poison_ivy_leaf) { player.addPotionEffect(new PotionEffect(Potion.getPotionById(19), 5, 0)); } } } The item is displaying correctly in the game, so I know that this class isn't broken, so it must be something with the onPlayerTick method I created. What is the issue with this, and how can I fix it? Thanks.
-
[1.13.2] Is there any way to give a player a status effect when holding an item?
here's what I have so far package item; import mmyron.mmyronsqol.lists.ItemList; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; public class ItemPoisonIvyLeaf extends Item{ public ItemPoisonIvyLeaf(Properties properties) { super(properties); } private void onPlayerTick(EntityPlayer player) { ItemStack itemInSlot = player.inventory.getStackInSlot(0); if(itemInSlot.getItem() == ItemList.poison_ivy_leaf) { player.addPotionEffect(new PotionEffect(Potion.getPotionById(19), 5, 0)); } } } I feel like this would work, but now I'm clueless as to how to register the item in the registry lol How would I call this item class in the registry in my main class?
-
[1.13.2] Is there any way to give a player a status effect when holding an item?
Cool, but where would I override this? And how? I set up a class called PoisonIvyLeaf to check if this item is in the hand, but I'm not sure where to implement inventoryTick to check for that. Should I set up a SubscribeEvent?
-
[1.13.2] Is there any way to give a player a status effect when holding an item?
I have an item that I would like to give the player poison when it is in their main or offhand, and nothing if it is not. Is there any way to achieve this effect?
-
[1.13.2] Problems when attempting to create custom vines.
[11:18:47.114] [Client thread/DEBUG] [ne.mi.re.ForgeRegistry/REGISTRYDUMP]: Registry Name: forge:moddimensions [11:18:47.114] [Client thread/DEBUG] [ne.mi.re.ForgeRegistry/REGISTRYDUMP]: Registry Name: minecraft:dataserializers [11:18:47.115] [Client thread/DEBUG] [ne.mi.re.GameData/REGISTRIES]: All registries frozen [11:18:47.122] [Client thread/WARN] [minecraft/GameSettings]: Skipping bad option: lastServer: [11:18:47.205] [Client thread/INFO] [mojang/NarratorWindows]: Narrator library for x64 successfully loaded [11:18:47.374] [Client thread/ERROR] [FM.TEXTURE_ERRORS/]: +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= [11:18:47.374] [Client thread/ERROR] [FM.TEXTURE_ERRORS/]: The following texture errors were found. [11:18:47.375] [Client thread/ERROR] [FM.TEXTURE_ERRORS/]: ================================================== [11:18:47.375] [Client thread/ERROR] [FM.TEXTURE_ERRORS/]: DOMAIN mmqol [11:18:47.375] [Client thread/ERROR] [FM.TEXTURE_ERRORS/]: -------------------------------------------------- [11:18:47.375] [Client thread/ERROR] [FM.TEXTURE_ERRORS/]: domain mmqol is missing 1 texture [11:18:47.375] [Client thread/ERROR] [FM.TEXTURE_ERRORS/]: domain mmqol has 1 location: [11:18:47.376] [Client thread/ERROR] [FM.TEXTURE_ERRORS/]: mod(s) [mmyron's Quality MC] resources at C:\Users\maxkn\3D Objects\Programming\mod\mmyronsQoL\build\resources\main [11:18:47.376] [Client thread/ERROR] [FM.TEXTURE_ERRORS/]: ------------------------- [11:18:47.376] [Client thread/ERROR] [FM.TEXTURE_ERRORS/]: The missing resources for domain mmqol are: [11:18:47.376] [Client thread/ERROR] [FM.TEXTURE_ERRORS/]: item/poison_ivy [11:18:47.376] [Client thread/ERROR] [FM.TEXTURE_ERRORS/]: ------------------------- [11:18:47.376] [Client thread/ERROR] [FM.TEXTURE_ERRORS/]: No other errors exist for domain mmqol [11:18:47.377] [Client thread/ERROR] [FM.TEXTURE_ERRORS/]: ================================================== [11:18:47.377] [Client thread/ERROR] [FM.TEXTURE_ERRORS/]: +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= [11:18:47.593] [Realms Notification Availability checker #1/INFO] [mojang/RealmsClient]: Could not authorize you against Realms server: Invalid session id seems I'm missing a texture in the item texture folder, since the poison_ivy.json in the models/item is asking for that but isn't receiving a texture. Ill edit this to let you know what happens. EDIT: So, my block now has the correct texture in the hotbar and inventory, however still appears as the placeholder texture in game. That's better, but not a full solution
-
[1.13.2] Problems when attempting to create custom vines.
I've been trying to make my own vines, and I've sourced the JSON files from the blockstates and models folders of the client-extra.jar. I have each vine-related JSON file from client-extra/assets/minecraft/blockstates, client-extra/assets/minecraft/models/block, and client-extra/assets.minecraft/models/item, and I've named it in the en_us.json file. Each vine related JSON file from the original client-extra.jar is pointing to my own textures, and has the correct modid as well. I have my correct texture, however when I'm in game, my custom vines do not appear with the texture, and do not behave like vines either. They behave like any other block, and are not specific about which faces or block they can be placed on. It also doesn't seem to have any properties, while normal vines have properties for the direction they are facing. I've set the Material property to Material.VINE when registering the block in my main class, but that does not fix anything. Code: following JSON files from assets/mmqol/blockstates poison_ivy.json { "variants": { "east=false,north=false,south=false,up=false,west=false": { "model": "mmqol:block/poison_ivy_1" }, "east=false,north=false,south=true,up=false,west=false": { "model": "mmqol:block/poison_ivy_1" }, "east=false,north=false,south=false,up=false,west=true": { "model": "mmqol:block/poison_ivy_1", "y": 90 }, "east=false,north=true,south=false,up=false,west=false": { "model": "mmqol:block/poison_ivy_1", "y": 180 }, "east=true,north=false,south=false,up=false,west=false": { "model": "mmqol:block/poison_ivy_1", "y": 270 }, "east=true,north=true,south=false,up=false,west=false": { "model": "mmqol:block/poison_ivy_2" }, "east=true,north=false,south=true,up=false,west=false": { "model": "mmqol:block/poison_ivy_2", "y": 90 }, "east=false,north=false,south=true,up=false,west=true": { "model": "mmqol:block/poison_ivy_2", "y": 180 }, "east=false,north=true,south=false,up=false,west=true": { "model": "mmqol:block/poison_ivy_2", "y": 270 }, "east=true,north=false,south=false,up=false,west=true": { "model": "mmqol:block/poison_ivy_2_opposite" }, "east=false,north=true,south=true,up=false,west=false": { "model": "mmqol:block/poison_ivy_2_opposite", "y": 90 }, "east=true,north=true,south=true,up=false,west=false": { "model": "mmqol:block/poison_ivy_3" }, "east=true,north=false,south=true,up=false,west=true": { "model": "mmqol:block/poison_ivy_3", "y": 90 }, "east=false,north=true,south=true,up=false,west=true": { "model": "mmqol:block/poison_ivy_3", "y": 180 }, "east=true,north=true,south=false,up=false,west=true": { "model": "mmqol:block/poison_ivy_3", "y": 270 }, "east=true,north=true,south=true,up=false,west=true": { "model": "mmqol:block/poison_ivy_4" }, "east=false,north=false,south=false,up=true,west=false": { "model": "mmqol:block/poison_ivy_u" }, "east=false,north=false,south=true,up=true,west=false": { "model": "mmqol:block/poison_ivy_1u" }, "east=false,north=false,south=false,up=true,west=true": { "model": "mmqol:block/poison_ivy_1u", "y": 90 }, "east=false,north=true,south=false,up=true,west=false": { "model": "mmqol:block/poison_ivy_1u", "y": 180 }, "east=true,north=false,south=false,up=true,west=false": { "model": "mmqol:block/poison_ivy_1u", "y": 270 }, "east=true,north=true,south=false,up=true,west=false": { "model": "mmqol:block/poison_ivy_2u" }, "east=true,north=false,south=true,up=true,west=false": { "model": "mmqol:block/poison_ivy_2u", "y": 90 }, "east=false,north=false,south=true,up=true,west=true": { "model": "mmqol:block/poison_ivy_2u", "y": 180 }, "east=false,north=true,south=false,up=true,west=true": { "model": "mmqol:block/poison_ivy_2u", "y": 270 }, "east=true,north=false,south=false,up=true,west=true": { "model": "mmqol:block/poison_ivy_2u_opposite" }, "east=false,north=true,south=true,up=true,west=false": { "model": "mmqol:block/poison_ivy_2u_opposite", "y": 90 }, "east=true,north=true,south=true,up=true,west=false": { "model": "mmqol:block/poison_ivy_3u" }, "east=true,north=false,south=true,up=true,west=true": { "model": "mmqol:block/poison_ivy_3u", "y": 90 }, "east=false,north=true,south=true,up=true,west=true": { "model": "mmqol:block/poison_ivy_3u", "y": 180 }, "east=true,north=true,south=false,up=true,west=true": { "model": "mmqol:block/poison_ivy_3u", "y": 270 }, "east=true,north=true,south=true,up=true,west=true": { "model": "mmqol:block/poison_ivy_4u" } } } following JSON files from models/block poison_ivy_1.json { "ambientocclusion": false, "textures": { "particle": "mmqol:block/poison_ivy", "ivy": "mmqol:block/poison_ivy" }, "elements": [ { "from": [ 0, 0, 15.2 ], "to": [ 16, 16, 15.2 ], "shade": false, "faces": { "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } } ] } poison_ivy_1u.json { "ambientocclusion": false, "textures": { "particle": "mmqol:block/poison_ivy", "ivy": "mmqol:block/poison_ivy" }, "elements": [ { "from": [ 0, 15.2, 0 ], "to": [ 16, 15.2, 16 ], "shade": false, "faces": { "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } }, { "from": [ 0, 0, 15.2 ], "to": [ 16, 16, 15.2 ], "shade": false, "faces": { "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } } ] } poison_ivy_2.json { "ambientocclusion": false, "textures": { "particle": "mmqol:block/poison_ivy", "ivy": "mmqol:block/poison_ivy" }, "elements": [ { "from": [ 0, 0, 0.8 ], "to": [ 16, 16, 0.8 ], "shade": false, "faces": { "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } }, { "from": [ 15.2, 0, 0 ], "to": [ 15.2, 16, 16 ], "shade": false, "faces": { "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } } ] } poison_ivy_2_opposite.json { "ambientocclusion": false, "textures": { "particle": "mmqol:block/poison_ivy", "ivy": "mmqol:block/poison_ivy" }, "elements": [ { "from": [ 15.2, 0, 0 ], "to": [ 15.2, 16, 16 ], "shade": false, "faces": { "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } }, { "from": [ 0.8, 0, 0 ], "to": [ 0.8, 16, 16 ], "shade": false, "faces": { "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } } ] } poison_ivy_2_u.json { "ambientocclusion": false, "textures": { "particle": "mmqol:block/poison_ivy", "ivy": "mmqol:block/poison_ivy" }, "elements": [ { "from": [ 0, 15.2, 0 ], "to": [ 16, 15.2, 16 ], "shade": false, "faces": { "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } }, { "from": [ 0, 0, 0.8 ], "to": [ 16, 16, 0.8 ], "shade": false, "faces": { "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } }, { "from": [ 15.2, 0, 0 ], "to": [ 15.2, 16, 16 ], "shade": false, "faces": { "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } } ] } poison_ivy_2_u_opposite.json { "ambientocclusion": false, "textures": { "particle": "mmqol:block/poison_ivy", "ivy": "mmqol:block/poison_ivy" }, "elements": [ { "from": [ 0, 15.2, 0 ], "to": [ 16, 15.2, 16 ], "shade": false, "faces": { "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } }, { "from": [ 15.2, 0, 0 ], "to": [ 15.2, 16, 16 ], "shade": false, "faces": { "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } }, { "from": [ 0.8, 0, 0 ], "to": [ 0.8, 16, 16 ], "shade": false, "faces": { "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } } ] } poison_ivy_3.json { "ambientocclusion": false, "textures": { "particle": "mmqol:block/poison_ivy", "ivy": "mmqol:block/poison_ivy" }, "elements": [ { "from": [ 15.2, 0, 0 ], "to": [ 15.2, 16, 16 ], "shade": false, "faces": { "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } }, { "from": [ 0, 0, 15.2 ], "to": [ 16, 16, 15.2 ], "shade": false, "faces": { "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } }, { "from": [ 0, 0, 0.8 ], "to": [ 16, 16, 0.8 ], "shade": false, "faces": { "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } } ] } poison_ivy_3_u.json { "ambientocclusion": false, "textures": { "particle": "mmqol:block/poison_ivy", "ivy": "mmqol:block/poison_ivy" }, "elements": [ { "from": [ 0, 15.2, 0 ], "to": [ 16, 15.2, 16 ], "shade": false, "faces": { "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } }, { "from": [ 15.2, 0, 0 ], "to": [ 15.2, 16, 16 ], "shade": false, "faces": { "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } }, { "from": [ 0, 0, 15.2 ], "to": [ 16, 16, 15.2 ], "shade": false, "faces": { "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } }, { "from": [ 0, 0, 0.8 ], "to": [ 16, 16, 0.8 ], "shade": false, "faces": { "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } } ] } poison_ivy_4.json { "ambientocclusion": false, "textures": { "particle": "mmqol:block/poison_ivy", "ivy": "mmqol:block/poison_ivy" }, "elements": [ { "from": [ 0.8, 0, 0 ], "to": [ 0.8, 16, 16 ], "shade": false, "faces": { "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } }, { "from": [ 15.2, 0, 0 ], "to": [ 15.2, 16, 16 ], "shade": false, "faces": { "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } }, { "from": [ 0, 0, 15.2 ], "to": [ 16, 16, 15.2 ], "shade": false, "faces": { "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } }, { "from": [ 0, 0, 0.8 ], "to": [ 16, 16, 0.8 ], "shade": false, "faces": { "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } } ] } poison_ivy_4_u.json { "ambientocclusion": false, "textures": { "particle": "mmqol:block/poison_ivy", "ivy": "mmqol:block/poison_ivy" }, "elements": [ { "from": [ 0, 15.2, 0 ], "to": [ 16, 15.2, 16 ], "shade": false, "faces": { "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } }, { "from": [ 0.8, 0, 0 ], "to": [ 0.8, 16, 16 ], "shade": false, "faces": { "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } }, { "from": [ 15.2, 0, 0 ], "to": [ 15.2, 16, 16 ], "shade": false, "faces": { "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } }, { "from": [ 0, 0, 15.2 ], "to": [ 16, 16, 15.2 ], "shade": false, "faces": { "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } }, { "from": [ 0, 0, 0.8 ], "to": [ 16, 16, 0.8 ], "shade": false, "faces": { "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } } ] } poison_ivy_u.json { "ambientocclusion": false, "textures": { "particle": "mmqol:block/poison_ivy", "ivy": "mmqol:block/poison_ivy" }, "elements": [ { "from": [ 0, 15.2, 0 ], "to": [ 16, 15.2, 16 ], "shade": false, "faces": { "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 }, "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#ivy", "tintindex": 0 } } } ] } following JSON files from models/item poison_ivy.json { "parent": "item/generated", "textures": { "layer0": "mmqol:item/poison_ivy" } } my texture is titled "poison_ivy.png" and is in assets/mmqol/textures/block from BlockList.java public static Block poison_ivy; from ItemList.java public static Item poison_ivy; from MMyronsQoL.java (my main class) @Mod.EventBusSubscriber(bus=Mod.EventBusSubscriber.Bus.MOD) public static class RegistryEvents{ @SubscribeEvent public static void registerItems(final RegistryEvent.Register<Item> event) { event.getRegistry().registerAll( ItemList.poison_ivy = new ItemBlock(BlockList.poison_ivy, new Item.Properties().group(ItemGroup.DECORATIONS)).setRegistryName(BlockList.poison_ivy.getRegistryName()) ); logger.info("Items registered"); } @SubscribeEvent public static void registerBlocks(final RegistryEvent.Register<Block> event) { event.getRegistry().registerAll( BlockList.poison_ivy = new Block(Block.Properties.create(Material.VINE).hardnessAndResistance(0.2f, 0.1f).sound(SoundType.PLANT).doesNotBlockMovement().variableOpacity()).setRegistryName(getLocation("poison_ivy")) ); logger.info("Blocks registered"); } private static ResourceLocation getLocation(String name) { return new ResourceLocation(modid, name); } } If there is anything I'm missing that might help someone figure out this mess, please let me know! Thanks
IPS spam blocked by CleanTalk.