@Override public ImmutableMap<ItemCameraTransforms.TransformType, TRSRTransformation> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { JsonObject obj = json.getAsJsonObject(); JsonElement texElem = obj.get(tag); if(texElem != null && texElem.isJsonObject()) { ItemCameraTransforms itemCameraTransforms = context.deserialize(texElem.getAsJsonObject(), ItemCameraTransforms.class); return PerspectiveMapWrapper.getTransforms(itemCameraTransforms); } return ImmutableMap.of(); } }
@Override public Pair<? extends IBakedModel, Matrix4f> handlePerspective(ItemCameraTransforms.TransformType cameraTransformType) { return PerspectiveMapWrapper.handlePerspective(this, transforms, cameraTransformType); } }
@Override public IBakedModel handleItemState(ItemStack itemStack, World world, EntityLivingBase entity) { return new PerspectiveMapWrapper(handleDisplayStandType(DisplayStand.getInstance().getDisplayStandType(itemStack), true, EnumFacing.DOWN), ModelHelpers.DEFAULT_PERSPECTIVE_TRANSFORMS); } }
private final ItemOverrideList overrides = new AnimationItemOverrideList(VanillaModelWrapper.this, modelState, format, bakedTextureGetter, super.getOverrides());
@Override public IBakedModel handleItemState(IBakedModel originalModel, ItemStack stack, World world, EntityLivingBase entity) { FluidStack fluidStack = FluidUtil.getFluidContained(stack); return new PerspectiveMapWrapper(new ItemModel(fluidStack), ModelManager.getDefaultBlockState()); } }
@Override public IBakedModel bake( IModelState state, VertexFormat format, Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter ) { IBakedModel baseModel = this.getBaseModel( state, format, bakedTextureGetter ); TextureAtlasSprite texDark = bakedTextureGetter.apply( TEXTURE_DARK ); TextureAtlasSprite texMedium = bakedTextureGetter.apply( TEXTURE_MEDIUM ); TextureAtlasSprite texBright = bakedTextureGetter.apply( TEXTURE_BRIGHT ); ImmutableMap<ItemCameraTransforms.TransformType, TRSRTransformation> map = PerspectiveMapWrapper.getTransforms( state ); return new ColorApplicatorBakedModel( baseModel, map, texDark, texMedium, texBright ); }
@Override public Pair<? extends IBakedModel, Matrix4f> handlePerspective( ItemCameraTransforms.TransformType type ) { return PerspectiveMapWrapper.handlePerspective( this, this.transforms, type ); } }
@Override public IBakedModel handleBlockState(IBlockState state, EnumFacing side, long rand) { return new PerspectiveMapWrapper(handleDisplayStandType(((IExtendedBlockState) state).getValue(DisplayStand.TYPE), state.getValue(DisplayStand.AXIS_X), state.getValue(DisplayStand.FACING)), ModelHelpers.DEFAULT_PERSPECTIVE_TRANSFORMS); }
@Override public IBakedModel bake( IModelState state, VertexFormat format, Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter ) { IBakedModel baseModel; try { baseModel = ModelLoaderRegistry.getModel( BASE_MODEL ).bake( state, format, bakedTextureGetter ); } catch( Exception e ) { throw new RuntimeException( e ); } ImmutableMap<ItemCameraTransforms.TransformType, TRSRTransformation> transforms = PerspectiveMapWrapper.getTransforms( state ); return new ItemEncodedPatternBakedModel( baseModel, transforms ); }
@Override public Pair<? extends IBakedModel, Matrix4f> handlePerspective(ItemCameraTransforms.TransformType type) { Pair<? extends IBakedModel, Matrix4f> pair = PerspectiveMapWrapper.handlePerspective(this, transforms, type); if(type == ItemCameraTransforms.TransformType.GUI && !isCulled && pair.getRight() == null) { return Pair.of(otherModel, null); } else if(type != ItemCameraTransforms.TransformType.GUI && isCulled) { return Pair.of(otherModel, pair.getRight()); } return pair; } }
@Override public IBakedModel handleItemState(ItemStack itemStack, World world, EntityLivingBase entity) { List<BakedQuad> quads = Lists.newLinkedList(); // Add regular quads for variable quads.addAll(this.baseModel.getQuads(null, getRenderingSide(), 0L)); // Add variable type overlay IVariableFacade variableFacade = ItemVariable.getInstance().getVariableFacade(itemStack); variableFacade.addModelOverlay(this, quads); return new PerspectiveMapWrapper(new SimpleBakedModel(quads, ModelHelpers.EMPTY_FACE_QUADS, this.isAmbientOcclusion(), this.isGui3d(), this.getParticleTexture(), this.getItemCameraTransforms(), this.getOverrides()), ModelHelpers.DEFAULT_PERSPECTIVE_TRANSFORMS_ITEM); }
@Override public IBakedModel bake(IModelState state, VertexFormat format, Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter) { ImmutableMap<ItemCameraTransforms.TransformType, TRSRTransformation> transforms = PerspectiveMapWrapper.getTransforms(state); IModelState transformState = new SimpleModelState(transforms); IBakedModel baseModelBaked = ModelLoaderRegistry.getModelOrMissing(baseModel) .bake(transformState, DefaultVertexFormats.ITEM, ModelLoader.defaultTextureGetter()); ImmutableMap.Builder<String, IBakedModel> bakedBlockBuilder = ImmutableMap.builder(); for(Map.Entry<String, ModelResourceLocation> e : blockModels.entrySet()) { IModel model = ModelLoaderRegistry.getModelOrMissing(e.getValue()); if(model != ModelLoaderRegistry.getMissingModel()) bakedBlockBuilder.put(e.getKey(), model.bake(transformState, DefaultVertexFormats.ITEM, ModelLoader.defaultTextureGetter())); } ImmutableMap.Builder<String, IBakedModel> bakedItemBuilder = ImmutableMap.builder(); for(Map.Entry<String, ModelResourceLocation> e : itemModels.entrySet()) { IModel model = ModelLoaderRegistry.getModelOrMissing(e.getValue()); if(model != ModelLoaderRegistry.getMissingModel()) bakedItemBuilder.put(e.getKey(), model.bake(transformState, DefaultVertexFormats.ITEM, ModelLoader.defaultTextureGetter())); } return new SpecialFlowerBakedModel(baseModelBaked, bakedBlockBuilder.build(), bakedItemBuilder.build(), transforms); }
@Override public Pair<? extends IBakedModel, Matrix4f> handlePerspective( ItemCameraTransforms.TransformType cameraTransformType ) { if( this.baseModel instanceof IBakedModel ) { return this.baseModel.handlePerspective( cameraTransformType ); } return PerspectiveMapWrapper.handlePerspective( this, this.transforms, cameraTransformType ); }
private IBakedModel bakeModel(IAlleleButterflySpecies species, float size) { ImmutableMap<String, String> textures = ImmutableMap.of("butterfly", species.getItemTexture()); if (modelButterfly == null) { try { modelButterfly = ModelLoaderRegistry.getModel(new ResourceLocation(Constants.MOD_ID, "item/butterfly_ge")); } catch (Exception e) { throw new RuntimeException(e); } } IModel model = modelButterfly.retexture(textures); IBakedModel bakedModel = model.bake(ModelRotation.X0_Y0, DefaultVertexFormats.ITEM, DefaultTextureGetter.INSTANCE); float scale = 1F / 16F; IModelState state = ModelUtil.loadModelState(new ResourceLocation(Constants.MOD_ID, "models/item/butterfly_ge")); state = new ModelStateComposition(state, new SimpleModelState(getTransformations(size))); return new PerspectiveMapWrapper(new TRSRBakedModel(bakedModel, -0.03125F, 0.25F - size * 0.37F, -0.03125F + size * scale, size * 1.4F), state); }
builder.putAll(PerspectiveMapWrapper.getTransforms(state)); builder2.putAll(PerspectiveMapWrapper.getTransforms(state)); builder2.putAll(transforms);
@Override public Pair<? extends IBakedModel, Matrix4f> handlePerspective( ItemCameraTransforms.TransformType cameraTransformType ) { final IBakedModel selectedModel; // No need to re-check for shift being held since this model is only handed out in that case if( cameraTransformType == ItemCameraTransforms.TransformType.GUI ) { selectedModel = this.outputModel; } else { selectedModel = ItemEncodedPatternBakedModel.this.baseModel; } // Now retroactively handle the isGui3d call, for which we always return false below if( selectedModel.isGui3d() != ItemEncodedPatternBakedModel.this.baseModel.isGui3d() ) { GlStateManager.enableLighting(); } if( selectedModel instanceof IBakedModel ) { return selectedModel.handlePerspective( cameraTransformType ); } return PerspectiveMapWrapper.handlePerspective( this, ItemEncodedPatternBakedModel.this.transforms, cameraTransformType ); }
@Override public IBakedModel bake(IModelState state, VertexFormat format, Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter) { if (bakedQuads.isEmpty()) { IModel crateModel = ModelLoaderRegistry.getModelOrMissing(new ResourceLocation(Constants.MOD_ID + ":item/crate-filled")); IBakedModel bakedModel = crateModel.bake(ModelManager.getInstance().getDefaultItemState(), DefaultVertexFormats.ITEM, DefaultTextureGetter.INSTANCE); //Set the crate color index to 100 for (BakedQuad quad : bakedModel.getQuads(null, null, 0L)) { bakedQuads.add(new BakedQuad(quad.getVertexData(), 100, quad.getFace(), quad.getSprite(), quad.shouldApplyDiffuseLighting(), quad.getFormat())); } } IBakedModel model; List<BakedQuad> quads = new LinkedList<>(bakedQuads); IBakedModel contentModel = getCustomContentModel(); if (contentModel == null) { model = new ModelCrateBaked(quads, contained); } else { quads.addAll(contentModel.getQuads(null, null, 0)); model = new ModelCrateBaked(quads); } return new PerspectiveMapWrapper(model, ModelManager.getInstance().getDefaultItemState()); } }
.blockCenterToCorner(new TRSRTransformation(new Vector3f(offsetX / 16f, -offsetY / 16f, 0), null, null, null))); ImmutableMap<TransformType, TRSRTransformation> map = PerspectiveMapWrapper.getTransforms(state);
@Override public Pair<? extends IBakedModel, Matrix4f> handlePerspective(TransformType cameraTransformType) { return PerspectiveMapWrapper.handlePerspective(this, transforms, cameraTransformType); } }
public void setModelState(@Nullable IModelState modelState) { this.modelState = modelState; this.transforms = PerspectiveMapWrapper.getTransforms(modelState); }