-
Recipe help
It works! Thanks for the advice.
-
Recipe help
Thanks, I'll try to get it to work
-
Recipe help
Is there a simpler way though? I've already got it so it works completely, except for the cake recipe. With the RightClickItem event, wouldn't I have to check for any blocks in range, then get a raycast to find the block to replace with the fluid, and otherwise, if there is no block targeted in range, run the default minecraft drinking behaviour? I was thinking that there might be a way to replace all instances of "item": "minecraft:milk_bucket" in recipe json files, with my own tag, containing my milk bucket as well a the vanilla one. Or would there be a way of registering my item as the vanilla item, completely overwriting it?
-
Recipe help
I'm adding a new item that is a copy of a vanilla item, so I can add extra functionality (specifically, a milk bucket that has the ability to place milk as a fluid - I'm using an event to convert all vanilla milk buckets to my milk buckets - is that the best way to do it?) However, I want my item to be identical to the vanilla one in every other way. How can I make any recipe that accepts the vanilla item also accept my item - both vanilla and modded recipes.
-
Log Block not Rendering
Thank you so much, I've been trying to fix this for ages. It works! Such a nooby mistake.
-
Log Block not Rendering
Also, the console only has errors for axis=z and axis=none, but not axis=x or axis=y.
-
Log Block not Rendering
Thanks Dipo, I renamed the blockstate file from logs to log. Now it still doesn't work, but the console report is shorter and without the FileNotFoundException. Any other ideas of how to fix?
-
Log Block not Rendering
I don't really understand console logs. what exactly must I change?
-
Log Block not Rendering
The error in the log is here And the block json is also repeated for the other log
-
NerdyNinja11 joined the community
-
Log Block not Rendering
I am trying to create two log blocks (So blocks with different orientations and side textures) using variants for two types of tree, and although the item textures work fine, when I place the block, it has no texture. My code for the logs, enum, and jsons are below: Log Class package com.nerdyninja.tutorialmod.blocks.trees; import javax.annotation.Nullable; import com.google.common.base.Predicate; import com.nerdyninja.tutorialmod.Main; import com.nerdyninja.tutorialmod.blocks.item.ItemBlockVariants; import com.nerdyninja.tutorialmod.init.ModBlocks; import com.nerdyninja.tutorialmod.init.ModItems; import com.nerdyninja.tutorialmod.util.IHasModel; import com.nerdyninja.tutorialmod.util.IMetaName; import com.nerdyninja.tutorialmod.util.handlers.EnumTreeHandler; import net.minecraft.block.BlockLog; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; public class BlockLogs extends BlockLog implements IHasModel, IMetaName { public static final PropertyEnum<EnumTreeHandler.EnumType> VARIANT = PropertyEnum.<EnumTreeHandler.EnumType>create("variant", EnumTreeHandler.EnumType.class, new Predicate<EnumTreeHandler.EnumType>() { public boolean apply(@Nullable EnumTreeHandler.EnumType apply) { return apply.getMeta() < 2; } }); private String name; public BlockLogs(String name) { setUnlocalizedName(name); setRegistryName(name); setCreativeTab(Main.tutorialtab); setDefaultState(this.blockState.getBaseState().withProperty(VARIANT, EnumTreeHandler.EnumType.BAOBAB).withProperty(LOG_AXIS, EnumAxis.Y)); setSoundType(SoundType.WOOD); setHardness(2.0F); setResistance(3.3F); setHarvestLevel("axe", 0); this.name = name; ModBlocks.BLOCKS.add(this); ModItems.ITEMS.add(new ItemBlockVariants(this).setRegistryName(this.getRegistryName())); } @Override public void getSubBlocks(CreativeTabs itemIn, NonNullList<ItemStack> items) { for(EnumTreeHandler.EnumType varient : EnumTreeHandler.EnumType.values()) { items.add(new ItemStack(this, 1, varient.getMeta())); } } @Override public IBlockState getStateFromMeta(int meta) { IBlockState state = this.getDefaultState().withProperty(VARIANT, EnumTreeHandler.EnumType.byMetadata((meta & 1) % 2)); switch(meta & 6) { case 0 : state = state.withProperty(LOG_AXIS, EnumAxis.Y); break; case 2 : state = state.withProperty(LOG_AXIS, EnumAxis.X); break; case 4 : state = state.withProperty(LOG_AXIS, EnumAxis.Z); break; default : state = state.withProperty(LOG_AXIS, EnumAxis.NONE); } return state; } @SuppressWarnings("incomplete-switch") @Override public int getMetaFromState(IBlockState state) { int i = 0; i = i | ((EnumTreeHandler.EnumType)state.getValue(VARIANT)).getMeta(); switch((BlockLogs.EnumAxis)state.getValue(LOG_AXIS)) { case X: i |= 2; break; case Y: i |= 4; break; case Z: i |= 6; break; } return i; } @Override protected BlockStateContainer createBlockState() { return new BlockStateContainer(this, new IProperty[] {VARIANT, LOG_AXIS}); } @Override protected ItemStack getSilkTouchDrop(IBlockState state) { return new ItemStack(Item.getItemFromBlock(this), 1, ((EnumTreeHandler.EnumType)state.getValue(VARIANT)).getMeta()); } @Override public int damageDropped(IBlockState state) { return ((EnumTreeHandler.EnumType)state.getValue(VARIANT)).getMeta(); } @Override public String getSpecialName(ItemStack stack) { return EnumTreeHandler.EnumType.values()[stack.getItemDamage()].getName(); } @Override public void registerModels() { for (int i = 0; i < EnumTreeHandler.EnumType.values().length; i++) { Main.proxy.registerVariantRenderer(Item.getItemFromBlock(this), i, "logs_" + EnumTreeHandler.EnumType.values()[i].getName(), "inventory"); } } } EnumHandler package com.nerdyninja.tutorialmod.util.handlers; import net.minecraft.util.IStringSerializable; public class EnumTreeHandler { public static enum EnumType implements IStringSerializable { BAOBAB(0, "baobab"), POWERED(1, "powered"); private static final EnumType[] META_LOOKUP = new EnumType[values().length]; private final int meta; private final String name, unlocalisedName; private EnumType(int meta, String name) { this(meta, name, name); } private EnumType(int meta, String name, String unlocalizedName) { this.meta = meta; this.name = name; this.unlocalisedName = unlocalizedName; } @Override public String getName() { return this.name; } public int getMeta() { return this.meta; } public String getUnlocalisedName() { return this.unlocalisedName; } @Override public String toString() { return this.name; } public static EnumType byMetadata(int meta) { return META_LOOKUP[meta]; } static { for(EnumType enumtype : values()) { META_LOOKUP[enumtype.getMeta()] = enumtype; } } } } BlockState Json { "variants": { "axis=x, variant=baobab": { "model": "nntm:logs_baobab" }, "axis=x, variant=powered": { "model": "nntm:logs_powered" }, "axis=y, variant=baobab": { "model": "nntm:logs_baobab" }, "axis=y, variant=powered": { "model": "nntm:logs_powered" }, "axis=z, variant=baobab": { "model": "nntm:logs_baobab" }, "axis=z, variant=powered": { "model": "nntm:logs_powered" }, "axis=none, variant=baobab": { "model": "nntm:logs_baobab" }, "axis=none, variant=powered": { "model": "nntm:logs_powered" } } } Model.Block Json { "parent": "block/cube_column", "textures": { "end": "nntm:blocks/log_baobab_top", "side": "nntm:blocks/log_baobab_side" } } I'm very new to modding, so it may be just a silly error. Could anyone help?
IPS spam blocked by CleanTalk.