Minecraft 找不到 blockstate 的状态
Minecraft doesn't find blockstate's state
我正在制作 mod 并创建了一个小屋。它是一个带有库存和图形用户界面的图块实体。我也做了一个自定义渲染。然后我想让它转向玩家面对的方向。 Cabin.java 的代码如下所示:
package aidas.morestuff.blocks;
import java.util.Iterator;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyDirection;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.InventoryHelper;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityChest;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.MathHelper;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import aidas.morestuff.Main;
import aidas.morestuff.network.MGuiHandler;
import aidas.morestuff.tileentity.CabinTileEntity;
public class Cabin extends BlockContainer
{
public static final PropertyDirection FACING = PropertyDirection.create("facing", EnumFacing.Plane.HORIZONTAL);
public Cabin(String uName)
{
super(Material.iron);
this.setUnlocalizedName(uName);
this.setHardness(2.0f);
this.setResistance(6.0f);
this.setHarvestLevel("pickaxe", 2);
}
@Override
public TileEntity createNewTileEntity(World worldIn, int meta)
{
return new CabinTileEntity();
}
@Override
public int getRenderType()
{
return 2;
}
@Override
public void breakBlock(World world, BlockPos pos, IBlockState blockstate) {
CabinTileEntity te = (CabinTileEntity) world.getTileEntity(pos);
InventoryHelper.dropInventoryItems(world, pos, te);
super.breakBlock(world, pos, blockstate);
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {
player.openGui(Main.instance, MGuiHandler.MOD_TILE_ENTITY_GUI, world, pos.getX(), pos.getY(), pos.getZ());
}
return true;
}
public IBlockState onBlockPlaced(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer)
{
return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing());
}
public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack)
{
EnumFacing enumfacing = EnumFacing.getHorizontal(MathHelper.floor_double((double)(placer.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3).getOpposite();
state = state.withProperty(FACING, enumfacing);
BlockPos blockpos1 = pos.north();
BlockPos blockpos2 = pos.south();
BlockPos blockpos3 = pos.west();
BlockPos blockpos4 = pos.east();
boolean flag = this == worldIn.getBlockState(blockpos1).getBlock();
boolean flag1 = this == worldIn.getBlockState(blockpos2).getBlock();
boolean flag2 = this == worldIn.getBlockState(blockpos3).getBlock();
boolean flag3 = this == worldIn.getBlockState(blockpos4).getBlock();
if (!flag && !flag1 && !flag2 && !flag3)
{
worldIn.setBlockState(pos, state, 3);
}
else if (enumfacing.getAxis() == EnumFacing.Axis.X && (flag || flag1))
{
if (flag)
{
worldIn.setBlockState(blockpos1, state, 3);
}
else
{
worldIn.setBlockState(blockpos2, state, 3);
}
worldIn.setBlockState(pos, state, 3);
}
else if (enumfacing.getAxis() == EnumFacing.Axis.Z && (flag2 || flag3))
{
if (flag2)
{
worldIn.setBlockState(blockpos3, state, 3);
}
else
{
worldIn.setBlockState(blockpos4, state, 3);
}
worldIn.setBlockState(pos, state, 3);
}
if (stack.hasDisplayName())
{
TileEntity tileentity = worldIn.getTileEntity(pos);
if (tileentity instanceof TileEntityChest)
{
((TileEntityChest)tileentity).setCustomName(stack.getDisplayName());
}
}
}
public void setBlockBoundsBasedOnState(IBlockAccess worldIn, BlockPos pos)
{
if (worldIn.getBlockState(pos.north()).getBlock() == this)
{
this.setBlockBounds(0.0625F, 0.0F, 0.0F, 0.9375F, 0.875F, 0.9375F);
}
else if (worldIn.getBlockState(pos.south()).getBlock() == this)
{
this.setBlockBounds(0.0625F, 0.0F, 0.0625F, 0.9375F, 0.875F, 1.0F);
}
else if (worldIn.getBlockState(pos.west()).getBlock() == this)
{
this.setBlockBounds(0.0F, 0.0F, 0.0625F, 0.9375F, 0.875F, 0.9375F);
}
else if (worldIn.getBlockState(pos.east()).getBlock() == this)
{
this.setBlockBounds(0.0625F, 0.0F, 0.0625F, 1.0F, 0.875F, 0.9375F);
}
else
{
this.setBlockBounds(0.0625F, 0.0F, 0.0625F, 0.9375F, 0.875F, 0.9375F);
}
}
public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state)
{
Iterator iterator = EnumFacing.Plane.HORIZONTAL.iterator();
while (iterator.hasNext())
{
EnumFacing enumfacing = (EnumFacing)iterator.next();
BlockPos blockpos1 = pos.offset(enumfacing);
IBlockState iblockstate1 = worldIn.getBlockState(blockpos1);
}
}
public IBlockState checkForSurroundingChests(World worldIn, BlockPos pos, IBlockState state)
{
if (worldIn.isRemote)
{
return state;
}
else
{
IBlockState iblockstate1 = worldIn.getBlockState(pos.north());
IBlockState iblockstate2 = worldIn.getBlockState(pos.south());
IBlockState iblockstate3 = worldIn.getBlockState(pos.west());
IBlockState iblockstate4 = worldIn.getBlockState(pos.east());
EnumFacing enumfacing = (EnumFacing)state.getValue(FACING);
Block block = iblockstate1.getBlock();
Block block1 = iblockstate2.getBlock();
Block block2 = iblockstate3.getBlock();
Block block3 = iblockstate4.getBlock();
if (block != this && block1 != this)
{
boolean flag = block.isFullBlock();
boolean flag1 = block1.isFullBlock();
if (block2 == this || block3 == this)
{
BlockPos blockpos2 = block2 == this ? pos.west() : pos.east();
IBlockState iblockstate7 = worldIn.getBlockState(blockpos2.north());
IBlockState iblockstate8 = worldIn.getBlockState(blockpos2.south());
enumfacing = EnumFacing.SOUTH;
EnumFacing enumfacing2;
if (block2 == this)
{
enumfacing2 = (EnumFacing)iblockstate3.getValue(FACING);
}
else
{
enumfacing2 = (EnumFacing)iblockstate4.getValue(FACING);
}
if (enumfacing2 == EnumFacing.NORTH)
{
enumfacing = EnumFacing.NORTH;
}
Block block6 = iblockstate7.getBlock();
Block block7 = iblockstate8.getBlock();
if ((flag || block6.isFullBlock()) && !flag1 && !block7.isFullBlock())
{
enumfacing = EnumFacing.SOUTH;
}
if ((flag1 || block7.isFullBlock()) && !flag && !block6.isFullBlock())
{
enumfacing = EnumFacing.NORTH;
}
}
}
else
{
BlockPos blockpos1 = block == this ? pos.north() : pos.south();
IBlockState iblockstate5 = worldIn.getBlockState(blockpos1.west());
IBlockState iblockstate6 = worldIn.getBlockState(blockpos1.east());
enumfacing = EnumFacing.EAST;
EnumFacing enumfacing1;
if (block == this)
{
enumfacing1 = (EnumFacing)iblockstate1.getValue(FACING);
}
else
{
enumfacing1 = (EnumFacing)iblockstate2.getValue(FACING);
}
if (enumfacing1 == EnumFacing.WEST)
{
enumfacing = EnumFacing.WEST;
}
Block block4 = iblockstate5.getBlock();
Block block5 = iblockstate6.getBlock();
if ((block2.isFullBlock() || block4.isFullBlock()) && !block3.isFullBlock() && !block5.isFullBlock())
{
enumfacing = EnumFacing.EAST;
}
if ((block3.isFullBlock() || block5.isFullBlock()) && !block2.isFullBlock() && !block4.isFullBlock())
{
enumfacing = EnumFacing.WEST;
}
}
state = state.withProperty(FACING, enumfacing);
worldIn.setBlockState(pos, state, 3);
return state;
}
}
public IBlockState correctFacing(World worldIn, BlockPos pos, IBlockState state)
{
EnumFacing enumfacing = null;
Iterator iterator = EnumFacing.Plane.HORIZONTAL.iterator();
while (iterator.hasNext())
{
EnumFacing enumfacing1 = (EnumFacing)iterator.next();
IBlockState iblockstate1 = worldIn.getBlockState(pos.offset(enumfacing1));
if (iblockstate1.getBlock() == this)
{
return state;
}
if (iblockstate1.getBlock().isFullBlock())
{
if (enumfacing != null)
{
enumfacing = null;
break;
}
enumfacing = enumfacing1;
}
}
if (enumfacing != null)
{
return state.withProperty(FACING, enumfacing.getOpposite());
}
else
{
EnumFacing enumfacing2 = (EnumFacing)state.getValue(FACING);
if (worldIn.getBlockState(pos.offset(enumfacing2)).getBlock().isFullBlock())
{
enumfacing2 = enumfacing2.getOpposite();
}
if (worldIn.getBlockState(pos.offset(enumfacing2)).getBlock().isFullBlock())
{
enumfacing2 = enumfacing2.rotateY();
}
if (worldIn.getBlockState(pos.offset(enumfacing2)).getBlock().isFullBlock())
{
enumfacing2 = enumfacing2.getOpposite();
}
return state.withProperty(FACING, enumfacing2);
}
}
}
当我把小屋放下时,游戏崩溃了。
这是崩溃报告:
---- Minecraft Crash Report ----
// I just don't know what went wrong :(
Time: 1/8/16 2:12 PM
Description: Unexpected error
java.lang.IllegalArgumentException: Cannot set property PropertyDirection{name=facing, clazz=class net.minecraft.util.EnumFacing, values=[north, south, west, east]} as it does not exist in BlockState{block=ms:cabin, properties=[]}
at net.minecraft.block.state.BlockState$StateImplementation.withProperty(BlockState.java:189)
at aidas.morestuff.blocks.Cabin.onBlockPlaced(Cabin.java:68)
at net.minecraft.item.ItemBlock.onItemUse(ItemBlock.java:73)
at net.minecraft.item.ItemStack.onItemUse(ItemStack.java:147)
at net.minecraft.client.multiplayer.PlayerControllerMP.func_178890_a(PlayerControllerMP.java:442)
at net.minecraft.client.Minecraft.rightClickMouse(Minecraft.java:1571)
at net.minecraft.client.Minecraft.runTick(Minecraft.java:2131)
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1087)
at net.minecraft.client.Minecraft.run(Minecraft.java:376)
at net.minecraft.client.main.Main.main(Main.java:117)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
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(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
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.block.state.BlockState$StateImplementation.withProperty(BlockState.java:189)
at aidas.morestuff.blocks.Cabin.onBlockPlaced(Cabin.java:68)
at net.minecraft.item.ItemBlock.onItemUse(ItemBlock.java:73)
at net.minecraft.item.ItemStack.onItemUse(ItemStack.java:147)
at net.minecraft.client.multiplayer.PlayerControllerMP.func_178890_a(PlayerControllerMP.java:442)
at net.minecraft.client.Minecraft.rightClickMouse(Minecraft.java:1571)
-- Affected level --
Details:
Level name: MpServer
All players: 1 total; [EntityPlayerSP['Player688'/351, l='MpServer', x=187.67, y=63.00, z=289.42]]
Chunk stats: MultiplayerChunkCache: 624, 624
Level seed: 0
Level generator: ID 00 - default, ver 1. Features enabled: false
Level generator options:
Level spawn location: 164.00,64.00,256.00 - World: (164,64,256), Chunk: (at 4,4,0 in 10,16; contains blocks 160,0,256 to 175,255,271), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
Level time: 40812 game time, 32306 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: 111 total; [EntityCreeper['Creeper'/262, l='MpServer', x=230.31, y=22.00, z=213.78], EntitySheep['Sheep'/263, l='MpServer', x=225.94, y=65.00, z=216.97], EntitySkeleton['Skeleton'/264, l='MpServer', x=224.16, y=41.00, z=231.28], EntitySkeleton['Skeleton'/265, l='MpServer', x=227.69, y=42.00, z=234.75], EntityZombie['Zombie'/266, l='MpServer', x=224.25, y=42.00, z=228.19], EntitySquid['Squid'/267, l='MpServer', x=241.50, y=54.91, z=241.78], EntitySquid['Squid'/268, l='MpServer', x=234.31, y=56.84, z=256.06], EntityCreeper['Creeper'/269, l='MpServer', x=227.50, y=46.00, z=284.50], EntityBat['Bat'/270, l='MpServer', x=235.11, y=34.07, z=290.06], EntityZombie['Zombie'/271, l='MpServer', x=234.69, y=34.35, z=289.28], EntitySquid['Squid'/272, l='MpServer', x=238.31, y=57.97, z=294.47], EntityBat['Bat'/273, l='MpServer', x=231.22, y=37.02, z=310.35], EntityBat['Bat'/279, l='MpServer', x=248.45, y=26.03, z=221.48], EntityCreeper['Creeper'/280, l='MpServer', x=249.50, y=26.15, z=221.60], EntityZombie['Zombie'/281, l='MpServer', x=244.53, y=27.00, z=220.94], EntityZombie['Zombie'/282, l='MpServer', x=250.47, y=28.00, z=221.94], EntitySkeleton['Skeleton'/283, l='MpServer', x=252.50, y=29.00, z=211.50], EntityBat['Bat'/284, l='MpServer', x=244.64, y=27.72, z=220.45], EntityCreeper['Creeper'/285, l='MpServer', x=251.31, y=28.00, z=235.69], EntityBat['Bat'/286, l='MpServer', x=249.47, y=29.25, z=237.53], EntityZombie['Zombie'/287, l='MpServer', x=247.50, y=27.00, z=245.06], EntitySquid['Squid'/288, l='MpServer', x=246.06, y=53.50, z=247.75], EntityZombie['Zombie'/289, l='MpServer', x=240.41, y=37.00, z=283.03], EntityZombie['Zombie'/290, l='MpServer', x=244.94, y=28.00, z=299.47], EntityBat['Bat'/291, l='MpServer', x=247.63, y=33.10, z=302.75], EntityCreeper['Creeper'/292, l='MpServer', x=246.91, y=19.00, z=349.63], EntitySpider['Spider'/293, l='MpServer', x=247.28, y=24.00, z=362.28], EntityZombie['Zombie'/302, l='MpServer', x=254.59, y=31.00, z=344.00], EntityRabbit['Rabbit'/105, l='MpServer', x=111.38, y=70.00, z=287.16], EntitySheep['Sheep'/113, l='MpServer', x=109.69, y=67.00, z=329.75], EntityRabbit['Rabbit'/114, l='MpServer', x=114.52, y=67.27, z=331.05], EntityPlayerSP['Player688'/351, l='MpServer', x=187.67, y=63.00, z=289.42], EntitySheep['Sheep'/124, l='MpServer', x=123.84, y=67.00, z=242.03], EntitySheep['Sheep'/125, l='MpServer', x=128.05, y=70.00, z=255.53], EntitySheep['Sheep'/126, l='MpServer', x=114.72, y=70.00, z=291.50], EntitySheep['Sheep'/127, l='MpServer', x=114.16, y=69.00, z=310.06], EntitySheep['Sheep'/128, l='MpServer', x=127.24, y=68.00, z=308.03], EntitySheep['Sheep'/129, l='MpServer', x=115.25, y=67.00, z=317.63], EntitySheep['Sheep'/130, l='MpServer', x=112.08, y=67.00, z=326.00], EntitySheep['Sheep'/131, l='MpServer', x=127.13, y=67.00, z=320.13], EntitySheep['Sheep'/132, l='MpServer', x=118.94, y=67.00, z=330.97], EntityRabbit['Rabbit'/133, l='MpServer', x=116.06, y=68.00, z=333.94], EntitySheep['Sheep'/134, l='MpServer', x=121.81, y=63.00, z=350.69], EntitySheep['Sheep'/135, l='MpServer', x=114.88, y=69.00, z=355.44], EntitySheep['Sheep'/146, l='MpServer', x=130.84, y=65.00, z=218.81], EntitySheep['Sheep'/147, l='MpServer', x=135.06, y=65.00, z=218.66], EntityZombie['Zombie'/148, l='MpServer', x=135.50, y=47.00, z=231.50], EntityCreeper['Creeper'/149, l='MpServer', x=134.50, y=47.00, z=233.50], EntityCreeper['Creeper'/150, l='MpServer', x=134.50, y=47.00, z=232.50], EntitySheep['Sheep'/151, l='MpServer', x=139.34, y=71.00, z=279.19], EntitySheep['Sheep'/152, l='MpServer', x=129.50, y=72.00, z=285.84], EntitySheep['Sheep'/153, l='MpServer', x=141.88, y=70.00, z=281.19], EntitySheep['Sheep'/154, l='MpServer', x=131.53, y=71.00, z=303.63], EntityRabbit['Rabbit'/155, l='MpServer', x=136.88, y=71.00, z=315.38], EntityRabbit['Rabbit'/156, l='MpServer', x=139.84, y=70.00, z=327.44], EntitySheep['Sheep'/157, l='MpServer', x=137.25, y=68.00, z=320.47], EntityZombie['Zombie'/165, l='MpServer', x=150.13, y=13.00, z=226.41], EntityZombie['Zombie'/166, l='MpServer', x=156.03, y=12.00, z=247.53], EntityBat['Bat'/167, l='MpServer', x=148.88, y=15.10, z=256.59], EntitySheep['Sheep'/168, l='MpServer', x=147.81, y=68.00, z=292.63], EntityRabbit['Rabbit'/169, l='MpServer', x=151.59, y=67.00, z=314.66], EntityRabbit['Rabbit'/170, l='MpServer', x=149.56, y=66.00, z=306.00], EntityRabbit['Rabbit'/171, l='MpServer', x=160.28, y=63.00, z=324.53], EntitySheep['Sheep'/172, l='MpServer', x=143.44, y=69.57, z=303.57], EntityZombie['Zombie'/178, l='MpServer', x=172.59, y=13.00, z=229.56], EntityZombie['Zombie'/179, l='MpServer', x=175.63, y=26.00, z=237.59], EntityZombie['Zombie'/180, l='MpServer', x=175.50, y=27.00, z=229.50], EntityZombie['Zombie'/181, l='MpServer', x=160.69, y=13.00, z=240.28], EntityEnderman['Enderman'/182, l='MpServer', x=174.81, y=13.00, z=282.28], EntityZombie['Zombie'/183, l='MpServer', x=173.44, y=15.00, z=279.03], EntityZombie['Zombie'/184, l='MpServer', x=157.56, y=19.00, z=313.77], EntitySpider['Spider'/185, l='MpServer', x=174.69, y=23.00, z=320.28], EntityRabbit['Rabbit'/186, l='MpServer', x=161.47, y=67.00, z=324.00], EntityZombie['Zombie'/194, l='MpServer', x=183.56, y=12.00, z=217.56], EntitySkeleton['Skeleton'/195, l='MpServer', x=175.64, y=12.37, z=282.53], EntityZombie['Zombie'/196, l='MpServer', x=189.19, y=11.00, z=296.19], EntityZombie['Zombie'/209, l='MpServer', x=195.93, y=34.00, z=230.28], EntityBat['Bat'/210, l='MpServer', x=205.47, y=34.10, z=232.16], EntityBat['Bat'/211, l='MpServer', x=204.53, y=35.10, z=228.25], EntityZombie['Zombie'/212, l='MpServer', x=196.53, y=34.00, z=232.25], EntitySkeleton['Skeleton'/213, l='MpServer', x=203.50, y=34.00, z=233.09], EntitySpider['Spider'/214, l='MpServer', x=199.69, y=37.97, z=231.41], EntitySkeleton['Skeleton'/215, l='MpServer', x=195.06, y=34.00, z=229.53], EntitySkeleton['Skeleton'/216, l='MpServer', x=196.41, y=34.00, z=233.06], EntityZombie['Zombie'/217, l='MpServer', x=199.28, y=37.47, z=230.16], EntityBat['Bat'/218, l='MpServer', x=200.38, y=35.10, z=231.25], EntitySkeleton['Skeleton'/219, l='MpServer', x=192.41, y=34.00, z=230.09], EntitySkeleton['Skeleton'/220, l='MpServer', x=205.88, y=34.00, z=246.50], EntityZombie['Zombie'/221, l='MpServer', x=199.88, y=30.00, z=275.53], EntityBat['Bat'/222, l='MpServer', x=206.54, y=47.80, z=272.52], EntityCreeper['Creeper'/223, l='MpServer', x=205.47, y=47.85, z=277.59], EntitySkeleton['Skeleton'/224, l='MpServer', x=193.50, y=13.00, z=309.09], EntityCreeper['Creeper'/225, l='MpServer', x=194.47, y=11.00, z=310.15], EntitySkeleton['Skeleton'/226, l='MpServer', x=194.28, y=12.00, z=306.72], EntityCreeper['Creeper'/227, l='MpServer', x=197.81, y=20.00, z=339.13], EntityCreeper['Creeper'/228, l='MpServer', x=200.72, y=20.00, z=334.00], EntitySheep['Sheep'/236, l='MpServer', x=223.81, y=64.00, z=220.84], EntityCreeper['Creeper'/237, l='MpServer', x=203.90, y=33.00, z=231.40], EntityCreeper['Creeper'/238, l='MpServer', x=214.53, y=32.00, z=231.94], EntityZombie['Zombie'/239, l='MpServer', x=209.75, y=32.00, z=230.69], EntityZombie['Zombie'/240, l='MpServer', x=210.28, y=32.00, z=231.69], EntityBat['Bat'/241, l='MpServer', x=215.09, y=34.10, z=238.44], EntityCreeper['Creeper'/242, l='MpServer', x=223.28, y=41.00, z=231.75], EntityRabbit['Rabbit'/243, l='MpServer', x=217.78, y=63.00, z=228.47], EntityZombie['Zombie'/244, l='MpServer', x=216.59, y=31.00, z=249.00], EntityBat['Bat'/245, l='MpServer', x=225.14, y=34.91, z=269.63], EntityBat['Bat'/246, l='MpServer', x=212.33, y=31.00, z=273.23], EntityBat['Bat'/247, l='MpServer', x=216.79, y=31.91, z=272.25], EntityCreeper['Creeper'/248, l='MpServer', x=219.50, y=47.00, z=289.50], EntityBat['Bat'/249, l='MpServer', x=221.83, y=23.30, z=354.41], EntityZombie['Zombie'/250, l='MpServer', x=220.50, y=20.02, z=359.63]]
Retry entities: 0 total; []
Server brand: fml,forge
Server type: Integrated singleplayer server
Stacktrace:
at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:392)
at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2614)
at net.minecraft.client.Minecraft.run(Minecraft.java:405)
at net.minecraft.client.main.Main.main(Main.java:117)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
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(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
at GradleStart.main(Unknown Source)
-- System Details --
Details:
Minecraft Version: 1.8
Operating System: Windows 7 (amd64) version 6.1
Java Version: 1.8.0_31, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 719890400 bytes (686 MB) / 1037959168 bytes (989 MB) up to 1037959168 bytes (989 MB)
JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
FML: MCP v9.10 FML v8.0.99.99 Minecraft Forge 11.14.4.1563 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.4.1563.jar)
UCHIJAAAA Forge{11.14.4.1563} [Minecraft Forge] (forgeSrc-1.8-11.14.4.1563.jar)
UCHIJAAAA ms{1.0} [More Stuff] (bin)
Loaded coremods (and transformers):
GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 358.91' Renderer: 'GeForce GTX 560 Ti/PCIe/SSE2'
Launched Version: 1.8
LWJGL: 2.9.1
OpenGL: GeForce GTX 560 Ti/PCIe/SSE2 GL version 4.5.0 NVIDIA 358.91, NVIDIA Corporation
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)
我知道我的世界会搜索小屋的方块状态。我在 cabin.json:
中创建了 minecraft 想要的方块状态
{
"variants": {
"facing=east": { "model": "ms:cabin" },
"facing=south": { "model": "ms:cabin", "y": 90 },
"facing=west": { "model": "ms:cabin", "y": 180 },
"facing=north": { "model": "ms:cabin", "y": 270 },
"normal": { "model": "ms:cabin" }
}
}
cabin.json 方块状态处于 assets/ms/blockstates。
我做错了什么?
问题是我没有添加元数据。您可以在块中使用这些代码行添加元数据:
/* This method returns the IBlockState from the metadata
* so we can have the proper rotation and textures of the block.
* This method is usually only called on map/chunk load.
*/
public IBlockState getStateFromMeta( int meta )
{
EnumFacing enumfacing = EnumFacing.getFront(meta);
if (enumfacing.getAxis() == EnumFacing.Axis.Y)
{
enumfacing = EnumFacing.NORTH;
}
return this.getDefaultState().withProperty(FACING, enumfacing);
}
/* Here the EnumFacing is translated into a metadata value(0-15)
* so it can be stored. You can store up to 16 different states alone
* in metadata, but no more. If you need more consider using a tile
* entity alongside the metadata for more flexiblity
*/
public int getMetaFromState( IBlockState state )
{
return (( EnumFacing )state.getValue( FACING )).getIndex();
}
/* Define which properties we have in our block.
* this can be accessed in the JSON to differentiate
* seperate textures
*/
protected BlockState createBlockState()
{
return new BlockState( this, new IProperty[] { FACING });
}
我正在制作 mod 并创建了一个小屋。它是一个带有库存和图形用户界面的图块实体。我也做了一个自定义渲染。然后我想让它转向玩家面对的方向。 Cabin.java 的代码如下所示:
package aidas.morestuff.blocks;
import java.util.Iterator;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyDirection;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.InventoryHelper;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityChest;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.MathHelper;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import aidas.morestuff.Main;
import aidas.morestuff.network.MGuiHandler;
import aidas.morestuff.tileentity.CabinTileEntity;
public class Cabin extends BlockContainer
{
public static final PropertyDirection FACING = PropertyDirection.create("facing", EnumFacing.Plane.HORIZONTAL);
public Cabin(String uName)
{
super(Material.iron);
this.setUnlocalizedName(uName);
this.setHardness(2.0f);
this.setResistance(6.0f);
this.setHarvestLevel("pickaxe", 2);
}
@Override
public TileEntity createNewTileEntity(World worldIn, int meta)
{
return new CabinTileEntity();
}
@Override
public int getRenderType()
{
return 2;
}
@Override
public void breakBlock(World world, BlockPos pos, IBlockState blockstate) {
CabinTileEntity te = (CabinTileEntity) world.getTileEntity(pos);
InventoryHelper.dropInventoryItems(world, pos, te);
super.breakBlock(world, pos, blockstate);
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {
player.openGui(Main.instance, MGuiHandler.MOD_TILE_ENTITY_GUI, world, pos.getX(), pos.getY(), pos.getZ());
}
return true;
}
public IBlockState onBlockPlaced(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer)
{
return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing());
}
public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack)
{
EnumFacing enumfacing = EnumFacing.getHorizontal(MathHelper.floor_double((double)(placer.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3).getOpposite();
state = state.withProperty(FACING, enumfacing);
BlockPos blockpos1 = pos.north();
BlockPos blockpos2 = pos.south();
BlockPos blockpos3 = pos.west();
BlockPos blockpos4 = pos.east();
boolean flag = this == worldIn.getBlockState(blockpos1).getBlock();
boolean flag1 = this == worldIn.getBlockState(blockpos2).getBlock();
boolean flag2 = this == worldIn.getBlockState(blockpos3).getBlock();
boolean flag3 = this == worldIn.getBlockState(blockpos4).getBlock();
if (!flag && !flag1 && !flag2 && !flag3)
{
worldIn.setBlockState(pos, state, 3);
}
else if (enumfacing.getAxis() == EnumFacing.Axis.X && (flag || flag1))
{
if (flag)
{
worldIn.setBlockState(blockpos1, state, 3);
}
else
{
worldIn.setBlockState(blockpos2, state, 3);
}
worldIn.setBlockState(pos, state, 3);
}
else if (enumfacing.getAxis() == EnumFacing.Axis.Z && (flag2 || flag3))
{
if (flag2)
{
worldIn.setBlockState(blockpos3, state, 3);
}
else
{
worldIn.setBlockState(blockpos4, state, 3);
}
worldIn.setBlockState(pos, state, 3);
}
if (stack.hasDisplayName())
{
TileEntity tileentity = worldIn.getTileEntity(pos);
if (tileentity instanceof TileEntityChest)
{
((TileEntityChest)tileentity).setCustomName(stack.getDisplayName());
}
}
}
public void setBlockBoundsBasedOnState(IBlockAccess worldIn, BlockPos pos)
{
if (worldIn.getBlockState(pos.north()).getBlock() == this)
{
this.setBlockBounds(0.0625F, 0.0F, 0.0F, 0.9375F, 0.875F, 0.9375F);
}
else if (worldIn.getBlockState(pos.south()).getBlock() == this)
{
this.setBlockBounds(0.0625F, 0.0F, 0.0625F, 0.9375F, 0.875F, 1.0F);
}
else if (worldIn.getBlockState(pos.west()).getBlock() == this)
{
this.setBlockBounds(0.0F, 0.0F, 0.0625F, 0.9375F, 0.875F, 0.9375F);
}
else if (worldIn.getBlockState(pos.east()).getBlock() == this)
{
this.setBlockBounds(0.0625F, 0.0F, 0.0625F, 1.0F, 0.875F, 0.9375F);
}
else
{
this.setBlockBounds(0.0625F, 0.0F, 0.0625F, 0.9375F, 0.875F, 0.9375F);
}
}
public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state)
{
Iterator iterator = EnumFacing.Plane.HORIZONTAL.iterator();
while (iterator.hasNext())
{
EnumFacing enumfacing = (EnumFacing)iterator.next();
BlockPos blockpos1 = pos.offset(enumfacing);
IBlockState iblockstate1 = worldIn.getBlockState(blockpos1);
}
}
public IBlockState checkForSurroundingChests(World worldIn, BlockPos pos, IBlockState state)
{
if (worldIn.isRemote)
{
return state;
}
else
{
IBlockState iblockstate1 = worldIn.getBlockState(pos.north());
IBlockState iblockstate2 = worldIn.getBlockState(pos.south());
IBlockState iblockstate3 = worldIn.getBlockState(pos.west());
IBlockState iblockstate4 = worldIn.getBlockState(pos.east());
EnumFacing enumfacing = (EnumFacing)state.getValue(FACING);
Block block = iblockstate1.getBlock();
Block block1 = iblockstate2.getBlock();
Block block2 = iblockstate3.getBlock();
Block block3 = iblockstate4.getBlock();
if (block != this && block1 != this)
{
boolean flag = block.isFullBlock();
boolean flag1 = block1.isFullBlock();
if (block2 == this || block3 == this)
{
BlockPos blockpos2 = block2 == this ? pos.west() : pos.east();
IBlockState iblockstate7 = worldIn.getBlockState(blockpos2.north());
IBlockState iblockstate8 = worldIn.getBlockState(blockpos2.south());
enumfacing = EnumFacing.SOUTH;
EnumFacing enumfacing2;
if (block2 == this)
{
enumfacing2 = (EnumFacing)iblockstate3.getValue(FACING);
}
else
{
enumfacing2 = (EnumFacing)iblockstate4.getValue(FACING);
}
if (enumfacing2 == EnumFacing.NORTH)
{
enumfacing = EnumFacing.NORTH;
}
Block block6 = iblockstate7.getBlock();
Block block7 = iblockstate8.getBlock();
if ((flag || block6.isFullBlock()) && !flag1 && !block7.isFullBlock())
{
enumfacing = EnumFacing.SOUTH;
}
if ((flag1 || block7.isFullBlock()) && !flag && !block6.isFullBlock())
{
enumfacing = EnumFacing.NORTH;
}
}
}
else
{
BlockPos blockpos1 = block == this ? pos.north() : pos.south();
IBlockState iblockstate5 = worldIn.getBlockState(blockpos1.west());
IBlockState iblockstate6 = worldIn.getBlockState(blockpos1.east());
enumfacing = EnumFacing.EAST;
EnumFacing enumfacing1;
if (block == this)
{
enumfacing1 = (EnumFacing)iblockstate1.getValue(FACING);
}
else
{
enumfacing1 = (EnumFacing)iblockstate2.getValue(FACING);
}
if (enumfacing1 == EnumFacing.WEST)
{
enumfacing = EnumFacing.WEST;
}
Block block4 = iblockstate5.getBlock();
Block block5 = iblockstate6.getBlock();
if ((block2.isFullBlock() || block4.isFullBlock()) && !block3.isFullBlock() && !block5.isFullBlock())
{
enumfacing = EnumFacing.EAST;
}
if ((block3.isFullBlock() || block5.isFullBlock()) && !block2.isFullBlock() && !block4.isFullBlock())
{
enumfacing = EnumFacing.WEST;
}
}
state = state.withProperty(FACING, enumfacing);
worldIn.setBlockState(pos, state, 3);
return state;
}
}
public IBlockState correctFacing(World worldIn, BlockPos pos, IBlockState state)
{
EnumFacing enumfacing = null;
Iterator iterator = EnumFacing.Plane.HORIZONTAL.iterator();
while (iterator.hasNext())
{
EnumFacing enumfacing1 = (EnumFacing)iterator.next();
IBlockState iblockstate1 = worldIn.getBlockState(pos.offset(enumfacing1));
if (iblockstate1.getBlock() == this)
{
return state;
}
if (iblockstate1.getBlock().isFullBlock())
{
if (enumfacing != null)
{
enumfacing = null;
break;
}
enumfacing = enumfacing1;
}
}
if (enumfacing != null)
{
return state.withProperty(FACING, enumfacing.getOpposite());
}
else
{
EnumFacing enumfacing2 = (EnumFacing)state.getValue(FACING);
if (worldIn.getBlockState(pos.offset(enumfacing2)).getBlock().isFullBlock())
{
enumfacing2 = enumfacing2.getOpposite();
}
if (worldIn.getBlockState(pos.offset(enumfacing2)).getBlock().isFullBlock())
{
enumfacing2 = enumfacing2.rotateY();
}
if (worldIn.getBlockState(pos.offset(enumfacing2)).getBlock().isFullBlock())
{
enumfacing2 = enumfacing2.getOpposite();
}
return state.withProperty(FACING, enumfacing2);
}
}
}
当我把小屋放下时,游戏崩溃了。
这是崩溃报告:
---- Minecraft Crash Report ----
// I just don't know what went wrong :(
Time: 1/8/16 2:12 PM
Description: Unexpected error
java.lang.IllegalArgumentException: Cannot set property PropertyDirection{name=facing, clazz=class net.minecraft.util.EnumFacing, values=[north, south, west, east]} as it does not exist in BlockState{block=ms:cabin, properties=[]}
at net.minecraft.block.state.BlockState$StateImplementation.withProperty(BlockState.java:189)
at aidas.morestuff.blocks.Cabin.onBlockPlaced(Cabin.java:68)
at net.minecraft.item.ItemBlock.onItemUse(ItemBlock.java:73)
at net.minecraft.item.ItemStack.onItemUse(ItemStack.java:147)
at net.minecraft.client.multiplayer.PlayerControllerMP.func_178890_a(PlayerControllerMP.java:442)
at net.minecraft.client.Minecraft.rightClickMouse(Minecraft.java:1571)
at net.minecraft.client.Minecraft.runTick(Minecraft.java:2131)
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1087)
at net.minecraft.client.Minecraft.run(Minecraft.java:376)
at net.minecraft.client.main.Main.main(Main.java:117)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
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(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
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.block.state.BlockState$StateImplementation.withProperty(BlockState.java:189)
at aidas.morestuff.blocks.Cabin.onBlockPlaced(Cabin.java:68)
at net.minecraft.item.ItemBlock.onItemUse(ItemBlock.java:73)
at net.minecraft.item.ItemStack.onItemUse(ItemStack.java:147)
at net.minecraft.client.multiplayer.PlayerControllerMP.func_178890_a(PlayerControllerMP.java:442)
at net.minecraft.client.Minecraft.rightClickMouse(Minecraft.java:1571)
-- Affected level --
Details:
Level name: MpServer
All players: 1 total; [EntityPlayerSP['Player688'/351, l='MpServer', x=187.67, y=63.00, z=289.42]]
Chunk stats: MultiplayerChunkCache: 624, 624
Level seed: 0
Level generator: ID 00 - default, ver 1. Features enabled: false
Level generator options:
Level spawn location: 164.00,64.00,256.00 - World: (164,64,256), Chunk: (at 4,4,0 in 10,16; contains blocks 160,0,256 to 175,255,271), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
Level time: 40812 game time, 32306 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: 111 total; [EntityCreeper['Creeper'/262, l='MpServer', x=230.31, y=22.00, z=213.78], EntitySheep['Sheep'/263, l='MpServer', x=225.94, y=65.00, z=216.97], EntitySkeleton['Skeleton'/264, l='MpServer', x=224.16, y=41.00, z=231.28], EntitySkeleton['Skeleton'/265, l='MpServer', x=227.69, y=42.00, z=234.75], EntityZombie['Zombie'/266, l='MpServer', x=224.25, y=42.00, z=228.19], EntitySquid['Squid'/267, l='MpServer', x=241.50, y=54.91, z=241.78], EntitySquid['Squid'/268, l='MpServer', x=234.31, y=56.84, z=256.06], EntityCreeper['Creeper'/269, l='MpServer', x=227.50, y=46.00, z=284.50], EntityBat['Bat'/270, l='MpServer', x=235.11, y=34.07, z=290.06], EntityZombie['Zombie'/271, l='MpServer', x=234.69, y=34.35, z=289.28], EntitySquid['Squid'/272, l='MpServer', x=238.31, y=57.97, z=294.47], EntityBat['Bat'/273, l='MpServer', x=231.22, y=37.02, z=310.35], EntityBat['Bat'/279, l='MpServer', x=248.45, y=26.03, z=221.48], EntityCreeper['Creeper'/280, l='MpServer', x=249.50, y=26.15, z=221.60], EntityZombie['Zombie'/281, l='MpServer', x=244.53, y=27.00, z=220.94], EntityZombie['Zombie'/282, l='MpServer', x=250.47, y=28.00, z=221.94], EntitySkeleton['Skeleton'/283, l='MpServer', x=252.50, y=29.00, z=211.50], EntityBat['Bat'/284, l='MpServer', x=244.64, y=27.72, z=220.45], EntityCreeper['Creeper'/285, l='MpServer', x=251.31, y=28.00, z=235.69], EntityBat['Bat'/286, l='MpServer', x=249.47, y=29.25, z=237.53], EntityZombie['Zombie'/287, l='MpServer', x=247.50, y=27.00, z=245.06], EntitySquid['Squid'/288, l='MpServer', x=246.06, y=53.50, z=247.75], EntityZombie['Zombie'/289, l='MpServer', x=240.41, y=37.00, z=283.03], EntityZombie['Zombie'/290, l='MpServer', x=244.94, y=28.00, z=299.47], EntityBat['Bat'/291, l='MpServer', x=247.63, y=33.10, z=302.75], EntityCreeper['Creeper'/292, l='MpServer', x=246.91, y=19.00, z=349.63], EntitySpider['Spider'/293, l='MpServer', x=247.28, y=24.00, z=362.28], EntityZombie['Zombie'/302, l='MpServer', x=254.59, y=31.00, z=344.00], EntityRabbit['Rabbit'/105, l='MpServer', x=111.38, y=70.00, z=287.16], EntitySheep['Sheep'/113, l='MpServer', x=109.69, y=67.00, z=329.75], EntityRabbit['Rabbit'/114, l='MpServer', x=114.52, y=67.27, z=331.05], EntityPlayerSP['Player688'/351, l='MpServer', x=187.67, y=63.00, z=289.42], EntitySheep['Sheep'/124, l='MpServer', x=123.84, y=67.00, z=242.03], EntitySheep['Sheep'/125, l='MpServer', x=128.05, y=70.00, z=255.53], EntitySheep['Sheep'/126, l='MpServer', x=114.72, y=70.00, z=291.50], EntitySheep['Sheep'/127, l='MpServer', x=114.16, y=69.00, z=310.06], EntitySheep['Sheep'/128, l='MpServer', x=127.24, y=68.00, z=308.03], EntitySheep['Sheep'/129, l='MpServer', x=115.25, y=67.00, z=317.63], EntitySheep['Sheep'/130, l='MpServer', x=112.08, y=67.00, z=326.00], EntitySheep['Sheep'/131, l='MpServer', x=127.13, y=67.00, z=320.13], EntitySheep['Sheep'/132, l='MpServer', x=118.94, y=67.00, z=330.97], EntityRabbit['Rabbit'/133, l='MpServer', x=116.06, y=68.00, z=333.94], EntitySheep['Sheep'/134, l='MpServer', x=121.81, y=63.00, z=350.69], EntitySheep['Sheep'/135, l='MpServer', x=114.88, y=69.00, z=355.44], EntitySheep['Sheep'/146, l='MpServer', x=130.84, y=65.00, z=218.81], EntitySheep['Sheep'/147, l='MpServer', x=135.06, y=65.00, z=218.66], EntityZombie['Zombie'/148, l='MpServer', x=135.50, y=47.00, z=231.50], EntityCreeper['Creeper'/149, l='MpServer', x=134.50, y=47.00, z=233.50], EntityCreeper['Creeper'/150, l='MpServer', x=134.50, y=47.00, z=232.50], EntitySheep['Sheep'/151, l='MpServer', x=139.34, y=71.00, z=279.19], EntitySheep['Sheep'/152, l='MpServer', x=129.50, y=72.00, z=285.84], EntitySheep['Sheep'/153, l='MpServer', x=141.88, y=70.00, z=281.19], EntitySheep['Sheep'/154, l='MpServer', x=131.53, y=71.00, z=303.63], EntityRabbit['Rabbit'/155, l='MpServer', x=136.88, y=71.00, z=315.38], EntityRabbit['Rabbit'/156, l='MpServer', x=139.84, y=70.00, z=327.44], EntitySheep['Sheep'/157, l='MpServer', x=137.25, y=68.00, z=320.47], EntityZombie['Zombie'/165, l='MpServer', x=150.13, y=13.00, z=226.41], EntityZombie['Zombie'/166, l='MpServer', x=156.03, y=12.00, z=247.53], EntityBat['Bat'/167, l='MpServer', x=148.88, y=15.10, z=256.59], EntitySheep['Sheep'/168, l='MpServer', x=147.81, y=68.00, z=292.63], EntityRabbit['Rabbit'/169, l='MpServer', x=151.59, y=67.00, z=314.66], EntityRabbit['Rabbit'/170, l='MpServer', x=149.56, y=66.00, z=306.00], EntityRabbit['Rabbit'/171, l='MpServer', x=160.28, y=63.00, z=324.53], EntitySheep['Sheep'/172, l='MpServer', x=143.44, y=69.57, z=303.57], EntityZombie['Zombie'/178, l='MpServer', x=172.59, y=13.00, z=229.56], EntityZombie['Zombie'/179, l='MpServer', x=175.63, y=26.00, z=237.59], EntityZombie['Zombie'/180, l='MpServer', x=175.50, y=27.00, z=229.50], EntityZombie['Zombie'/181, l='MpServer', x=160.69, y=13.00, z=240.28], EntityEnderman['Enderman'/182, l='MpServer', x=174.81, y=13.00, z=282.28], EntityZombie['Zombie'/183, l='MpServer', x=173.44, y=15.00, z=279.03], EntityZombie['Zombie'/184, l='MpServer', x=157.56, y=19.00, z=313.77], EntitySpider['Spider'/185, l='MpServer', x=174.69, y=23.00, z=320.28], EntityRabbit['Rabbit'/186, l='MpServer', x=161.47, y=67.00, z=324.00], EntityZombie['Zombie'/194, l='MpServer', x=183.56, y=12.00, z=217.56], EntitySkeleton['Skeleton'/195, l='MpServer', x=175.64, y=12.37, z=282.53], EntityZombie['Zombie'/196, l='MpServer', x=189.19, y=11.00, z=296.19], EntityZombie['Zombie'/209, l='MpServer', x=195.93, y=34.00, z=230.28], EntityBat['Bat'/210, l='MpServer', x=205.47, y=34.10, z=232.16], EntityBat['Bat'/211, l='MpServer', x=204.53, y=35.10, z=228.25], EntityZombie['Zombie'/212, l='MpServer', x=196.53, y=34.00, z=232.25], EntitySkeleton['Skeleton'/213, l='MpServer', x=203.50, y=34.00, z=233.09], EntitySpider['Spider'/214, l='MpServer', x=199.69, y=37.97, z=231.41], EntitySkeleton['Skeleton'/215, l='MpServer', x=195.06, y=34.00, z=229.53], EntitySkeleton['Skeleton'/216, l='MpServer', x=196.41, y=34.00, z=233.06], EntityZombie['Zombie'/217, l='MpServer', x=199.28, y=37.47, z=230.16], EntityBat['Bat'/218, l='MpServer', x=200.38, y=35.10, z=231.25], EntitySkeleton['Skeleton'/219, l='MpServer', x=192.41, y=34.00, z=230.09], EntitySkeleton['Skeleton'/220, l='MpServer', x=205.88, y=34.00, z=246.50], EntityZombie['Zombie'/221, l='MpServer', x=199.88, y=30.00, z=275.53], EntityBat['Bat'/222, l='MpServer', x=206.54, y=47.80, z=272.52], EntityCreeper['Creeper'/223, l='MpServer', x=205.47, y=47.85, z=277.59], EntitySkeleton['Skeleton'/224, l='MpServer', x=193.50, y=13.00, z=309.09], EntityCreeper['Creeper'/225, l='MpServer', x=194.47, y=11.00, z=310.15], EntitySkeleton['Skeleton'/226, l='MpServer', x=194.28, y=12.00, z=306.72], EntityCreeper['Creeper'/227, l='MpServer', x=197.81, y=20.00, z=339.13], EntityCreeper['Creeper'/228, l='MpServer', x=200.72, y=20.00, z=334.00], EntitySheep['Sheep'/236, l='MpServer', x=223.81, y=64.00, z=220.84], EntityCreeper['Creeper'/237, l='MpServer', x=203.90, y=33.00, z=231.40], EntityCreeper['Creeper'/238, l='MpServer', x=214.53, y=32.00, z=231.94], EntityZombie['Zombie'/239, l='MpServer', x=209.75, y=32.00, z=230.69], EntityZombie['Zombie'/240, l='MpServer', x=210.28, y=32.00, z=231.69], EntityBat['Bat'/241, l='MpServer', x=215.09, y=34.10, z=238.44], EntityCreeper['Creeper'/242, l='MpServer', x=223.28, y=41.00, z=231.75], EntityRabbit['Rabbit'/243, l='MpServer', x=217.78, y=63.00, z=228.47], EntityZombie['Zombie'/244, l='MpServer', x=216.59, y=31.00, z=249.00], EntityBat['Bat'/245, l='MpServer', x=225.14, y=34.91, z=269.63], EntityBat['Bat'/246, l='MpServer', x=212.33, y=31.00, z=273.23], EntityBat['Bat'/247, l='MpServer', x=216.79, y=31.91, z=272.25], EntityCreeper['Creeper'/248, l='MpServer', x=219.50, y=47.00, z=289.50], EntityBat['Bat'/249, l='MpServer', x=221.83, y=23.30, z=354.41], EntityZombie['Zombie'/250, l='MpServer', x=220.50, y=20.02, z=359.63]]
Retry entities: 0 total; []
Server brand: fml,forge
Server type: Integrated singleplayer server
Stacktrace:
at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:392)
at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2614)
at net.minecraft.client.Minecraft.run(Minecraft.java:405)
at net.minecraft.client.main.Main.main(Main.java:117)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
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(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
at GradleStart.main(Unknown Source)
-- System Details --
Details:
Minecraft Version: 1.8
Operating System: Windows 7 (amd64) version 6.1
Java Version: 1.8.0_31, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 719890400 bytes (686 MB) / 1037959168 bytes (989 MB) up to 1037959168 bytes (989 MB)
JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
FML: MCP v9.10 FML v8.0.99.99 Minecraft Forge 11.14.4.1563 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.4.1563.jar)
UCHIJAAAA Forge{11.14.4.1563} [Minecraft Forge] (forgeSrc-1.8-11.14.4.1563.jar)
UCHIJAAAA ms{1.0} [More Stuff] (bin)
Loaded coremods (and transformers):
GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 358.91' Renderer: 'GeForce GTX 560 Ti/PCIe/SSE2'
Launched Version: 1.8
LWJGL: 2.9.1
OpenGL: GeForce GTX 560 Ti/PCIe/SSE2 GL version 4.5.0 NVIDIA 358.91, NVIDIA Corporation
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)
我知道我的世界会搜索小屋的方块状态。我在 cabin.json:
中创建了 minecraft 想要的方块状态{
"variants": {
"facing=east": { "model": "ms:cabin" },
"facing=south": { "model": "ms:cabin", "y": 90 },
"facing=west": { "model": "ms:cabin", "y": 180 },
"facing=north": { "model": "ms:cabin", "y": 270 },
"normal": { "model": "ms:cabin" }
}
}
cabin.json 方块状态处于 assets/ms/blockstates。
我做错了什么?
问题是我没有添加元数据。您可以在块中使用这些代码行添加元数据:
/* This method returns the IBlockState from the metadata
* so we can have the proper rotation and textures of the block.
* This method is usually only called on map/chunk load.
*/
public IBlockState getStateFromMeta( int meta )
{
EnumFacing enumfacing = EnumFacing.getFront(meta);
if (enumfacing.getAxis() == EnumFacing.Axis.Y)
{
enumfacing = EnumFacing.NORTH;
}
return this.getDefaultState().withProperty(FACING, enumfacing);
}
/* Here the EnumFacing is translated into a metadata value(0-15)
* so it can be stored. You can store up to 16 different states alone
* in metadata, but no more. If you need more consider using a tile
* entity alongside the metadata for more flexiblity
*/
public int getMetaFromState( IBlockState state )
{
return (( EnumFacing )state.getValue( FACING )).getIndex();
}
/* Define which properties we have in our block.
* this can be accessed in the JSON to differentiate
* seperate textures
*/
protected BlockState createBlockState()
{
return new BlockState( this, new IProperty[] { FACING });
}