• Chào bạn, hãy đăng ký hoặc đăng nhập để tham gia cùng bọn mình và sử dụng được đầy đủ chức năng của diễn đàn :).
Resource icon

Fabric Crystalize (library) | Server-side Fabric Mod | Custom animated models with Inverse Kinematics 1.0.0-SNAPSHOT

No permission to download
Hỗ trợ phiên bản
  1. 1.20
Mã nguồn
https://github.com/nahkd123/crystalize/
45687

Crystalize
1. Giới thiệu
Crystalize là một server-side library mod dành cho Fabric. Ae có thể dùng library mod này để đặt model ở trong world và chạy animation được define trong Blockbench.

Nhiều ae thường hay nghĩ "Fabric là modloader nên client và server phải cài mod" thì tôi xin khẳng định là: Không phải Fabric mod nào cũng phải được cài ở cả client lẫn server. Một sô mod như Sodium được gọi là "client-side" mod, tức là mod chỉ hoạt động ở bên client; Crystalize là server-side mod, tức là Crystalize chỉ hoạt động ở bên server (Singleplayer vẫn tính là 1 server, nhưng nó chạy world của bạn dưới dạng integrated server thay vì dedicated như Bukkit).

45688
45689

Crystalize chạy 100% bên server; client sẽ ko cần phải cài mod.​

Crystalize 100% miễn phí và mã nguồn mở. Ae có thể tìm source code cho Crystalize tại đây: https://github.com/nahkd123/crystalize

2. Tính năng
2.1. Load model từ Blockbench

Crystalize có method để build các model dưới dạng Blockbench project. Chi tiết xem trong JavaDocs của BlockbenchModelBuilder

2.2. Inverse Kinematics
Crystalize cung cấp Inverse Kinematics (IK) controller để giúp ae điều khiển các cánh tay (hoặc chain of bones j đó) mà ko cần phải điều khiển từng bộ phận một. Chỉ cần đặt vị trí đích + danh sách các khớp và FabrikController sẽ tự động điều khiển các khớp sao cho khớp cuối cùng nằm ở vị trí đích.

45690
45697

Inverse Kinematics dựa trên thuật toán FABRIK​

3. Sử dụng library
Yêu cầu: Minecraft 1.20.4 (các bản update sau này sẽ update lên pb Minecraft mới nhất)
Mã:
repositories {
    maven { url = 'https://jitpack.io/' }
}

dependencies {
    // Yêu cầu Fabric Loom plugin để dùng modImplementation
    modImplementation 'com.github.nahkd123.crystalize:crystalize-fabric-polymer:master-SNAPSHOT'
    modImplementation "net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_version}"
    modImplementation "eu.pb4:polymer-core:${rootProject.polymer_version}"
    modImplementation "eu.pb4:polymer-networking:${rootProject.polymer_version}"
    modImplementation "eu.pb4:polymer-resource-pack:${rootProject.polymer_version}"
    modImplementation "eu.pb4:polymer-virtual-entity:${rootProject.polymer_version}"
}

Java:
// Load và register model
// (Nhớ thêm ở trong ModInitializer)
JsonElement jsonProj = ...; // Load từ model.bbmodel
BlockbenchProject proj = BlockbencProject.CODEC.decode(JsonOps.INSTANCE, jsonProj);
Model model = BlockbenchModelBuilder.build(UUID.randomUUID(), proj);
CrystalizeFabric.getInstance().getModelsManager().registerModel(new Identifier("modid", "my_model"), model);

// Sử dụng model
RegisteredModel model = CrystalizeFabric.getInstance().getModelsManager().getModel(new Identifier("modid", "my_model"));
CrystalizeElementHolder holder = new CrystalizeElementHolder(model);

// Attach holder vào attachment nào đó
// Xem thêm về attachment tại https://polymer.pb4.eu/latest/polymer-virtual-entity/basics/#using-holderattachments
HolderAttachment atch = ChunkAttachment.ofTicking(holder);
atch.tick();

// Thêm animation vào holder
AnimationController anim = new TemplatedAnimationController(model.template().animations().get(0), 1.0f, null);
holder.addAnimation(anim);

4. Bukkit port
Bukkit port cho Crystalize hiện tại đang WIP (work in progress), nma vì priority đang là Fabric server nên tôi tạm thời không động đến crystalize-bukkit trong thời gian này.
  • Like
Reactions: MasterClaus
Tác giả
nahkd123
Downloads
1
Lượt xem
532
First release
Last update

Ratings

0.00 star(s) 0 ratings

Share this resource

Similar content Most view Xem thêm
Back
Top Bottom