Disk drive model without rotation
This commit is contained in:
@@ -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)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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();
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
|
46
src/main/java/com/raoulvdberge/refinedstorage/render/ModelDiskDrive.java
Executable file
46
src/main/java/com/raoulvdberge/refinedstorage/render/ModelDiskDrive.java
Executable 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();
|
||||
}
|
||||
}
|
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
50
src/main/resources/assets/refinedstorage/models/block/disk_drive.json
Executable file
50
src/main/resources/assets/refinedstorage/models/block/disk_drive.json
Executable 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
Reference in New Issue
Block a user