• Trong thời gian này, bạn không thể tạo bài mới, đăng comment, hay tạo tài nguyên mới để diễn đàn dọn dẹp nội dung.
    Diễn đàn sẽ sớm mở trở lại, chi tiết hãy theo dõi tại Discord
Biểu tượng tài nguyên

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

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.
  • Thích
Cảm xúc: MasterClaus
Tác giả
nahkd123
Lượt tải
1
Lượt xem
617
Phát hành lần đầu
Cập nhật lần cuối

Lượt đánh giá

0.00 sao 0 lượt đánh giá
Nội dung tương tự Xem nhiều nhất Xem thêm
Quay lại
Trên cùng