Jump to content

CJMinecraft

Members
  • Posts

    29
  • Joined

  • Last visited

Everything posted by CJMinecraft

  1. The build file is trying to replace ${version} and ${mcversion} with the appropriate values from your build file, however in the mcmod.info you don't have these variables. You should comment out the process resources block and that should resolve your issue.
  2. I was wondering whether it is possible to setup custom source sets apart from the default (main, test, api). For example, if I was creating a mod which was made of multiple different modules (like Buildcraft and their modules), could I have each module on a different source set but then when I run the game when testing, it would load all of the modules together? Thanks in advance for any replies, hopefully this makes sense :D. If this is not possible, if anyone could advise any alternatives other than creating new mod dev environments. Thanks
  3. An example would be as follows: https://github.com/CJMinecraft01/BitOfEverything/blob/master/src/main/java/cjminecraft/bitofeverything/container/ContainerFurnaceGenerator.java#L64-L92
  4. You can't cast an ItemStackHandler to IInventory, instead, take in an IItemHandler in the container and the gui for the container and then inside the container when you are sorting out the slots, there is a addSlotToContainer which takes in a new SlotItemHandler(item_stack_handler, index, x_pos, y_pos) which you should be able to fill in easily
  5. I have managed to fix this by telling gradle to ignore the error I added this to my build.gradle allprojects { tasks.withType(Javadoc) { options.addStringOption('Xdoclint:none', '-quiet') } }
  6. The compilation errors come from the Industrial Craft 2 API and I cannot resolve these
  7. It's ok, I figured it out after I sent it. I'm updating the mappings but unfortunately, I have to use ForgeGradle-2.2-SNAPSHOT and not ForgeGradle-2.0.2 because that does not support 1.11.2 any more. I just realised, this still doesn't work, I haven't updated github so when you ran it, it still was not the latest version
  8. So I am getting an error every time I build my mod. I am generating a javadoc, deobf, sources and the regular mod jar. The error I get is shown here: :javadoc USERPATH\.gradle\caches\modules-2\files-2.1\net.industrial-craft\industrialcraft-2\2.7.9-ex111\3c815f473c4c1cf619cd1e042ebd3ef8f9ba5b5d\industrialcraft-2-2.7.9-ex111-api.jar(ic2/api/item/IElectricItem.java):16: warning: no @param for stack boolean canProvideEnergy(ItemStack stack); ^ USERPATH\.gradle\caches\modules-2\files-2.1\net.industrial-craft\industrialcraft-2\2.7.9-ex111\3c815f473c4c1cf619cd1e042ebd3ef8f9ba5b5d\industrialcraft-2-2.7.9-ex111-api.jar(ic2/api/item/IElectricItem.java):23: warning: no @param for stack double getMaxCharge(ItemStack stack); ^ USERPATH\.gradle\caches\modules-2\files-2.1\net.industrial-craft\industrialcraft-2\2.7.9-ex111\3c815f473c4c1cf619cd1e042ebd3ef8f9ba5b5d\industrialcraft-2-2.7.9-ex111-api.jar(ic2/api/item/IElectricItem.java):33: warning: no @param for stack int getTier(ItemStack stack); ^ USERPATH\.gradle\caches\modules-2\files-2.1\net.industrial-craft\industrialcraft-2\2.7.9-ex111\3c815f473c4c1cf619cd1e042ebd3ef8f9ba5b5d\industrialcraft-2-2.7.9-ex111-api.jar(ic2/api/item/IElectricItem.java):40: warning: no @param for stack double getTransferLimit(ItemStack stack); ^ USERPATH\.gradle\caches\modules-2\files-2.1\net.industrial-craft\industrialcraft-2\2.7.9-ex111\3c815f473c4c1cf619cd1e042ebd3ef8f9ba5b5d\industrialcraft-2-2.7.9-ex111-api.jar(ic2/api/energy/tile/IEnergyAcceptor.java):23: warning: no @return boolean acceptsEnergyFrom(IEnergyEmitter emitter, EnumFacing side); ^ USERPATH\.gradle\caches\modules-2\files-2.1\net.industrial-craft\industrialcraft-2\2.7.9-ex111\3c815f473c4c1cf619cd1e042ebd3ef8f9ba5b5d\industrialcraft-2-2.7.9-ex111-api.jar(ic2/api/energy/tile/IEnergySink.java):14: error: bad use of '>' * Make sure that injectEnergy() does accepts energy if demandsEnergy() returns anything > 0. ^ USERPATH\.gradle\caches\modules-2\files-2.1\net.industrial-craft\industrialcraft-2\2.7.9-ex111\3c815f473c4c1cf619cd1e042ebd3ef8f9ba5b5d\industrialcraft-2-2.7.9-ex111-api.jar(ic2/api/energy/tile/IEnergySink.java):16: error: unknown tag: note * @note Modifying the energy net from this method is disallowed. ^ USERPATH\.gradle\caches\modules-2\files-2.1\net.industrial-craft\industrialcraft-2\2.7.9-ex111\3c815f473c4c1cf619cd1e042ebd3ef8f9ba5b5d\industrialcraft-2-2.7.9-ex111-api.jar(ic2/api/energy/tile/IEnergySink.java):26: error: unknown tag: note * @note Modifying the energy net from this method is disallowed. ^ USERPATH\.gradle\caches\modules-2\files-2.1\net.industrial-craft\industrialcraft-2\2.7.9-ex111\3c815f473c4c1cf619cd1e042ebd3ef8f9ba5b5d\industrialcraft-2-2.7.9-ex111-api.jar(ic2/api/energy/tile/IEnergySink.java):27: error: unknown tag: note * @note Return Integer.MAX_VALUE to allow any voltage. ^ USERPATH\.gradle\caches\modules-2\files-2.1\net.industrial-craft\industrialcraft-2\2.7.9-ex111\3c815f473c4c1cf619cd1e042ebd3ef8f9ba5b5d\industrialcraft-2-2.7.9-ex111-api.jar(ic2/api/energy/tile/IEnergySink.java):43: warning: no @param for voltage double injectEnergy(EnumFacing directionFrom, double amount, double voltage); ^ USERPATH\.gradle\caches\modules-2\files-2.1\net.industrial-craft\industrialcraft-2\2.7.9-ex111\3c815f473c4c1cf619cd1e042ebd3ef8f9ba5b5d\industrialcraft-2-2.7.9-ex111-api.jar(ic2/api/energy/tile/IEnergySource.java):13: error: unknown tag: note * @note Modifying the energy net from this method is disallowed. ^ USERPATH\.gradle\caches\modules-2\files-2.1\net.industrial-craft\industrialcraft-2\2.7.9-ex111\3c815f473c4c1cf619cd1e042ebd3ef8f9ba5b5d\industrialcraft-2-2.7.9-ex111-api.jar(ic2/api/energy/tile/IEnergySource.java):32: error: unknown tag: note * @note Modifying the energy net from this method is disallowed. ^ PATH\src\main\java\cofh\api\energy\IEnergyStorage.java:41: warning: no @return int getEnergyStored(); ^ PATH\src\main\java\cofh\api\energy\IEnergyStorage.java:46: warning: no @return int getMaxEnergyStored(); ^ 6 errors 8 warnings :javadoc FAILED Where PATH represents the path to the mod and USERPATH represents the path to the user i.e. C:/Users/USERNAME My build.gradle is below: buildscript { repositories { jcenter() maven { url = "http://files.minecraftforge.net/maven" } } dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT' } } apply plugin: 'net.minecraftforge.gradle.forge' //Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. version = "0.0.2.4" group = "cjminecraft.core" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "cjcore-1.11" sourceCompatibility = targetCompatibility = "1.8" // Need this here so eclipse task generates correctly. compileJava { sourceCompatibility = targetCompatibility = "1.8" } task javadocJar(type: Jar, dependsOn: 'javadoc') { from "build/docs/javadoc" classifier "javadoc" } task deobfJar(type: Jar) { from sourceSets.main.output classifier = 'deobf' } task srcJar(type: Jar, dependsOn: "sourceMainJava") { from sourceSets.main.allSource classifier = 'sources' } artifacts { archives srcJar archives deobfJar archives javadocJar } minecraft { version = "1.11.2-13.20.1.2454" runDir = "run" // the mappings can be changed at any time, and must be in the following format. // snapshot_YYYYMMDD snapshot are built nightly. // stable_# stables are built at the discretion of the MCP team. // Use non-default mappings at your own risk. they may not always work. // simply re-run your setup task after changing the mappings to update your workspace. mappings = "snapshot_20161220" // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. } repositories { maven { name "Tesla" url 'http://maven.epoxide.xyz' } maven { name = "ic2" url = "http://maven.ic2.player.to/" } ivy { name "BuildCraft" artifactPattern "http://www.mod-buildcraft.com/releases/BuildCraft/[revision]/[module]-[revision](-[classifier]).[ext]" } } dependencies { compile "net.darkhax.tesla:Tesla:1.11-1.3.0.52" deobfCompile name: "buildcraft", version: "7.99.7" compile 'net.industrial-craft:industrialcraft-2:2.7.9-ex111:api' } processResources { // this will ensure that this task is redone when the versions change. inputs.property "version", project.version inputs.property "mcversion", project.minecraft.version // replace stuff in mcmod.info, nothing else from(sourceSets.main.resources.srcDirs) { include 'mcmod.info' // replace version and mcversion expand 'version':project.version, 'mcversion':project.minecraft.version } // copy everything else except the mcmod.info from(sourceSets.main.resources.srcDirs) { exclude 'mcmod.info' } } I've been trying to fix this over the past two months. If you need the code (which I highly doubt it), it is found here https://github.com/CJMinecraft01/CJCore
  9. Thanks for all the help, I've managed to resolve this by changing the blockstate to the following (the error was because I put "true" not true): { "multipart": [ { "when": { "type": "basic" }, "apply": { "model": "boe:energy_cell_centre_basic" } }, { "when": { "type": "basic", "north": true }, "apply": { "model": "boe:energy_cell_connection_basic" } }, { "when": { "type": "basic", "east": true }, "apply": { "model": "boe:energy_cell_connection_basic", "y": 90 } }, { "when": { "type": "basic", "south": true }, "apply": { "model": "boe:energy_cell_connection_basic", "y": 180 } }, { "when": { "type": "basic", "west": true }, "apply": { "model": "boe:energy_cell_connection_basic", "y": 270 } }, { "when": { "type": "basic", "up": true }, "apply": { "model": "boe:energy_cell_connection_basic", "x": 270 } }, { "when": { "type": "basic", "down": true }, "apply": { "model": "boe:energy_cell_connection_basic", "x": 90 } }, { "when": { "type": "advanced" }, "apply": { "model": "boe:energy_cell_centre_advanced" } }, { "when": { "type": "advanced", "north": true }, "apply": { "model": "boe:energy_cell_connection_advanced" } }, { "when": { "type": "advanced", "east": true }, "apply": { "model": "boe:energy_cell_connection_advanced", "y": 90 } }, { "when": { "type": "advanced", "south": true }, "apply": { "model": "boe:energy_cell_connection_advanced", "y": 180 } }, { "when": { "type": "advanced", "west": true }, "apply": { "model": "boe:energy_cell_connection_advanced", "y": 270 } }, { "when": { "type": "advanced", "up": true }, "apply": { "model": "boe:energy_cell_connection_advanced", "x": 270 } }, { "when": { "type": "advanced", "down": true }, "apply": { "model": "boe:energy_cell_connection_advanced", "x": 90 } } ] }
  10. The properties I am using are a property bool for each face and a property enum for the type. How do you add the model as I'm used to using the multipart model from vanilla but after looking into it, it doesn't allow you to have a when statement inside of a when statement. Thanks for help as well. How would I go about fixing this? The error says I'm missing a variant and I presume it is the property bools.
  11. How would I do this separately? Do you mind correcting the file maybe?
  12. So the way I managed to fix this was actually relatively simple. I'm now using the Chisel CTM and I've posted a video about this here. This also works with optifine, currently I've found no way of achieving this without Chisel but I'm still looking into it, the video is here:
  13. I'm currently trying to use a Forge Blockstate to try and make a sort of energy pipe which will connect to any energy holder, the block state code works as the get actual state updates my PropertyBools correctly. I don't see where I am going wrong at all and I presume it is something small. My block has two tiers, basic and advanced and each side has its own respective PropertyBool Block state - energy_cell.json: { "forge_marker": 1, "variants": { "type": { "basic": { "model": "boe:energy_cell_centre_basic", "north": { "true": { "submodel": {"north": { "model": "boe:energy_cell_connection_basic" }} }, "false": {} }, "east": { "true": { "submodel": {"east": { "model": "boe:energy_cell_connection_basic", "y": 90 }} }, "false": {} }, "south": { "true": { "submodel": {"south": { "model": "boe:energy_cell_connection_basic", "y": 180 }} }, "false": {} }, "west": { "true": { "submodel": {"west": { "model": "boe:energy_cell_connection_basic", "y": 270 }} }, "false": {} }, "up": { "true": { "submodel": {"up": { "model": "boe:energy_cell_connection_basic", "x": 270 }} }, "false": {} }, "down": { "true": { "submodel": {"down": { "model": "boe:energy_cell_connection_basic", "x": 90 }} }, "false": {} } }, "advanced": { "model": "boe:energy_cell_centre_advanced", "north": { "true": { "submodel": {"north": { "model": "boe:energy_cell_connection_advanced" }} }, "false": {} }, "east": { "true": { "submodel": {"east": { "model": "boe:energy_cell_connection_advanced", "y": 90 }} }, "false": {} }, "south": { "true": { "submodel": {"south": { "model": "boe:energy_cell_connection_advanced", "y": 180 }} }, "false": {} }, "west": { "true": { "submodel": {"west": { "model": "boe:energy_cell_connection_advanced", "y": 270 }} }, "false": {} }, "up": { "true": { "submodel": {"up": { "model": "boe:energy_cell_connection_advanced", "x": 270 }} }, "false": {} }, "down": { "true": { "submodel": {"down": { "model": "boe:energy_cell_connection_advanced", "x": 90 }} }, "false": {} } } } } } Block Models: energy_cell_connection_basic.json: { "textures": { "particle": "boe:blocks/machine_basic", "0": "boe:blocks/energy_cell_centre_basic", "3": "boe:blocks/machine_basic" }, "elements": [ { "name": "Connection Base", "from": [ 7.0, 7.0, 1.0 ], "to": [ 9.0, 9.0, 4.0 ], "faces": { "north": { "texture": "#0", "uv": [ 0.0, 6.0, 4.0, 10.0 ] }, "east": { "texture": "#0", "uv": [ 0.0, 6.0, 4.0, 10.0 ] }, "south": { "texture": "#0", "uv": [ 0.0, 6.0, 4.0, 10.0 ] }, "west": { "texture": "#0", "uv": [ 0.0, 6.0, 4.0, 10.0 ] }, "up": { "texture": "#0", "uv": [ 0.0, 6.0, 4.0, 10.0 ] }, "down": { "texture": "#0", "uv": [ 0.0, 6.0, 4.0, 10.0 ] } } }, { "name": "Connection", "from": [ 6.0, 6.0, 0.0 ], "to": [ 10.0, 10.0, 1.0 ], "faces": { "north": { "texture": "#3", "uv": [ 0.0, 0.0, 16.0, 16.0 ] }, "east": { "texture": "#3", "uv": [ 0.0, 0.0, 1.0, 4.0 ] }, "south": { "texture": "#3", "uv": [ 0.0, 0.0, 16.0, 16.0 ] }, "west": { "texture": "#3", "uv": [ 0.0, 0.0, 1.0, 4.0 ] }, "up": { "texture": "#3", "uv": [ 0.0, 0.0, 4.0, 1.0 ] }, "down": { "texture": "#3", "uv": [ 0.0, 0.0, 4.0, 1.0 ] } } } ] } energy_cell_connection_advanced.json: { "textures": { "particle": "boe:blocks/machine_advanced", "0": "boe:blocks/energy_cell_centre_advanced", "3": "boe:blocks/machine_advanced" }, "elements": [ { "name": "Connection Base", "from": [ 7.0, 7.0, 1.0 ], "to": [ 9.0, 9.0, 4.0 ], "faces": { "north": { "texture": "#0", "uv": [ 0.0, 6.0, 4.0, 10.0 ] }, "east": { "texture": "#0", "uv": [ 0.0, 6.0, 4.0, 10.0 ] }, "south": { "texture": "#0", "uv": [ 0.0, 6.0, 4.0, 10.0 ] }, "west": { "texture": "#0", "uv": [ 0.0, 6.0, 4.0, 10.0 ] }, "up": { "texture": "#0", "uv": [ 0.0, 6.0, 4.0, 10.0 ] }, "down": { "texture": "#0", "uv": [ 0.0, 6.0, 4.0, 10.0 ] } } }, { "name": "Connection", "from": [ 6.0, 6.0, 0.0 ], "to": [ 10.0, 10.0, 1.0 ], "faces": { "north": { "texture": "#3", "uv": [ 0.0, 0.0, 16.0, 16.0 ] }, "east": { "texture": "#3", "uv": [ 0.0, 0.0, 1.0, 4.0 ] }, "south": { "texture": "#3", "uv": [ 0.0, 0.0, 16.0, 16.0 ] }, "west": { "texture": "#3", "uv": [ 0.0, 0.0, 1.0, 4.0 ] }, "up": { "texture": "#3", "uv": [ 0.0, 0.0, 4.0, 1.0 ] }, "down": { "texture": "#3", "uv": [ 0.0, 0.0, 4.0, 1.0 ] } } } ] } energy_cell_centre_basic.json: { "textures": { "particle": "boe:blocks/machine_basic", "0": "boe:blocks/energy_cell_centre_basic", "1": "boe:blocks/ctm/machine_basic", "2": "boe:blocks/energy_cell" }, "elements": [ { "name": "Centre", "from": [ 4.0, 4.0, 4.0 ], "to": [ 12.0, 12.0, 12.0 ], "rotation": { "origin": [ 8.0, 8.0, 8.0 ], "axis": "y", "angle": -45.0 }, "faces": { "north": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 16.0 ] }, "east": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 16.0 ] }, "south": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 16.0 ] }, "west": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 16.0 ] }, "up": { "texture": "#1", "uv": [ 8.0, 8.0, 16.0, 16.0 ] }, "down": { "texture": "#1", "uv": [ 8.0, 8.0, 16.0, 16.0 ] } } }, { "name": "Energy Cell 1", "from": [ 5.7, 6.0, 2.7 ], "to": [ 6.7, 10.0, 3.7 ], "faces": { "north": { "texture": "#2", "uv": [ 0.0, 0.0, 2.0, 8.0 ] }, "east": { "texture": "#2", "uv": [ 2.0, 0.0, 4.0, 8.0 ] }, "south": { "texture": "#2", "uv": [ 4.0, 0.0, 6.0, 8.0 ] }, "west": { "texture": "#2", "uv": [ 6.0, 0.0, 8.0, 8.0 ] }, "up": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } } }, { "name": "Energy Cell 2", "from": [ 9.3, 6.0, 2.7 ], "to": [ 10.3, 10.0, 3.7 ], "faces": { "north": { "texture": "#2", "uv": [ 0.0, 0.0, 2.0, 8.0 ] }, "east": { "texture": "#2", "uv": [ 2.0, 0.0, 4.0, 8.0 ] }, "south": { "texture": "#2", "uv": [ 4.0, 0.0, 6.0, 8.0 ] }, "west": { "texture": "#2", "uv": [ 6.0, 0.0, 8.0, 8.0 ] }, "up": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } } }, { "name": "Energy Cell 3", "from": [ 12.3, 6.0, 5.7 ], "to": [ 13.3, 10.0, 6.7 ], "faces": { "north": { "texture": "#2", "uv": [ 0.0, 0.0, 2.0, 8.0 ] }, "east": { "texture": "#2", "uv": [ 2.0, 0.0, 4.0, 8.0 ] }, "south": { "texture": "#2", "uv": [ 4.0, 0.0, 6.0, 8.0 ] }, "west": { "texture": "#2", "uv": [ 6.0, 0.0, 8.0, 8.0 ] }, "up": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } } }, { "name": "Energy Cell 4", "from": [ 12.3, 6.0, 9.3 ], "to": [ 13.3, 10.0, 10.3 ], "faces": { "north": { "texture": "#2", "uv": [ 0.0, 0.0, 2.0, 8.0 ] }, "east": { "texture": "#2", "uv": [ 2.0, 0.0, 4.0, 8.0 ] }, "south": { "texture": "#2", "uv": [ 4.0, 0.0, 6.0, 8.0 ] }, "west": { "texture": "#2", "uv": [ 6.0, 0.0, 8.0, 8.0 ] }, "up": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } } }, { "name": "Energy Cell 5", "from": [ 9.3, 6.0, 12.3 ], "to": [ 10.3, 10.0, 13.3 ], "faces": { "north": { "texture": "#2", "uv": [ 0.0, 0.0, 2.0, 8.0 ] }, "east": { "texture": "#2", "uv": [ 2.0, 0.0, 4.0, 8.0 ] }, "south": { "texture": "#2", "uv": [ 4.0, 0.0, 6.0, 8.0 ] }, "west": { "texture": "#2", "uv": [ 6.0, 0.0, 8.0, 8.0 ] }, "up": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } } }, { "name": "Energy Cell 6", "from": [ 5.699999999999999, 6.0, 12.3 ], "to": [ 6.699999999999999, 10.0, 13.3 ], "faces": { "north": { "texture": "#2", "uv": [ 0.0, 0.0, 2.0, 8.0 ] }, "east": { "texture": "#2", "uv": [ 2.0, 0.0, 4.0, 8.0 ] }, "south": { "texture": "#2", "uv": [ 4.0, 0.0, 6.0, 8.0 ] }, "west": { "texture": "#2", "uv": [ 6.0, 0.0, 8.0, 8.0 ] }, "up": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } } }, { "name": "Energy Cell 7", "from": [ 2.6999999999999993, 6.0, 9.3 ], "to": [ 3.6999999999999993, 10.0, 10.3 ], "faces": { "north": { "texture": "#2", "uv": [ 0.0, 0.0, 2.0, 8.0 ] }, "east": { "texture": "#2", "uv": [ 2.0, 0.0, 4.0, 8.0 ] }, "south": { "texture": "#2", "uv": [ 4.0, 0.0, 6.0, 8.0 ] }, "west": { "texture": "#2", "uv": [ 6.0, 0.0, 8.0, 8.0 ] }, "up": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } } }, { "name": "Energy Cell 8", "from": [ 2.7, 6.0, 5.7 ], "to": [ 3.7, 10.0, 6.7 ], "faces": { "north": { "texture": "#2", "uv": [ 0.0, 0.0, 2.0, 8.0 ] }, "east": { "texture": "#2", "uv": [ 2.0, 0.0, 4.0, 8.0 ] }, "south": { "texture": "#2", "uv": [ 4.0, 0.0, 6.0, 8.0 ] }, "west": { "texture": "#2", "uv": [ 6.0, 0.0, 8.0, 8.0 ] }, "up": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } } } ] } energy_cell_centre_advanced.json: { "textures": { "particle": "boe:blocks/machine_advanced", "0": "boe:blocks/energy_cell_centre_advanced", "1": "boe:blocks/ctm/machine_advanced", "2": "boe:blocks/energy_cell" }, "elements": [ { "name": "Centre", "from": [ 4.0, 4.0, 4.0 ], "to": [ 12.0, 12.0, 12.0 ], "rotation": { "origin": [ 8.0, 8.0, 8.0 ], "axis": "y", "angle": -45.0 }, "faces": { "north": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 16.0 ] }, "east": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 16.0 ] }, "south": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 16.0 ] }, "west": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 16.0 ] }, "up": { "texture": "#1", "uv": [ 8.0, 8.0, 16.0, 16.0 ] }, "down": { "texture": "#1", "uv": [ 8.0, 8.0, 16.0, 16.0 ] } } }, { "name": "Energy Cell 1", "from": [ 5.7, 6.0, 2.7 ], "to": [ 6.7, 10.0, 3.7 ], "faces": { "north": { "texture": "#2", "uv": [ 0.0, 0.0, 2.0, 8.0 ] }, "east": { "texture": "#2", "uv": [ 2.0, 0.0, 4.0, 8.0 ] }, "south": { "texture": "#2", "uv": [ 4.0, 0.0, 6.0, 8.0 ] }, "west": { "texture": "#2", "uv": [ 6.0, 0.0, 8.0, 8.0 ] }, "up": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } } }, { "name": "Energy Cell 2", "from": [ 9.3, 6.0, 2.7 ], "to": [ 10.3, 10.0, 3.7 ], "faces": { "north": { "texture": "#2", "uv": [ 0.0, 0.0, 2.0, 8.0 ] }, "east": { "texture": "#2", "uv": [ 2.0, 0.0, 4.0, 8.0 ] }, "south": { "texture": "#2", "uv": [ 4.0, 0.0, 6.0, 8.0 ] }, "west": { "texture": "#2", "uv": [ 6.0, 0.0, 8.0, 8.0 ] }, "up": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } } }, { "name": "Energy Cell 3", "from": [ 12.3, 6.0, 5.7 ], "to": [ 13.3, 10.0, 6.7 ], "faces": { "north": { "texture": "#2", "uv": [ 0.0, 0.0, 2.0, 8.0 ] }, "east": { "texture": "#2", "uv": [ 2.0, 0.0, 4.0, 8.0 ] }, "south": { "texture": "#2", "uv": [ 4.0, 0.0, 6.0, 8.0 ] }, "west": { "texture": "#2", "uv": [ 6.0, 0.0, 8.0, 8.0 ] }, "up": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } } }, { "name": "Energy Cell 4", "from": [ 12.3, 6.0, 9.3 ], "to": [ 13.3, 10.0, 10.3 ], "faces": { "north": { "texture": "#2", "uv": [ 0.0, 0.0, 2.0, 8.0 ] }, "east": { "texture": "#2", "uv": [ 2.0, 0.0, 4.0, 8.0 ] }, "south": { "texture": "#2", "uv": [ 4.0, 0.0, 6.0, 8.0 ] }, "west": { "texture": "#2", "uv": [ 6.0, 0.0, 8.0, 8.0 ] }, "up": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } } }, { "name": "Energy Cell 5", "from": [ 9.3, 6.0, 12.3 ], "to": [ 10.3, 10.0, 13.3 ], "faces": { "north": { "texture": "#2", "uv": [ 0.0, 0.0, 2.0, 8.0 ] }, "east": { "texture": "#2", "uv": [ 2.0, 0.0, 4.0, 8.0 ] }, "south": { "texture": "#2", "uv": [ 4.0, 0.0, 6.0, 8.0 ] }, "west": { "texture": "#2", "uv": [ 6.0, 0.0, 8.0, 8.0 ] }, "up": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } } }, { "name": "Energy Cell 6", "from": [ 5.699999999999999, 6.0, 12.3 ], "to": [ 6.699999999999999, 10.0, 13.3 ], "faces": { "north": { "texture": "#2", "uv": [ 0.0, 0.0, 2.0, 8.0 ] }, "east": { "texture": "#2", "uv": [ 2.0, 0.0, 4.0, 8.0 ] }, "south": { "texture": "#2", "uv": [ 4.0, 0.0, 6.0, 8.0 ] }, "west": { "texture": "#2", "uv": [ 6.0, 0.0, 8.0, 8.0 ] }, "up": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } } }, { "name": "Energy Cell 7", "from": [ 2.6999999999999993, 6.0, 9.3 ], "to": [ 3.6999999999999993, 10.0, 10.3 ], "faces": { "north": { "texture": "#2", "uv": [ 0.0, 0.0, 2.0, 8.0 ] }, "east": { "texture": "#2", "uv": [ 2.0, 0.0, 4.0, 8.0 ] }, "south": { "texture": "#2", "uv": [ 4.0, 0.0, 6.0, 8.0 ] }, "west": { "texture": "#2", "uv": [ 6.0, 0.0, 8.0, 8.0 ] }, "up": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } } }, { "name": "Energy Cell 8", "from": [ 2.7, 6.0, 5.7 ], "to": [ 3.7, 10.0, 6.7 ], "faces": { "north": { "texture": "#2", "uv": [ 0.0, 0.0, 2.0, 8.0 ] }, "east": { "texture": "#2", "uv": [ 2.0, 0.0, 4.0, 8.0 ] }, "south": { "texture": "#2", "uv": [ 4.0, 0.0, 6.0, 8.0 ] }, "west": { "texture": "#2", "uv": [ 6.0, 0.0, 8.0, 8.0 ] }, "up": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }, "down": { "texture": "#2", "uv": [ 0.0, 0.0, 1.0, 1.0 ] } } } ] } Error message: [20:34:28] [Client thread/ERROR] [FML]: Exception loading model for variant boe:energy_cell#down=false,east=false,north=true,south=true,type=basic,up=false,west=true for blockstate "boe:energy_cell[down=false,east=false,north=true,south=true,type=basic,up=false,west=true]" net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model boe:energy_cell#down=false,east=false,north=true,south=true,type=basic,up=false,west=true with loader VariantLoader.INSTANCE, skipping at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?] at net.minecraftforge.client.model.ModelLoader.registerVariant(ModelLoader.java:264) ~[ModelLoader.class:?] at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:153) ~[ModelBakery.class:?] at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:252) ~[ModelLoader.class:?] at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:159) ~[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:122) [SimpleReloadableResourceManager.class:?] at net.minecraft.client.Minecraft.init(Minecraft.java:541) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:387) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131] at java.lang.reflect.Method.invoke(Unknown Source) ~[?: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(Unknown Source) ~[?:1.8.0_131] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131] at java.lang.reflect.Method.invoke(Unknown Source) ~[?: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:78) ~[ModelBlockDefinition.class:?] at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1257) ~[ModelLoader$VariantLoader.class:?] at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?] ... 21 more [20:34:28] [Client thread/ERROR] [FML]: Exception loading model for variant boe:energy_cell#down=false,east=false,north=false,south=true,type=advanced,up=true,west=true for blockstate "boe:energy_cell[down=false,east=false,north=false,south=true,type=advanced,up=true,west=true]" net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model boe:energy_cell#down=false,east=false,north=false,south=true,type=advanced,up=true,west=true with loader VariantLoader.INSTANCE, skipping at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?] at net.minecraftforge.client.model.ModelLoader.registerVariant(ModelLoader.java:264) ~[ModelLoader.class:?] at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:153) ~[ModelBakery.class:?] at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:252) ~[ModelLoader.class:?] at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:159) ~[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:122) [SimpleReloadableResourceManager.class:?] at net.minecraft.client.Minecraft.init(Minecraft.java:541) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:387) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131] at java.lang.reflect.Method.invoke(Unknown Source) ~[?: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(Unknown Source) ~[?:1.8.0_131] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131] at java.lang.reflect.Method.invoke(Unknown Source) ~[?: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:78) ~[ModelBlockDefinition.class:?] at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1257) ~[ModelLoader$VariantLoader.class:?] at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?] ... 21 more [20:34:28] [Client thread/ERROR] [FML]: Exception loading model for variant boe:energy_cell#down=false,east=false,north=false,south=true,type=basic,up=false,west=true for blockstate "boe:energy_cell[down=false,east=false,north=false,south=true,type=basic,up=false,west=true]" net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model boe:energy_cell#down=false,east=false,north=false,south=true,type=basic,up=false,west=true with loader VariantLoader.INSTANCE, skipping at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?] at net.minecraftforge.client.model.ModelLoader.registerVariant(ModelLoader.java:264) ~[ModelLoader.class:?] at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:153) ~[ModelBakery.class:?] at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:252) ~[ModelLoader.class:?] at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:159) ~[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:122) [SimpleReloadableResourceManager.class:?] at net.minecraft.client.Minecraft.init(Minecraft.java:541) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:387) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131] at java.lang.reflect.Method.invoke(Unknown Source) ~[?: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(Unknown Source) ~[?:1.8.0_131] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131] at java.lang.reflect.Method.invoke(Unknown Source) ~[?: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:78) ~[ModelBlockDefinition.class:?] at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1257) ~[ModelLoader$VariantLoader.class:?] at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?] ... 21 more [20:34:28] [Client thread/ERROR] [FML]: Exception loading model for variant boe:energy_cell#down=false,east=false,north=false,south=false,type=basic,up=false,west=true for blockstate "boe:energy_cell[down=false,east=false,north=false,south=false,type=basic,up=false,west=true]" net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model boe:energy_cell#down=false,east=false,north=false,south=false,type=basic,up=false,west=true with loader VariantLoader.INSTANCE, skipping at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?] at net.minecraftforge.client.model.ModelLoader.registerVariant(ModelLoader.java:264) ~[ModelLoader.class:?] at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:153) ~[ModelBakery.class:?] at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:252) ~[ModelLoader.class:?] at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:159) ~[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:122) [SimpleReloadableResourceManager.class:?] at net.minecraft.client.Minecraft.init(Minecraft.java:541) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:387) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131] at java.lang.reflect.Method.invoke(Unknown Source) ~[?: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(Unknown Source) ~[?:1.8.0_131] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131] at java.lang.reflect.Method.invoke(Unknown Source) ~[?: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:78) ~[ModelBlockDefinition.class:?] at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1257) ~[ModelLoader$VariantLoader.class:?] at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?] ... 21 more Please help!
  14. Can you attach the Sky Renderer please, it is more than likely an error in there
  15. Thanks. That fixed the block drop. Unfortunately when I place the coloured block the tile entity receives the colour correctly. The particles of the block are coloured correctly but the actual block remain white until another canvas block is placed.
  16. Just tried that with this code: @Override public void harvestBlock(World world, EntityPlayer player, BlockPos pos, IBlockState state, TileEntity te, ItemStack stack) { TileEntityCanvas canvas = (TileEntityCanvas) te; ItemStack itemstack = new ItemStack(ModBlocks.canvas); NBTTagCompound nbt = new NBTTagCompound(); if(canvas != null) nbt.setInteger("colour", canvas.getColour()); else nbt.setInteger("colour", 0xFFFFFF); stack.setTagCompound(nbt); spawnAsEntity(world, pos, itemstack); } Still doesn't work. It leaves it with the white colour while the block I am breaking is orange in the tile entity
  17. So I have created a coloured block which saves its colour in a tile entity and can be coloured using a coloured item (paint brush) using its NBT. Currently my tile entity works fine and the block works correctly until I break the block where when I do, I don't get the coloured block but a white version of my coloured block. I have tried to fix this using a SimpleNetworkWrapper having a message sent to the server when I break the block to then receive the tile entity data to then spawn the item. Unfortunately this does not work as the following error occurs: [Netty Server IO #1/ERROR] [FML]: FMLIndexedMessageCodec exception caught io.netty.handler.codec.DecoderException: java.lang.NullPointerException: Undefined message for discriminator 0 in channel boe at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:99) ~[MessageToMessageDecoder.class:4.0.23.Final] at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) [DefaultChannelPipeline.class:4.0.23.Final] at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:4.0.23.Final] at net.minecraftforge.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:111) [FMLProxyPacket.class:?] at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:157) [NetworkManager.class:?] at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:51) [NetworkManager.class:?] at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [SimpleChannelInboundHandler.class:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final] at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.handleServerSideCustomPacket(NetworkDispatcher.java:452) [NetworkDispatcher.class:?] at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:274) [NetworkDispatcher.class:?] at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:73) [NetworkDispatcher.class:?] at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [SimpleChannelInboundHandler.class:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) [DefaultChannelPipeline.class:4.0.23.Final] at io.netty.channel.local.LocalChannel.finishPeerRead(LocalChannel.java:326) [LocalChannel.class:4.0.23.Final] at io.netty.channel.local.LocalChannel.access$400(LocalChannel.java:45) [LocalChannel.class:4.0.23.Final] at io.netty.channel.local.LocalChannel$5.run(LocalChannel.java:312) [LocalChannel$5.class:4.0.23.Final] at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:380) [SingleThreadEventExecutor.class:4.0.23.Final] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:357) [NioEventLoop.class:4.0.23.Final] at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) [SingleThreadEventExecutor$2.class:4.0.23.Final] at java.lang.Thread.run(Unknown Source) [?:1.8.0_121] Caused by: java.lang.NullPointerException: Undefined message for discriminator 0 in channel boe at net.minecraftforge.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:99) ~[FMLIndexedMessageToMessageCodec.class:?] at net.minecraftforge.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:40) ~[FMLIndexedMessageToMessageCodec.class:?] at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[MessageToMessageCodec$2.class:4.0.23.Final] at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ~[MessageToMessageDecoder.class:4.0.23.Final] ... 25 more I have seen people have this error before and by looking on the forums I have found a solution which stops the error but does not fix the block dropping correctly. I have noticed that when (in my ClientProxy) I register the message like so: BitOfEverything.network.registerMessage(CanvasItemDropMessageHandler.class, CanvasItemDropMessage.class, Reference.PACKET_ID_CANVAS, Side.CLIENT); the error does not occur. When I remove this I get the previous error. And my packet id is not 0 it is actually 30. I currently send my packet here: In my block class: @Override public void harvestBlock(World world, EntityPlayer player, BlockPos pos, IBlockState state, TileEntity te, ItemStack stack) { if(!world.isRemote) BitOfEverything.network.sendToServer(new CanvasItemDropMessage(pos)); } Now one thing I do notice is that in my packet handler: public static class CanvasItemDropMessageHandler implements IMessageHandler<CanvasItemDropMessage, IMessage> { @Override public IMessage onMessage(CanvasItemDropMessage message, MessageContext ctx) { Utils.getLogger().info("Handling message! " + ctx.side.toString()); if(ctx.side == Side.SERVER && message.messageValid) { if(ctx.getServerHandler().playerEntity == null) return null; ctx.getServerHandler().playerEntity.getServerWorld().addScheduledTask(new Runnable() { @Override public void run() { Utils.getLogger().info("Server side!"); TileEntityCanvas canvas = (TileEntityCanvas) ctx.getServerHandler().playerEntity.getServerWorld().getTileEntity(message.pos); spawnEntity(ctx.getServerHandler().playerEntity.getServerWorld(), canvas, message.pos); } }); } return null; } void spawnEntity(World world, TileEntityCanvas canvas, BlockPos pos) { if(!world.isRemote && world.getGameRules().getBoolean("doTileDrops") && !world.restoringBlockSnapshots) { ItemStack stack = new ItemStack(ModBlocks.canvas); NBTTagCompound nbt = new NBTTagCompound(); nbt.setInteger("colour", canvas.getColour()); stack.setTagCompound(nbt); float f = 0.5F; double d0 = (double)(world.rand.nextFloat() * 0.5F) + 0.25D; double d1 = (double)(world.rand.nextFloat() * 0.5F) + 0.25D; double d2 = (double)(world.rand.nextFloat() * 0.5F) + 0.25D; EntityItem entityitem = new EntityItem(world, (double)pos.getX() + d0, (double)pos.getY() + d1, (double)pos.getZ() + d2, stack); entityitem.setDefaultPickupDelay(); world.spawnEntity(entityitem); Utils.getLogger().info("Spawned the item!"); } } } The handling message console message never occurs. It seems like my message either never hits the server or there is an error on the way. I'm not to sure what it is and I am intrigued to know my error. Just for use here is the code which seems relevant: The message and handler: package cjminecraft.bitofeverything.packets; import cjminecraft.bitofeverything.BitOfEverything; import cjminecraft.bitofeverything.init.ModBlocks; import cjminecraft.bitofeverything.tileentity.TileEntityCanvas; import cjminecraft.bitofeverything.util.Utils; import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.WorldClient; import net.minecraft.entity.item.EntityItem; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.play.server.SPacketSpawnObject; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.WorldServer; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; import net.minecraftforge.fml.relauncher.Side; public class CanvasItemDropMessage implements IMessage { private boolean messageValid; private BlockPos pos; public CanvasItemDropMessage() { this.messageValid = false; } public CanvasItemDropMessage(BlockPos pos) { this.pos = pos; this.messageValid = true; } @Override public void fromBytes(ByteBuf buf) { try { this.pos = new BlockPos(buf.readInt(), buf.readInt(), buf.readInt()); } catch (IndexOutOfBoundsException ioe) { Utils.getLogger().info(ioe.getMessage()); return; } this.messageValid = true; } @Override public void toBytes(ByteBuf buf) { if(!this.messageValid) return; buf.writeInt(this.pos.getX()); buf.writeInt(this.pos.getY()); buf.writeInt(this.pos.getZ()); } public static class CanvasItemDropMessageHandler implements IMessageHandler<CanvasItemDropMessage, IMessage> { @Override public IMessage onMessage(CanvasItemDropMessage message, MessageContext ctx) { Utils.getLogger().info("Handling message! " + ctx.side.toString()); if(ctx.side == Side.SERVER && message.messageValid) { if(ctx.getServerHandler().playerEntity == null) return null; ctx.getServerHandler().playerEntity.getServerWorld().addScheduledTask(new Runnable() { @Override public void run() { Utils.getLogger().info("Server side!"); TileEntityCanvas canvas = (TileEntityCanvas) ctx.getServerHandler().playerEntity.getServerWorld().getTileEntity(message.pos); spawnEntity(ctx.getServerHandler().playerEntity.getServerWorld(), canvas, message.pos); } }); } return null; } void spawnEntity(World world, TileEntityCanvas canvas, BlockPos pos) { if(!world.isRemote && world.getGameRules().getBoolean("doTileDrops") && !world.restoringBlockSnapshots) { ItemStack stack = new ItemStack(ModBlocks.canvas); NBTTagCompound nbt = new NBTTagCompound(); nbt.setInteger("colour", canvas.getColour()); stack.setTagCompound(nbt); float f = 0.5F; double d0 = (double)(world.rand.nextFloat() * 0.5F) + 0.25D; double d1 = (double)(world.rand.nextFloat() * 0.5F) + 0.25D; double d2 = (double)(world.rand.nextFloat() * 0.5F) + 0.25D; EntityItem entityitem = new EntityItem(world, (double)pos.getX() + d0, (double)pos.getY() + d1, (double)pos.getZ() + d2, stack); entityitem.setDefaultPickupDelay(); world.spawnEntity(entityitem); Utils.getLogger().info("Spawned the item!"); } } } } The block: package cjminecraft.bitofeverything.blocks; import java.util.ArrayList; import java.util.List; import cjminecraft.bitofeverything.BitOfEverything; import cjminecraft.bitofeverything.Reference; import cjminecraft.bitofeverything.init.ModBlocks; import cjminecraft.bitofeverything.init.ModItems; import cjminecraft.bitofeverything.packets.CanvasItemDropMessage; import cjminecraft.bitofeverything.tileentity.TileEntityCanvas; import cjminecraft.bitofeverything.util.Utils; import net.minecraft.block.BlockContainer; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumBlockRenderType; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.text.TextFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint; /** * A block which can be coloured when clicked on by a paint brush * @author CJMinecraft * */ public class BlockCanvas extends BlockContainer implements ITileEntityProvider { /** * Default block constructor * @param unlocalizedName The unlocalised name of the block */ public BlockCanvas(String unlocalizedName) { super(Material.CLOTH); this.setUnlocalizedName(unlocalizedName); this.setRegistryName(new ResourceLocation(Reference.MODID, unlocalizedName)); this.setHardness(1); this.setResistance(5); this.isBlockContainer = true; //Says it is a block container } /** * This will change the blocks colour when clicked on by a paint brush */ @Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { if(player.getHeldItem(hand).getItem() == ModItems.paintBrush) { TileEntityCanvas canvas = (TileEntityCanvas) world.getTileEntity(pos); canvas.setColour(player.getHeldItem(hand).getTagCompound().getInteger("colour")); world.markBlockRangeForRenderUpdate(pos, pos); } return false; } /** * Says what colour the block is */ @Override public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced) { if(stack.hasTagCompound()) if(stack.getTagCompound().hasKey("colour")) tooltip.add(TextFormatting.GRAY + I18n.format(getUnlocalizedName() + ".tooltip", String.format("#%06X", (0xFFFFFF & stack.getTagCompound().getInteger("colour"))))); } /** * Makes it so that when you pick block, you get the correct block */ @Override public ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player) { TileEntityCanvas canvas = (TileEntityCanvas) world.getTileEntity(pos); ItemStack stack = new ItemStack(ModBlocks.canvas); NBTTagCompound nbt = new NBTTagCompound(); if(canvas != null) nbt.setInteger("colour", canvas.getColour()); else nbt.setInteger("colour", 0xFFFFFF); stack.setTagCompound(nbt); return stack; } /** * Needed to make sure our block is rendered correctly */ @Override public EnumBlockRenderType getRenderType(IBlockState state) { return EnumBlockRenderType.MODEL; } /** * Create the tile entity */ @Override public TileEntity createTileEntity(World world, IBlockState state) { return new TileEntityCanvas(); } /** * Also create the tile entity */ @Override public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityCanvas(); } /** * When placed it will update the colour to that of the tile entity which the tile entity inherits from the item block */ @Override public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) { if(!world.isRemote) { TileEntityCanvas canvas = (TileEntityCanvas) world.getTileEntity(pos); if(canvas != null && stack.hasTagCompound() && stack.getTagCompound().hasKey("colour")) canvas.setColour(stack.getTagCompound().getInteger("colour")); } world.markBlockRangeForRenderUpdate(pos, pos); //Update the blocks render } /** * Not fully functioning. Works with <code> /setblock <x> <y> <z> air 0 destroy </code> but not when breaking normally with your hand */ @Override public List<ItemStack> getDrops(IBlockAccess world, BlockPos pos, IBlockState state, int fortune) { List<ItemStack> drops = new ArrayList<ItemStack>(); TileEntityCanvas canvas = (TileEntityCanvas) world.getTileEntity(pos); ItemStack stack = new ItemStack(ModBlocks.canvas); NBTTagCompound nbt = new NBTTagCompound(); if(canvas != null) //When you break it with a command nbt.setInteger("colour", canvas.getColour()); else //When you break it with your hand nbt.setInteger("colour", 0xFFFFFF); stack.setTagCompound(nbt); drops.add(stack); return drops; } @Override public void harvestBlock(World world, EntityPlayer player, BlockPos pos, IBlockState state, TileEntity te, ItemStack stack) { if(!world.isRemote) BitOfEverything.network.sendToServer(new CanvasItemDropMessage(pos)); } } The Tile Entity: package cjminecraft.bitofeverything.tileentity; import net.minecraft.block.state.IBlockState; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.NetworkManager; import net.minecraft.network.play.server.SPacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; /** * The canvas tile entity which stores the blocks colour * @author CJMinecraft * */ public class TileEntityCanvas extends TileEntity { //The colour as an int private int colour; /** * Initialise the colour to be white */ public TileEntityCanvas() { this.colour = 0xFFFFFF; } /** * Read the colour from NBT data */ @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); this.colour = nbt.getInteger("colour"); } /** * Write the correct NBT data */ @Override public NBTTagCompound writeToNBT(NBTTagCompound nbt) { nbt.setInteger("colour", this.colour); return super.writeToNBT(nbt); } /** * Get the colour of the canvas * @return The colour of the canvas */ public int getColour() { return colour; } /** * Set the colour of the canvas * @param colour The new colour of the canvas */ public void setColour(int colour) { this.colour = colour; } /** * The packet which is used to update the tile entity which holds all of the * tileentities data */ @Override public SPacketUpdateTileEntity getUpdatePacket() { NBTTagCompound nbt = new NBTTagCompound(); this.writeToNBT(nbt); int metadata = getBlockMetadata(); return new SPacketUpdateTileEntity(this.pos, metadata, nbt); } /** * Reads the nbt when it receives a packet */ @Override public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) { this.readFromNBT(pkt.getNbtCompound()); } /** * Gets the nbt for a new packet */ @Override public NBTTagCompound getUpdateTag() { NBTTagCompound nbt = new NBTTagCompound(); this.writeToNBT(nbt); return nbt; } /** * Handles when you get an update */ @Override public void handleUpdateTag(NBTTagCompound tag) { this.readFromNBT(tag); } /** * Gets the tile entities nbt with all of the data stored in it */ @Override public NBTTagCompound getTileData() { NBTTagCompound nbt = new NBTTagCompound(); this.writeToNBT(nbt); return nbt; } } Registration of the packet: (called in pre init in the common proxy) BitOfEverything.network.registerMessage(CanvasItemDropMessageHandler.class, CanvasItemDropMessage.class, Reference.PACKET_ID_CANVAS, Side.SERVER); All help is greatly appreciated. I hope someone will be able to help me figure this out!
  18. Yes hopefully when I can figure this out. I really want connected textures
  19. I have been trying to create a machine which has connected textures. I believe the best way to achieve this is to use forge's extended blockstate. I based my code off https://github.com/TheGreyGhost/MinecraftByExample/tree/1-10-2final/src/main/java/minecraftbyexample/mbe05_block_dynamic_block_model2 . Currently I have it so that my block has two IBakedModels it uses. A core which holds the core image and the border. I plan on adding the border to a side where there is no block touching. Unfortunately, while trying to do this, forge gives me an error saying I am missing a texture which I know I have. Currently I'm just trying to use a custom model loader to render my core model, nothing else to get started. Console Log: 2017-02-28 18:43:45,713 WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream 2017-02-28 18:43:45,715 WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream [18:43:45] [main/INFO] [GradleStart]: Extra: [] [18:43:45] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/Callum/.gradle/caches/minecraft/assets, --assetIndex, 1.11, --accessToken{REDACTED}, --version, 1.11.2, --tweakClass, net.minecraftforge.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker] [18:43:45] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker [18:43:46] [main/INFO] [LaunchWrapper]: Using primary tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker [18:43:46] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker [18:43:46] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLTweaker [18:43:46] [main/INFO] [FML]: Forge Mod Loader version 13.20.0.2232 for Minecraft 1.11.2 loading [18:43:46] [main/INFO] [FML]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.8.0_121, running on Windows 10:amd64:10.0, installed at C:\Program Files\Java\jre1.8.0_121 [18:43:46] [main/INFO] [FML]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation [18:43:46] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.CoremodTweaker [18:43:46] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.fml.relauncher.FMLCorePlugin [18:43:46] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.classloading.FMLForgePlugin [18:43:46] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker [18:43:46] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLDeobfTweaker [18:43:46] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.AccessTransformerTweaker [18:43:46] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker [18:43:46] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker [18:43:46] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper [18:43:46] [main/ERROR] [FML]: The binary patch set is missing. Either you are in a development environment, or things are not going to work! [18:43:49] [main/ERROR] [FML]: FML appears to be missing any signature data. This is not a good thing [18:43:49] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper [18:43:49] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLDeobfTweaker [18:43:51] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.AccessTransformerTweaker [18:43:51] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.TerminalTweaker [18:43:51] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.TerminalTweaker [18:43:51] [main/INFO] [LaunchWrapper]: Launching wrapped minecraft {net.minecraft.client.main.Main} 2017-02-28 18:43:52,483 WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream 2017-02-28 18:43:52,576 WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream 2017-02-28 18:43:52,580 WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream [18:43:53] [Client thread/INFO]: Setting user: Player104 [18:44:02] [Client thread/WARN]: Skipping bad option: lastServer: [18:44:02] [Client thread/INFO]: LWJGL Version: 2.9.4 [18:44:04] [Client thread/INFO]: [STDOUT]: ---- Minecraft Crash Report ---- // Hey, that tickles! Hehehe! Time: 2/28/17 6:44 PM Description: Loading screen debug info This is just a prompt for computer specs to be printed. THIS IS NOT A ERROR A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- System Details -- Details: Minecraft Version: 1.11.2 Operating System: Windows 10 (amd64) version 10.0 Java Version: 1.8.0_121, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 8368539992 bytes (7980 MB) / 8555069440 bytes (8158 MB) up to 8555069440 bytes (8158 MB) JVM Flags: 3 total; -Xincgc -Xmx8192M -Xms8192M IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0 FML: Loaded coremods (and transformers): GL info: ' Vendor: 'ATI Technologies Inc.' Version: '4.5.13464 Compatibility Profile Context 21.19.384.0' Renderer: 'AMD Radeon(TM) R7 Graphics' [18:44:04] [Client thread/INFO] [FML]: MinecraftForge v13.20.0.2232 Initialized [18:44:04] [Client thread/INFO] [FML]: Replaced 232 ore recipes [18:44:05] [Client thread/INFO] [FML]: Found 0 mods from the command line. Injecting into mod discoverer [18:44:05] [Client thread/INFO] [FML]: Searching C:\Users\Callum\Coding\Minecraft\Minecraft Mods\IndustrialTech1.11.2\run\mods for mods [18:44:08] [Client thread/INFO] [FML]: Forge Mod Loader has identified 5 mods to load [18:44:08] [Client thread/INFO] [FML]: Attempting connection with missing mods [minecraft, mcp, FML, forge, industrialtech] at CLIENT [18:44:08] [Client thread/INFO] [FML]: Attempting connection with missing mods [minecraft, mcp, FML, forge, industrialtech] at SERVER [18:44:10] [Client thread/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:Industrial Tech [18:44:10] [Client thread/INFO] [FML]: Processing ObjectHolder annotations [18:44:10] [Client thread/INFO] [FML]: Found 444 ObjectHolder annotations [18:44:10] [Client thread/INFO] [FML]: Identifying ItemStackHolder annotations [18:44:10] [Client thread/INFO] [FML]: Found 0 ItemStackHolder annotations [18:44:10] [Client thread/INFO] [FML]: Applying holder lookups [18:44:10] [Client thread/INFO] [FML]: Holder lookups applied [18:44:10] [Client thread/INFO] [FML]: Applying holder lookups [18:44:10] [Client thread/INFO] [FML]: Holder lookups applied [18:44:10] [Client thread/INFO] [FML]: Applying holder lookups [18:44:10] [Client thread/INFO] [FML]: Holder lookups applied [18:44:10] [Client thread/INFO] [FML]: Configured a dormant chunk cache size of 0 [18:44:10] [Forge Version Check/INFO] [ForgeVersionCheck]: [forge] Starting version check at http://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json [18:44:10] [Client thread/INFO] [FML]: Applying holder lookups [18:44:10] [Client thread/INFO] [FML]: Holder lookups applied [18:44:10] [Client thread/INFO] [FML]: Injecting itemstacks [18:44:10] [Client thread/INFO] [FML]: Itemstack injection complete [18:44:11] [Forge Version Check/INFO] [ForgeVersionCheck]: [forge] Found status: OUTDATED Target: 13.20.0.2252 [18:44:20] [Sound Library Loader/INFO]: Starting up SoundSystem... [18:44:20] [Thread-8/INFO]: Initializing LWJGL OpenAL [18:44:20] [Thread-8/INFO]: (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org) [18:44:20] [Thread-8/INFO]: OpenAL initialized. [18:44:20] [Sound Library Loader/INFO]: Sound engine started [18:44:29] [Client thread/INFO] [FML]: Max texture size: 16384 [18:44:29] [Client thread/INFO]: Created: 16x16 textures-atlas [18:44:31] [Client thread/INFO] [FML]: Injecting itemstacks [18:44:31] [Client thread/INFO] [FML]: Itemstack injection complete [18:44:31] [Client thread/INFO] [FML]: Forge Mod Loader has successfully loaded 5 mods [18:44:31] [Client thread/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:Industrial Tech [18:44:38] [Client thread/INFO]: SoundSystem shutting down... [18:44:38] [Client thread/WARN]: Author: Paul Lamb, www.paulscode.com [18:44:38] [Sound Library Loader/INFO]: Starting up SoundSystem... [18:44:38] [Thread-10/INFO]: Initializing LWJGL OpenAL [18:44:38] [Thread-10/INFO]: (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org) [18:44:38] [Thread-10/INFO]: OpenAL initialized. [18:44:39] [Sound Library Loader/INFO]: Sound engine started [18:44:47] [Client thread/INFO] [FML]: Max texture size: 16384 [18:44:47] [Client thread/INFO]: Created: 512x512 textures-atlas [18:44:49] [Client thread/WARN]: Skipping bad option: lastServer: [18:44:49] [Client thread/ERROR] [TEXTURE ERRORS]: +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= [18:44:49] [Client thread/ERROR] [TEXTURE ERRORS]: The following texture errors were found. [18:44:50] [Client thread/ERROR] [TEXTURE ERRORS]: ================================================== [18:44:50] [Client thread/ERROR] [TEXTURE ERRORS]: DOMAIN indstrialtech [18:44:50] [Client thread/ERROR] [TEXTURE ERRORS]: -------------------------------------------------- [18:44:50] [Client thread/ERROR] [TEXTURE ERRORS]: domain indstrialtech is missing 1 texture [18:44:50] [Client thread/ERROR] [TEXTURE ERRORS]: domain indstrialtech is missing a resource manager - it is probably a side-effect of automatic texture processing [18:44:50] [Client thread/ERROR] [TEXTURE ERRORS]: ------------------------- [18:44:50] [Client thread/ERROR] [TEXTURE ERRORS]: The missing resources for domain indstrialtech are: [18:44:50] [Client thread/ERROR] [TEXTURE ERRORS]: textures/blocks/machine_core.png [18:44:50] [Client thread/ERROR] [TEXTURE ERRORS]: ------------------------- [18:44:50] [Client thread/ERROR] [TEXTURE ERRORS]: No other errors exist for domain indstrialtech [18:44:50] [Client thread/ERROR] [TEXTURE ERRORS]: ================================================== [18:44:50] [Client thread/ERROR] [TEXTURE ERRORS]: +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= [18:44:51] [Realms Notification Availability checker #1/INFO]: Could not authorize you against Realms server: Invalid session id Here is my code: ClientProxy: package cjminecraft.industrialtech.proxy; import cjminecraft.industrialtech.Reference; import cjminecraft.industrialtech.client.model.IndustrialTechModelLoader; import cjminecraft.industrialtech.init.ModBlocks; import cjminecraft.industrialtech.init.ModItems; import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.renderer.block.statemap.StateMapperBase; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.client.model.ModelLoaderRegistry; public class ClientProxy extends CommonProxy { @Override public void preInit() { ModBlocks.registerRenders(); ModBlocks.registerStateMappers(); ModBlocks.registerModelVariants(); ModItems.registerRenders(); ModItems.registerModelVariants(); ModelLoaderRegistry.registerLoader(new IndustrialTechModelLoader()); } @Override public void init() { } @Override public void postInit() { } } ModBlocks: package cjminecraft.industrialtech.init; import cjminecraft.industrialtech.Reference; import cjminecraft.industrialtech.blocks.BlockMachine; import cjminecraft.industrialtech.blocks.BlockMachineFrame; import cjminecraft.industrialtech.blocks.item.ItemBlockMeta; import cjminecraft.industrialtech.utils.Utils; import net.minecraft.block.Block; import net.minecraft.client.renderer.block.model.ModelBakery; import net.minecraft.item.Item; import net.minecraft.util.ResourceLocation; public class ModBlocks { public static BlockMachine machineFrame; public static void init() { machineFrame = new BlockMachineFrame("machine_frame"); } public static void register() { Utils.registerBlock(machineFrame, new ItemBlockMeta(machineFrame)); } public static void registerRenders() { for(BlockMachine.MachineTier tier : BlockMachine.MachineTier.values()) { Utils.registerRender(machineFrame, tier.ordinal(), "machine_frame_" + tier.getName()); } } public static void registerModelVariants() { ModelBakery.registerItemVariants(Item.getItemFromBlock(machineFrame), new ResourceLocation(Reference.MODID, "machine_frame_basic"), new ResourceLocation(Reference.MODID, "machine_frame_intermediate"), new ResourceLocation(Reference.MODID, "machine_frame_advanced")); } public static void registerStateMappers() { machineFrame.registerStateMapper(); } } BlockMachine: package cjminecraft.industrialtech.blocks; import cjminecraft.industrialtech.Reference; import cjminecraft.industrialtech.blocks.item.IMetaBlockName; import cjminecraft.industrialtech.init.ModItems; import cjminecraft.industrialtech.utils.IndustrialTechBlock; import net.minecraft.block.Block; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyBool; import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.renderer.block.statemap.StateMapperBase; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumBlockRenderType; import net.minecraft.util.EnumHand; import net.minecraft.util.IStringSerializable; import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.RayTraceResult; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.common.property.ExtendedBlockState; import net.minecraftforge.common.property.IExtendedBlockState; import net.minecraftforge.common.property.IUnlistedProperty; import net.minecraftforge.common.property.Properties; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; public abstract class BlockMachine extends IndustrialTechBlock implements ITileEntityProvider, IMetaBlockName { public static final PropertyEnum TIER = PropertyEnum.create("tier", BlockMachine.MachineTier.class); public static final IUnlistedProperty<Boolean> LINK_UP = new Properties.PropertyAdapter<Boolean>( PropertyBool.create("link_up")); public static final IUnlistedProperty<Boolean> LINK_DOWN = new Properties.PropertyAdapter<Boolean>( PropertyBool.create("link_down")); public static final IUnlistedProperty<Boolean> LINK_WEST = new Properties.PropertyAdapter<Boolean>( PropertyBool.create("link_west")); public static final IUnlistedProperty<Boolean> LINK_EAST = new Properties.PropertyAdapter<Boolean>( PropertyBool.create("link_east")); public static final IUnlistedProperty<Boolean> LINK_NORTH = new Properties.PropertyAdapter<Boolean>( PropertyBool.create("link_north")); public static final IUnlistedProperty<Boolean> LINK_SOUTH = new Properties.PropertyAdapter<Boolean>( PropertyBool.create("link_south")); public BlockMachine(String unlocalizedName) { super(Material.IRON, unlocalizedName); this.setHardness(3); this.setResistance(20); this.isBlockContainer = true; this.setDefaultState(this.blockState.getBaseState().withProperty(TIER, BlockMachine.MachineTier.BASIC)); } @SideOnly(Side.CLIENT) public void registerStateMapper() { StateMapperBase mapper = new StateMapperBase() { @Override protected ModelResourceLocation getModelResourceLocation(IBlockState state) { return new ModelResourceLocation(Reference.MODID + ":" + getUnlocalizedName().substring(5), "normal"); } }; ModelLoader.setCustomStateMapper(this, mapper); } @Override public IBlockState getExtendedState(IBlockState state, IBlockAccess world, BlockPos pos) { if (state instanceof IExtendedBlockState) { IExtendedBlockState retval = (IExtendedBlockState) state; return retval.withProperty(LINK_UP, canConnectTo(state, world, pos.up())) .withProperty(LINK_DOWN, canConnectTo(state, world, pos.down())) .withProperty(LINK_EAST, canConnectTo(state, world, pos.east())) .withProperty(LINK_WEST, canConnectTo(state, world, pos.west())) .withProperty(LINK_NORTH, canConnectTo(state, world, pos.north())) .withProperty(LINK_SOUTH, canConnectTo(state, world, pos.south())); } return state; } public boolean canConnectTo(IBlockState blockState, IBlockAccess world, BlockPos pos) { IBlockState state = world.getBlockState(pos); if(state.getBlock() instanceof BlockMachine) return state.getValue(TIER) == blockState.getValue(TIER); return false; } @Override public EnumBlockRenderType getRenderType(IBlockState state) { return EnumBlockRenderType.MODEL; } @Override public void getSubBlocks(Item item, CreativeTabs tab, NonNullList<ItemStack> list) { for (BlockMachine.MachineTier tier : BlockMachine.MachineTier.values()) { list.add(new ItemStack(item, 1, tier.ordinal())); } } @Override protected BlockStateContainer createBlockState() { IProperty[] listedProperties = new IProperty[] { TIER }; IUnlistedProperty[] unlistedProperties = new IUnlistedProperty[] { LINK_UP, LINK_DOWN, LINK_EAST, LINK_WEST, LINK_NORTH, LINK_SOUTH }; return new ExtendedBlockState(this, listedProperties, unlistedProperties); } @Override public IBlockState getStateFromMeta(int meta) { BlockMachine.MachineTier tier = BlockMachine.MachineTier.fromMeta(meta); return this.getDefaultState().withProperty(TIER, tier); } @Override public int getMetaFromState(IBlockState state) { BlockMachine.MachineTier tier = (BlockMachine.MachineTier) state.getValue(TIER); return tier.ordinal(); } @Override public ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player) { return new ItemStack(Item.getItemFromBlock(this), 1, getMetaFromState(state)); } @Override public int damageDropped(IBlockState state) { return getMetaFromState(state); } @Override public String getSpecialName(ItemStack stack) { return BlockMachine.MachineTier.fromMeta(stack.getItemDamage()).getName(); } public void updateMachineTier(World world, EntityPlayer player, EnumHand hand, BlockPos pos, ItemStack stack) { if (stack.getItem() == ModItems.chip) { BlockMachine.MachineTier newTier = BlockMachine.MachineTier.fromMeta(stack.getItemDamage()); BlockMachine.MachineTier currentType = (BlockMachine.MachineTier) world.getBlockState(pos).getValue(TIER); IBlockState newState = world.getBlockState(pos).withProperty(TIER, newTier); if (newTier.ordinal() > currentType.ordinal()) { world.setBlockState(pos, newState, 2); ItemStack newStack = stack.copy(); newStack.shrink(1); player.setHeldItem(hand, newStack); if (player.getHeldItem(hand).getCount() <= 0) player.setHeldItem(hand, ItemStack.EMPTY); } } } public static enum MachineTier implements IStringSerializable { BASIC("basic"), INTERMEDIATE("intermediate"), ADVANCED("advanced"); private String name; private MachineTier(String name) { this.name = name; } @Override public String getName() { return this.name; } @Override public String toString() { return getName(); } public static MachineTier fromMeta(int meta) { return values()[meta % values().length]; } } } IndustrialTechModelLoader: package cjminecraft.industrialtech.client.model; import cjminecraft.industrialtech.Reference; import net.minecraft.client.resources.IResourceManager; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.ICustomModelLoader; import net.minecraftforge.client.model.IModel; import net.minecraftforge.client.model.ModelLoaderRegistry; public class IndustrialTechModelLoader implements ICustomModelLoader { public final String SMART_MODEL_RESOURCE_LOCATION = "models/block/smartmodel/"; private IResourceManager resourceManager; @Override public void onResourceManagerReload(IResourceManager resourceManager) { this.resourceManager = resourceManager; } @Override public boolean accepts(ResourceLocation resourceLocation) { return resourceLocation.getResourceDomain().equals(Reference.MODID) && resourceLocation.getResourcePath().startsWith(SMART_MODEL_RESOURCE_LOCATION); } @Override public IModel loadModel(ResourceLocation resourceLocation) throws Exception { String resourcePath = resourceLocation.getResourcePath(); if(!resourcePath.startsWith(SMART_MODEL_RESOURCE_LOCATION)) assert false : "loadModel expected " + SMART_MODEL_RESOURCE_LOCATION + " but found " + resourcePath; String modelName = resourcePath.substring(SMART_MODEL_RESOURCE_LOCATION.length()); if(modelName.contains("machine")) return new MachineModel(); else return ModelLoaderRegistry.getMissingModel(); } } MachineModel: package cjminecraft.industrialtech.client.model; import java.util.Collection; import com.google.common.base.Function; import com.google.common.collect.ImmutableList; import cjminecraft.industrialtech.IndustrialTech; import cjminecraft.industrialtech.Reference; import net.minecraft.client.renderer.block.model.IBakedModel; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.IModel; import net.minecraftforge.client.model.ModelLoaderRegistry; import net.minecraftforge.common.model.IModelState; public class MachineModel implements IModel { public static final ResourceLocation TEXTURE_SHEET = new ResourceLocation(Reference.MODID, "blocks/machine_core"); public static final ModelResourceLocation MODEL_CORE = new ModelResourceLocation(Reference.MODID + ":machine_core"); public static final ModelResourceLocation MODEL_BORDER = new ModelResourceLocation(Reference.MODID + ":machine_border"); @Override public Collection<ResourceLocation> getDependencies() { return ImmutableList.copyOf(new ResourceLocation[] { MODEL_CORE, MODEL_BORDER }); } @Override public Collection<ResourceLocation> getTextures() { return ImmutableList.copyOf(new ResourceLocation[] { TEXTURE_SHEET }); } @Override public IBakedModel bake(IModelState state, VertexFormat format, Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter) { try { IModel subComponent = ModelLoaderRegistry.getModel(MODEL_CORE); IBakedModel bakedModelCore = subComponent.bake(state, format, bakedTextureGetter); subComponent = ModelLoaderRegistry.getModel(MODEL_BORDER); IBakedModel bakedModelBorder = subComponent.bake(state, format, bakedTextureGetter); return new MachineCompositeModel(bakedModelCore, bakedModelBorder); } catch (Exception exception) { return ModelLoaderRegistry.getMissingModel().bake(state, format, bakedTextureGetter); } } @Override public IModelState getDefaultState() { return null; } } MachineCompositeModel: package cjminecraft.industrialtech.client.model; import java.util.LinkedList; import java.util.List; import javax.vecmath.Matrix4f; import org.apache.commons.lang3.tuple.Pair; import cjminecraft.industrialtech.IndustrialTech; import cjminecraft.industrialtech.Reference; import cjminecraft.industrialtech.blocks.BlockMachine; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.block.model.IBakedModel; import net.minecraft.client.renderer.block.model.ItemCameraTransforms; import net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformType; import net.minecraft.client.renderer.block.model.ItemOverrideList; import net.minecraft.client.renderer.block.model.ItemTransformVec3f; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.util.EnumFacing; import net.minecraftforge.client.model.IPerspectiveAwareModel; import net.minecraftforge.common.model.TRSRTransformation; import net.minecraftforge.common.property.IExtendedBlockState; import net.minecraftforge.common.property.IUnlistedProperty; public class MachineCompositeModel implements IPerspectiveAwareModel { private IBakedModel modelCore; private IBakedModel modelBorder; public MachineCompositeModel(IBakedModel modelCore, IBakedModel modelBorder) { this.modelCore = modelCore; this.modelBorder = modelBorder; } @Override public List<BakedQuad> getQuads(IBlockState state, EnumFacing side, long rand) { List<BakedQuad> quadsList = new LinkedList<BakedQuad>(); quadsList.addAll(modelCore.getQuads(state, side, rand)); if (!(state instanceof IExtendedBlockState)) return quadsList; IExtendedBlockState extendedBlockState = (IExtendedBlockState) state; return quadsList; } @Override public boolean isAmbientOcclusion() { return modelCore.isAmbientOcclusion(); } @Override public boolean isGui3d() { return modelCore.isGui3d(); } @Override public boolean isBuiltInRenderer() { return modelCore.isBuiltInRenderer(); } @Override public TextureAtlasSprite getParticleTexture() { return Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(Reference.MODID + ":blocks/machine_core"); } @Override public ItemCameraTransforms getItemCameraTransforms() { return modelCore.getItemCameraTransforms(); } @Override public ItemOverrideList getOverrides() { return null; } @Override public Pair<? extends IBakedModel, Matrix4f> handlePerspective(TransformType cameraTransformType) { if (modelCore instanceof IPerspectiveAwareModel) { Matrix4f matrix4f = ((IPerspectiveAwareModel) modelCore).handlePerspective(cameraTransformType).getRight(); return Pair.of(this, matrix4f); } else { ItemCameraTransforms itemCameraTransforms = modelCore.getItemCameraTransforms(); ItemTransformVec3f itemTransformVec3f = itemCameraTransforms.getTransform(cameraTransformType); TRSRTransformation tr = new TRSRTransformation(itemTransformVec3f); Matrix4f mat = null; if (tr != null) { mat = tr.getMatrix(); } return Pair.of(this, mat); } } private boolean isLinkPresent(IExtendedBlockState iExtendedBlockState, IUnlistedProperty<Boolean> whichLink) { Boolean link = iExtendedBlockState.getValue(whichLink); if (link == null) { return false; } return link; } } Blockstates are attached! Thanks in advance! machine_frame.json machine_core.json machine_border.json
  20. Adding the powered tag to the blockstate fixed everything. Here is what it looks like: { "variants": { "facing=south,in_wall=false,open=false,powered=false": { "model": "boe:tin_fence_gate_closed", "uvlock": true }, "facing=west,in_wall=false,open=false,powered=false": { "model": "boe:tin_fence_gate_closed", "uvlock": true, "y": 90 }, "facing=north,in_wall=false,open=false,powered=false": { "model": "boe:tin_fence_gate_closed", "uvlock": true, "y": 180 }, "facing=east,in_wall=false,open=false,powered=false": { "model": "boe:tin_fence_gate_closed", "uvlock": true, "y": 270 }, "facing=south,in_wall=false,open=true,powered=false": { "model": "boe:tin_fence_gate_open", "uvlock": true }, "facing=west,in_wall=false,open=true,powered=false": { "model": "boe:tin_fence_gate_open", "uvlock": true, "y": 90 }, "facing=north,in_wall=false,open=true,powered=false": { "model": "boe:tin_fence_gate_open", "uvlock": true, "y": 180 }, "facing=east,in_wall=false,open=true,powered=false": { "model": "boe:tin_fence_gate_open", "uvlock": true, "y": 270 }, "facing=south,in_wall=true,open=false,powered=false": { "model": "boe:tin_wall_gate_closed", "uvlock": true }, "facing=west,in_wall=true,open=false,powered=false": { "model": "boe:tin_wall_gate_closed", "uvlock": true, "y": 90 }, "facing=north,in_wall=true,open=false,powered=false": { "model": "boe:tin_wall_gate_closed", "uvlock": true, "y": 180 }, "facing=east,in_wall=true,open=false,powered=false": { "model": "boe:tin_wall_gate_closed", "uvlock": true, "y": 270 }, "facing=south,in_wall=true,open=true,powered=false": { "model": "boe:tin_wall_gate_open", "uvlock": true }, "facing=west,in_wall=true,open=true,powered=false": { "model": "boe:tin_wall_gate_open", "uvlock": true, "y": 90 }, "facing=north,in_wall=true,open=true,powered=false": { "model": "boe:tin_wall_gate_open", "uvlock": true, "y": 180 }, "facing=east,in_wall=true,open=true,powered=false": { "model": "boe:tin_wall_gate_open", "uvlock": true, "y": 270 }, "facing=south,in_wall=false,open=false,powered=true": { "model": "boe:tin_fence_gate_closed", "uvlock": true }, "facing=west,in_wall=false,open=false,powered=true": { "model": "boe:tin_fence_gate_closed", "uvlock": true, "y": 90 }, "facing=north,in_wall=false,open=false,powered=true": { "model": "boe:tin_fence_gate_closed", "uvlock": true, "y": 180 }, "facing=east,in_wall=false,open=false,powered=true": { "model": "boe:tin_fence_gate_closed", "uvlock": true, "y": 270 }, "facing=south,in_wall=false,open=true,powered=true": { "model": "boe:tin_fence_gate_open", "uvlock": true }, "facing=west,in_wall=false,open=true,powered=true": { "model": "boe:tin_fence_gate_open", "uvlock": true, "y": 90 }, "facing=north,in_wall=false,open=true,powered=true": { "model": "boe:tin_fence_gate_open", "uvlock": true, "y": 180 }, "facing=east,in_wall=false,open=true,powered=true": { "model": "boe:tin_fence_gate_open", "uvlock": true, "y": 270 }, "facing=south,in_wall=true,open=false,powered=true": { "model": "boe:tin_wall_gate_closed", "uvlock": true }, "facing=west,in_wall=true,open=false,powered=true": { "model": "boe:tin_wall_gate_closed", "uvlock": true, "y": 90 }, "facing=north,in_wall=true,open=false,powered=true": { "model": "boe:tin_wall_gate_closed", "uvlock": true, "y": 180 }, "facing=east,in_wall=true,open=false,powered=true": { "model": "boe:tin_wall_gate_closed", "uvlock": true, "y": 270 }, "facing=south,in_wall=true,open=true,powered=true": { "model": "boe:tin_wall_gate_open", "uvlock": true }, "facing=west,in_wall=true,open=true,powered=true": { "model": "boe:tin_wall_gate_open", "uvlock": true, "y": 90 }, "facing=north,in_wall=true,open=true,powered=true": { "model": "boe:tin_wall_gate_open", "uvlock": true, "y": 180 }, "facing=east,in_wall=true,open=true,powered=true": { "model": "boe:tin_wall_gate_open", "uvlock": true, "y": 270 } } } Thanks for all of the help!
  21. I presume it has something to do with the powered part then
  22. [15:05:08] [Client thread/ERROR] [FML]: Exception loading model for variant boe:tin_fence_gate#facing=west,in_wall=true,open=false,powered=true for blockstate "boe:tin_fence_gate[facing=west,in_wall=true,open=false,powered=true]" net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model boe:tin_fence_gate#facing=west,in_wall=true,open=false,powered=true with loader VariantLoader.INSTANCE, skipping at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?] at net.minecraftforge.client.model.ModelLoader.registerVariant(ModelLoader.java:260) ~[ModelLoader.class:?] at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:153) ~[ModelBakery.class:?] at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:248) ~[ModelLoader.class:?] at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:155) ~[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:122) [simpleReloadableResourceManager.class:?] at net.minecraft.client.Minecraft.init(Minecraft.java:541) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:387) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_111] 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_111] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_111] 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:78) ~[ModelBlockDefinition.class:?] at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1253) ~[ModelLoader$VariantLoader.class:?] at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?] ... 21 more [15:05:08] [Client thread/ERROR] [FML]: Exception loading model for variant boe:tin_fence_gate#facing=east,in_wall=false,open=true,powered=true for blockstate "boe:tin_fence_gate[facing=east,in_wall=false,open=true,powered=true]" net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model boe:tin_fence_gate#facing=east,in_wall=false,open=true,powered=true with loader VariantLoader.INSTANCE, skipping at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?] at net.minecraftforge.client.model.ModelLoader.registerVariant(ModelLoader.java:260) ~[ModelLoader.class:?] at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:153) ~[ModelBakery.class:?] at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:248) ~[ModelLoader.class:?] at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:155) ~[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:122) [simpleReloadableResourceManager.class:?] at net.minecraft.client.Minecraft.init(Minecraft.java:541) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:387) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_111] 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_111] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_111] 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:78) ~[ModelBlockDefinition.class:?] at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1253) ~[ModelLoader$VariantLoader.class:?] at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?] ... 21 more [15:05:08] [Client thread/ERROR] [FML]: Exception loading model for variant boe:tin_fence_gate#facing=north,in_wall=true,open=false,powered=false for blockstate "boe:tin_fence_gate[facing=north,in_wall=true,open=false,powered=false]" net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model boe:tin_fence_gate#facing=north,in_wall=true,open=false,powered=false with loader VariantLoader.INSTANCE, skipping at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?] at net.minecraftforge.client.model.ModelLoader.registerVariant(ModelLoader.java:260) ~[ModelLoader.class:?] at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:153) ~[ModelBakery.class:?] at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:248) ~[ModelLoader.class:?] at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:155) ~[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:122) [simpleReloadableResourceManager.class:?] at net.minecraft.client.Minecraft.init(Minecraft.java:541) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:387) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_111] 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_111] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_111] 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:78) ~[ModelBlockDefinition.class:?] at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1253) ~[ModelLoader$VariantLoader.class:?] at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?] ... 21 more [15:05:08] [Client thread/ERROR] [FML]: Exception loading model for variant boe:tin_fence_gate#facing=north,in_wall=true,open=false,powered=true for blockstate "boe:tin_fence_gate[facing=north,in_wall=true,open=false,powered=true]" net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model boe:tin_fence_gate#facing=north,in_wall=true,open=false,powered=true with loader VariantLoader.INSTANCE, skipping at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:153) ~[ModelLoaderRegistry.class:?] at net.minecraftforge.client.model.ModelLoader.registerVariant(ModelLoader.java:260) ~[ModelLoader.class:?] at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:153) ~[ModelBakery.class:?] at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:248) ~[ModelLoader.class:?] at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:155) ~[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:122) [simpleReloadableResourceManager.class:?] at net.minecraft.client.Minecraft.init(Minecraft.java:541) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:387) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_111] 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_111] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_111] 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:78) ~[ModelBlockDefinition.class:?] at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1253) ~[ModelLoader$VariantLoader.class:?] at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?] ... 21 more
×
×
  • Create New...

Important Information

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