Block breaker and placer are functional
This commit is contained in:
parent
dbe2ce3612
commit
6e3f0b9fd3
3 changed files with 148 additions and 81 deletions
|
@ -65,8 +65,12 @@ allprojects {
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compile group: 'universalelectricity', name: 'Universal-Electricity', version: "${rootProject.config.version.universalelectricity}", classifier: "dev"
|
compile group: 'universalelectricity', name: 'Universal-Electricity', version: "${rootProject.config.version.universalelectricity}", classifier: "dev"
|
||||||
compile group: 'calclavia-core-development', name: 'calclavia-core', version: "${rootProject.config.version.calclaviacore}", classifier: "dev"
|
if (ENV.JOB_NAME == "Resonant-Induction-Development")
|
||||||
compile name: 'CodeChickenLib', version: "${config.version.minecraft}-${config.version.cclib}", ext: 'jar'
|
compile group: 'calclavia-core-development', name: 'calclavia-core', version: "${rootProject.config.version.calclaviacore}", classifier: "dev"
|
||||||
|
else
|
||||||
|
compile group: 'calclaviacore', name: 'calclavia-core', version: "${config.version.calclaviacore}", classifier: "dev"
|
||||||
|
|
||||||
|
compile name: 'CodeChickenLib', version: "${config.version.minecraft}-${config.version.cclib}", ext: 'jar'
|
||||||
compile name: 'ForgeMultipart', version: "${config.version.minecraft}-${config.version.fmp}", ext: 'jar'
|
compile name: 'ForgeMultipart', version: "${config.version.minecraft}-${config.version.fmp}", ext: 'jar'
|
||||||
compile name: 'NotEnoughItems', version: "${config.version.nei}", ext: 'jar'
|
compile name: 'NotEnoughItems', version: "${config.version.nei}", ext: 'jar'
|
||||||
compile name: 'CodeChickenCore', version: "${config.version.cccore}", ext: 'jar'
|
compile name: 'CodeChickenCore', version: "${config.version.cccore}", ext: 'jar'
|
||||||
|
|
|
@ -30,6 +30,8 @@ import java.util.ArrayList;
|
||||||
*/
|
*/
|
||||||
public class TileBreaker extends TileInventory implements IRotatable, IPacketReceiver
|
public class TileBreaker extends TileInventory implements IRotatable, IPacketReceiver
|
||||||
{
|
{
|
||||||
|
private boolean doWork = false;
|
||||||
|
|
||||||
public TileBreaker()
|
public TileBreaker()
|
||||||
{
|
{
|
||||||
super(Material.iron);
|
super(Material.iron);
|
||||||
|
@ -48,7 +50,26 @@ public class TileBreaker extends TileInventory implements IRotatable, IPacketRec
|
||||||
work();
|
work();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateEntity()
|
||||||
|
{
|
||||||
|
if (doWork)
|
||||||
|
{
|
||||||
|
doWork();
|
||||||
|
doWork = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void work()
|
public void work()
|
||||||
|
{
|
||||||
|
if (isIndirectlyPowered())
|
||||||
|
{
|
||||||
|
doWork = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void doWork()
|
||||||
{
|
{
|
||||||
if (isIndirectlyPowered())
|
if (isIndirectlyPowered())
|
||||||
{
|
{
|
||||||
|
|
|
@ -13,6 +13,7 @@ import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
|
import net.minecraft.item.ItemBlock;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.network.packet.Packet;
|
import net.minecraft.network.packet.Packet;
|
||||||
|
@ -28,94 +29,135 @@ import universalelectricity.api.vector.Vector3;
|
||||||
*/
|
*/
|
||||||
public class TilePlacer extends TileInventory implements IRotatable, IPacketReceiver
|
public class TilePlacer extends TileInventory implements IRotatable, IPacketReceiver
|
||||||
{
|
{
|
||||||
public TilePlacer ()
|
private boolean doWork = false;
|
||||||
{
|
|
||||||
super(Material.iron);
|
|
||||||
normalRender = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
public TilePlacer()
|
||||||
public void onAdded ()
|
{
|
||||||
{
|
super(Material.iron);
|
||||||
work();
|
normalRender = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNeighborChanged ()
|
public void onAdded()
|
||||||
{
|
{
|
||||||
work();
|
work();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void work ()
|
@Override
|
||||||
{
|
public void onNeighborChanged()
|
||||||
if (isIndirectlyPowered())
|
{
|
||||||
{
|
work();
|
||||||
ForgeDirection dir = getDirection();
|
}
|
||||||
ItemStack placeStack = null;
|
|
||||||
if (getStackInSlot(0) == null)
|
|
||||||
{
|
|
||||||
ForgeDirection op = dir.getOpposite();
|
|
||||||
TileEntity tile = getWorldObj().getBlockTileEntity(x() + op.offsetX, y() + op.offsetY, z() + op.offsetZ);
|
|
||||||
|
|
||||||
if (tile instanceof IInventory)
|
@Override
|
||||||
{
|
public void updateEntity()
|
||||||
ItemStack candidate = InventoryUtility.takeTopItemFromInventory((IInventory) tile, dir.ordinal());
|
{
|
||||||
if (candidate != null)
|
if (doWork)
|
||||||
this.incrStackSize(0, candidate);
|
{
|
||||||
}
|
doWork();
|
||||||
}
|
doWork = false;
|
||||||
placeStack = getStackInSlot(0);
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
public void work()
|
||||||
}
|
{
|
||||||
|
if (isIndirectlyPowered())
|
||||||
|
{
|
||||||
|
doWork = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
public void doWork()
|
||||||
protected boolean use (EntityPlayer player, int hitSide, Vector3 hit)
|
{
|
||||||
{
|
ForgeDirection dir = getDirection();
|
||||||
interactCurrentItem(this, 0, player);
|
Vector3 placePos = position().translate(dir);
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
if (world().isAirBlock(placePos.intX(), placePos.intY(), placePos.intZ()))
|
||||||
public Packet getDescriptionPacket ()
|
{
|
||||||
{
|
|
||||||
NBTTagCompound nbt = new NBTTagCompound();
|
|
||||||
writeToNBT(nbt);
|
|
||||||
return ResonantInduction.PACKET_TILE.getPacket(this, nbt);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
if (getStackInSlot(0) == null)
|
||||||
public void onReceivePacket (ByteArrayDataInput data, EntityPlayer player, Object... extra)
|
{
|
||||||
{
|
ForgeDirection op = dir.getOpposite();
|
||||||
try
|
TileEntity tile = getWorldObj().getBlockTileEntity(x() + op.offsetX, y() + op.offsetY, z() + op.offsetZ);
|
||||||
{
|
|
||||||
readFromNBT(PacketHandler.readNBTTagCompound(data));
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
if (tile instanceof IInventory)
|
||||||
@SideOnly(Side.CLIENT)
|
{
|
||||||
protected TileRender newRenderer ()
|
ItemStack candidate = InventoryUtility.takeTopItemFromInventory((IInventory) tile, dir.ordinal());
|
||||||
{
|
if (candidate != null)
|
||||||
return new TileRender()
|
{
|
||||||
{
|
incrStackSize(0, candidate);
|
||||||
@Override
|
}
|
||||||
public boolean renderDynamic (Vector3 position, boolean isItem, float frame)
|
}
|
||||||
{
|
}
|
||||||
if (!isItem)
|
|
||||||
{
|
|
||||||
GL11.glPushMatrix();
|
|
||||||
RenderItemOverlayUtility.renderItemOnSides(TilePlacer.this, getStackInSlot(0), position.x, position.y, position.z);
|
|
||||||
GL11.glPopMatrix();
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
ItemStack placeStack = getStackInSlot(0);
|
||||||
}
|
|
||||||
};
|
if (placeStack != null && placeStack.getItem() instanceof ItemBlock)
|
||||||
}
|
{
|
||||||
|
ItemBlock itemBlock = ((ItemBlock) placeStack.getItem());
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
itemBlock.placeBlockAt(placeStack, null, world(), placePos.intX(), placePos.intY(), placePos.intZ(), 0, 0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
// e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
decrStackSize(0, 1);
|
||||||
|
markUpdate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean use(EntityPlayer player, int hitSide, Vector3 hit)
|
||||||
|
{
|
||||||
|
interactCurrentItem(this, 0, player);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Packet getDescriptionPacket()
|
||||||
|
{
|
||||||
|
NBTTagCompound nbt = new NBTTagCompound();
|
||||||
|
writeToNBT(nbt);
|
||||||
|
return ResonantInduction.PACKET_TILE.getPacket(this, nbt);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onReceivePacket(ByteArrayDataInput data, EntityPlayer player, Object... extra)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
readFromNBT(PacketHandler.readNBTTagCompound(data));
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
protected TileRender newRenderer()
|
||||||
|
{
|
||||||
|
return new TileRender()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public boolean renderDynamic(Vector3 position, boolean isItem, float frame)
|
||||||
|
{
|
||||||
|
if (!isItem)
|
||||||
|
{
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
RenderItemOverlayUtility.renderItemOnSides(TilePlacer.this, getStackInSlot(0), position.x, position.y, position.z);
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue