Jump to content

[1.8] multiple property enum issue


UltraTechX

Recommended Posts

I have these 3 json files to tell my block how to work with the given states:

 

railControlBlock.json (blockstate):

 

{
"variants": {
"normal": { "model": "generic:railControlBlock" },
"part=middle,shape=north_south": { "model": "generic:railControlBlock" },
"shape=ascending_east": { "model": "generic:railControlBlock", "y": 90 },
"shape=ascending_west": { "model": "generic:railControlBlock", "y": 90 },
"shape=ascending_north": { "model": "generic:railControlBlock" },
"shape=ascending_south": { "model": "generic:railControlBlock" },
"part=middle,shape=east_west": { "model": "generic:railControlBlock", "y": 90 },
"part=middle,shape=south_east": { "model": "generic:railControlBlock" },
"part=middle,shape=south_west": { "model": "generic:railControlBlock", "y": 90 },
"part=middle,shape=north_west": { "model": "generic:railControlBlock", "y": 180 },
"part=middle,shape=north_east": { "model": "generic:railControlBlock", "y": 270 }
}
}

 

 

controlRail.json (block model):

 

{
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"textures": {
"particle": "generic:blocks/railControlBlock",
"0": "generic:blocks/railControlBlock"
},
"elements": [
{
"name": "rail bottom",
"from": [ 0.0, 0.0, 13.0 ], 
"to": [ 16.0, 1.0, 15.0 ], 
"faces": {
"north": { "texture": "#0", "uv": [ 11.0, 10.0, 12.0, 11.0 ] },
"east": { "texture": "#0", "uv": [ 11.0, 5.0, 13.0, 6.0 ] },
"south": { "texture": "#0", "uv": [ 12.0, 6.0, 13.0, 5.0 ] },
"west": { "texture": "#0", "uv": [ 13.0, 10.0, 11.0, 11.0 ] },
"up": { "texture": "#0", "uv": [ 11.0, 9.0, 13.0, 10.0 ] },
"down": { "texture": "#0", "uv": [ 11.0, 10.0, 13.0, 11.0 ] }
}
},
{
"name": "rail bottom",
"from": [ 0.0, 0.0, 9.0 ], 
"to": [ 16.0, 1.0, 11.0 ], 
"faces": {
"north": { "texture": "#0", "uv": [ 11.0, 10.0, 12.0, 11.0 ] },
"east": { "texture": "#0", "uv": [ 11.0, 5.0, 13.0, 6.0 ] },
"south": { "texture": "#0", "uv": [ 12.0, 6.0, 13.0, 5.0 ] },
"west": { "texture": "#0", "uv": [ 13.0, 10.0, 11.0, 11.0 ] },
"up": { "texture": "#0", "uv": [ 11.0, 9.0, 13.0, 10.0 ] },
"down": { "texture": "#0", "uv": [ 11.0, 10.0, 13.0, 11.0 ] }
}
},
{
"name": "rail bottom",
"from": [ 0.0, 0.0, 5.0 ], 
"to": [ 16.0, 1.0, 7.0 ], 
"faces": {
"north": { "texture": "#0", "uv": [ 11.0, 10.0, 12.0, 11.0 ] },
"east": { "texture": "#0", "uv": [ 11.0, 5.0, 13.0, 6.0 ] },
"south": { "texture": "#0", "uv": [ 12.0, 6.0, 13.0, 5.0 ] },
"west": { "texture": "#0", "uv": [ 13.0, 10.0, 11.0, 11.0 ] },
"up": { "texture": "#0", "uv": [ 11.0, 9.0, 13.0, 10.0 ] },
"down": { "texture": "#0", "uv": [ 11.0, 10.0, 13.0, 11.0 ] }
}
},
{
"name": "rail bottom",
"from": [ 0.0, 0.0, 1.0 ], 
"to": [ 16.0, 1.0, 3.0 ], 
"faces": {
"north": { "texture": "#0", "uv": [ 11.0, 10.0, 12.0, 11.0 ] },
"east": { "texture": "#0", "uv": [ 11.0, 5.0, 13.0, 6.0 ] },
"south": { "texture": "#0", "uv": [ 12.0, 6.0, 13.0, 5.0 ] },
"west": { "texture": "#0", "uv": [ 13.0, 10.0, 11.0, 11.0 ] },
"up": { "texture": "#0", "uv": [ 11.0, 9.0, 13.0, 10.0 ] },
"down": { "texture": "#0", "uv": [ 11.0, 10.0, 13.0, 11.0 ] }
}
},
{
"name": "Center Track",
"from": [ 6.0, 1.0, 0.0 ], 
"to": [ 10.0, 2.0, 16.0 ], 
"faces": {
"north": { "texture": "#0", "uv": [ 13.0, 6.0, 14.0, 7.0 ] },
"east": { "texture": "#0", "uv": [ 2.0, 8.0, 3.0, 9.0 ] },
"south": { "texture": "#0", "uv": [ 2.0, 8.0, 3.0, 9.0 ] },
"west": { "texture": "#0", "uv": [ 2.0, 5.0, 3.0, 6.0 ] },
"up": { "texture": "#0", "uv": [ 2.0, 0.0, 3.0, 16.0 ] },
"down": { "texture": "#0", "uv": [ 2.0, 0.0, 3.0, 16.0 ] }
}
}
]
}

 

 

controlRailBlock.json (block model pointer):

 

{
"parent": "generic:block/controlRail",
"textures": {
"rail": "generic:blocks/railControlBlock"
}
}

 

 

any help? Thanks!  ;D

I'm working on something big!  As long as there arent alot of big issues... [D

Link to comment
Share on other sites

In case this helps here is the block class (enum is in the class as well):

 

 

package tutorial.generic;

import net.minecraft.block.Block;
import net.minecraft.block.BlockRail;
import net.minecraft.block.BlockRailBase;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.BlockState;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.BlockPos;
import net.minecraft.util.IStringSerializable;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

public class railControlBlock extends BlockRail implements ITileEntityProvider {

public static final PropertyEnum SHAPE = PropertyEnum.create("shape", BlockRailBase.EnumRailDirection.class);
public static final PropertyEnum PART = PropertyEnum.create("part", EnumPartType.class);
private static String name = "railControlBlock";

    public railControlBlock() {
    	
        super();
        GameRegistry.registerTileEntity(railControl.class, name);
        setDefaultState(this.blockState.getBaseState().withProperty(SHAPE, BlockRailBase.EnumRailDirection.NORTH_SOUTH).withProperty(PART, EnumPartType.MIDDLE));
        GameRegistry.registerBlock(this, name);
        this.setCreativeTab(CreativeTabs.tabMisc);
        this.setUnlocalizedName(name);
        this.setHardness(2.0f);
        setBlockBounds();
        this.setResistance(6.0f);
        this.setHarvestLevel("pickaxe", 2);
        this.isBlockContainer = true;
        
    }
    
    @Override
    public String toString() {
        return getName();
    }
    
  

@Override
public TileEntity createNewTileEntity(World worldIn, int meta) {
	return new railControl();
}



public static String getName(){
    	return name;
    }


  
  @SideOnly(Side.CLIENT)
  public AxisAlignedBB getSelectedBoundingBox(World worldIn, BlockPos pos)
  {
    setBlockBoundsBasedOnState(worldIn, pos);
    return super.getSelectedBoundingBox(worldIn, pos);
  }

public IProperty getShapeProperty()
  {
    return SHAPE;
  }


  
  public IBlockState getStateFromMeta(int meta)
  {
    return getDefaultState().withProperty(SHAPE, BlockRailBase.EnumRailDirection.byMetadata(meta));
  }
  
  @Override
    public void setBlockBoundsBasedOnState(IBlockAccess worldIn, BlockPos pos)
    {
        
            setBlockBounds();
        
    }
  
  
  private void setBlockBounds()
  {
	  setBlockBounds(0F, 0.0F, 0F, 1F, 0.125F, 1F);
  }
  
  public int getMetaFromState(IBlockState state)
  {
    return ((BlockRailBase.EnumRailDirection)state.getValue(SHAPE)).getMetadata();
  }
  
  protected BlockState createBlockState()
  {
    return new BlockState(this, new IProperty[] { SHAPE, PART });
  }
  
  
  
  public boolean isOpaqueCube()
  {
  return false;
  }
  
  /**
  * If this block doesn't render as an ordinary block it will return False (examples: signs, buttons, stairs, etc)
  */

  public boolean renderAsNormalBlock()
  {
  return false;
  }

  public int getRenderBlockPass()
  {
  return 1;
  }
  
  protected void onNeighborChangedInternal(World worldIn, BlockPos pos, IBlockState state, Block neighborBlock)
  {
    //whenever the blocks around it change
  }
  
  public static enum EnumPartType
    implements IStringSerializable
  {
    MIDDLE("middle"),  LEFT("left"), RIGHT("right");
    
    private final String name;
    
    private EnumPartType(String name)
    {
      this.name = name;
    }
    
    public String toString()
    {
      return this.name;
    }
    
    public String getName()
    {
      return this.name;
    }
  }
  
}

I'm working on something big!  As long as there arent alot of big issues... [D

Link to comment
Share on other sites

There should be a huge section from FML explaining which texture(s) it couldn't find. Compare that with your .json files and texture path locations.

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

Link to comment
Share on other sites

ok, here is all of the missing blockstates:

 

[07:52:27] [Client thread/ERROR] [FML]: Model definition for location generic:railControlBlock#part=right,shape=north_south not found

[07:52:27] [Client thread/ERROR] [FML]: Model definition for location generic:railControlBlock#part=left,shape=ascending_west not found

[07:52:27] [Client thread/ERROR] [FML]: Model definition for location generic:railControlBlock#part=right,shape=north_east not found

[07:52:27] [Client thread/ERROR] [FML]: Model definition for location generic:railControlBlock#part=middle,shape=ascending_north not found

[07:52:27] [Client thread/ERROR] [FML]: Model definition for location generic:railControlBlock#part=right,shape=ascending_south not found

[07:52:27] [Client thread/ERROR] [FML]: Model definition for location generic:railControlBlock#part=left,shape=ascending_north not found

[07:52:27] [Client thread/ERROR] [FML]: Model definition for location generic:railControlBlock#part=left,shape=south_west not found

[07:52:27] [Client thread/ERROR] [FML]: Model definition for location generic:railControlBlock#part=right,shape=ascending_east not found

[07:52:27] [Client thread/ERROR] [FML]: Model definition for location generic:railControlBlock#part=left,shape=east_west not found

[07:52:27] [Client thread/ERROR] [FML]: Model definition for location generic:railControlBlock#part=left,shape=north_east not found

[07:52:27] [Client thread/ERROR] [FML]: Model definition for location generic:railControlBlock#part=right,shape=south_west not found

[07:52:27] [Client thread/ERROR] [FML]: Model definition for location generic:railControlBlock#part=right,shape=east_west not found

[07:52:27] [Client thread/ERROR] [FML]: Model definition for location generic:railControlBlock#part=middle,shape=ascending_west not found

[07:52:27] [Client thread/ERROR] [FML]: Model definition for location generic:railControlBlock#part=left,shape=ascending_south not found

[07:52:27] [Client thread/ERROR] [FML]: Model definition for location generic:railControlBlock#part=middle,shape=ascending_south not found

[07:52:27] [Client thread/ERROR] [FML]: Model definition for location generic:railControlBlock#part=right,shape=south_east not found

[07:52:27] [Client thread/ERROR] [FML]: Model definition for location generic:railControlBlock#part=right,shape=north_west not found

[07:52:27] [Client thread/ERROR] [FML]: Model definition for location generic:railControlBlock#part=right,shape=ascending_north not found

[07:52:27] [Client thread/ERROR] [FML]: Model definition for location generic:railControlBlock#part=left,shape=south_east not found

[07:52:27] [Client thread/ERROR] [FML]: Model definition for location generic:railControlBlock#part=left,shape=ascending_east not found

[07:52:27] [Client thread/ERROR] [FML]: Model definition for location generic:railControlBlock#part=left,shape=north_south not found

[07:52:27] [Client thread/ERROR] [FML]: Model definition for location generic:railControlBlock#part=right,shape=ascending_west not found

[07:52:27] [Client thread/ERROR] [FML]: Model definition for location generic:railControlBlock#part=middle,shape=ascending_east not found

[07:52:27] [Client thread/ERROR] [FML]: Model definition for location generic:railControlBlock#part=left,shape=north_west not found

 

 

 

 

 

here is the reason i think its not that some are missing, its because the following should be true:

 

"part=middle,shape=north_south": { "model": "generic:railControlBlock" },

 

because of these lines in the block code that are run in the constructor:

 

setDefaultState(this.blockState.getBaseState().withProperty(SHAPE, BlockRailBase.EnumRailDirection.NORTH_SOUTH).withProperty(PART, EnumPartType.MIDDLE));

I'm working on something big!  As long as there arent alot of big issues... [D

Link to comment
Share on other sites

I think you need to have the states in you blockstates file in the same order as you register them in.

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

Link to comment
Share on other sites

If the model's shape is working, it's an issue with the texture being invalid or missing. If the block is appearing as a cube, it's an issue with the model being invalid or missing. Which is it?

 

If you're using the vanilla blockstates format, you need to define the model for every possible combination of property values. The ones that are listed as missing are the ones you haven't defined a model for.

 

You can also use Forge's blockstates format, which lets you specify how each value affects the model instead of defining the model for every combination of values.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

something is different now, i added PART to everything that only had shape to get this code:

 

package tutorial.generic;

import net.minecraft.block.Block;
import net.minecraft.block.BlockRail;
import net.minecraft.block.BlockRailBase;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.BlockState;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.BlockPos;
import net.minecraft.util.IStringSerializable;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

public class railControlBlock extends BlockRail implements ITileEntityProvider {

public static final PropertyEnum PART = PropertyEnum.create("part", EnumPartType.class);
public static final PropertyEnum SHAPE = PropertyEnum.create("shape", BlockRailBase.EnumRailDirection.class);

private static String name = "railControlBlock";

    public railControlBlock(int pnum) {
    	
        super();
        GameRegistry.registerTileEntity(railControl.class, name);
        if(pnum == 0) {
        	setDefaultState(this.blockState.getBaseState().withProperty(PART, EnumPartType.MIDDLE).withProperty(SHAPE, BlockRailBase.EnumRailDirection.NORTH_SOUTH));
        }else if(pnum == 1){
        	setDefaultState(this.blockState.getBaseState().withProperty(PART, EnumPartType.LEFT).withProperty(SHAPE, BlockRailBase.EnumRailDirection.NORTH_SOUTH));
        }else if(pnum == 2){
        	setDefaultState(this.blockState.getBaseState().withProperty(PART, EnumPartType.RIGHT).withProperty(SHAPE, BlockRailBase.EnumRailDirection.NORTH_SOUTH));
        }
        
        GameRegistry.registerBlock(this, name);
        this.setCreativeTab(CreativeTabs.tabMisc);
        this.setUnlocalizedName(name);
        this.setHardness(2.0f);
        setBlockBounds();
        this.setResistance(6.0f);
        this.setHarvestLevel("pickaxe", 2);
        this.isBlockContainer = true;
        
    }
    
    @Override
    public String toString() {
        return getName();
    }
    
    
    
  

@Override
public TileEntity createNewTileEntity(World worldIn, int meta) {
	return new railControl();
}



public static String getName(){
    	return name;
    }


  
  @SideOnly(Side.CLIENT)
  public AxisAlignedBB getSelectedBoundingBox(World worldIn, BlockPos pos)
  {
    setBlockBoundsBasedOnState(worldIn, pos);
    return super.getSelectedBoundingBox(worldIn, pos);
  }

public IProperty getShapeProperty()
  {
    return SHAPE;
  }

public IProperty getPartProperty()
  {
    return PART;
  }


  
  public IBlockState getStateFromMeta(int meta)
  {
    return getDefaultState().withProperty(PART, EnumPartType.byMetadata(meta)).withProperty(SHAPE, BlockRailBase.EnumRailDirection.byMetadata(meta));
  }
  
  @Override
    public void setBlockBoundsBasedOnState(IBlockAccess worldIn, BlockPos pos)
    {
        
            setBlockBounds();
        
    }
  
  
  private void setBlockBounds()
  {
	  setBlockBounds(0F, 0.0F, 0F, 1F, 0.125F, 1F);
  }
  
  public int getMetaFromState(IBlockState state)
  {
    return ((EnumPartType)state.getValue(PART)).getMetadata();
  }
  
  protected BlockState createBlockState()
  {
    return new BlockState(this, new IProperty[] { PART, SHAPE });
  }
  
  
  
  public boolean isOpaqueCube()
  {
  return false;
  }
  
  /**
  * If this block doesn't render as an ordinary block it will return False (examples: signs, buttons, stairs, etc)
  */

  public boolean renderAsNormalBlock()
  {
  return false;
  }

  public int getRenderBlockPass()
  {
  return 1;
  }
  
  protected void onNeighborChangedInternal(World worldIn, BlockPos pos, IBlockState state, Block neighborBlock)
  {
    //whenever the blocks around it change
  }
  
  public static enum EnumPartType
    implements IStringSerializable
  {
    MIDDLE(0, "middle"),  
    LEFT(1, "left"), 
    RIGHT(2, "right");
	  
	private static final EnumPartType[] META_LOOKUP = new EnumPartType[values().length];

	private final int meta;
    
    private final String name;
    
    private EnumPartType(int meta, String name)
        {
            this.meta = meta;
            this.name = name;
        }

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

        public String toString()
        {
            return this.name;
        }
    public String getName()
    {
      return this.name;
    }
    
    public static EnumPartType byMetadata(int meta)
        {
            if (meta < 0 || meta >= META_LOOKUP.length)
            {
                meta = 0;
            }

            return META_LOOKUP[meta];
        }
    
    static
        {
            EnumPartType[] var0 = values();
            int var1 = var0.length;

            for (int var2 = 0; var2 < var1; ++var2)
            {
                EnumPartType var3 = var0[var2];
                META_LOOKUP[var3.getMetadata()] = var3;
            }
        }
  }
  
}

 

 

 

but here is what made it work:

 

i changed:

 

 public int getMetaFromState(IBlockState state)
  {
    return ((BlockRailBase.EnumRailDirection)state.getValue(SHAPE)).getMetadata();
  }

 

 

to:

 

 public int getMetaFromState(IBlockState state)
  {
    return ((EnumPartType)state.getValue(PART)).getMetadata();
  }

 

 

 

but now the block will not rotate anymore, how can I return both Blockstate's metadata?

I'm working on something big!  As long as there arent alot of big issues... [D

Link to comment
Share on other sites

If you have 3 block instances, you don't need to have this PART property registered at any point.

#getMetaFromState need to reflect #getStateFromMeta

Note you use EnumRailDirection states. There are 10 of those, and you probably don't want all of them.

Checkout those you don't need, like in BlockRailPowered.

 

Link to comment
Share on other sites

but now the block will not rotate anymore, how can I return both Blockstate's metadata?

 

To store multiple values in your metadata, you need to use bitwise operations to combine the values into a single integer.

 

The problem here is that metadata is restricted to 4 bits, but the 10 possible values of

EnumRailDirection

require 4 bits to store and the 3 possible values of

EnumPartType

require 2 bits to store. This means that you can't store both values in the metadata, you may need to store the

PART

property in your

TileEntity

instead. You can still have it as a property of the

BlockState

(and thus decide the model based on its value), just override

Block#getActualState

to return an

IBlockState

with the

PART

property's value retrieved from the

TileEntity

at the provided location.

 

Look at

BlockFlowerPot

for an example of an enum property stored in a

TileEntity

instead of the metadata.

 

Edit: I didn't realise you were using separate instances. Either use separate instances or store the

PART

property in the

TileEntity

. Like GotoLink said, there's no need to do both.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

it started crashing after i added this to the blocks main class:

 

 @Override
  public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos)
  /*     */   {
	  return state.withProperty(PART, this.part);
  }

 

i dont know whats wrong now.

I'm working on something big!  As long as there arent alot of big issues... [D

Link to comment
Share on other sites

I meant post the crash report, though having the code on Gist makes it a bit easier to read.

 

The exception type and stack trace should tell you what went wrong even if the message doesn't.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

ok then, here is the crash report:

 

[16:05:00] [Client thread/INFO] [sTDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:-1]: ---- Minecraft Crash Report ----
// Shall we play a game?

Time: 10/4/15 4:05 PM
Description: Unexpected error

java.lang.NullPointerException: Unexpected error
at net.minecraft.crash.CrashReportCategory.firstTwoElementsOfStackTraceMatch(Unknown Source)
at net.minecraft.crash.CrashReport.makeCategoryDepth(Unknown Source)
at net.minecraft.crash.CrashReport.makeCategory(Unknown Source)
at net.minecraft.world.World.playAuxSFXAtEntity(Unknown Source)
at net.minecraft.world.World.playAuxSFX(Unknown Source)
at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerDestroyBlock(Unknown Source)
at net.minecraft.client.multiplayer.PlayerControllerMP.func_178891_a(Unknown Source)
at net.minecraft.client.multiplayer.PlayerControllerMP.func_180511_b(Unknown Source)
at net.minecraft.client.Minecraft.clickMouse(Unknown Source)
at net.minecraft.client.Minecraft.runTick(Unknown Source)
at net.minecraft.client.Minecraft.runGameLoop(Unknown Source)
at net.minecraft.client.Minecraft.run(Unknown Source)
at net.minecraft.client.main.Main.main(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
at GradleStart.main(Unknown Source)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Stacktrace:
at net.minecraft.crash.CrashReportCategory.firstTwoElementsOfStackTraceMatch(Unknown Source)
at net.minecraft.crash.CrashReport.makeCategoryDepth(Unknown Source)
at net.minecraft.crash.CrashReport.makeCategory(Unknown Source)
at net.minecraft.world.World.playAuxSFXAtEntity(Unknown Source)
at net.minecraft.world.World.playAuxSFX(Unknown Source)
at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerDestroyBlock(Unknown Source)
at net.minecraft.client.multiplayer.PlayerControllerMP.func_178891_a(Unknown Source)
at net.minecraft.client.multiplayer.PlayerControllerMP.func_180511_b(Unknown Source)
at net.minecraft.client.Minecraft.clickMouse(Unknown Source)

-- Affected level --
Details:
Level name: MpServer
All players: 1 total; [EntityPlayerSP['Player640'/0, l='MpServer', x=-587.43, y=56.00, z=-574.99]]
Chunk stats: MultiplayerChunkCache: 599, 599
Level seed: 0
Level generator: ID 01 - flat, ver 0. Features enabled: false
Level generator options: 
Level spawn location: -586.00,4.00,-567.00 - World: (-586,4,-567), Chunk: (at 6,0,9 in -37,-36; contains blocks -592,0,-576 to -577,255,-561), Region: (-2,-2; contains chunks -64,-64 to -33,-33, blocks -1024,0,-1024 to -513,255,-513)
Level time: 15612 game time, 15468 day time
Level dimension: 0
Level storage version: 0x00000 - Unknown?
Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
Forced entities: 1 total; [EntityPlayerSP['Player640'/0, l='MpServer', x=-587.43, y=56.00, z=-574.99]]
Retry entities: 0 total; []
Server brand: fml,forge
Server type: Integrated singleplayer server
Stacktrace:
at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(Unknown Source)
at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Unknown Source)
at net.minecraft.client.Minecraft.run(Unknown Source)
at net.minecraft.client.main.Main.main(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
at GradleStart.main(Unknown Source)

-- System Details --
Details:
Minecraft Version: 1.8
Operating System: Windows 8.1 (amd64) version 6.3
Java Version: 1.7.0_79, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 783627456 bytes (747 MB) / 1037959168 bytes (989 MB) up to 1037959168 bytes (989 MB)
JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
FML: MCP v9.10 FML v8.0.99.99 Minecraft Forge 11.14.3.1519 4 mods loaded, 4 mods active
States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
UCHIJAAAA	mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) 
UCHIJAAAA	FML{8.0.99.99} [Forge Mod Loader] (forgeSrc-1.8-11.14.3.1519.jar) 
UCHIJAAAA	Forge{11.14.3.1519} [Minecraft Forge] (forgeSrc-1.8-11.14.3.1519.jar) 
UCHIJAAAA	generic{0.0.0} [Generic Mod] (bin) 
Loaded coremods (and transformers): 
GL info: ' Vendor: 'ATI Technologies Inc.' Version: '4.5.13399 Compatibility Profile Context 15.200.1062.1004' Renderer: 'AMD Radeon HD 7800 Series'
Launched Version: 1.8
LWJGL: 2.9.1
OpenGL: AMD Radeon HD 7800 Series GL version 4.5.13399 Compatibility Profile Context 15.200.1062.1004, ATI Technologies Inc.
GL Caps: Using GL 1.3 multitexturing.
Using GL 1.3 texture combiners.
Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
Shaders are available because OpenGL 2.1 is supported.
VBOs are available because OpenGL 1.5 is supported.

Using VBOs: No
Is Modded: Definitely; Client brand changed to 'fml,forge'
Type: Client (map_client.txt)
Resource Packs: []
Current Language: English (US)
Profiler Position: N/A (disabled)

I'm working on something big!  As long as there arent alot of big issues... [D

Link to comment
Share on other sites

RenderGlobal#playAusSFX

(called from

World#playAuxSFXAtEntity

) is throwing an exception, but a

NullPointerException

was thrown while generating the crash report.

 

Put a breakpoint in the

catch

block of

World#playAuxSFXAtEntity

and run Minecraft in debug mode. When it hits the breakpoint, the

throwable

variable will contain the exception that was thrown.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

RenderGlobal#playAusSFX

(called from

World#playAuxSFXAtEntity

) is throwing an exception, but a

NullPointerException

was thrown while generating the crash report.

 

Put a breakpoint in the

catch

block of

World#playAuxSFXAtEntity

and run Minecraft in debug mode. When it hits the breakpoint, the

throwable

variable will contain the exception that was thrown.

 

 

i dont use any SFX yet in the game, so I don't think that is the case

I'm working on something big!  As long as there arent alot of big issues... [D

Link to comment
Share on other sites

This is a bug with ForgeGradle actually because the code does not have line numbers.

Change to the "bleeding edge" version in your build.gradle. Then run gradlew clean cleanCache and then gradlew setupDecompWorkspace again to fix it.

 

whats the "bleeding edge" version of gradle and where can I find it?

I'm working on something big!  As long as there arent alot of big issues... [D

Link to comment
Share on other sites

i dont use any SFX yet in the game, so I don't think that is the case

 

If you look at the stacktrace, it's being called from

PlayerControllerMP#onPlayerDestroyBlock

; so it's likely the block's breaking sound that's causing the issue.

 

Updating ForgeGradle or following my previous debugging instructions should provide further information as to what the issue is.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

It's all explained in the build.gradle.

 

you were right!  Now the error changed to the line that i put in my block's class:

 

Cannot set property PropertyEnum{name=part, clazz=class tutorial.generic.railControlBlock$EnumPartType, values=[middle, left, right]} to 0 on block generic:railControlBlock, it is not an allowed value

 

 

here is the function that breaks it:

 

@Override

  public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos){

  return state.withProperty(PART, this.part);

  }

I'm working on something big!  As long as there arent alot of big issues... [D

Link to comment
Share on other sites

you were right!  Now the error changed to the line that i put in my block's class:

 

Cannot set property PropertyEnum{name=part, clazz=class tutorial.generic.railControlBlock$EnumPartType, values=[middle, left, right]} to 0 on block generic:railControlBlock, it is not an allowed value

 

 

here is the function that breaks it:

 

@Override

  public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos){

  return state.withProperty(PART, this.part);

  }

 

PART

is a

PropertyEnum

of

EnumPartType

, but you're trying to assign an

int

value to it (

this.part

).

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

Join the conversation

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

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

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

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

×   Your previous content has been restored.   Clear editor

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

×
×
  • Create New...

Important Information

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