Multiple wood types, recipes, fixes, rendering, etc.

This commit is contained in:
Justin Aquadro committed 2014-08-25 00:44:55 -04:00
1 parent 7841bdabaa
commit caeb17d4ac
41 files changed
+255 -42

No files matched your search

@@ -0,0 +1,29 @@
itemGroup.storageDrawers=Storage Drawers
tile.fullDrawers2.oak.name=Oak Drawers 1x2
tile.fullDrawers2.spruce.name=Spruce Drawers 1x2
tile.fullDrawers2.birch.name=Birch Drawers 1x2
tile.fullDrawers2.jungle.name=Jungle Drawers 1x2
tile.fullDrawers2.acacia.name=Acacia Drawers 1x2
tile.fullDrawers2.big_oak.name=Dark Oak Drawers 1x2
tile.fullDrawers4.oak.name=Oak Drawers 2x2
tile.fullDrawers4.spruce.name=Spruce Drawers 2x2
tile.fullDrawers4.birch.name=Birch Drawers 2x2
tile.fullDrawers4.jungle.name=Jungle Drawers 2x2
tile.fullDrawers4.acacia.name=Acacia Drawers 2x2
tile.fullDrawers4.big_oak.name=Dark Oak Drawers 2x2
tile.halfDrawers2.oak.name=Compact Oak Drawers 1x2
tile.halfDrawers2.spruce.name=Compact Spruce Drawers 1x2
tile.halfDrawers2.birch.name=Compact Birch Drawers 1x2
tile.halfDrawers2.jungle.name=Compact Jungle Drawers 1x2
tile.halfDrawers2.acacia.name=Compact Acacia Drawers 1x2
tile.halfDrawers2.big_oak.name=Compact Dark Oak Drawers 1x2
tile.halfDrawers4.oak.name=Compact Oak Drawers 2x2
tile.halfDrawers4.spruce.name=Compact Spruce Drawers 2x2
tile.halfDrawers4.birch.name=Compact Birch Drawers 2x2
tile.halfDrawers4.jungle.name=Compact Jungle Drawers 2x2
tile.halfDrawers4.acacia.name=Compact Acacia Drawers 2x2
tile.halfDrawers4.big_oak.name=Compact Dark Oak Drawers 2x2
Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 520 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 403 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 410 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 451 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 473 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 499 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 545 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 422 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 472 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 499 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 484 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 520 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 405 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 577 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 596 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 481 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 477 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 489 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 479 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 501 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 385 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 391 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 B

@@ -1,8 +1,6 @@
package com.jaquadro.minecraft.storagedrawers;
import com.jaquadro.minecraft.storagedrawers.core.CommonProxy;
import com.jaquadro.minecraft.storagedrawers.core.ForgeEventHandler;
import com.jaquadro.minecraft.storagedrawers.core.ModBlocks;
import com.jaquadro.minecraft.storagedrawers.core.*;
import com.jaquadro.minecraft.storagedrawers.network.BlockClickMessage;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.SidedProxy;
@@ -23,6 +21,7 @@ public class StorageDrawers
static final String SOURCE_PATH = "com.jaquadro.minecraft.storagedrawers.";
public static final ModBlocks blocks = new ModBlocks();
public static final ModRecipes recipes = new ModRecipes();
public static SimpleNetworkWrapper network;
@@ -49,6 +48,6 @@ public class StorageDrawers
@Mod.EventHandler
public void postInit (FMLPostInitializationEvent event) {
recipes.init();
}
}
@@ -3,11 +3,13 @@ package com.jaquadro.minecraft.storagedrawers.block;
import com.jaquadro.minecraft.storagedrawers.StorageDrawers;
import com.jaquadro.minecraft.storagedrawers.block.tile.TileEntityDrawers;
import com.jaquadro.minecraft.storagedrawers.core.ClientProxy;
import com.jaquadro.minecraft.storagedrawers.core.ModCreativeTabs;
import com.jaquadro.minecraft.storagedrawers.network.BlockClickMessage;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.BlockWood;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.texture.IIconRegister;
@@ -34,13 +36,19 @@ public class BlockDrawers extends BlockContainer implements IExtendedBlockClickH
public final int drawerCount;
@SideOnly(Side.CLIENT)
private IIcon iconSide;
private IIcon[] iconSide;
@SideOnly(Side.CLIENT)
private IIcon iconFront2;
private IIcon[] iconSideV;
@SideOnly(Side.CLIENT)
private IIcon iconFront4;
private IIcon[] iconSideH;
@SideOnly(Side.CLIENT)
private IIcon[] iconFront2;
@SideOnly(Side.CLIENT)
private IIcon[] iconFront4;
public BlockDrawers (String blockName, int drawerCount, boolean halfDepth) {
super(Material.wood);
@@ -48,7 +56,7 @@ public class BlockDrawers extends BlockContainer implements IExtendedBlockClickH
this.drawerCount = drawerCount;
this.halfDepth = halfDepth;
setCreativeTab(CreativeTabs.tabDecorations);
setCreativeTab(ModCreativeTabs.tabStorageDrawers);
setHardness(2.5f);
setStepSound(Block.soundTypeWood);
setBlockName(blockName);
@@ -147,7 +155,7 @@ public class BlockDrawers extends BlockContainer implements IExtendedBlockClickH
return false;
int slot = getDrawerSlot(side, hitX, hitY, hitZ);
int countAdded = tileDrawers.putItemsIntoSlot(slot, item, 1);
int countAdded = tileDrawers.putItemsIntoSlot(slot, item, item.stackSize);
//if (countAdded > 0)
// world.markBlockForUpdate(x, y, z);
@@ -202,9 +210,14 @@ public class BlockDrawers extends BlockContainer implements IExtendedBlockClickH
if (tileDrawers.getDirection() != side)
return;
int slot = (hitY > .5) ? 0 : 1;
int slot = getDrawerSlot(side, hitX, hitY, hitZ);
ItemStack item = null;
if (player.isSneaking())
item = tileDrawers.takeItemsFromSlot(slot, tileDrawers.getStackSize(slot));
else
item = tileDrawers.takeItemsFromSlot(slot, 1);
ItemStack item = tileDrawers.takeItemsFromSlot(slot, 1);
if (item != null && item.stackSize > 0) {
dropItemStack(world, x, y, z, player, item);
world.markBlockForUpdate(x, y, z);
@@ -218,7 +231,7 @@ public class BlockDrawers extends BlockContainer implements IExtendedBlockClickH
@Override
public boolean removedByPlayer (World world, EntityPlayer player, int x, int y, int z) {
if (world.isRemote && player.capabilities.isCreativeMode && !player.isSneaking()) {
if (world.isRemote && player.capabilities.isCreativeMode) {
TileEntityDrawers tile = getTileEntity(world, x, y, z);
MovingObjectPosition posn = Minecraft.getMinecraft().objectMouseOver;
@@ -251,24 +264,79 @@ public class BlockDrawers extends BlockContainer implements IExtendedBlockClickH
return tile;
}
@Override
public void getSubBlocks (Item item, CreativeTabs creativeTabs, List list) {
for (int i = 0; i < BlockWood.field_150096_a.length; i++)
list.add(new ItemStack(item, 1, i));
}
@Override
public IIcon getIcon (int side, int meta) {
return drawerCount == 2 ? iconFront2 : iconFront4;
meta %= BlockWood.field_150096_a.length;
switch (side) {
case 0:
case 1:
return halfDepth ? iconSideV[meta] : iconSide[meta];
case 2:
case 3:
return halfDepth ? iconSideV[meta] : iconSide[meta];
case 4:
return drawerCount == 2 ? iconFront2[meta] : iconFront4[meta];
case 5:
return iconSide[meta];
}
return null;
}
@Override
public IIcon getIcon (IBlockAccess blockAccess, int x, int y, int z, int side) {
int meta = blockAccess.getBlockMetadata(x, y, z) % BlockWood.field_150096_a.length;
TileEntityDrawers tile = getTileEntity(blockAccess, x, y, z);
if (tile == null || side == tile.getDirection())
return drawerCount == 2 ? iconFront2 : iconFront4;
return drawerCount == 2 ? iconFront2[meta] : iconFront4[meta];
return iconSide;
switch (side) {
case 0:
case 1:
if (halfDepth) {
switch (tile.getDirection()) {
case 2:
case 3:
return iconSideH[meta];
case 4:
case 5:
return iconSideV[meta];
}
}
break;
default:
if (halfDepth)
return iconSideV[meta];
break;
}
return iconSide[meta];
}
@Override
public void registerBlockIcons (IIconRegister register) {
iconFront2 = register.registerIcon(StorageDrawers.MOD_ID + ":drawers_front_2");
iconFront4 = register.registerIcon(StorageDrawers.MOD_ID + ":drawers_front_4");
iconSide = register.registerIcon(StorageDrawers.MOD_ID + ":drawers_side");
String[] subtex = BlockWood.field_150096_a;
iconSide = new IIcon[subtex.length];
iconSideH = new IIcon[subtex.length];
iconSideV = new IIcon[subtex.length];
iconFront2 = new IIcon[subtex.length];
iconFront4 = new IIcon[subtex.length];
for (int i = 0; i < subtex.length; i++) {
iconFront2[i] = register.registerIcon(StorageDrawers.MOD_ID + ":drawers_" + subtex[i] + "_front_2");
iconFront4[i] = register.registerIcon(StorageDrawers.MOD_ID + ":drawers_" + subtex[i] + "_front_4");
iconSide[i] = register.registerIcon(StorageDrawers.MOD_ID + ":drawers_" + subtex[i] + "_side");
iconSideV[i] = register.registerIcon(StorageDrawers.MOD_ID + ":drawers_" + subtex[i] + "_side_v");
iconSideH[i] = register.registerIcon(StorageDrawers.MOD_ID + ":drawers_" + subtex[i] + "_side_h");
}
}
}
@@ -66,7 +66,7 @@ public class TileEntityDrawers extends TileEntity
}
public int stackCapacity () {
return drawerCount * drawerCapacity;
return level * drawerCapacity;
}
}
@@ -113,6 +113,13 @@ public class TileEntityDrawers extends TileEntity
return data[slot].meta;
}
public int getStackSize (int slot) {
if (data[slot].item == null)
return 0;
return data[slot].item.getItemStackLimit(null);
}
public ItemStack getSingleItemStack (int slot) {
if (data[slot].item == null)
return null;
@@ -133,10 +140,11 @@ public class TileEntityDrawers extends TileEntity
ItemStack stack = new ItemStack(data[slot].item, 1, data[slot].meta);
stack.stackSize = Math.min(stack.getMaxStackSize(), count);
stack.stackSize = Math.min(stack.stackSize, data[slot].count);
stack.setTagCompound(data[slot].attrs);
data[slot].count -= stack.stackSize;
if (data[slot].count == 0)
if (data[slot].count <= 0)
data[slot].reset();
return stack;
@@ -2,6 +2,7 @@ package com.jaquadro.minecraft.storagedrawers.client.renderer;
import com.jaquadro.minecraft.storagedrawers.block.BlockDrawers;
import com.jaquadro.minecraft.storagedrawers.block.tile.TileEntityDrawers;
import com.jaquadro.minecraft.storagedrawers.core.ClientProxy;
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
@@ -15,6 +16,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.Direction;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.common.util.ForgeDirection;
import org.lwjgl.opengl.GL11;
public class DrawersRenderer implements ISimpleBlockRenderingHandler
{
@@ -22,7 +24,32 @@ public class DrawersRenderer implements ISimpleBlockRenderingHandler
@Override
public void renderInventoryBlock (Block block, int metadata, int modelId, RenderBlocks renderer) {
if (!(block instanceof BlockDrawers))
return;
renderInventoryBlock((BlockDrawers) block, metadata, modelId, renderer);
}
private void renderInventoryBlock (BlockDrawers block, int metadata, int modelId, RenderBlocks renderer) {
double unit = .0625;
int side = 4;
boxRenderer.setUnit(unit);
boxRenderer.setColor(ModularBoxRenderer.COLOR_WHITE);
for (int i = 0; i < 6; i++)
boxRenderer.setIcon(block.getIcon(i, metadata), i);
GL11.glRotatef(90, 0, 1, 0);
GL11.glTranslatef(-.5f, -.5f, -.5f);
renderExterior(block, 0, 0, 0,side, renderer);
boxRenderer.setUnit(0);
boxRenderer.setInteriorIcon(block.getIcon(side, metadata), ForgeDirection.OPPOSITES[side]);
renderInterior(block, 0, 0, 0, side, renderer);
GL11.glTranslatef(.5f, .5f, .5f);
}
@Override
@@ -46,6 +73,17 @@ public class DrawersRenderer implements ISimpleBlockRenderingHandler
for (int i = 0; i < 6; i++)
boxRenderer.setIcon(block.getIcon(world, x, y, z, i), i);
renderExterior(block, x, y, z, side, renderer);
boxRenderer.setUnit(0);
boxRenderer.setInteriorIcon(block.getIcon(world, x, y, z, side), ForgeDirection.OPPOSITES[side]);
renderInterior(block, x, y, z, side, renderer);
return true;
}
private void renderExterior (BlockDrawers block, int x, int y, int z, int side, RenderBlocks renderer) {
double depth = block.halfDepth ? .5 : 1;
double xMin = 0, xMax = 0, zMin = 0, zMax = 0;
@@ -68,8 +106,34 @@ public class DrawersRenderer implements ISimpleBlockRenderingHandler
break;
}
boxRenderer.renderExterior(renderer, block, x, y, z, xMin, 0, zMin, xMax, .5, zMax, 0, ModularBoxRenderer.sideCut[side]);
boxRenderer.renderExterior(renderer, block, x, y, z, xMin, .5, zMin, xMax, 1, zMax, 0, ModularBoxRenderer.sideCut[side]);
if (block.drawerCount == 2) {
boxRenderer.renderExterior(renderer, block, x, y, z, xMin, 0, zMin, xMax, .5, zMax, 0, ModularBoxRenderer.sideCut[side]);
boxRenderer.renderExterior(renderer, block, x, y, z, xMin, .5, zMin, xMax, 1, zMax, 0, ModularBoxRenderer.sideCut[side]);
}
else if (block.drawerCount == 4) {
switch (side) {
case 2:
case 3:
boxRenderer.renderExterior(renderer, block, x, y, z, 0, 0, zMin, .5, .5, zMax, 0, ModularBoxRenderer.sideCut[side]);
boxRenderer.renderExterior(renderer, block, x, y, z, 0, .5, zMin, .5, 1, zMax, 0, ModularBoxRenderer.sideCut[side]);
boxRenderer.renderExterior(renderer, block, x, y, z, .5, 0, zMin, 1, .5, zMax, 0, ModularBoxRenderer.sideCut[side]);
boxRenderer.renderExterior(renderer, block, x, y, z, .5, .5, zMin, 1, 1, zMax, 0, ModularBoxRenderer.sideCut[side]);
break;
case 4:
case 5:
boxRenderer.renderExterior(renderer, block, x, y, z, xMin, 0, 0, xMax, .5, .5, 0, ModularBoxRenderer.sideCut[side]);
boxRenderer.renderExterior(renderer, block, x, y, z, xMin, .5, 0, xMax, 1, .5, 0, ModularBoxRenderer.sideCut[side]);
boxRenderer.renderExterior(renderer, block, x, y, z, xMin, 0, .5, xMax, .5, 1, 0, ModularBoxRenderer.sideCut[side]);
boxRenderer.renderExterior(renderer, block, x, y, z, xMin, .5, .5, xMax, 1, 1, 0, ModularBoxRenderer.sideCut[side]);
break;
}
}
}
private void renderInterior (BlockDrawers block, int x, int y, int z, int side, RenderBlocks renderer) {
double unit = .0625;
double depth = block.halfDepth ? .5 : 1;
double xMin = 0, xMax = 0, zMin = 0, zMax = 0;
switch (side) {
case 2:
@@ -90,33 +154,37 @@ public class DrawersRenderer implements ISimpleBlockRenderingHandler
break;
}
boxRenderer.setUnit(0);
boxRenderer.setInteriorIcon(block.getIcon(world, x, y, z, side), ForgeDirection.OPPOSITES[side]);
boxRenderer.renderInterior(renderer, block, x, y, z, xMin, unit, zMin, xMax, unit * 7, zMax, 0, ModularBoxRenderer.sideCut[side]);
boxRenderer.renderInterior(renderer, block, x, y, z, xMin, unit * 9, zMin, xMax, 1 - unit, zMax, 0, ModularBoxRenderer.sideCut[side]);
/*TileEntityDrawers tile = block.getTileEntity(world, x, y, z);
if (tile != null) {
ItemStack item = tile.getSingleItemStack(0);
if (item != null) {
EntityItem itemEnt = new EntityItem(Minecraft.getMinecraft().thePlayer.getEntityWorld(), 0, 0, 0, item);
itemEnt.hoverStart = 0;
RenderItem.renderInFrame = true;
RenderManager.instance.renderEntityWithPosYaw(itemEnt, 0, 0, 0, 0, 0);
RenderItem.renderInFrame = false;
if (block.drawerCount == 2) {
boxRenderer.renderInterior(renderer, block, x, y, z, xMin, unit, zMin, xMax, unit * 7, zMax, 0, ModularBoxRenderer.sideCut[side]);
boxRenderer.renderInterior(renderer, block, x, y, z, xMin, unit * 9, zMin, xMax, 1 - unit, zMax, 0, ModularBoxRenderer.sideCut[side]);
}
else if (block.drawerCount == 4) {
switch (side) {
case 2:
case 3:
boxRenderer.renderInterior(renderer, block, x, y, z, unit, unit, zMin, .5 - unit, unit * 7, zMax, 0, ModularBoxRenderer.sideCut[side]);
boxRenderer.renderInterior(renderer, block, x, y, z, unit, unit * 9, zMin, .5 - unit, 1 - unit, zMax, 0, ModularBoxRenderer.sideCut[side]);
boxRenderer.renderInterior(renderer, block, x, y, z, .5 + unit, unit, zMin, 1 - unit, unit * 7, zMax, 0, ModularBoxRenderer.sideCut[side]);
boxRenderer.renderInterior(renderer, block, x, y, z, .5 + unit, unit * 9, zMin, 1 - unit, 1 - unit, zMax, 0, ModularBoxRenderer.sideCut[side]);
break;
case 4:
case 5:
boxRenderer.renderInterior(renderer, block, x, y, z, xMin, unit, unit, xMax, unit * 7, .5 - unit, 0, ModularBoxRenderer.sideCut[side]);
boxRenderer.renderInterior(renderer, block, x, y, z, xMin, unit * 9, unit, xMax, 1 - unit, .5 - unit, 0, ModularBoxRenderer.sideCut[side]);
boxRenderer.renderInterior(renderer, block, x, y, z, xMin, unit, .5 + unit, xMax, unit * 7, 1 - unit, 0, ModularBoxRenderer.sideCut[side]);
boxRenderer.renderInterior(renderer, block, x, y, z, xMin, unit * 9, .5 + unit, xMax, 1 - unit, 1 - unit, 0, ModularBoxRenderer.sideCut[side]);
break;
}
}*/
return true;
}
}
@Override
public boolean shouldRender3DInInventory (int modelId) {
return false;
return true;
}
@Override
public int getRenderId () {
return 0;
return ClientProxy.drawersRenderID;
}
}
@@ -0,0 +1,19 @@
package com.jaquadro.minecraft.storagedrawers.core;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
public final class ModCreativeTabs
{
private ModCreativeTabs () { }
public static final CreativeTabs tabStorageDrawers = new CreativeTabs("storageDrawers") {
@Override
@SideOnly(Side.CLIENT)
public Item getTabIconItem () {
return Item.getItemFromBlock(ModBlocks.fullDrawers2);
}
};
}
@@ -0,0 +1,22 @@
package com.jaquadro.minecraft.storagedrawers.core;
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.block.BlockWood;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
public class ModRecipes
{
public void init () {
for (int i = 0; i < BlockWood.field_150096_a.length; i++) {
GameRegistry.addRecipe(new ItemStack(ModBlocks.fullDrawers2, 2, i), "xyx", "xxx", "xyx",
'x', new ItemStack(Blocks.planks, 1, i), 'y', Blocks.chest);
GameRegistry.addRecipe(new ItemStack(ModBlocks.halfDrawers2, 2, i), "xyx", "xxx", "xyx",
'x', new ItemStack(Blocks.wooden_slab, 1, i), 'y', Blocks.chest);
GameRegistry.addRecipe(new ItemStack(ModBlocks.fullDrawers4, 4, i), "yxy", "xxx", "yxy",
'x', new ItemStack(Blocks.planks, 1, i), 'y', Blocks.chest);
GameRegistry.addRecipe(new ItemStack(ModBlocks.halfDrawers4, 4, i), "yxy", "xxx", "yxy",
'x', new ItemStack(Blocks.wooden_slab, 1, i), 'y', Blocks.chest);
}
}
}
@@ -24,7 +24,7 @@ public class ItemDrawers extends ItemMultiTexture
TileEntityDrawers tile = (TileEntityDrawers) world.getTileEntity(x, y, z);
if (tile != null) {
if (side > 1)
tile.setDirection(ForgeDirection.OPPOSITES[side]);
tile.setDirection(side);
BlockDrawers block = (BlockDrawers) field_150939_a;
tile.setDrawerCount(block.drawerCount);