Анимация открывания двери

Версия Minecraft
1.12.2
5,018
47
783
Всем здорова! В общем сел, долго думал надо или нет,но все таки решил сделать анимацию открывания дверей. В общем зашел в блокбенч, сделал модель Java вида и... нашел вкладку анимации. Более того, эта анимация экспортируется отдельно в виде вот такого json файла
JSON:
{
    "format_version": "1.8.0",
    "animations": {
        "animation.model.new": {
            "loop": true,
            "animation_length": 3,
            "bones": {
                "bone": {
                    "rotation": {
                        "0.0": [0, 0, 0],
                        "3.0": [0, -90, 0]
                    },
                    "position": {
                        "0.0": [0, 0, 0],
                        "3.0": [5, 0, 7]
                    }
                }
            }
        }
    }
}
Кто знает что это за штука и с чем ее едят как ее прикручивать и вообще куда?
 
1,038
57
229
то что надо, хороший файлик, спс за инфу)
 
5,018
47
783
Пока лойс, если получится сделать, поставлю лучший ответ

Но блин, без примера юза этой штуки фиг че получится. У тебя нету случайно?
 
5,018
47
783
Я вот апишку чет не нашел. Да и там кастомное вроде все, и пример юза, опять же, отсутствует.
Я же обезьяна, без примера не умею
 
5,018
47
783
Ага, и мой мод будет зависим от малисиса. Неохота так. Хочу попробовать с форджевским этим. Ни у кого нет примера?
 
5,018
47
783
юза форджевского AnimationTESR

Вот доки читаю и ничего не понятно. Что такое
Java:
calling its .cast method with your ASM
Что за .cast метод?
 
Последнее редактирование:
5,018
47
783
Вообще было бы неплохо если кто нибудь запилил бы тутор по этой теме. Доки написаны так, что непонятно вообще абсолютно ничего. Я не знаю кто их писал, но это явно не его конек.
 

Icosider

Kotliner
Администратор
3,600
99
663
Ты до конца-то дочитывай...
"Animations for items are done entirely using the capability system. Your item must provide the ANIMATION_CAPABILITY through an ICapabilityProvider. You can create an instance of this capability using its .cast method with your ASM, which is usually stored on the ICapabilityProvider object itself. An example of this is below: "

И примеры там есть :/
 
5,018
47
783
Так это про предметы примеры. Мне то блок нужен. Про блок там вообще ничего, кроме регистрации...
Все что можно вынести из этих доков, так это вот это.
Но что это, к чему, как это все использовать, остается загадкой... для меня. Я просто никогда не юзал TESR, а эти доки это не полнценный гайд, а как обычный справочник. По нему ничего нормального сделать нельзя, он нужен лишь чтобы в конце, когда все сделано, чтобы удостоверится в том что ты ничего не забыл. А туторов нету)
Java:
public class RenderTileEntityTestDoor extends AnimationTESR<TileEntityTestDoor> {
  
  
    @Override
    public void renderTileEntityFast(TileEntityTestDoor te, double x, double y, double z, float partialTick, int breakStage, float partial, BufferBuilder renderer)
   {
      
   }

    public void handleEvents(TestDoor chest, float time, Iterable<Event> pastEvents) {
        // TODO Auto-generated method stub
      
    }
  
  
}


Java:
public class TileEntityTestDoor extends TileEntity {
    public CapabilityAnimation ANIMATION_CAPABILITY = new CapabilityAnimation();
}
 
Последнее редактирование:
5,018
47
783
ну даже ладно, окей, забьем на на заголовки. Вот значит у меня получается такой класс.

Java:
public class TestDoor extends BasicBlock implements ICapabilityProvider {
     public static final PropertyBool StaticProperty = PropertyBool.create("static");
    
      private final VariableValue cycleLength = new VariableValue(4);
      
      
    public TestDoor(Material materialIn, String name, float hardness, float resistanse, SoundType soundtype) {
        super(materialIn, name, hardness, resistanse, soundtype);
        // TODO Auto-generated constructor stub
    }
    @Override
    protected BlockStateContainer createBlockState()
    {
    
        return new BlockStateContainer(this, new IProperty[] {StaticProperty});
    }
      public TileEntity createTileEntity(World world, IBlockState state)
        {
          return new TileEntityTestDoor();
        }
    public void handleEvents(float time, Iterable<Event> pastEvents) {
        
        
    }
    //чо это за метод load? у форджа он есть. А где МНЕ его взять?
    private final IAnimationStateMachine asm = proxy.load(new ResourceLocation(SovietCore.MODID, "asms/block/engine.json"), ImmutableMap.<String, ITimeValue>of(
            "cycle_length", cycleLength
        ));

        @Override
        public boolean hasCapability(@Nonnull Capability<?> capability, @Nullable EnumFacing facing)
        {
            return capability == CapabilityAnimation.ANIMATION_CAPABILITY;
        }

        @Override
        @Nullable
        public <T> T getCapability(@Nonnull Capability<T> capability, @Nullable EnumFacing facing)
        {
            if(capability == CapabilityAnimation.ANIMATION_CAPABILITY)
            {
                return CapabilityAnimation.ANIMATION_CAPABILITY.cast(asm);
            }
            return null;
        }
}
 

Icosider

Kotliner
Администратор
3,600
99
663
Тык. "ASMs can be loaded by calling ModelLoaderRegistry.loadASM. It takes two parameters, the first being a ResourceLocation denoting where the ASM is stored, and second an ImmutableMap of load-time defined parameters. "

Этот самый proxy.load это тип такого:

Java:
class CommonProxy {
    public void load(ResourceLocation rs, ImmutableMap map) {
        // empty for server
    }
}

class ClientProxy extends CommonProxy {
    @Override
    public void load(ResourceLocation rs, ImmutableMap map) {
        ModelLoaderRegistry.loadASM(rs, mp);
    }
}
 
5,018
47
783
Уже нашел и благополучно насилую кнтрл С
Наконец то я в своей стихии.
 
5,018
47
783
да
Блин еще бы его блокстейты посмотреть, а то у меня почему то по дефолту static=true ставится
 
Последнее редактирование:
Сверху