From cee831cf6a05db3d2a5afda1a1977a73b18d2e43 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Sat, 22 Oct 2016 23:58:36 +0200 Subject: [PATCH] Disk drive model without rotation --- .../refinedstorage/proxy/ProxyClient.java | 25 ++++++++- .../render/BakedModelDiskDrive.java | 55 +++++++++++++++++++ .../BakedModelPattern.java} | 7 ++- .../refinedstorage/render/ModelDiskDrive.java | 46 ++++++++++++++++ .../blockstates/disk_drive.json | 42 -------------- .../models/block/disk_drive.json | 50 +++++++++++++++++ 6 files changed, 178 insertions(+), 47 deletions(-) create mode 100755 src/main/java/com/raoulvdberge/refinedstorage/render/BakedModelDiskDrive.java rename src/main/java/com/raoulvdberge/refinedstorage/{item/PatternBakedModel.java => render/BakedModelPattern.java} (91%) create mode 100755 src/main/java/com/raoulvdberge/refinedstorage/render/ModelDiskDrive.java delete mode 100755 src/main/resources/assets/refinedstorage/blockstates/disk_drive.json create mode 100755 src/main/resources/assets/refinedstorage/models/block/disk_drive.json diff --git a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java index f52b18ae5..0e3dc4fbf 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java @@ -8,6 +8,8 @@ import com.raoulvdberge.refinedstorage.gui.GuiCraftingPreview; import com.raoulvdberge.refinedstorage.gui.grid.GuiCraftingStart; import com.raoulvdberge.refinedstorage.item.*; import com.raoulvdberge.refinedstorage.network.MessageGridCraftingPreviewResponse; +import com.raoulvdberge.refinedstorage.render.BakedModelPattern; +import com.raoulvdberge.refinedstorage.render.ModelDiskDrive; import com.raoulvdberge.refinedstorage.tile.TileController; import mcmultipart.client.multipart.ModelMultipartContainer; import mcmultipart.raytrace.PartMOP; @@ -22,6 +24,7 @@ import net.minecraft.client.renderer.block.model.ModelBakery; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.renderer.block.statemap.StateMap; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; +import net.minecraft.client.resources.IResourceManager; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.util.ResourceLocation; @@ -29,7 +32,10 @@ import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraftforge.client.event.DrawBlockHighlightEvent; import net.minecraftforge.client.event.ModelBakeEvent; +import net.minecraftforge.client.model.ICustomModelLoader; +import net.minecraftforge.client.model.IModel; import net.minecraftforge.client.model.ModelLoader; +import net.minecraftforge.client.model.ModelLoaderRegistry; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; @@ -164,7 +170,6 @@ public class ProxyClient extends ProxyCommon { ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.EXPORTER), 0, new ModelResourceLocation("refinedstorage:exporter", "inventory")); ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.IMPORTER), 0, new ModelResourceLocation("refinedstorage:importer", "inventory")); ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.EXTERNAL_STORAGE), 0, new ModelResourceLocation("refinedstorage:external_storage", "inventory")); - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.DISK_DRIVE), 0, new ModelResourceLocation("refinedstorage:disk_drive", "inventory")); ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.CONSTRUCTOR), 0, new ModelResourceLocation("refinedstorage:constructor", "inventory")); ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.DESTRUCTOR), 0, new ModelResourceLocation("refinedstorage:destructor", "inventory")); ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.SOLDERER), 0, new ModelResourceLocation("refinedstorage:solderer", "inventory")); @@ -190,6 +195,22 @@ public class ProxyClient extends ProxyCommon { ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.FLUID_STORAGE), EnumFluidStorageType.TYPE_CREATIVE.getId(), new ModelResourceLocation("refinedstorage:fluid_storage", "type=creative")); ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RSBlocks.DISK_MANIPULATOR), 0, new ModelResourceLocation("refinedstorage:disk_manipulator", "inventory")); + ModelLoaderRegistry.registerLoader(new ICustomModelLoader() { + @Override + public boolean accepts(ResourceLocation modelLocation) { + return modelLocation.getResourceDomain().equals(RS.ID) && modelLocation.getResourcePath().equals("disk_drive"); + } + + @Override + public IModel loadModel(ResourceLocation modelLocation) throws Exception { + return new ModelDiskDrive(); + } + + @Override + public void onResourceManagerReload(IResourceManager resourceManager) { + } + }); + ModelLoader.setCustomStateMapper(RSBlocks.CONTROLLER, new StateMap.Builder().ignore(BlockController.TYPE).build()); ModelLoader.setCustomMeshDefinition(Item.getItemFromBlock(RSBlocks.CONTROLLER), stack -> { @@ -221,7 +242,7 @@ public class ProxyClient extends ProxyCommon { } if (model.getResourceDomain().equals(RS.ID) && model.getResourcePath().equals("pattern")) { - e.getModelRegistry().putObject(model, new PatternBakedModel(e.getModelRegistry().getObject(model))); + e.getModelRegistry().putObject(model, new BakedModelPattern(e.getModelRegistry().getObject(model))); } } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/BakedModelDiskDrive.java b/src/main/java/com/raoulvdberge/refinedstorage/render/BakedModelDiskDrive.java new file mode 100755 index 000000000..cd3b89928 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/BakedModelDiskDrive.java @@ -0,0 +1,55 @@ +package com.raoulvdberge.refinedstorage.render; + +import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.block.model.IBakedModel; +import net.minecraft.client.renderer.block.model.ItemCameraTransforms; +import net.minecraft.client.renderer.block.model.ItemOverrideList; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.util.EnumFacing; + +import javax.annotation.Nullable; +import java.util.List; + +public class BakedModelDiskDrive implements IBakedModel { + private IBakedModel base; + + public BakedModelDiskDrive(IBakedModel base) { + this.base = base; + } + + @Override + public List getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand) { + return base.getQuads(state, side, rand); + } + + @Override + public boolean isAmbientOcclusion() { + return base.isAmbientOcclusion(); + } + + @Override + public boolean isGui3d() { + return base.isGui3d(); + } + + @Override + public boolean isBuiltInRenderer() { + return base.isBuiltInRenderer(); + } + + @Override + public TextureAtlasSprite getParticleTexture() { + return base.getParticleTexture(); + } + + @Override + public ItemCameraTransforms getItemCameraTransforms() { + return base.getItemCameraTransforms(); + } + + @Override + public ItemOverrideList getOverrides() { + return base.getOverrides(); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/PatternBakedModel.java b/src/main/java/com/raoulvdberge/refinedstorage/render/BakedModelPattern.java similarity index 91% rename from src/main/java/com/raoulvdberge/refinedstorage/item/PatternBakedModel.java rename to src/main/java/com/raoulvdberge/refinedstorage/render/BakedModelPattern.java index 709b2b9df..b5641c55f 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/PatternBakedModel.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/BakedModelPattern.java @@ -1,7 +1,8 @@ -package com.raoulvdberge.refinedstorage.item; +package com.raoulvdberge.refinedstorage.render; import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.CraftingPattern; import com.raoulvdberge.refinedstorage.gui.GuiBase; +import com.raoulvdberge.refinedstorage.item.ItemPattern; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.block.model.BakedQuad; @@ -17,10 +18,10 @@ import net.minecraft.world.World; import javax.annotation.Nullable; import java.util.List; -public class PatternBakedModel implements IBakedModel { +public class BakedModelPattern implements IBakedModel { private IBakedModel patternModel; - public PatternBakedModel(IBakedModel patternModel) { + public BakedModelPattern(IBakedModel patternModel) { this.patternModel = patternModel; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/ModelDiskDrive.java b/src/main/java/com/raoulvdberge/refinedstorage/render/ModelDiskDrive.java new file mode 100755 index 000000000..61c4c3728 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/ModelDiskDrive.java @@ -0,0 +1,46 @@ +package com.raoulvdberge.refinedstorage.render; + +import com.google.common.base.Function; +import net.minecraft.client.renderer.block.model.IBakedModel; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.renderer.vertex.VertexFormat; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.IModel; +import net.minecraftforge.client.model.ModelLoaderRegistry; +import net.minecraftforge.common.model.IModelState; +import net.minecraftforge.common.model.TRSRTransformation; + +import java.util.Collection; +import java.util.Collections; + +public class ModelDiskDrive implements IModel { + private static final ResourceLocation MODEL_BASE = new ResourceLocation("refinedstorage:block/disk_drive"); + + @Override + public Collection getDependencies() { + return Collections.singletonList(MODEL_BASE); + } + + @Override + public Collection getTextures() { + return Collections.emptyList(); + } + + @Override + public IBakedModel bake(IModelState state, VertexFormat format, Function bakedTextureGetter) { + IModel baseModel; + + try { + baseModel = ModelLoaderRegistry.getModel(MODEL_BASE); + } catch (Exception e) { + throw new Error("Unable to load disk drive base model", e); + } + + return new BakedModelDiskDrive(baseModel.bake(state, format, bakedTextureGetter)); + } + + @Override + public IModelState getDefaultState() { + return TRSRTransformation.identity(); + } +} diff --git a/src/main/resources/assets/refinedstorage/blockstates/disk_drive.json b/src/main/resources/assets/refinedstorage/blockstates/disk_drive.json deleted file mode 100755 index 2bfd5d06b..000000000 --- a/src/main/resources/assets/refinedstorage/blockstates/disk_drive.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "forge_marker": 1, - "defaults": { - "model": "cube", - "textures": { - "particle": "refinedstorage:blocks/disk_drive", - "down": "refinedstorage:blocks/disk_drive_bottom", - "up": "refinedstorage:blocks/disk_drive_top", - "north": "refinedstorage:blocks/disk_drive", - "east": "refinedstorage:blocks/disk_drive_side", - "south": "refinedstorage:blocks/disk_drive_side", - "west": "refinedstorage:blocks/disk_drive_side" - } - }, - "variants": { - "inventory": [ - { - "y": 0 - } - ], - "direction": { - "north": { - "y": 0 - }, - "east": { - "y": 90 - }, - "south": { - "y": 180 - }, - "west": { - "y": 270 - }, - "up": { - "x": 270 - }, - "down": { - "x": 90 - } - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/models/block/disk_drive.json b/src/main/resources/assets/refinedstorage/models/block/disk_drive.json new file mode 100755 index 000000000..f9dcea6ba --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/block/disk_drive.json @@ -0,0 +1,50 @@ +{ + "parent": "block/block", + "textures": { + "particle": "refinedstorage:blocks/disk_drive", + "front": "refinedstorage:blocks/disk_drive", + "bottom": "refinedstorage:blocks/disk_drive_bottom", + "top": "refinedstorage:blocks/disk_drive_top", + "side": "refinedstorage:blocks/disk_drive_side" + }, + "elements": [ + { + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 16, + 16 + ], + "faces": { + "down": { + "texture": "#bottom", + "cullface": "down" + }, + "up": { + "texture": "#top", + "cullface": "up" + }, + "north": { + "texture": "#front", + "cullface": "north" + }, + "south": { + "texture": "#side", + "cullface": "south" + }, + "west": { + "texture": "#side", + "cullface": "west" + }, + "east": { + "texture": "#side", + "cullface": "east" + } + } + } + ] +}