Advertisement
Guest User

model

a guest
Feb 16th, 2020
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.89 KB | None | 0 0
  1. public class TestModelLoader implements IModelGeometry<TestModelLoader> {
  2.  
  3. final String key;
  4. final Map<String, BlockModel> modelMap;
  5.  
  6. public TestModelLoader(String key, Map<String, BlockModel> modelMap) {
  7.  
  8. this.key = key;
  9. this.modelMap = modelMap;
  10. }
  11.  
  12. @Override
  13. public IBakedModel bake(IModelConfiguration owner, ModelBakery bakery, Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform, ItemOverrideList overrides, ResourceLocation modelLocation) {
  14.  
  15. return new BakedModel(owner, modelTransform, modelLocation,
  16. spriteGetter.apply(owner.resolveTexture("particle")),
  17. owner.isSideLit(), bakery, owner.getOwnerModel(), bakery::getUnbakedModel, spriteGetter, key,
  18. Maps.transformEntries(modelMap, (k, v) -> v.bakeModel(bakery, v, spriteGetter, modelTransform, new ResourceLocation(modelLocation.getNamespace(), modelLocation.getPath() + "/" + k), owner.isSideLit()))
  19. );
  20. }
  21.  
  22. @Override
  23. public Collection<Material> getTextures(IModelConfiguration owner, Function<ResourceLocation, IUnbakedModel> modelGetter, Set<Pair<String, String>> missingTextureErrors) {
  24.  
  25. return null;
  26.  
  27. }
  28.  
  29. public static class BakedModel implements IBakedModel {
  30.  
  31. private final boolean isSideLit;
  32. private final TextureAtlasSprite particle;
  33. private final IModelConfiguration owner;
  34. private IModelTransform modelTransform;
  35. private ResourceLocation modelLocation;
  36. private final ItemOverrideList overrides;
  37.  
  38. public BakedModel(IModelConfiguration owner, IModelTransform modelTransform, ResourceLocation modelLocation, TextureAtlasSprite particle, boolean isSideLit, ModelBakery bakery, IUnbakedModel ownerModel, Function<ResourceLocation, IUnbakedModel> modelGetter, Function<Material, TextureAtlasSprite> textureGetter, String key, Map<String, IBakedModel> modelMap) {
  39.  
  40. this.isSideLit = isSideLit;
  41. this.particle = particle;
  42. this.owner = owner;
  43. this.modelTransform = modelTransform;
  44. this.modelLocation = modelLocation;
  45. this.overrides = new ItemOverrideList(bakery, ownerModel, modelGetter, textureGetter, Collections.emptyList()) {
  46.  
  47. final String nbtKey = key;
  48. final Map<String, IBakedModel> models = modelMap;
  49.  
  50. @Nullable
  51. @Override
  52. public IBakedModel getModelWithOverrides(IBakedModel model, ItemStack stack, @Nullable World worldIn, @Nullable LivingEntity entityIn) {
  53.  
  54. ImmutableList.Builder<Material> textures = ImmutableList.builder();
  55.  
  56. textures.add(new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, new ResourceLocation("block/test1")));
  57. textures.add(new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, new ResourceLocation("block/test2")));
  58. textures.add(new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, new ResourceLocation("block/test3")));
  59.  
  60. ItemLayerModel model2 = new ItemLayerModel(textures.build());
  61.  
  62. /**
  63.  
  64. CompoundNBT tag = stack.getTag();
  65. INBT tagValue = (tag != null) ? tag.get(nbtKey) : null;
  66.  
  67. String value = tagValue != null ? tagValue.getString() : null;
  68.  
  69. if (value == null) {
  70.  
  71. value = "";
  72.  
  73. }
  74.  
  75. return models.getOrDefault(value, null);
  76.  
  77. **/
  78.  
  79. return model2.bake(owner, bakery, textureGetter, modelTransform, overrides, modelLocation);
  80.  
  81. }
  82.  
  83. };
  84.  
  85. }
  86.  
  87. @Override
  88. public List<BakedQuad> getQuads(BlockState state, Direction side, Random rand) {
  89.  
  90. return Collections.emptyList();
  91.  
  92. }
  93.  
  94. @Override
  95. public boolean isAmbientOcclusion() {
  96.  
  97. return true;
  98.  
  99. }
  100.  
  101. @Override
  102. public boolean isGui3d() {
  103.  
  104. return true;
  105.  
  106. }
  107.  
  108. @Override
  109. public boolean func_230044_c_() {
  110.  
  111. return isSideLit;
  112.  
  113. }
  114.  
  115. @Override
  116. public boolean isBuiltInRenderer() {
  117.  
  118. return false;
  119.  
  120. }
  121.  
  122. @Override
  123. public TextureAtlasSprite getParticleTexture() {
  124.  
  125. return particle;
  126.  
  127. }
  128.  
  129. @Override
  130. public ItemOverrideList getOverrides() {
  131.  
  132. return overrides;
  133.  
  134. }
  135.  
  136. }
  137.  
  138. public static class Loader implements IModelLoader<TestModelLoader> {
  139.  
  140. @Override
  141. public void onResourceManagerReload(IResourceManager resourceManager) {
  142.  
  143. }
  144.  
  145. @Override
  146. public TestModelLoader read(JsonDeserializationContext deserializationContext, JsonObject modelContents) {
  147.  
  148. String key = JSONUtils.getString(modelContents, "tag");
  149. JsonObject obj = JSONUtils.getJsonObject(modelContents, "values");
  150. ImmutableMap.Builder<String, BlockModel> builder = ImmutableMap.<String, BlockModel>builder();
  151. for(Map.Entry<String, JsonElement> kv : obj.entrySet())
  152. {
  153. builder.put(kv.getKey(), deserializationContext.deserialize(kv.getValue(), BlockModel.class));
  154. }
  155. return new TestModelLoader(key, builder.build());
  156.  
  157. }
  158.  
  159. }
  160.  
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement