Jump to content

[1.12] Metadata Blockstates Not Working Properly


DragonFerocity

Recommended Posts

Hey guys,

 

So, I'm working on adding a new block, a campfire, and I want there to be a campfire for each of the different wood types. I believe I've setup the metadata correctly (I basically just copied from BlockPlanks.java).

 

Basically, in game, the ItemBlock has a model and shows textures properly in the inventory and hand, but the block itself doesn't even show a model and instead is the black/purple block instead.

 

Here is my campfire code

Here is my Blockstates.Json file

 

I'm also a little confused as in the vanilla minecraft code I didn't see anywhere where each of the different types of planks are registered programmatically. In the Block.java file, it just registers the base type of planks. However, there is a separate json file for each of the different types rather than a single planks.json that specifies the different EnumType variants.

 

I'm pretty sure there's more I need, but I'm not sure what else I need to do.

Link to comment
Share on other sites

You've extended BlockContainer. Don't do this. It does several things that you don't actually want.

The first of which is setting the ModelType to INVISIBLE.

 

Instead, override getTileEntity() and hasTileEntity() in the Block class.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

8 hours ago, Draco18s said:

You've extended BlockContainer. Don't do this. It does several things that you don't actually want.

The first of which is setting the ModelType to INVISIBLE.

Is that a global statement? Because extending BlockContainer for one of my other objects that doesn't have metadata works just fine. Or is this statement specific to things with metadata?

 

EDIT: Also, I can't seem to find getTileEntity in the Block.java file from Forge. I did find createTileEntity though. Is that what I should use? (Just checking even though it might just be a semantics difference.)

Edited by DragonFerocity
Link to comment
Share on other sites

I don't see anything useful in the FML, but here you go.

 

Spoiler

2017-07-28 16:29:37,956 main WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
2017-07-28 16:29:37,959 main WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
[16:29:38] [main/INFO] [GradleStart]: Extra: []
[16:29:38] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Dragon Ferocity/.gradle/caches/minecraft/assets, --assetIndex, 1.12, --accessToken{REDACTED}, --version, 1.12, --tweakClass, net.minecraftforge.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
[16:29:38] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
[16:29:38] [main/INFO] [LaunchWrapper]: Using primary tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
[16:29:38] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
[16:29:38] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLTweaker
[16:29:38] [main/INFO] [FML]: Forge Mod Loader version 14.21.1.2389 for Minecraft 1.12 loading
[16:29:38] [main/INFO] [FML]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.8.0_131, running on Windows 10:amd64:10.0, installed at C:\Program Files\Java\jre1.8.0_131
[16:29:38] [main/INFO] [FML]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
[16:29:38] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.CoremodTweaker
[16:29:38] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.fml.relauncher.FMLCorePlugin
[16:29:38] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.classloading.FMLForgePlugin
[16:29:38] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[16:29:38] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
[16:29:38] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
[16:29:38] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[16:29:38] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[16:29:38] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
2017-07-28 16:29:38,402 main WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
2017-07-28 16:29:38,610 main WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
2017-07-28 16:29:38,611 main WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
[16:29:38] [main/ERROR] [FML]: The binary patch set is missing. Either you are in a development environment, or things are not going to work!
[16:29:39] [main/ERROR] [FML]: FML appears to be missing any signature data. This is not a good thing
[16:29:39] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
[16:29:39] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
[16:29:40] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
[16:29:40] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.TerminalTweaker
[16:29:40] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.TerminalTweaker
[16:29:40] [main/INFO] [LaunchWrapper]: Launching wrapped minecraft {net.minecraft.client.main.Main}
[16:29:40] [main/INFO]: Setting user: Player367
[16:29:43] [main/WARN]: Skipping bad option: lastServer:
[16:29:43] [main/INFO]: LWJGL Version: 2.9.4
[16:29:45] [main/INFO] [FML]: -- System Details --
Details:
    Minecraft Version: 1.12
    Operating System: Windows 10 (amd64) version 10.0
    Java Version: 1.8.0_131, Oracle Corporation
    Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 295342328 bytes (281 MB) / 630194176 bytes (601 MB) up to 3806855168 bytes (3630 MB)
    JVM Flags: 0 total; 
    IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
    FML: 
    Loaded coremods (and transformers): 
    GL info: ' Vendor: 'ATI Technologies Inc.' Version: '4.5.13491 Compatibility Profile Context 22.19.662.4' Renderer: 'Radeon (TM) RX 480 Graphics'
[16:29:45] [main/INFO] [FML]: MinecraftForge v14.21.1.2389 Initialized
[16:29:45] [main/INFO] [FML]: Replaced 921 ore ingredients
[16:29:45] [main/INFO] [FML]: Found 0 mods from the command line. Injecting into mod discoverer
[16:29:45] [main/INFO] [FML]: Searching R:\Minecraft\ExpandedAesthetics\run\mods for mods
[16:29:46] [main/INFO] [FML]: Forge Mod Loader has identified 5 mods to load
[16:29:46] [main/INFO] [FML]: Attempting connection with missing mods [minecraft, mcp, FML, forge, expanded] at CLIENT
[16:29:46] [main/INFO] [FML]: Attempting connection with missing mods [minecraft, mcp, FML, forge, expanded] at SERVER
[16:29:47] [main/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:Expanded Aesthetics
[16:29:47] [main/INFO] [FML]: Processing ObjectHolder annotations
[16:29:47] [main/INFO] [FML]: Found 1168 ObjectHolder annotations
[16:29:47] [main/INFO] [FML]: Identifying ItemStackHolder annotations
[16:29:47] [main/INFO] [FML]: Found 0 ItemStackHolder annotations
[16:29:47] [main/INFO] [FML]: Configured a dormant chunk cache size of 0
[16:29:47] [Forge Version Check/INFO] [ForgeVersionCheck]: [forge] Starting version check at http://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json
[16:29:47] [main/INFO] [FML]: Applying holder lookups
[16:29:47] [main/INFO] [FML]: Holder lookups applied
[16:29:47] [main/INFO] [FML]: Applying holder lookups
[16:29:47] [main/INFO] [FML]: Holder lookups applied
[16:29:47] [main/INFO] [FML]: Applying holder lookups
[16:29:47] [Forge Version Check/INFO] [ForgeVersionCheck]: [forge] Found status: OUTDATED Target: 14.21.1.2426
[16:29:47] [main/INFO] [FML]: Holder lookups applied
[16:29:47] [main/INFO] [FML]: Applying holder lookups
[16:29:47] [main/INFO] [FML]: Holder lookups applied
[16:29:47] [main/INFO] [FML]: Injecting itemstacks
[16:29:47] [main/INFO] [FML]: Itemstack injection complete
[16:29:47] [Thread-3/INFO] [FML]: Using sync timing. 200 frames of Display.update took 89048230 nanos
[16:29:50] [Sound Library Loader/INFO]: Starting up SoundSystem...
[16:29:50] [Thread-5/INFO]: Initializing LWJGL OpenAL
[16:29:50] [Thread-5/INFO]: (The LWJGL binding of OpenAL.  For more information, see http://www.lwjgl.org)
[16:29:50] [Thread-5/INFO]: OpenAL initialized.
[16:29:50] [Sound Library Loader/INFO]: Sound engine started
[16:29:54] [main/INFO] [FML]: Max texture size: 16384
[16:29:54] [main/WARN]: Texture expanded:textures/items/swords/celestial_bronze_sword.png with size 18x18 will have visual artifacts at mip level 4, it can only support level 1. Please report to the mod author that the texture should be some multiple of 16x16.
[16:29:54] [main/WARN]: Texture expanded:textures/items/ingots/imperial_gold_ingot.png with size 18x18 will have visual artifacts at mip level 4, it can only support level 1. Please report to the mod author that the texture should be some multiple of 16x16.
[16:29:54] [main/WARN]: Texture expanded:textures/items/swords/imperial_gold_sword.png with size 18x18 will have visual artifacts at mip level 4, it can only support level 1. Please report to the mod author that the texture should be some multiple of 16x16.
[16:29:54] [main/WARN]: Texture expanded:textures/items/ingots/celestial_bronze_ingot.png with size 18x18 will have visual artifacts at mip level 4, it can only support level 1. Please report to the mod author that the texture should be some multiple of 16x16.
[16:29:55] [main/INFO]: Created: 512x512 textures-atlas
[16:29:56] [main/INFO] [FML]: Injecting itemstacks
[16:29:56] [main/INFO] [FML]: Itemstack injection complete
[16:29:56] [main/INFO] [FML]: Forge Mod Loader has successfully loaded 5 mods
[16:29:56] [main/WARN]: Skipping bad option: lastServer:
[16:29:56] [main/INFO]: Narrator library for x64 successfully loaded
[16:29:57] [Realms Notification Availability checker #1/INFO]: Could not authorize you against Realms server: Invalid session id
[16:30:08] [Server thread/INFO]: Starting integrated minecraft server version 1.12
[16:30:08] [Server thread/INFO]: Generating keypair
[16:30:08] [Server thread/INFO] [FML]: Injecting existing registry data into this server instance
[16:30:08] [Server thread/INFO] [FML]: Applying holder lookups
[16:30:08] [Server thread/INFO] [FML]: Holder lookups applied
[16:30:08] [Server thread/INFO] [FML]: Loading dimension 0 (Test) (net.minecraft.server.integrated.IntegratedServer@7dd15d17)
[16:30:09] [Server thread/ERROR]: Parsing error loading built-in advancement minecraft:recipes/decorations/crafting_table
com.google.gson.JsonSyntaxException: Unknown recipe 'minecraft:crafting_table'
    at net.minecraft.advancements.AdvancementRewards$Deserializer.deserialize(AdvancementRewards.java:204) ~[AdvancementRewards$Deserializer.class:?]
    at net.minecraft.advancements.AdvancementRewards$Deserializer.deserialize(AdvancementRewards.java:180) ~[AdvancementRewards$Deserializer.class:?]
    at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69) ~[TreeTypeAdapter.class:?]
    at com.google.gson.Gson.fromJson(Gson.java:887) ~[Gson.class:?]
    at com.google.gson.Gson.fromJson(Gson.java:952) ~[Gson.class:?]
    at com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.deserialize(TreeTypeAdapter.java:162) ~[TreeTypeAdapter$GsonContextImpl.class:?]
    at net.minecraft.util.JsonUtils.deserializeClass(JsonUtils.java:359) ~[JsonUtils.class:?]
    at net.minecraft.util.JsonUtils.deserializeClass(JsonUtils.java:381) ~[JsonUtils.class:?]
    at net.minecraft.advancements.Advancement$Builder.deserialize(Advancement.java:243) ~[Advancement$Builder.class:?]
    at net.minecraft.advancements.AdvancementManager$1.deserialize(AdvancementManager.java:50) ~[AdvancementManager$1.class:?]
    at net.minecraft.advancements.AdvancementManager$1.deserialize(AdvancementManager.java:46) ~[AdvancementManager$1.class:?]
    at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69) ~[TreeTypeAdapter.class:?]
    at net.minecraft.util.JsonUtils.gsonDeserialize(JsonUtils.java:435) ~[JsonUtils.class:?]
    at net.minecraft.util.JsonUtils.fromJson(JsonUtils.java:485) ~[JsonUtils.class:?]
    at net.minecraft.advancements.AdvancementManager.loadBuiltInAdvancements(AdvancementManager.java:185) [AdvancementManager.class:?]
    at net.minecraft.advancements.AdvancementManager.reload(AdvancementManager.java:69) [AdvancementManager.class:?]
    at net.minecraft.advancements.AdvancementManager.<init>(AdvancementManager.java:61) [AdvancementManager.class:?]
    at net.minecraft.world.WorldServer.init(WorldServer.java:161) [WorldServer.class:?]
    at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:123) [IntegratedServer.class:?]
    at net.minecraft.server.integrated.IntegratedServer.init(IntegratedServer.java:160) [IntegratedServer.class:?]
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:549) [MinecraftServer.class:?]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_131]
[16:30:09] [Server thread/INFO]: Loaded 487 advancements
[16:30:09] [Server thread/INFO] [FML]: Loading dimension 1 (Test) (net.minecraft.server.integrated.IntegratedServer@7dd15d17)
[16:30:09] [Server thread/INFO] [FML]: Loading dimension -1 (Test) (net.minecraft.server.integrated.IntegratedServer@7dd15d17)
[16:30:09] [Server thread/INFO]: Preparing start region for level 0
[16:30:10] [Server thread/INFO]: Preparing spawn area: 12%
[16:30:11] [Server thread/INFO]: Preparing spawn area: 24%
[16:30:12] [Server thread/INFO]: Preparing spawn area: 37%
[16:30:13] [Server thread/INFO]: Preparing spawn area: 50%
[16:30:14] [Server thread/INFO]: Preparing spawn area: 62%
[16:30:15] [Server thread/INFO]: Preparing spawn area: 75%
[16:30:16] [Server thread/INFO]: Preparing spawn area: 88%
[16:30:17] [Server thread/INFO]: Changing view distance to 12, from 10
[16:30:19] [Netty Local Client IO #0/INFO] [FML]: Server protocol version 2
[16:30:19] [Netty Server IO #1/INFO] [FML]: Client protocol version 2
[16:30:19] [Netty Server IO #1/INFO] [FML]: Client attempting to join with 5 mods : minecraft@1.12,expanded@1.2.0,FML@8.0.99.99,forge@14.21.1.2389,mcp@9.19
[16:30:19] [Netty Local Client IO #0/INFO] [FML]: [Netty Local Client IO #0] Client side modded connection established
[16:30:19] [Server thread/INFO] [FML]: [Server thread] Server side modded connection established
[16:30:19] [Server thread/INFO]: Player367[local:E:67a485db] logged in with entity id 1578 at (-78.5, 76.0, 255.5)
[16:30:19] [Server thread/INFO]: Player367 joined the game
[16:30:20] [pool-2-thread-1/WARN]: Couldn't look up profile properties for com.mojang.authlib.GameProfile@3556589[id=dcea94fd-efa4-3c29-93d8-2d56666245c7,name=Player367,properties={},legacy=false]
com.mojang.authlib.exceptions.AuthenticationException: The client has sent too many requests within a certain amount of time
    at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.java:79) ~[YggdrasilAuthenticationService.class:?]
    at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillGameProfile(YggdrasilMinecraftSessionService.java:180) [YggdrasilMinecraftSessionService.class:?]
    at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService$1.load(YggdrasilMinecraftSessionService.java:60) [YggdrasilMinecraftSessionService$1.class:?]
    at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService$1.load(YggdrasilMinecraftSessionService.java:57) [YggdrasilMinecraftSessionService$1.class:?]
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3716) [guava-21.0.jar:?]
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2424) [guava-21.0.jar:?]
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2298) [guava-21.0.jar:?]
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2211) [guava-21.0.jar:?]
    at com.google.common.cache.LocalCache.get(LocalCache.java:4154) [guava-21.0.jar:?]
    at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4158) [guava-21.0.jar:?]
    at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5147) [guava-21.0.jar:?]
    at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:5153) [guava-21.0.jar:?]
    at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillProfileProperties(YggdrasilMinecraftSessionService.java:170) [YggdrasilMinecraftSessionService.class:?]
    at net.minecraft.client.Minecraft.getProfileProperties(Minecraft.java:3156) [Minecraft.class:?]
    at net.minecraft.client.resources.SkinManager$3.run(SkinManager.java:138) [SkinManager$3.class:?]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_131]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_131]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_131]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_131]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_131]
[16:30:25] [Server thread/WARN]: Can't keep up! Did the system time change, or is the server overloaded? Running 6847ms behind, skipping 136 tick(s)
[16:31:20] [Server thread/INFO]: Saving and pausing game...
[16:31:20] [Server thread/INFO]: Saving chunks for level 'Test'/overworld
[16:31:20] [Server thread/INFO]: Saving chunks for level 'Test'/the_nether
[16:31:20] [Server thread/INFO]: Saving chunks for level 'Test'/the_end
[16:31:22] [Server thread/INFO]: Stopping server
[16:31:22] [Server thread/INFO]: Saving players
[16:31:22] [Server thread/INFO]: Player367 lost connection: Disconnected
[16:31:22] [Server thread/INFO]: Player367 left the game
[16:31:22] [Server thread/INFO]: Stopping singleplayer server as player logged out
[16:31:22] [Server thread/INFO]: Saving worlds
[16:31:22] [Server thread/INFO]: Saving chunks for level 'Test'/overworld
[16:31:22] [Server thread/INFO]: Saving chunks for level 'Test'/the_nether
[16:31:22] [Server thread/INFO]: Saving chunks for level 'Test'/the_end
[16:31:22] [Server thread/INFO] [FML]: Unloading dimension 0
[16:31:22] [Server thread/INFO] [FML]: Unloading dimension -1
[16:31:22] [Server thread/INFO] [FML]: Unloading dimension 1
[16:31:22] [Server thread/INFO] [FML]: Applying holder lookups
[16:31:22] [Server thread/INFO] [FML]: Holder lookups applied
[16:31:23] [main/INFO]: Stopping!
[16:31:23] [main/INFO]: SoundSystem shutting down...
[16:31:24] [main/WARN]: Author: Paul Lamb, www.paulscode.com
 

 

Link to comment
Share on other sites

I'm only registering one of the variants, here's it's code:

 

BlockHandler::initBlocks

//Campfire
    //Oak
    campfire = createBlock(new ModCampfire(false, "campfire", CreativeTabs.DECORATIONS, 1F, 1F, "pickaxe", 0), event);
    ibCampfire = createItemBlock(new ItemBlock(campfire), campfire);

    litCampfire = createBlock(new ModCampfire(true, "lit_campfire", CreativeTabs.DECORATIONS, 1F, 1F, "pickaxe", 0), event);
    ibLitCampfire = createItemBlock(new ItemBlock(litCampfire), litCampfire);
    
    GameRegistry.registerTileEntity(ModTileEntityCampfire.class, "campfire_tile_entity");

Here's ModCampfire.java

Spoiler

public class ModCampfire extends Block {
  public static final PropertyEnum<ModCampfire.EnumType> TYPE = PropertyEnum.<ModCampfire.EnumType>create("type", ModCampfire.EnumType.class);
  private final boolean isBurning;
  private static boolean keepInventory;

  public ModCampfire(boolean isBurning, String name, CreativeTabs tab, float hardness, float resistance, String tool, int harvest)
  {
      super(Material.IRON);
      this.setDefaultState(this.blockState.getBaseState().withProperty(TYPE, EnumType.OAK));
      this.isBurning = isBurning;
      setUnlocalizedName(Ref.MODID + ":" + name);
      setRegistryName(Ref.MODID + ":" + name);
      setCreativeTab(tab);
      setHardness(hardness);
      setResistance(resistance);
      setHarvestLevel(tool, harvest);
      
      if (isBurning)
        setLightLevel((float)13 / 15);
  }

  @SideOnly(Side.CLIENT)
  @SuppressWarnings("incomplete-switch")
  public void randomDisplayTick(IBlockState stateIn, World worldIn, BlockPos pos, Random rand)
  {
      if (this.isBurning)
      {
          double xx = (double)pos.getX() + 0.5D;
          double yy = (double)pos.getY() + rand.nextDouble() * 6.0D / 16.0D;
          double zz = (double)pos.getZ() + 0.5D;
          double rand1 = rand.nextDouble() * 0.6D - 0.3D;
          double rand2 = rand.nextDouble() * 0.6D - 0.3D;
          double rand3 = rand.nextDouble() * 0.6D - 0.3D;
          double rand4 = rand.nextDouble() * 0.6D - 0.3D;
          double rand5 = rand.nextDouble() * 0.6D - 0.1D;

          if (rand.nextDouble() < 0.1D)
          {
              worldIn.playSound((double)pos.getX() + 0.5D, (double)pos.getY(), (double)pos.getZ() + 0.5D, SoundEvents.BLOCK_FIRE_AMBIENT, SoundCategory.BLOCKS, 1.0F, 1.0F, false);
          }
          
          worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, xx - 0.25D, yy, zz + rand1, 0.0D, 0.0D, 0.0D);
          worldIn.spawnParticle(EnumParticleTypes.FLAME, xx - 0.25D, yy, zz + rand1, 0.0D, 0.0D, 0.0D);
          
          worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, xx + 0.25D, yy, zz + rand2, 0.0D, 0.0D, 0.0D);
          worldIn.spawnParticle(EnumParticleTypes.FLAME, xx + 0.25D, yy, zz + rand2, 0.0D, 0.0D, 0.0D);
          
          worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, xx + rand3, yy, zz - 0.25D, 0.0D, 0.0D, 0.0D);
          worldIn.spawnParticle(EnumParticleTypes.FLAME, xx + rand3, yy, zz - 0.25D, 0.0D, 0.0D, 0.0D);
          
          worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, xx + rand4, yy, zz + 0.25D, 0.0D, 0.0D, 0.0D);
          worldIn.spawnParticle(EnumParticleTypes.FLAME, xx + rand4, yy, zz + 0.25D, 0.0D, 0.0D, 0.0D);
          
          worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, xx, yy + rand5, zz, 0.0D, 0.0D, 0.0D);
          worldIn.spawnParticle(EnumParticleTypes.FLAME, xx, yy + rand5, zz, 0.0D, 0.0D, 0.0D);
      }
  }

  /**
   * Called when the block is right clicked by a player.
   */
  public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
  {
      if (worldIn.isRemote)
      {
          return true;
      }
      else
      {
          TileEntity tileentity = worldIn.getTileEntity(pos);

          if (tileentity instanceof ModTileEntityCampfire)
          {
              playerIn.openGui((Object)ExpandedAesthetics.instance, BlockHandler.GUI_ENUM.CAMPFIRE.ordinal(), worldIn, pos.getX(), pos.getY(), pos.getZ());
              playerIn.addStat(StatList.FURNACE_INTERACTION);
          }

          return true;
      }
  }

  public static void setState(boolean active, World worldIn, BlockPos pos)
  {
      IBlockState iblockstate = worldIn.getBlockState(pos);
      TileEntity tileentity = worldIn.getTileEntity(pos);
      keepInventory = true;

      if (active)
      {
          worldIn.setBlockState(pos, BlockHandler.litCampfire.getDefaultState().withProperty(TYPE, iblockstate.getValue(TYPE)), 3);
          worldIn.setBlockState(pos, BlockHandler.litCampfire.getDefaultState().withProperty(TYPE, iblockstate.getValue(TYPE)), 3);
      }
      else
      {
          worldIn.setBlockState(pos, BlockHandler.campfire.getDefaultState().withProperty(TYPE, iblockstate.getValue(TYPE)), 3);
          worldIn.setBlockState(pos, BlockHandler.campfire.getDefaultState().withProperty(TYPE, iblockstate.getValue(TYPE)), 3);
      }

      keepInventory = false;

      if (tileentity != null)
      {
          tileentity.validate();
          worldIn.setTileEntity(pos, tileentity);
      }
  }

  /**
   * Returns a new instance of a block's tile entity class. Called on placing the block.
   */
  @Override
  public TileEntity createTileEntity(World worldIn, IBlockState state)
  {
      return new ModTileEntityCampfire();
  }
  
  @Override
  public boolean hasTileEntity(IBlockState state)
  {
    return true;
  }

  /**
   * Called by ItemBlocks after a block is set in the world, to allow post-place logic
   */
  public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack)
  {
      //worldIn.setBlockState(pos, state.withProperty(FACING, placer.getHorizontalFacing().getOpposite()), 2);

      if (stack.hasDisplayName())
      {
          TileEntity tileentity = worldIn.getTileEntity(pos);

          if (tileentity instanceof ModTileEntityCampfire)
          {
              ((ModTileEntityCampfire)tileentity).setCustomInventoryName(stack.getDisplayName());
          }
      }
  }

  /**
   * Used to determine ambient occlusion and culling when rebuilding chunks for render
   */
  public boolean isOpaqueCube(IBlockState state)
  {
      return false;
  }

  public boolean isFullCube(IBlockState state)
  {
      return false;
  }

  /**
   * Called serverside after this block is replaced with another in Chunk, but before the Tile Entity is updated
   */
  public void breakBlock(World worldIn, BlockPos pos, IBlockState state)
  {
      if (!keepInventory)
      {
          TileEntity tileentity = worldIn.getTileEntity(pos);

          if (tileentity instanceof ModTileEntityCampfire)
          {
              InventoryHelper.dropInventoryItems(worldIn, pos, (ModTileEntityCampfire)tileentity);
              worldIn.updateComparatorOutputLevel(pos, this);
          }
      }

      super.breakBlock(worldIn, pos, state);
  }

  public boolean hasComparatorInputOverride(IBlockState state)
  {
      return true;
  }

  public int getComparatorInputOverride(IBlockState blockState, World worldIn, BlockPos pos)
  {
      return Container.calcRedstone(worldIn.getTileEntity(pos));
  }

  public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state)
  {
      return new ItemStack(BlockHandler.alloyFurnace);
  }

  /**
   * The type of render function called. MODEL for mixed tesr and static model, MODELBLOCK_ANIMATED for TESR-only,
   * LIQUID for vanilla liquids, INVISIBLE to skip all rendering
   */
  public EnumBlockRenderType getRenderType(IBlockState state)
  {
      return EnumBlockRenderType.MODEL;
  }

  /**
   * Convert the given metadata into a BlockState for this Block
   */
  public IBlockState getStateFromMeta(int meta)
  {
      return this.getDefaultState().withProperty(TYPE, EnumType.OAK);
  }

  /**
   * Convert the BlockState into the correct metadata value
   */
  public int getMetaFromState(IBlockState state)
  {
      return ((EnumType)state.getValue(TYPE)).getIndex();
  }

  protected BlockStateContainer createBlockState()
  {
      return new BlockStateContainer(this, new IProperty[] {TYPE});
  }
  
  public static enum EnumType implements IStringSerializable
  {
    OAK(0, "oak", MapColor.WOOD),
    SPRUCE(1, "spruce", MapColor.OBSIDIAN),
    BIRCH(2, "birch", MapColor.SAND),
    JUNGLE(3, "jungle", MapColor.DIRT),
    ACACIA(4, "acacia", MapColor.ADOBE),
    DARK_OAK(5, "dark_oak", "big_oak", MapColor.BROWN);
  
    private static final ModCampfire.EnumType[] META_LOOKUP = new ModCampfire.EnumType[values().length];
    private final int meta;
    private final String name;
    private final String unlocalizedName;
    /** The color that represents this entry on a map. */
    private final MapColor mapColor;

    private EnumType(int metaIn, String nameIn, MapColor mapColorIn)
    {
        this(metaIn, nameIn, nameIn, mapColorIn);
    }

    private EnumType(int metaIn, String nameIn, String unlocalizedNameIn, MapColor mapColorIn)
    {
        this.meta = metaIn;
        this.name = nameIn;
        this.unlocalizedName = unlocalizedNameIn;
        this.mapColor = mapColorIn;
    }

    public int getIndex()
    {
        return this.meta;
    }

    /**
     * The color which represents this entry on a map.
     */
    public MapColor getMapColor()
    {
        return this.mapColor;
    }

    public String toString()
    {
        return this.name;
    }

    public static ModCampfire.EnumType byMetadata(int meta)
    {
        if (meta < 0 || meta >= META_LOOKUP.length)
        {
            meta = 0;
        }

        return META_LOOKUP[meta];
    }

    public String getName()
    {
        return this.name;
    }

    public String getUnlocalizedName()
    {
        return this.unlocalizedName;
    }
    
    static {
      for (ModCampfire.EnumType modcampfire$enumtype : values()) {
        META_LOOKUP[modcampfire$enumtype.getIndex()] = modcampfire$enumtype;
      }
    }
  }
}

 

 

Edited by DragonFerocity
Link to comment
Share on other sites

BlockHandler::createItemBlock()

Spoiler

private static ItemBlock createItemBlock(ItemBlock iBlock, Block block) {
    iBlock.setRegistryName(block.getRegistryName()).setUnlocalizedName(block.getUnlocalizedName());
    itemBlockList.add(iBlock);
    
    return iBlock;
  }

 

BlockHandler::registerRenders() snippet

Spoiler

////////////////// Item Block Registration
    for (ItemBlock iBlock : itemBlockList) {
      register(iBlock);
    }
//////////////////

 

This code is located in BlockHandler, which is called from

RegistryHandler.java

Spoiler

package com.DragonFerocity.expanded.handlers;

import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.registries.IForgeRegistryModifiable;

@Mod.EventBusSubscriber
public class RegistryHandler {
  
  @SubscribeEvent
  public static void registerBlocks(RegistryEvent.Register<Block> event) {
    BlockHandler.initBlocks(event);
  }
  
  @SubscribeEvent
  public static void registerItems(RegistryEvent.Register<Item> event) {
    BlockHandler.initItems(event);
    CraftingHandler.init();
    BlockHandler.registerTileEntities();
  }
  
  @SubscribeEvent
  public static void registerRecipes(RegistryEvent.Register<IRecipe> event)
  {
      BlockHandler.removeRegisteredItems(event);
  }
}

 

 

Link to comment
Share on other sites

Thanks for being more specific that time:

BlockHandler::InitItems creates all the items

BlockHandler::InitBlocks creates all the blocks

 

Snippet from BlockHandler::initItems()

Spoiler

public static void initItems(RegistryEvent.Register<Item> event) {
    //iTutItem = new ItemTutItem("tut_item", CreativeTabs.MATERIALS);
    //Andesite
    iAndesitePolishedDoor = createItem(new ModItemDoor(andesitePolishedDoor, "andesite_polished_door", 64), event);
    
    //Birch
    iBirchStableDoor = createItem(new ModItemDoor(birchStableDoor, "birch_stable_door", 64), event);
    
    //Brick
    iBrickDoor = createItem(new ModItemDoor(brickDoor, "brick_door", 64), event);
    
    //Cobblestone
    iCobblestoneDoor = createItem(new ModItemDoor(cobblestoneDoor, "cobblestone_door", 64), event);
    
    //Dark Oak
    iDarkOakBed = createItem(new ModItemBed(darkOakBed, "dark_oak_bed", 64), event);
    
    //Diorite
    iDioritePolishedDoor = createItem(new ModItemDoor(dioritePolishedDoor, "diorite_polished_door", 64), event);
    iDioritePolishedBed = createItem(new ModItemBed(dioritePolishedBed, "diorite_polished_bed", 64), event);
    
    //Glass
    //Regular
    iGlassDoor = createItem(new ModItemDoor(glassDoor, "glass_door", 64), event);

 

Here's one of the register functions called from registerRenders (there's multiple, one for each different type):

Spoiler

private static ModItem createItem(ModItem item, RegistryEvent.Register<Item> event) {
    event.getRegistry().register(item);
    
    return item;
  }

 

BlockHandler::registerRenders() is called from the ClientProxy()

Spoiler

package com.DragonFerocity.expanded.proxy;

import com.DragonFerocity.expanded.entities.ModTileEntityChest;
import com.DragonFerocity.expanded.entities.ModTileEntityChestRenderer;
import com.DragonFerocity.expanded.handlers.BlockHandler;
import com.DragonFerocity.expanded.handlers.GuiHandler;

import net.minecraftforge.fml.client.registry.ClientRegistry;
import net.minecraftforge.fml.common.network.NetworkRegistry;

public class ClientProxy extends ServerProxy {
  public void init() {
    BlockHandler.registerRenders();
    registerTileEntitySpecialRenderer(ModTileEntityChest.class);
  }
  
  public static <T extends ModTileEntityChest> void registerTileEntitySpecialRenderer(Class<T> type)
  {
  }
}

 

Did I forget anything this time?

Link to comment
Share on other sites

I'm very confused right now because I don't really know what you're talking about.

 

I added this to my client proxy and it just made things worse: (The item doesn't show a model in my hand, or inventory, and the block still doesn't show a model. Both are the purple/black cube)


  
  @SubscribeEvent
  public static void registerModels(ModelRegistryEvent event) {
    BlockHandler.registerRenders();
  }

I don't know what I'm supposed to do here. The way I currently register renders/models works for everything except for my campfire, and I'm 99% sure it's because I'm trying to use Metadata to make it easier.

Edited by DragonFerocity
Link to comment
Share on other sites

I upgraded my version of Forge, and the FML has stayed the same.

 

EDIT: I should probably also point out that my register renders function is what registers Items and ItemBlocks. Isn't that supposed to be called in the Init of the ClientProxy?

 

EDIT: Also, if models must be registered in the ModelRegistryEvent, why does RegistryEvent.Register<Item> and RegistryEvent.Register<Block> exist?

Edited by DragonFerocity
Link to comment
Share on other sites

Okay, thanks for letting me know all of this. It's been helpful.

 

One last question, how do I get all of the other variants in the game? I made a crafting recipe for one of the acacia variants, and the item produced was just a black/purple square with no model (but it had the same name as the default campfire "campfire.name"), and when I placed it, it placed a normal version of the campfire with the normal model rather than using the acacia version.

 

Do I need to go through and register all of the different models like I am with the default version?

campfire = createBlock(new ModCampfire(false, "campfire", CreativeTabs.DECORATIONS, 1F, 1F, "pickaxe", 0), event);
    ibCampfire = createItemBlockWithoutAddingToList(new ItemBlock(campfire), campfire);

    litCampfire = createBlock(new ModCampfire(true, "lit_campfire", CreativeTabs.DECORATIONS, 1F, 1F, "pickaxe", 0), event);
    ibLitCampfire = createItemBlockWithoutAddingToList(new ItemBlock(litCampfire), litCampfire);

I thought that using Metadata would make it so I wouldn't have to, but I might be wrong.

 

The reason I wanted to use metadata is because of this function in ModCampfire.java

public static void setState(boolean active, World worldIn, BlockPos pos)
  {
      IBlockState iblockstate = worldIn.getBlockState(pos);
      TileEntity tileentity = worldIn.getTileEntity(pos);
      keepInventory = true;

      if (active)
      {
          worldIn.setBlockState(pos, BlockHandler.litCampfire.getDefaultState().withProperty(TYPE, iblockstate.getValue(TYPE)), 3);
          worldIn.setBlockState(pos, BlockHandler.litCampfire.getDefaultState().withProperty(TYPE, iblockstate.getValue(TYPE)), 3);
      }
      else
      {
          worldIn.setBlockState(pos, BlockHandler.campfire.getDefaultState().withProperty(TYPE, iblockstate.getValue(TYPE)), 3);
          worldIn.setBlockState(pos, BlockHandler.campfire.getDefaultState().withProperty(TYPE, iblockstate.getValue(TYPE)), 3);
      }

      keepInventory = false;

      if (tileentity != null)
      {
          tileentity.validate();
          worldIn.setTileEntity(pos, tileentity);
      }
  }

If I have to register each variant separately, I'm either going to have to find another way to change the blockstate of each variant from the same file, or just create a new file for each variant.

 

Is there a way around this?

Link to comment
Share on other sites

I believe I am really close to the solution:

 

Now the itemblocks when held in hand have no textures, which I'm actually not sure how to fix but I'm looking into it (I'm thinking this is because I don't have any textures defined in the campfire.json model file), and then whenever I try to place an acacia campfire, it places an oak one and the onscreen debugger shows that it's type is oak not acacia.

 

I have updated my code on GitHub to the latest as well.

 

I also found this post which helps a little and let's me know i'm doing things fine, but it's for v1.10.2, and so some of the things aren't correct anymore.

According to this post, I have everything I need in my code to get it working.

Edited by DragonFerocity
Link to comment
Share on other sites

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

1 hour ago, Draco18s said:

That's because this code is now in my RegistryHandler.java file:

Spoiler

package com.DragonFerocity.expanded.handlers;

import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.event.ModelRegistryEvent;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.registries.IForgeRegistryModifiable;

@Mod.EventBusSubscriber
public class RegistryHandler {
  
  @SubscribeEvent
  public static void registerBlocks(RegistryEvent.Register<Block> event) {
    BlockHandler.initBlocks(event);
  }
  
  @SubscribeEvent
  public static void registerItems(RegistryEvent.Register<Item> event) {
    BlockHandler.initItems(event);
    CraftingHandler.init();
    BlockHandler.registerTileEntities();
  }
  
  @SubscribeEvent
  public static void registerRecipes(RegistryEvent.Register<IRecipe> event)
  {
      BlockHandler.removeRegisteredItems(event);
  }
  
  @SubscribeEvent
  public static void registerModels(ModelRegistryEvent event) {
    BlockHandler.registerModels();
  }
}

 

 

1 hour ago, Draco18s said:

See above

1 hour ago, Draco18s said:

On top of that: what the **** is this noise? Why do you have 14 functions that all do the same thing?

https://github.com/DragonFerocity/expandedaesthetics/blob/master/src/main/java/com/DragonFerocity/expanded/handlers/BlockHandler.java#L1283-L1335

You're right in that I can find a better way to do things. It's on my list of things to do but for now it works and I'm not really going to change this until I get my currently problem resolved.

1 hour ago, Draco18s said:

See above

1 hour ago, Draco18s said:

I was told that this has to happen during the ModelRegistryEvent event, thus I have put it during that event, in which it actually works. Again see above

 

1 hour ago, Draco18s said:

Yes, that import is left over from 1.11.2

 

Sorry that my code is a mess right now. I haven't gone through to clean it up yet. It's what I plan on doing next as soon as I figure this problem out (unless I can't, in which I'll just scrap it)

Link to comment
Share on other sites

ModelRegistryEvent is still a client-side event:

import net.minecraftforge.client.event.ModelRegistryEvent;

Just because it isn't called on the server doesn't mean that the class even exists. Ditto with the ModelLoader class.

Edited by Draco18s
  • Like 1

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

You haven't registered your proxy as an event handler class.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Okay, thanks!

 

I found a way to make the individual campfire items have models: I just have to pass a custom resource location when I call ModelLoader.SetCustomModelResourceLocation instead of passing the registry name of the item.

 

ie, instead of using this (which doesn't work):

ModelLoader.setCustomModelResourceLocation(ibCampfire, 4, new ModelResourceLocation(ibCampfire.getRegistryName().toString(), "acacia"));

I can do this (which does work)

ModelLoader.setCustomModelResourceLocation(ibCampfire, 4, new ModelResourceLocation("expanded:acacia_campfire"));

 

Is there something wrong with this json (This corresponds to the first setCustomModelResourceLocation)?

Spoiler

{
  "forge_marker": 1,
  "defaults": {
    "textures": {
      "ring": "blocks/planks_oak",
      "logs": "blocks/log_oak",
      "logs_end": "blocks/log_oak_top",
      "particle": "blocks/log_oak"
    },
    "model": "expanded:campfire",
    "uvlock": true
  },
  "variants": {
    "normal": [{
      "model": "expanded:campfire"
    }],
    "type": {
      "oak": {
        "model": "expanded:campfire",
        "textures": {
          "ring": "blocks/planks_oak",
          "logs": "blocks/log_oak",
          "logs_end": "blocks/log_oak_top",
          "particle": "blocks/log_oak"
        }
      },
      "acacia": {
        "model": "expanded:campfire",
        "textures": {
          "ring": "blocks/planks_acacia",
          "logs": "blocks/log_acacia",
          "logs_end": "blocks/log_acacia_top",
          "particle": "blocks/log_acacia"
        }
      },
      "birch": {
        "model": "expanded:campfire",
        "textures": {
          "ring": "blocks/planks_birch",
          "logs": "blocks/log_birch",
          "logs_end": "blocks/log_birch_top",
          "particle": "blocks/log_birch"
        }
      },
      "dark_oak": {
        "model": "expanded:campfire",
        "textures": {
          "ring": "blocks/planks_big_oak",
          "logs": "blocks/log_big_oak",
          "logs_end": "blocks/log_big_oak_top",
          "particle": "blocks/log_big_oak"
        }
      },
      "jungle": {
        "model": "expanded:campfire",
        "textures": {
          "ring": "blocks/planks_jungle",
          "logs": "blocks/log_jungle",
          "logs_end": "blocks/log_jungle_top",
          "particle": "blocks/log_jungle"
        }
      },
      "spruce": {
        "model": "expanded:campfire",
        "textures": {
          "ring": "blocks/planks_spruce",
          "logs": "blocks/log_spruce",
          "logs_end": "blocks/log_spruce_top",
          "particle": "blocks/log_spruce"
        }
      }
    }
  }
}

 

(Also, the items still place the wrong variant when used in a world... I'm investigating that still)

 

EDIT: Here's the error output:

Spoiler

[17:37:22] [main/ERROR]: Exception loading model for variant expanded:campfire#birch for item "expanded:campfire", normal location exception:
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model expanded:item/campfire with loader VanillaLoader.INSTANCE, skipping
       at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?]
   at net.minecraftforge.client.model.ModelLoader.loadItemModels(ModelLoader.java:297) ~[ModelLoader.class:?]
     at net.minecraft.client.renderer.block.model.ModelBakery.loadVariantItemModels(ModelBakery.java:175) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:160) ~[ModelLoader.class:?]
 at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
 at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?]
   at net.minecraft.client.Minecraft.init(Minecraft.java:512) [Minecraft.class:?]
 at net.minecraft.client.Minecraft.run(Minecraft.java:377) [Minecraft.class:?]
  at net.minecraft.client.main.Main.main(SourceFile:123) [Main.class:?]
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
     at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
       at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
     at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: java.io.FileNotFoundException: expanded:models/item/campfire.json
       at net.minecraft.client.resources.FallbackResourceManager.getResource(FallbackResourceManager.java:69) ~[FallbackResourceManager.class:?]
      at net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:65) ~[SimpleReloadableResourceManager.class:?]
      at net.minecraft.client.renderer.block.model.ModelBakery.loadModel(ModelBakery.java:334) ~[ModelBakery.class:?]
        at net.minecraftforge.client.model.ModelLoader.access$1600(ModelLoader.java:126) ~[ModelLoader.class:?]
        at net.minecraftforge.client.model.ModelLoader$VanillaLoader.loadModel(ModelLoader.java:899) ~[ModelLoader$VanillaLoader.class:?]
      at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?]
   ... 20 more
[17:37:22] [main/ERROR]: Exception loading model for variant expanded:campfire#birch for item "expanded:campfire", blockstate location exception:
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model expanded:campfire#birch with loader VariantLoader.INSTANCE, skipping
      at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?]
   at net.minecraftforge.client.model.ModelLoader.loadItemModels(ModelLoader.java:305) ~[ModelLoader.class:?]
     at net.minecraft.client.renderer.block.model.ModelBakery.loadVariantItemModels(ModelBakery.java:175) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:160) ~[ModelLoader.class:?]
 at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
 at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?]
   at net.minecraft.client.Minecraft.init(Minecraft.java:512) [Minecraft.class:?]
 at net.minecraft.client.Minecraft.run(Minecraft.java:377) [Minecraft.class:?]
  at net.minecraft.client.main.Main.main(SourceFile:123) [Main.class:?]
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
     at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
       at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
     at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: net.minecraft.client.renderer.block.model.ModelBlockDefinition$MissingVariantException
  at net.minecraft.client.renderer.block.model.ModelBlockDefinition.getVariant(ModelBlockDefinition.java:83) ~[ModelBlockDefinition.class:?]
     at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1208) ~[ModelLoader$VariantLoader.class:?]
     at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?]
   ... 20 more
[17:37:22] [main/ERROR]: Exception loading model for variant expanded:campfire#jungle for item "expanded:campfire", normal location exception:
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model expanded:item/campfire with loader VanillaLoader.INSTANCE, skipping
       at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?]
   at net.minecraftforge.client.model.ModelLoader.loadItemModels(ModelLoader.java:297) ~[ModelLoader.class:?]
     at net.minecraft.client.renderer.block.model.ModelBakery.loadVariantItemModels(ModelBakery.java:175) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:160) ~[ModelLoader.class:?]
 at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
 at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?]
   at net.minecraft.client.Minecraft.init(Minecraft.java:512) [Minecraft.class:?]
 at net.minecraft.client.Minecraft.run(Minecraft.java:377) [Minecraft.class:?]
  at net.minecraft.client.main.Main.main(SourceFile:123) [Main.class:?]
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
     at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
       at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
     at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: java.io.FileNotFoundException: expanded:models/item/campfire.json
       at net.minecraft.client.resources.FallbackResourceManager.getResource(FallbackResourceManager.java:69) ~[FallbackResourceManager.class:?]
      at net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:65) ~[SimpleReloadableResourceManager.class:?]
      at net.minecraft.client.renderer.block.model.ModelBakery.loadModel(ModelBakery.java:334) ~[ModelBakery.class:?]
        at net.minecraftforge.client.model.ModelLoader.access$1600(ModelLoader.java:126) ~[ModelLoader.class:?]
        at net.minecraftforge.client.model.ModelLoader$VanillaLoader.loadModel(ModelLoader.java:899) ~[ModelLoader$VanillaLoader.class:?]
      at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?]
   ... 20 more
[17:37:22] [main/ERROR]: Exception loading model for variant expanded:campfire#jungle for item "expanded:campfire", blockstate location exception:
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model expanded:campfire#jungle with loader VariantLoader.INSTANCE, skipping
     at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?]
   at net.minecraftforge.client.model.ModelLoader.loadItemModels(ModelLoader.java:305) ~[ModelLoader.class:?]
     at net.minecraft.client.renderer.block.model.ModelBakery.loadVariantItemModels(ModelBakery.java:175) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:160) ~[ModelLoader.class:?]
 at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
 at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?]
   at net.minecraft.client.Minecraft.init(Minecraft.java:512) [Minecraft.class:?]
 at net.minecraft.client.Minecraft.run(Minecraft.java:377) [Minecraft.class:?]
  at net.minecraft.client.main.Main.main(SourceFile:123) [Main.class:?]
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
     at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
       at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
     at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: net.minecraft.client.renderer.block.model.ModelBlockDefinition$MissingVariantException
  at net.minecraft.client.renderer.block.model.ModelBlockDefinition.getVariant(ModelBlockDefinition.java:83) ~[ModelBlockDefinition.class:?]
     at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1208) ~[ModelLoader$VariantLoader.class:?]
     at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?]
   ... 20 more
[17:37:22] [main/ERROR]: Exception loading model for variant expanded:campfire#acacia for item "expanded:campfire", normal location exception:
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model expanded:item/campfire with loader VanillaLoader.INSTANCE, skipping
       at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?]
   at net.minecraftforge.client.model.ModelLoader.loadItemModels(ModelLoader.java:297) ~[ModelLoader.class:?]
     at net.minecraft.client.renderer.block.model.ModelBakery.loadVariantItemModels(ModelBakery.java:175) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:160) ~[ModelLoader.class:?]
 at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
 at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?]
   at net.minecraft.client.Minecraft.init(Minecraft.java:512) [Minecraft.class:?]
 at net.minecraft.client.Minecraft.run(Minecraft.java:377) [Minecraft.class:?]
  at net.minecraft.client.main.Main.main(SourceFile:123) [Main.class:?]
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
     at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
       at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
     at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: java.io.FileNotFoundException: expanded:models/item/campfire.json
       at net.minecraft.client.resources.FallbackResourceManager.getResource(FallbackResourceManager.java:69) ~[FallbackResourceManager.class:?]
      at net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:65) ~[SimpleReloadableResourceManager.class:?]
      at net.minecraft.client.renderer.block.model.ModelBakery.loadModel(ModelBakery.java:334) ~[ModelBakery.class:?]
        at net.minecraftforge.client.model.ModelLoader.access$1600(ModelLoader.java:126) ~[ModelLoader.class:?]
        at net.minecraftforge.client.model.ModelLoader$VanillaLoader.loadModel(ModelLoader.java:899) ~[ModelLoader$VanillaLoader.class:?]
      at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?]
   ... 20 more
[17:37:22] [main/ERROR]: Exception loading model for variant expanded:campfire#acacia for item "expanded:campfire", blockstate location exception:
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model expanded:campfire#acacia with loader VariantLoader.INSTANCE, skipping
     at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?]
   at net.minecraftforge.client.model.ModelLoader.loadItemModels(ModelLoader.java:305) ~[ModelLoader.class:?]
     at net.minecraft.client.renderer.block.model.ModelBakery.loadVariantItemModels(ModelBakery.java:175) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:160) ~[ModelLoader.class:?]
 at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
 at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?]
   at net.minecraft.client.Minecraft.init(Minecraft.java:512) [Minecraft.class:?]
 at net.minecraft.client.Minecraft.run(Minecraft.java:377) [Minecraft.class:?]
  at net.minecraft.client.main.Main.main(SourceFile:123) [Main.class:?]
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
     at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
       at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
     at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: net.minecraft.client.renderer.block.model.ModelBlockDefinition$MissingVariantException
  at net.minecraft.client.renderer.block.model.ModelBlockDefinition.getVariant(ModelBlockDefinition.java:83) ~[ModelBlockDefinition.class:?]
     at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1208) ~[ModelLoader$VariantLoader.class:?]
     at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?]
   ... 20 more
[17:37:22] [main/ERROR]: Exception loading model for variant expanded:campfire#oak for item "expanded:campfire", normal location exception:
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model expanded:item/campfire with loader VanillaLoader.INSTANCE, skipping
       at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?]
   at net.minecraftforge.client.model.ModelLoader.loadItemModels(ModelLoader.java:297) ~[ModelLoader.class:?]
     at net.minecraft.client.renderer.block.model.ModelBakery.loadVariantItemModels(ModelBakery.java:175) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:160) ~[ModelLoader.class:?]
 at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
 at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?]
   at net.minecraft.client.Minecraft.init(Minecraft.java:512) [Minecraft.class:?]
 at net.minecraft.client.Minecraft.run(Minecraft.java:377) [Minecraft.class:?]
  at net.minecraft.client.main.Main.main(SourceFile:123) [Main.class:?]
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
     at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
       at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
     at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: java.io.FileNotFoundException: expanded:models/item/campfire.json
       at net.minecraft.client.resources.FallbackResourceManager.getResource(FallbackResourceManager.java:69) ~[FallbackResourceManager.class:?]
      at net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:65) ~[SimpleReloadableResourceManager.class:?]
      at net.minecraft.client.renderer.block.model.ModelBakery.loadModel(ModelBakery.java:334) ~[ModelBakery.class:?]
        at net.minecraftforge.client.model.ModelLoader.access$1600(ModelLoader.java:126) ~[ModelLoader.class:?]
        at net.minecraftforge.client.model.ModelLoader$VanillaLoader.loadModel(ModelLoader.java:899) ~[ModelLoader$VanillaLoader.class:?]
      at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?]
   ... 20 more
[17:37:22] [main/ERROR]: Exception loading model for variant expanded:campfire#oak for item "expanded:campfire", blockstate location exception:
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model expanded:campfire#oak with loader VariantLoader.INSTANCE, skipping
        at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?]
   at net.minecraftforge.client.model.ModelLoader.loadItemModels(ModelLoader.java:305) ~[ModelLoader.class:?]
     at net.minecraft.client.renderer.block.model.ModelBakery.loadVariantItemModels(ModelBakery.java:175) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:160) ~[ModelLoader.class:?]
 at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
 at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?]
   at net.minecraft.client.Minecraft.init(Minecraft.java:512) [Minecraft.class:?]
 at net.minecraft.client.Minecraft.run(Minecraft.java:377) [Minecraft.class:?]
  at net.minecraft.client.main.Main.main(SourceFile:123) [Main.class:?]
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
     at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
       at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
     at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: net.minecraft.client.renderer.block.model.ModelBlockDefinition$MissingVariantException
  at net.minecraft.client.renderer.block.model.ModelBlockDefinition.getVariant(ModelBlockDefinition.java:83) ~[ModelBlockDefinition.class:?]
     at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1208) ~[ModelLoader$VariantLoader.class:?]
     at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?]
   ... 20 more

 

Which, I realize what it's saying, I just don't understand why it's saying it.

Quote

Exception loading model for variant expanded:campfire#acacia for item "expanded:campfire", blockstate location exception:
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model expanded:campfire#acacia with loader VariantLoader.INSTANCE, skipping

Why can't it load the model? I believe my blockstate json is correct, yet it seems it can't find it. Why?

Edited by DragonFerocity
Link to comment
Share on other sites

Caused by: java.io.FileNotFoundException: expanded:models/item/campfire.json

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

28 minutes ago, DragonFerocity said:

That fixes it not having a model. But it has no textures. And it still only places the oak variant no matter which type I use.

Are you using ItemBlock?

That's your problem. ItemBlock always places meta-0.  You need ItemMultiTexture or your own ItemBlock class.

Not sure about the textures off-hand.

  • Like 1

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Oh! That fixed it! Thanks!

 

When looking around online, I found this, which is for MC 1.8, and he references ItemBlockWithMetadata. So I guess that class got renamed and slightly remade into ItemMultiTexture?


EDIT:

Also, I know how to fix the item's not having textures by doing what I described above

This doesn't work:

1 hour ago, DragonFerocity said:

ModelLoader.setCustomModelResourceLocation(ibCampfire, 4, new ModelResourceLocation(ibCampfire.getRegistryName().toString(), "acacia"));

But this does:

Quote

ModelLoader.setCustomModelResourceLocation(ibCampfire, 4, new ModelResourceLocation("expanded:acacia_campfire"));

 

Which just means I need a different blockstate json file for each which isn't a problem, it's just strange to me.

Edited by DragonFerocity
Link to comment
Share on other sites

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...

Important Information

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