109 lines
3.4 KiB
Java
109 lines
3.4 KiB
Java
package net.minecraft.src;
|
|
import net.minecraft.client.*;
|
|
/**
|
|
* An implementation of the IScriptCraft interface for
|
|
* Minecraft Coder Pack-style install
|
|
*
|
|
*/
|
|
public class ScriptCraftMCP implements IScriptCraft
|
|
{
|
|
protected CommandBase command = null;
|
|
|
|
public ScriptCraftMCP(CommandBase mcpCommand){
|
|
this.command = mcpCommand;
|
|
}
|
|
|
|
protected ICommandSender invoker;
|
|
//
|
|
// following code depends on MCP
|
|
//
|
|
public double[] getPlayerPos()
|
|
{
|
|
double[] result = new double[4];
|
|
if (this.invoker instanceof EntityPlayer){
|
|
EntityPlayer player = (EntityPlayer)this.invoker;
|
|
result[0] = player.posX;
|
|
result[1] = player.posY;
|
|
result[2] = player.posZ;
|
|
result[3] = player.rotationYaw;
|
|
return result;
|
|
}
|
|
return null;
|
|
}
|
|
public double[] getMousePos()
|
|
{
|
|
Minecraft mc = net.minecraft.client.Minecraft.getMinecraft();
|
|
MovingObjectPosition omo = mc.objectMouseOver;
|
|
if (omo == null){
|
|
return null;
|
|
}
|
|
double[] result = new double[4];
|
|
result[0] = omo.blockX;
|
|
result[1] = omo.blockY;
|
|
result[2] = omo.blockZ;
|
|
return result;
|
|
}
|
|
public void putSign(String[] texts, int x, int y, int z, int block, int meta)
|
|
{
|
|
this.putBlock(x,y,z,block,meta);
|
|
EntityPlayer player = (EntityPlayer)this.invoker;
|
|
World world = player.worldObj;
|
|
TileEntitySign sign = (TileEntitySign)world.getBlockTileEntity(x,y,z);
|
|
for (int i=0 ; i < texts.length && i <= 3;i++){
|
|
String text = texts[i];
|
|
if (text != null){
|
|
if (text.length() > 15){
|
|
text = text.substring(0,15);
|
|
}
|
|
sign.signText[i] = text;
|
|
}
|
|
}
|
|
sign.onInventoryChanged();
|
|
world.markBlockForUpdate(x,y,z);
|
|
}
|
|
|
|
public void putBlock(int x, int y, int z, int blockId, int meta)
|
|
{
|
|
World world = null;
|
|
if (this.invoker instanceof EntityPlayer)
|
|
{
|
|
world = ((EntityPlayer)(this.invoker)).worldObj;
|
|
}
|
|
else if (this.invoker instanceof TileEntity)
|
|
{
|
|
world = ((TileEntity)(this.invoker)).getWorldObj();
|
|
}
|
|
world.setBlockAndMetadata(x,y,z,blockId,meta);
|
|
|
|
switch (blockId)
|
|
{
|
|
case 6:
|
|
((BlockSapling)Block.sapling).growTree(world,x,y,z,world.rand);
|
|
break;
|
|
}
|
|
}
|
|
//
|
|
// returns the block id and metadata at a given location in the world
|
|
// e.g. returns "98" for a stone block or "98:2" for a mossy stone block.
|
|
//
|
|
public String getBlock(int x, int y, int z)
|
|
{
|
|
EntityPlayer player = (EntityPlayer)this.invoker;
|
|
World world = player.worldObj;
|
|
int blockId = world.getBlockId(x,y,z);
|
|
int metadata = world.getBlockMetadata(x,y,z);
|
|
if (metadata !=0){
|
|
return "" + blockId + ":" + metadata;
|
|
}else{
|
|
return "" + blockId;
|
|
}
|
|
}
|
|
public void notifyAdministrators(String message)
|
|
{
|
|
this.command.notifyAdmins(this.invoker,message,(Object[])null);
|
|
}
|
|
public void setInvoker(Object invoker)
|
|
{
|
|
this.invoker = (ICommandSender)invoker;
|
|
}
|
|
}
|