Disk drive model without rotation

This commit is contained in:
Raoul Van den Berge
2016-10-22 23:58:36 +02:00
parent 3c9be94f2a
commit cee831cf6a
6 changed files with 178 additions and 47 deletions

View File

@@ -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)));
}
}
}

View File

@@ -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<BakedQuad> 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();
}
}

View File

@@ -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;
}

View File

@@ -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<ResourceLocation> getDependencies() {
return Collections.singletonList(MODEL_BASE);
}
@Override
public Collection<ResourceLocation> getTextures() {
return Collections.emptyList();
}
@Override
public IBakedModel bake(IModelState state, VertexFormat format, Function<ResourceLocation, TextureAtlasSprite> 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();
}
}

View File

@@ -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
}
}
}
}

View File

@@ -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"
}
}
}
]
}