This repository has been archived on 2021-07-14. You can view files and clone it, but cannot push or open issues or pull requests.
scriptcraft/ScriptCraftMCP.java

110 lines
3.4 KiB
Java
Raw Normal View History

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;
}
}