Jump to content

NerdyNinja11

Members
  • Posts

    9
  • Joined

  • Last visited

NerdyNinja11's Achievements

Tree Puncher

Tree Puncher (2/8)

1

Reputation

  1. It works! Thanks for the advice.
  2. Thanks, I'll try to get it to work
  3. 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?
  4. 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.
  5. Thank you so much, I've been trying to fix this for ages. It works! Such a nooby mistake.
  6. Also, the console only has errors for axis=z and axis=none, but not axis=x or axis=y.
  7. 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?
  8. I don't really understand console logs. what exactly must I change?
  9. The error in the log is here And the block json is also repeated for the other log
  10. 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?
×
×
  • Create New...

Important Information

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