BlockState неверно работает.

Версия Minecraft
1.12.2
5,018
47
783
В общем делаю я свой блок с блокстейтом. Мне нужно, чтобы при правом клике по нему, мой Boolean блокстейта менялся по кругу хотя бы для начала.
А он не меняется

Java:
    @Override
    @Override
    public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos)
    {
          return state.withProperty(WITH_COAL, Boolean.valueOf(true));
    }
    @Override
    public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
    {
        state.cycleProperty(WITH_COAL);
        return true;
    }
 
Последнее редактирование:
5,018
47
783
Модель блока у тебя связана со стейтом... Стейт ты меняешь через мир. В каком месте ты его меняешь, я не заметил...
Заметил только гедАктуалСтейт, который всё время показывает одно и то же.
Так в каком месте его тогда менять? В онБлокАктивейшен?
 
5,018
47
783
Ничего не понимаю. Переделал под интеджер
Итак, вот блокстейт

JSON:
{
    "variants": {
        "withcoal=0": { "model": "realism:cumpfire" },
        "withcoal=1": { "model": "realism:cumpfire" },
        "withcoal=2": { "model": "realism:cumpfire" },
        "withcoal=3": { "model": "realism:cumpfire" },
        "withcoal=4":  { "model": "realism:cumpfire_withcoal_5" }
    }
}
Вот класс. Блокстейт 4 устанавливается, но модель не меняется? WTF?

Код:
public class CumpfireBlock extends BasicBlockWithCustomModel{
  
    public static final PropertyInteger WITH_COAL = PropertyInteger.create("withcoal",0,4);
    public CumpfireBlock(Material materialIn, String name, float hardness, float resistanse, String hravLevel,
            int level, SoundType soundtype) {
        super(materialIn, name, hardness, resistanse, hravLevel, level, soundtype);
        this.setDefaultState(this.blockState.getBaseState().withProperty(WITH_COAL,0));

    }
    protected static final AxisAlignedBB block_AABB = new AxisAlignedBB(0.04D, 0.0D, 0.04D, 0.96D, 0.15D, 0.96D);




    @Override
    public boolean isOpaqueCube(IBlockState state) {
        return false;
    }

    @Override
    @SideOnly(Side.CLIENT)
    public boolean shouldSideBeRendered(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side) {
        return false;
    }
    @Override
    public int getMetaFromState(IBlockState state)
    {
        return 0;
    }
    @Override
    protected BlockStateContainer createBlockState()
    {
        return new BlockStateContainer(this, new IProperty[] {WITH_COAL});
    }
    @Override
    public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
    {
        state.withProperty(WITH_COAL, 4);
        System.out.println(state.withProperty(WITH_COAL, 4));
        return true;
    }
    @Override
    @SideOnly(Side.CLIENT)
    public boolean isFullCube(IBlockState state) {
        return false;
    }
    public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
    {
        return block_AABB;
    }
    @Nullable
    public Item getItemDropped(IBlockState state, Random rand, int fortune)
    {
        return Item.getItemFromBlock(RegBlocks.cumpfire);
    }

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

    public EnumBlockRenderType getRenderType(IBlockState state)
    {
        return EnumBlockRenderType.MODEL;
    }
[14:30:21] [main/INFO] [STDOUT]: [ru.legendgamer.Realism.RealismCore.Blocks.CumpfireBlock:onBlockActivated:78]: realism:cumpfire[withcoal=4] [14:30:21] [Server thread/INFO] [STDOUT]: [ru.legendgamer.Realism.RealismCore.Blocks.CumpfireBlock:onBlockActivated:78]: realism:cumpfire[withcoal=4]

Или насчет замены блока ты это имел ввиду?

Код:
    @Override
    public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
    {
        worldIn.setBlockState(pos, state.withProperty(WITH_COAL, 4));
        System.out.println(state.withProperty(WITH_COAL, 4));
        return true;
    }
 
5,018
47
783
Да, я имел ввиду это.
Новые беды. Он теперь модель не может найти...

Java:
[15:04:53] [main/ERROR] [FML]: Exception loading model for variant realism:cumpfire#withcoal=0 for blockstate "realism:cumpfire[withcoal=0]"
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model realism:cumpfire#withcoal=0 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:234) ~[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:222) ~[ModelLoader.class:?]

Че не так то?
Код:
public class CumpfireBlock extends BasicBlockWithCustomModel{

    public static final PropertyInteger WITH_COAL = PropertyInteger.create("withcoal",0,5);
    public CumpfireBlock(Material materialIn, String name, float hardness, float resistanse, String hravLevel,int level, SoundType soundtype) {
        super(materialIn, name, hardness, resistanse, hravLevel, level, soundtype);
        this.setDefaultState(this.blockState.getBaseState().withProperty(WITH_COAL,0));

    }
    protected static final AxisAlignedBB block_AABB = new AxisAlignedBB(0.04D, 0.0D, 0.04D, 0.96D, 0.15D, 0.96D);
    @Override
    public boolean isOpaqueCube(IBlockState state) {
        return false;
    }

    @Override
    @SideOnly(Side.CLIENT)
    public boolean shouldSideBeRendered(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side) {
        return false;
    }
    @Override
    public int getMetaFromState(IBlockState state)
    {
        return 0;
    }
    @Override
    protected BlockStateContainer createBlockState()
    {
        return new BlockStateContainer(this, new IProperty[] {WITH_COAL});
    }
    int i = 0;
    @Override
    public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
    {
        if(!worldIn.isRemote) {
           
            i++;
            if(i > 5) {
                i = 0;
               
            }
            worldIn.setBlockState(pos, state.withProperty(WITH_COAL, i));
           
            System.out.println(i);
           
        }
        return true;
    }
    @Override
    @SideOnly(Side.CLIENT)
    public boolean isFullCube(IBlockState state) {
        return false;
    }
    public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
    {
        return block_AABB;
    }
    @Nullable
    public Item getItemDropped(IBlockState state, Random rand, int fortune)
    {
        return Item.getItemFromBlock(RegBlocks.cumpfire);
    }

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

    public EnumBlockRenderType getRenderType(IBlockState state)
    {
        return EnumBlockRenderType.MODEL;
    }
JSON:
{
    "variants": {
        "withcoal=0": { "model": "realism:cumpfire" },
        "withcoal=1": { "model": "realism:cumpfire_withcoal_0" },
        "withcoal=2": { "model": "realism:cumpfire_withcoal_1" },
        "withcoal=3": { "model": "realism:cumpfire_withcoal_2" },
        "withcoal=4":  { "model": "realism:cumpfire_withcoal_3" }
    "withcoal=5":  { "model": "realism:cumpfire_withcoal_4" }
    }
}
Все эти модели там есть :\\

Может, что то с метой надо сделать?

Java:
    @Override
    public int getMetaFromState(IBlockState state)
    {
        return 0;
    }
 
Последнее редактирование:
5,018
47
783
А разве campfire пишется не через a?
А в какой они папке есть? realism:block/...?
Там тоже cumpfire. Я ошибся, исправлять щас лень
realism/models/block/...bandicam 2018-01-19 16-12-56-202.jpg
Причем до того как запилил эту интеджер, все работало с булеаном
 
Последнее редактирование:
5,018
47
783
Вот более полный лог

Java:
Caused by: net.minecraft.client.renderer.block.model.ModelBlockDefinition$MissingVariantException
    at net.minecraft.client.renderer.block.model.ModelBlockDefinition.getVariant(ModelBlockDefinition.java:83) ~[ModelBlockDefinition.class:?]
    at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1173) ~[ModelLoader$VariantLoader.class:?]
    at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?]
    ... 20 more
[16:19:06] [main/ERROR] [FML]: Exception loading model for variant realism:cumpfire#withcoal=1 for blockstate "realism:cumpfire[withcoal=1]"
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model realism:cumpfire#withcoal=1 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:234) ~[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:222) ~[ModelLoader.class:?]
    at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:160) ~[ModelLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
    at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?]
    at net.minecraft.client.Minecraft.init(Minecraft.java:559) [Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:421) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_151]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_151]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_151]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_151]
    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_151]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_151]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_151]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_151]
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: net.minecraft.client.renderer.block.model.ModelBlockDefinition$MissingVariantException
    at net.minecraft.client.renderer.block.model.ModelBlockDefinition.getVariant(ModelBlockDefinition.java:83) ~[ModelBlockDefinition.class:?]
    at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1173) ~[ModelLoader$VariantLoader.class:?]
    at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?]
    ... 21 more
[16:19:06] [main/ERROR] [FML]: Exception loading blockstate for the variant realism:cumpfire#withcoal=1:
java.lang.Exception: Could not load model definition for variant realism:cumpfire
    at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:267) ~[ModelLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:121) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:222) ~[ModelLoader.class:?]
    at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:160) ~[ModelLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
    at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?]
    at net.minecraft.client.Minecraft.init(Minecraft.java:559) [Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:421) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_151]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_151]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_151]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_151]
    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_151]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_151]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_151]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_151]
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: java.lang.RuntimeException: Encountered an exception when loading model definition of 'realism:cumpfire' from: 'realism:blockstates/cumpfire.json' in resourcepack: 'FMLFileResourcePack:realism'
    at net.minecraft.client.renderer.block.model.ModelBakery.loadModelBlockDefinition(ModelBakery.java:246) ~[ModelBakery.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadMultipartMBD(ModelBakery.java:223) ~[ModelBakery.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.getModelBlockDefinition(ModelBakery.java:208) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:263) ~[ModelLoader.class:?]
    ... 20 more
Caused by: com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated object at line 8 column 3 path $.variants.
    at com.google.gson.Gson.fromJson(Gson.java:902) ~[Gson.class:?]
    at com.google.gson.Gson.fromJson(Gson.java:852) ~[Gson.class:?]
    at com.google.gson.Gson.fromJson(Gson.java:801) ~[Gson.class:?]
    at com.google.gson.Gson.fromJson(Gson.java:773) ~[Gson.class:?]
    at net.minecraftforge.client.model.BlockStateLoader.load(BlockStateLoader.java:79) ~[BlockStateLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelBlockDefinition.parseFromReader(ModelBlockDefinition.java:42) ~[ModelBlockDefinition.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadModelBlockDefinition(ModelBakery.java:242) ~[ModelBakery.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadMultipartMBD(ModelBakery.java:223) ~[ModelBakery.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.getModelBlockDefinition(ModelBakery.java:208) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:263) ~[ModelLoader.class:?]
    ... 20 more
Caused by: com.google.gson.stream.MalformedJsonException: Unterminated object at line 8 column 3 path $.variants.
    at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1559) ~[JsonReader.class:?]
    at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:491) ~[JsonReader.class:?]
    at com.google.gson.stream.JsonReader.skipValue(JsonReader.java:1224) ~[JsonReader.class:?]
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:218) ~[ReflectiveTypeAdapterFactory$Adapter.class:?]
    at com.google.gson.Gson.fromJson(Gson.java:887) ~[Gson.class:?]
    at com.google.gson.Gson.fromJson(Gson.java:852) ~[Gson.class:?]
    at com.google.gson.Gson.fromJson(Gson.java:801) ~[Gson.class:?]
    at com.google.gson.Gson.fromJson(Gson.java:773) ~[Gson.class:?]
    at net.minecraftforge.client.model.BlockStateLoader.load(BlockStateLoader.java:79) ~[BlockStateLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelBlockDefinition.parseFromReader(ModelBlockDefinition.java:42) ~[ModelBlockDefinition.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadModelBlockDefinition(ModelBakery.java:242) ~[ModelBakery.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadMultipartMBD(ModelBakery.java:223) ~[ModelBakery.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.getModelBlockDefinition(ModelBakery.java:208) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:263) ~[ModelLoader.class:?]
    ... 20 more
[16:19:06] [main/ERROR] [FML]: Exception loading model for variant realism:cumpfire#withcoal=0 for blockstate "realism:cumpfire[withcoal=0]"
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model realism:cumpfire#withcoal=0 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:234) ~[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:222) ~[ModelLoader.class:?]
    at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:160) ~[ModelLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
    at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?]
    at net.minecraft.client.Minecraft.init(Minecraft.java:559) [Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:421) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_151]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_151]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_151]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_151]
    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_151]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_151]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_151]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_151]
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: net.minecraft.client.renderer.block.model.ModelBlockDefinition$MissingVariantException
    at net.minecraft.client.renderer.block.model.ModelBlockDefinition.getVariant(ModelBlockDefinition.java:83) ~[ModelBlockDefinition.class:?]
    at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1173) ~[ModelLoader$VariantLoader.class:?]
    at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:149) ~[ModelLoaderRegistry.class:?]
    ... 21 more
[16:19:06] [main/FATAL] [FML]: Suppressed additional 5 model loading errors for domain realism
[16:19:06] [main/INFO] [STDOUT]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:debug:20]: [DEBUG] Injecting hooks into class net.minecraft.client.renderer.color.BlockColors
[16:19:06] [main/INFO] [STDOUT]: [gloomyfolken.hooklib.asm.HookLogger$SystemOutLogger:debug:20]: [DEBUG] Patching method net.minecraft.client.renderer.color.BlockColors#init()
[16:19:08] [main/INFO] [FML]: Applying holder lookups
 
5,018
47
783
У тебя в блокстейте запятая пропущена... ну это так...
Лол :), спасибо)

Уже пилится. Дефолт стейт это то что будет инициализировано и установлено по дефолту.
Давайте побыстрее, очень жду. Желательно по всем типам блокстейтов
 
Сверху