Made a basic harvester block

basic harvester proto type too test search function for bots.
This commit is contained in:
Rseifert 2012-07-22 06:56:53 -04:00
parent 35b1f75329
commit 249c6cfef6
3 changed files with 255 additions and 2 deletions

View file

@ -1,5 +1,61 @@
package net.minecraft.src.eui.robotics;
public class BlockComp {
import java.util.List;
import net.minecraft.src.Block;
import net.minecraft.src.IBlockAccess;
import net.minecraft.src.Material;
import net.minecraft.src.TileEntity;
import net.minecraft.src.eui.TileEntityNuller;
import net.minecraft.src.eui.boiler.TileEntityBoiler;
import net.minecraft.src.eui.burner.TileEntityFireBox;
import net.minecraft.src.eui.turbine.TileEntityGenerator;
import net.minecraft.src.universalelectricity.Vector3;
public class BlockComp extends net.minecraft.src.universalelectricity.extend.BlockMachine {
public BlockComp(int par1) {
super("RobotMachine", par1, Material.iron);
// TODO Auto-generated constructor stub
}
public int getBlockTexture(IBlockAccess par1iBlockAccess, int x, int y, int z, int side)
{
return 0;
}
public int getBlockTextureFromSideAndMetadata(int side, int metadata)
{
return 0;
}
@Override
public TileEntity getBlockEntity() {
// TODO Auto-generated method stub
return null;
}
@Override
public TileEntity getBlockEntity(int meta)
{
switch(meta)
{
case 0: return new TileEntityComp();
case 1: return new TileEntityComp();
case 2: return new TileEntityComp();
case 3: return new TileEntityComp();
}
return null;
}
@Override
public String getTextureFile() {
// TODO Auto-generated method stub
return "/eui/blocks.png";
}
@Override
public boolean isOpaqueCube()
{
return false;
}
public int getRenderType()
{
return 0;
}
}

View file

@ -0,0 +1,24 @@
package net.minecraft.src.eui.robotics;
import java.util.ArrayList;
import net.minecraft.src.*;
public class ItemMachine extends ItemBlock {
public ItemMachine(int id) {
super(id);
setMaxDamage(0);
setHasSubtypes(true);
}
@Override
public int getMetadata(int metadata)
{
return metadata;
}
@Override
public String getItemName()
{
return "Machine";
}
}

View file

@ -1,5 +1,178 @@
package net.minecraft.src.eui.robotics;
public class TileEntityComp {
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.client.Minecraft;
import net.minecraft.src.AxisAlignedBB;
import net.minecraft.src.Block;
import net.minecraft.src.EntityItem;
import net.minecraft.src.EntityPlayer;
import net.minecraft.src.ItemStack;
import net.minecraft.src.Material;
import net.minecraft.src.ModLoader;
import net.minecraft.src.TileEntity;
import net.minecraft.src.universalelectricity.Vector3;
import net.minecraft.src.universalelectricity.electricity.TileEntityElectricUnit;
public class TileEntityComp extends TileEntityElectricUnit {
public EntityRobot[] BotList = {null,null,null,null};
int updateCount = 0;
int scanCount = 0;
boolean hasScanned = false;
int lastScanXDif=0;
int lastScanYDif=0;
int lastScanZDif=0;
public void onUpdate(float watts, float voltage, byte side)
{
++updateCount;
if(updateCount >= 100 && worldObj.checkChunksExist(xCoord, yCoord, zCoord, xCoord+1, yCoord+1, zCoord+1))
{
++scanCount;
if(scanCount < 10){hasScanned = true;}else{scanCount = 0;}
Vector3 thisBlock = new Vector3(this.xCoord,this.yCoord,this.zCoord);
updateCount = 0;
Vector3 targetVec = findBlock(thisBlock,Block.leaves,2,hasScanned);
if(targetVec == null)
{
targetVec = findBlock(thisBlock,Block.wood,2,hasScanned);
}
if(targetVec != null)
{
int Targetx = targetVec.intX();
int Targety = targetVec.intY();
int Targetz = targetVec.intZ();
ModLoader.getMinecraftInstance().thePlayer.addChatMessage("rb:"+Targetx+"X:"+Targety+"Y:"+Targetz+"Z");
int blockTargetc = worldObj.getBlockId(Targetx, Targety, Targetz);
worldObj.setBlock(Targetx, Targety, Targetz, 0);
if(blockTargetc > 0)
{
EntityItem dropedItem = new EntityItem(worldObj, Targetx, Targety - 0.3D, Targetz, new ItemStack(blockTargetc,1,1));
worldObj.spawnEntityInWorld(dropedItem);
}
}
else
{
ModLoader.getMinecraftInstance().thePlayer.addChatMessage("N/A");//nothing found froms scan
scanCount = 0;
}
//resets scan to zero location every 10 scans
}
}
/**
*
* @param startSpot - center of the scan radius
* @param block - block being looked for
* @param range - block count from center to scan
* @param resume - whether or not to resume scan from returned block
* @return location vector3 of the block equaling scan args
*/
public Vector3 findBlock(Vector3 startSpot,Block block,int range,boolean resume)
{
int Startx = startSpot.intX();
int Starty = startSpot.intY();
int Startz = startSpot.intZ();
int distanceX = (range * 2) + 1;
int distanceZ = (range * 2) + 1;
int distanceY = (range * 2) + 1;
Boolean negX = Startx < 0;
Boolean negZ = Startz < 0;
int xChange = -1;
int zChange = -1;
int yChange = -1;
Startx += range;
Startz += range;
Starty += range;
int pauseCount = 0;
ModLoader.getMinecraftInstance().thePlayer.addChatMessage("starting Scan For " + block.getBlockName());
int y = Starty;
for(int iY=0;iY < (distanceY*2);iY++)
{
pauseCount++;
if(pauseCount >= 2)
{
int x = Startx;
int z = Startz;
for(int iX=0;iX < distanceY;iX++)
{
for(int iZ=0;iZ < distanceZ;iZ++)
{
int blockTargetID = worldObj.getBlockId(x, y, z);
System.out.println("BlockAt:"+x+"x:"+y+"y:"+z+"z:"+blockTargetID+"ID");
if(blockTargetID == block.blockID)
{
Vector3 targetBlock = new Vector3(x,y,z);
ModLoader.getMinecraftInstance().thePlayer.addChatMessage("Target Block Found");
return targetBlock;
}
z += zChange;
}
x += xChange;
z = Startz;
}
pauseCount =0;
y += yChange;
}
}
return null;
}
public EntityRobot[] getControlList()
{
return BotList;
}
public void addBot(EntityRobot bot)
{
}
/**will be used to update the bot list on restart or reload of the world.
This way entity ids that are not bots are not stored in the list.
Generally the bots themselves will send the controller there ids when they load
into the world. The controller will then tell the bot its linked to the controller.
**/
public void cleanList()
{
for(int i = 0;i<4;i++)
{
if(BotList[i] instanceof EntityRobot)
{
}
else
{
BotList[i] = null;
}
}
}
@Override
public float electricityRequest() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean canReceiveFromSide(byte side) {
// TODO Auto-generated method stub
return true;
}
public boolean canUpdate()
{
return true;
}
}