Added millstone

This commit is contained in:
Calclavia 2014-01-28 00:00:21 +08:00
parent 5ad8643350
commit ee0f2d216d
21 changed files with 297 additions and 39 deletions

View file

@ -66,7 +66,7 @@ public class RecipeUtils
@Override
public ItemStack getItemStack()
{
return itemStack;
return itemStack.copy();
}
}

View file

@ -4,7 +4,9 @@ import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.ShapedOreRecipe;
import resonantinduction.archaic.blocks.BlockMillstone;
import resonantinduction.archaic.blocks.BlockTurntable;
import resonantinduction.archaic.blocks.TileMillstone;
import resonantinduction.archaic.crate.BlockCrate;
import resonantinduction.archaic.crate.ItemBlockCrate;
import resonantinduction.archaic.crate.TileCrate;
@ -16,7 +18,7 @@ import resonantinduction.archaic.firebox.BlockHotPlate;
import resonantinduction.archaic.firebox.TileFirebox;
import resonantinduction.archaic.firebox.TileHotPlate;
import resonantinduction.archaic.imprint.BlockImprinter;
import resonantinduction.archaic.imprint.ItemBlockImprint;
import resonantinduction.archaic.imprint.ItemImprint;
import resonantinduction.archaic.imprint.TileImprinter;
import resonantinduction.core.Reference;
import resonantinduction.core.ResonantInduction;
@ -68,6 +70,7 @@ public class Archaic
public static Block blockTurntable;
public static Block blockFirebox;
public static Block blockHotPlate;
public static Block blockMillstone;
public static Block blockMachinePart;
public static Item itemImprint;
@ -86,10 +89,10 @@ public class Archaic
blockTurntable = contentRegistry.createBlock(BlockTurntable.class);
blockFirebox = contentRegistry.createTile(BlockFirebox.class, TileFirebox.class);
blockHotPlate = contentRegistry.createBlock(BlockHotPlate.class, ItemBlockMetadata.class, TileHotPlate.class);
blockMillstone = contentRegistry.createTile(BlockMillstone.class, TileMillstone.class);
blockMachinePart = contentRegistry.createBlock(BlockMachineMaterial.class, ItemBlockMetadata.class);
itemImprint = contentRegistry.createItem(ItemBlockImprint.class);
itemImprint = contentRegistry.createItem(ItemImprint.class);
itemHammer = contentRegistry.createItem(ItemHammer.class);
proxy.preInit();
Settings.save();

View file

@ -0,0 +1,144 @@
package resonantinduction.archaic.blocks;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Icon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection;
import resonantinduction.api.recipe.MachineRecipes;
import resonantinduction.api.recipe.MachineRecipes.RecipeType;
import resonantinduction.archaic.crate.TileCrate;
import resonantinduction.core.Reference;
import resonantinduction.core.prefab.block.BlockRI;
import universalelectricity.api.vector.Vector2;
import universalelectricity.api.vector.Vector3;
import universalelectricity.api.vector.VectorWorld;
import calclavia.lib.utility.inventory.InventoryUtility;
import codechicken.multipart.ControlKeyModifer;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class BlockMillstone extends BlockRI
{
Icon top;
public BlockMillstone()
{
super("millstone", Material.wood);
setTextureName(Reference.PREFIX + "material_wood_surface");
}
@SideOnly(Side.CLIENT)
@Override
public void registerIcons(IconRegister iconReg)
{
this.top = iconReg.registerIcon(Reference.PREFIX + "material_wood_top");
super.registerIcons(iconReg);
}
@Override
@SideOnly(Side.CLIENT)
public Icon getBlockTexture(IBlockAccess world, int x, int y, int z, int side)
{
return getIcon(side, 0);
}
/** Returns the block texture based on the side being looked at. Args: side */
@Override
@SideOnly(Side.CLIENT)
public Icon getIcon(int side, int meta)
{
if (side == 1)
{
return top;
}
return blockIcon;
}
@Override
public void onBlockClicked(World world, int x, int y, int z, EntityPlayer player)
{
if (!world.isRemote)
{
TileEntity te = world.getBlockTileEntity(x, y, z);
if (te instanceof TileMillstone)
{
TileMillstone tile = (TileMillstone) te;
ItemStack output = tile.getStackInSlot(0);
if (output != null)
{
InventoryUtility.dropItemStack(world, new Vector3(player), output, 0);
tile.setInventorySlotContents(0, null);
}
tile.onInventoryChanged();
}
}
}
@Override
public boolean onMachineActivated(World world, int x, int y, int z, EntityPlayer player, int hitSide, float hitX, float hitY, float hitZ)
{
TileEntity te = world.getBlockTileEntity(x, y, z);
if (te instanceof TileMillstone)
{
TileMillstone tile = (TileMillstone) te;
ItemStack current = player.inventory.getCurrentItem();
ItemStack output = tile.getStackInSlot(0);
if (output != null)
{
InventoryUtility.dropItemStack(world, new Vector3(player), output, 0);
tile.setInventorySlotContents(0, null);
}
else if (current != null && tile.isItemValidForSlot(0, current))
{
tile.setInventorySlotContents(0, current);
player.inventory.setInventorySlotContents(player.inventory.currentItem, null);
}
world.markBlockForUpdate(x, y, z);
}
return false;
}
@Override
public boolean onUseWrench(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float hitX, float hitY, float hitZ)
{
TileEntity te = world.getBlockTileEntity(x, y, z);
if (te instanceof TileMillstone)
{
TileMillstone tile = (TileMillstone) te;
ItemStack output = tile.getStackInSlot(0);
if (output != null)
{
tile.doGrind(new Vector3(entityPlayer));
entityPlayer.addExhaustion(0.3f);
return true;
}
}
return false;
}
@Override
public TileEntity createNewTileEntity(World var1)
{
return new TileMillstone();
}
}

View file

@ -0,0 +1,24 @@
package resonantinduction.archaic.blocks;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection;
import resonantinduction.core.render.RenderItemOverlayTile;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class RenderMillstone extends RenderItemOverlayTile
{
private final RenderBlocks renderBlocks = new RenderBlocks();
@Override
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float var8)
{
if (tileEntity instanceof TileMillstone)
{
TileMillstone tile = (TileMillstone) tileEntity;
renderItemOnSides(tileEntity, tile.getStackInSlot(0), x, y, z, "Empty");
}
}
}

View file

@ -0,0 +1,83 @@
package resonantinduction.archaic.blocks;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.packet.Packet;
import resonantinduction.api.recipe.MachineRecipes;
import resonantinduction.api.recipe.MachineRecipes.RecipeType;
import resonantinduction.api.recipe.RecipeUtils.Resource;
import resonantinduction.core.ResonantInduction;
import universalelectricity.api.vector.Vector3;
import calclavia.lib.network.IPacketReceiver;
import calclavia.lib.network.PacketHandler;
import calclavia.lib.prefab.tile.TileExternalInventory;
import calclavia.lib.utility.inventory.InventoryUtility;
import com.google.common.io.ByteArrayDataInput;
public class TileMillstone extends TileExternalInventory implements IPacketReceiver
{
private int grindCount = 0;
public void onInventoryChanged()
{
grindCount = 0;
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
}
public void doGrind(Vector3 spawnPos)
{
Resource[] outputs = MachineRecipes.INSTANCE.getOutput(RecipeType.GRINDER, getStackInSlot(0));
if (outputs.length > 0)
{
if (++grindCount > 20)
{
for (Resource res : outputs)
{
InventoryUtility.dropItemStack(worldObj, spawnPos, res.getItemStack().copy());
}
decrStackSize(0, 1);
onInventoryChanged();
}
}
}
@Override
public boolean canUpdate()
{
return false;
}
@Override
public boolean isItemValidForSlot(int i, ItemStack itemstack)
{
return MachineRecipes.INSTANCE.getOutput(RecipeType.GRINDER, itemstack).length > 0;
}
/**
* Packets
*/
@Override
public Packet getDescriptionPacket()
{
NBTTagCompound nbt = new NBTTagCompound();
this.writeToNBT(nbt);
return ResonantInduction.PACKET_TILE.getPacket(this, nbt);
}
@Override
public void onReceivePacket(ByteArrayDataInput data, EntityPlayer player, Object... extra)
{
try
{
this.readFromNBT(PacketHandler.readNBTTagCompound(data));
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

View file

@ -56,7 +56,7 @@ public class ItemHammer extends ItemRI
}
world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, Reference.PREFIX + "hammer", 0.5f, 0.8f + (0.2f * world.rand.nextFloat()));
player.addExhaustion(1);
player.addExhaustion(0.3f);
stack.damageItem(1, player);
}
}

View file

@ -21,7 +21,7 @@ import org.apache.commons.lang3.ArrayUtils;
import resonantinduction.api.IArmbot;
import resonantinduction.api.IArmbotUseable;
import resonantinduction.archaic.imprint.ItemBlockImprint;
import resonantinduction.archaic.imprint.ItemImprint;
import resonantinduction.core.ResonantInduction;
import resonantinduction.electrical.encoder.coding.args.ArgumentData;
import universalelectricity.api.vector.Vector3;
@ -329,9 +329,9 @@ public class TileEngineeringTable extends TileAdvanced implements IPacketReceive
{
ItemStack filterStack = craftingMatrix[CENTER_SLOT];
if (filterStack != null && filterStack.getItem() instanceof ItemBlockImprint)
if (filterStack != null && filterStack.getItem() instanceof ItemImprint)
{
Set<ItemStack> filters = ItemBlockImprint.getFilters(filterStack);
Set<ItemStack> filters = ItemImprint.getFilters(filterStack);
for (ItemStack outputStack : filters)
{

View file

@ -182,7 +182,7 @@ public class BlockImprinter extends BlockRI
InventoryUtility.dropItemStack(world, new Vector3(player), output, 0);
tile.setInventorySlotContents(9, null);
}
else if (current != null && current.getItem() instanceof ItemBlockImprint)
else if (current != null && current.getItem() instanceof ItemImprint)
{
tile.setInventorySlotContents(9, current);
player.inventory.setInventorySlotContents(player.inventory.currentItem, null);

View file

@ -17,14 +17,14 @@ import resonantinduction.core.Reference;
import resonantinduction.core.ResonantInductionTabs;
import resonantinduction.core.Settings;
public class ItemBlockImprint extends Item
public class ItemImprint extends Item
{
public ItemBlockImprint()
public ItemImprint()
{
this(Settings.getNextItemID());
}
public ItemBlockImprint(int id)
public ItemImprint(int id)
{
super(Settings.CONFIGURATION.getItem("imprint", id).getInt());
this.setUnlocalizedName(Reference.PREFIX + "imprint");

View file

@ -21,18 +21,6 @@ public class TileImprinter extends TileAdvanced implements ISidedInventory, IPac
{
public ItemStack[] inventory = new ItemStack[10];
@Override
public boolean canUpdate()
{
return false;
}
@Override
public int getSizeInventory()
{
return this.inventory.length;
}
@Override
public Packet getDescriptionPacket()
{
@ -54,6 +42,21 @@ public class TileImprinter extends TileAdvanced implements ISidedInventory, IPac
}
}
/**
* Inventory methods.
*/
@Override
public boolean canUpdate()
{
return false;
}
@Override
public int getSizeInventory()
{
return this.inventory.length;
}
/**
* Sets the given item stack to the specified slot in the inventory (can be crafting or armor
* sections).
@ -144,11 +147,11 @@ public class TileImprinter extends TileAdvanced implements ISidedInventory, IPac
/** Makes the stamping recipe for filters */
ItemStack fitlerStack = this.inventory[9];
if (fitlerStack != null && fitlerStack.getItem() instanceof ItemBlockImprint)
if (fitlerStack != null && fitlerStack.getItem() instanceof ItemImprint)
{
ItemStack outputStack = fitlerStack.copy();
outputStack.stackSize = 1;
Set<ItemStack> filters = ItemBlockImprint.getFilters(outputStack);
Set<ItemStack> filters = ItemImprint.getFilters(outputStack);
Set<ItemStack> toAdd = new HashSet<ItemStack>();
/** A hashset of to be imprinted items containing NO repeats. */
@ -194,7 +197,7 @@ public class TileImprinter extends TileAdvanced implements ISidedInventory, IPac
filters.addAll(toAdd);
ItemBlockImprint.setFilters(outputStack, filters);
ItemImprint.setFilters(outputStack, filters);
this.inventory[9] = outputStack;
}
}

View file

@ -8,7 +8,7 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import resonantinduction.api.IFilterable;
import resonantinduction.archaic.imprint.ItemBlockImprint;
import resonantinduction.archaic.imprint.ItemImprint;
import resonantinduction.core.prefab.tile.TileEntityFilterable;
/**
@ -51,7 +51,7 @@ public abstract class BlockImprintable extends BlockRIRotatable
{
if (player.getCurrentEquippedItem() != null)
{
if (player.getCurrentEquippedItem().getItem() instanceof ItemBlockImprint)
if (player.getCurrentEquippedItem().getItem() instanceof ItemImprint)
{
((IFilterable) tileEntity).setFilter(player.getCurrentEquippedItem());
player.inventory.setInventorySlotContents(player.inventory.currentItem, null);

View file

@ -6,7 +6,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.ForgeDirection;
import resonantinduction.api.IFilterable;
import resonantinduction.archaic.imprint.ItemBlockImprint;
import resonantinduction.archaic.imprint.ItemImprint;
import calclavia.lib.prefab.tile.IRotatable;
import calclavia.lib.prefab.tile.TileExternalInventory;
@ -36,7 +36,7 @@ public abstract class TileEntityFilterable extends TileExternalInventory impleme
{
if (this.getFilter() != null && itemStack != null)
{
Set<ItemStack> checkStacks = ItemBlockImprint.getFilters(getFilter());
Set<ItemStack> checkStacks = ItemImprint.getFilters(getFilter());
if (checkStacks != null)
{

View file

@ -8,7 +8,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MovingObjectPosition;
import resonantinduction.archaic.imprint.ItemBlockImprint;
import resonantinduction.archaic.imprint.ItemImprint;
import resonantinduction.core.prefab.tile.TileEntityFilterable;
import universalelectricity.api.vector.Vector3;
import calclavia.lib.render.RenderUtility;
@ -41,7 +41,7 @@ public abstract class RenderImprintable extends TileEntitySpecialRenderer
{
if (objectPosition.blockX == tileFilterable.xCoord && objectPosition.blockY == tileFilterable.yCoord && objectPosition.blockZ == tileFilterable.zCoord)
{
Set<ItemStack> filters = ItemBlockImprint.getFilters(filter);
Set<ItemStack> filters = ItemImprint.getFilters(filter);
int i = 0;
for (ItemStack filterStack : filters)

View file

@ -88,7 +88,7 @@ public abstract class RenderItemOverlayTile extends TileEntitySpecialRenderer
renderItemOnSides(tile, itemStack, x, y, z, "No Output");
}
public void renderItemOnSides(TileEntity tile, ItemStack itemStack, double x, double y, double z, String itemName)
public void renderItemOnSides(TileEntity tile, ItemStack itemStack, double x, double y, double z, String renderText)
{
RenderItem renderItem = ((RenderItem) RenderManager.instance.getEntityClassRenderObject(EntityItem.class));
@ -99,7 +99,7 @@ public abstract class RenderItemOverlayTile extends TileEntitySpecialRenderer
if (itemStack != null)
{
itemName = itemStack.getDisplayName();
renderText = itemStack.getDisplayName();
amount = Integer.toString(itemStack.stackSize);
}
@ -155,7 +155,7 @@ public abstract class RenderItemOverlayTile extends TileEntitySpecialRenderer
GL11.glPopMatrix();
}
this.renderText(itemName, side, 0.02f, x, y - 0.35f, z);
this.renderText(renderText, side, 0.02f, x, y - 0.35f, z);
this.renderText(amount, side, 0.02f, x, y - 0.15f, z);
}
}

View file

@ -10,7 +10,7 @@ import net.minecraft.network.packet.Packet;
import net.minecraft.util.AxisAlignedBB;
import net.minecraftforge.common.ForgeDirection;
import resonantinduction.api.IManipulator;
import resonantinduction.archaic.imprint.ItemBlockImprint;
import resonantinduction.archaic.imprint.ItemImprint;
import resonantinduction.core.ResonantInduction;
import resonantinduction.core.prefab.tile.TileEntityFilterable;
import universalelectricity.api.vector.Vector3;
@ -214,7 +214,7 @@ public class TileManipulator extends TileEntityFilterable implements IRotatable,
{
if (invExtractionHelper == null || invExtractionHelper.world != this.worldObj)
{
this.invExtractionHelper = new InternalInventoryHandler(this.worldObj, new Vector3(this), this.getFilter() != null ? ItemBlockImprint.getFilters(getFilter()) : null, this.isInverted());
this.invExtractionHelper = new InternalInventoryHandler(this.worldObj, new Vector3(this), this.getFilter() != null ? ItemImprint.getFilters(getFilter()) : null, this.isInverted());
}
return invExtractionHelper;
}
@ -224,7 +224,7 @@ public class TileManipulator extends TileEntityFilterable implements IRotatable,
{
super.setFilter(filter);
/* Reset inv Helper's filters */
this.invHelper().setFilter(this.getFilter() != null ? ItemBlockImprint.getFilters(this.getFilter()) : null, this.isInverted());
this.invHelper().setFilter(this.getFilter() != null ? ItemImprint.getFilters(this.getFilter()) : null, this.isInverted());
}
/** Is this manipulator set to output items */

View file

@ -37,6 +37,7 @@ item.resonantinduction\:hammer.name=Hammer
## Machines
tile.resonantinduction\:millstone.name=Millstone
tile.resonantinduction\:millstone.tooltip=Put some rubble in the millstone and start wrenching to grind rubble into dust.
tile.resonantinduction\:imprinter.name=Imprinter
tile.resonantinduction\:engineeringTable.name=Engineering Table
tile.resonantinduction\:firebox.name=Firebox

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB