Ph-苯
本帖最后由 Ph-苯 于 2021-2-21 02:25 编辑

物品NBT储存了一个物品ID,如何让该物品的材质渲染为NBT中的物品的材质?
已解决
  1. @Mixin(ItemModels.class)
  2. public abstract class MixinItemModels {
  3.         @Shadow
  4.         public abstract BakedModel getModel(ItemStack stack);

  5.         @Inject(at = { @At("HEAD") }, method = { "getModel" }, cancellable = true)
  6.         private void getModelCpp(ItemStack stack, CallbackInfoReturnable<BakedModel> info) {
  7.                 if (stack.isOf(CppItems.COMPRESSED_ITEM)) {
  8.                         info.setReturnValue(getModel(ItemStack.fromTag(stack.getOrCreateSubTag("item"))));
  9.                 }
  10.         }
  11. }
复制代码

_XuanFsant_
也许可以使用optifine和材质包
https://www.mcbbs.net/thread-782790-1-1.html

Ph-苯
_XuanFsant_ 发表于 2020-12-30 14:24
也许可以使用optifine和材质包
https://www.mcbbs.net/thread-782790-1-1.html

optfine固然可以根据NBT和固定的映射表来显示事先设定好的材质,但是我这里的NBT囊括了所有的物品ID,不存在固定的映射表,使用optfine的方法难以实现……