Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class TestModelLoader implements IModelGeometry<TestModelLoader> {
- final String key;
- final Map<String, BlockModel> modelMap;
- public TestModelLoader(String key, Map<String, BlockModel> modelMap) {
- this.key = key;
- this.modelMap = modelMap;
- }
- @Override
- public IBakedModel bake(IModelConfiguration owner, ModelBakery bakery, Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform, ItemOverrideList overrides, ResourceLocation modelLocation) {
- return new BakedModel(owner, modelTransform, modelLocation,
- spriteGetter.apply(owner.resolveTexture("particle")),
- owner.isSideLit(), bakery, owner.getOwnerModel(), bakery::getUnbakedModel, spriteGetter, key,
- Maps.transformEntries(modelMap, (k, v) -> v.bakeModel(bakery, v, spriteGetter, modelTransform, new ResourceLocation(modelLocation.getNamespace(), modelLocation.getPath() + "/" + k), owner.isSideLit()))
- );
- }
- @Override
- public Collection<Material> getTextures(IModelConfiguration owner, Function<ResourceLocation, IUnbakedModel> modelGetter, Set<Pair<String, String>> missingTextureErrors) {
- return null;
- }
- public static class BakedModel implements IBakedModel {
- private final boolean isSideLit;
- private final TextureAtlasSprite particle;
- private final IModelConfiguration owner;
- private IModelTransform modelTransform;
- private ResourceLocation modelLocation;
- private final ItemOverrideList overrides;
- 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) {
- this.isSideLit = isSideLit;
- this.particle = particle;
- this.owner = owner;
- this.modelTransform = modelTransform;
- this.modelLocation = modelLocation;
- this.overrides = new ItemOverrideList(bakery, ownerModel, modelGetter, textureGetter, Collections.emptyList()) {
- final String nbtKey = key;
- final Map<String, IBakedModel> models = modelMap;
- @Nullable
- @Override
- public IBakedModel getModelWithOverrides(IBakedModel model, ItemStack stack, @Nullable World worldIn, @Nullable LivingEntity entityIn) {
- ImmutableList.Builder<Material> textures = ImmutableList.builder();
- textures.add(new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, new ResourceLocation("block/test1")));
- textures.add(new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, new ResourceLocation("block/test2")));
- textures.add(new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, new ResourceLocation("block/test3")));
- ItemLayerModel model2 = new ItemLayerModel(textures.build());
- /**
- CompoundNBT tag = stack.getTag();
- INBT tagValue = (tag != null) ? tag.get(nbtKey) : null;
- String value = tagValue != null ? tagValue.getString() : null;
- if (value == null) {
- value = "";
- }
- return models.getOrDefault(value, null);
- **/
- return model2.bake(owner, bakery, textureGetter, modelTransform, overrides, modelLocation);
- }
- };
- }
- @Override
- public List<BakedQuad> getQuads(BlockState state, Direction side, Random rand) {
- return Collections.emptyList();
- }
- @Override
- public boolean isAmbientOcclusion() {
- return true;
- }
- @Override
- public boolean isGui3d() {
- return true;
- }
- @Override
- public boolean func_230044_c_() {
- return isSideLit;
- }
- @Override
- public boolean isBuiltInRenderer() {
- return false;
- }
- @Override
- public TextureAtlasSprite getParticleTexture() {
- return particle;
- }
- @Override
- public ItemOverrideList getOverrides() {
- return overrides;
- }
- }
- public static class Loader implements IModelLoader<TestModelLoader> {
- @Override
- public void onResourceManagerReload(IResourceManager resourceManager) {
- }
- @Override
- public TestModelLoader read(JsonDeserializationContext deserializationContext, JsonObject modelContents) {
- String key = JSONUtils.getString(modelContents, "tag");
- JsonObject obj = JSONUtils.getJsonObject(modelContents, "values");
- ImmutableMap.Builder<String, BlockModel> builder = ImmutableMap.<String, BlockModel>builder();
- for(Map.Entry<String, JsonElement> kv : obj.entrySet())
- {
- builder.put(kv.getKey(), deserializationContext.deserialize(kv.getValue(), BlockModel.class));
- }
- return new TestModelLoader(key, builder.build());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement