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