Merge pull request #117 from Nommy228/MC1.7
WarpDriveTransporter: implemented OpenComputers interface
This commit is contained in:
commit
d2f9078b41
3 changed files with 148 additions and 15 deletions
|
@ -1,8 +1,12 @@
|
||||||
package cr0s.warpdrive.block.movement;
|
package cr0s.warpdrive.block.movement;
|
||||||
|
|
||||||
|
import cpw.mods.fml.common.FMLCommonHandler;
|
||||||
|
import cr0s.warpdrive.WarpDrive;
|
||||||
import cr0s.warpdrive.block.BlockAbstractContainer;
|
import cr0s.warpdrive.block.BlockAbstractContainer;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.IIcon;
|
import net.minecraft.util.IIcon;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
@ -14,6 +18,7 @@ public class BlockTransporter extends BlockAbstractContainer {
|
||||||
public BlockTransporter() {
|
public BlockTransporter() {
|
||||||
super(Material.rock);
|
super(Material.rock);
|
||||||
setBlockName("warpdrive.movement.Transporter");
|
setBlockName("warpdrive.movement.Transporter");
|
||||||
|
setStepSound(Block.soundTypeMetal);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -38,4 +43,25 @@ public class BlockTransporter extends BlockAbstractContainer {
|
||||||
|
|
||||||
return iconBuffer[2];
|
return iconBuffer[2];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called upon block activation (right click on the block.)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9) {
|
||||||
|
if (FMLCommonHandler.instance().getEffectiveSide().isClient()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (par5EntityPlayer.getHeldItem() == null) {
|
||||||
|
TileEntity te = par1World.getTileEntity(par2, par3, par4);
|
||||||
|
if (te != null && te instanceof TileEntityTransporter) {
|
||||||
|
WarpDrive.addChatMessage(par5EntityPlayer, ((TileEntityTransporter)te).getStatus());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -194,7 +194,11 @@ public class TileEntityLift extends TileEntityAbstractEnergy {
|
||||||
@Callback
|
@Callback
|
||||||
@Optional.Method(modid = "OpenComputers")
|
@Optional.Method(modid = "OpenComputers")
|
||||||
public Object[] mode(Context context, Arguments arguments) {
|
public Object[] mode(Context context, Arguments arguments) {
|
||||||
return mode(argumentsOCtoCC(arguments));
|
return mode(
|
||||||
|
new Object[] {
|
||||||
|
arguments.checkString(0)
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Callback
|
@Callback
|
||||||
|
@ -216,12 +220,13 @@ public class TileEntityLift extends TileEntityAbstractEnergy {
|
||||||
computerMode = MODE_REDSTONE;
|
computerMode = MODE_REDSTONE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (computerMode) {
|
switch (computerMode) {
|
||||||
case -1:
|
case MODE_REDSTONE:
|
||||||
return new Object[] { "redstone" };
|
return new Object[] { "redstone" };
|
||||||
case 1:
|
case MODE_UP:
|
||||||
return new Object[] { "up" };
|
return new Object[] { "up" };
|
||||||
case 2:
|
case MODE_DOWN:
|
||||||
return new Object[] { "down" };
|
return new Object[] { "down" };
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -4,6 +4,9 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import li.cil.oc.api.machine.Arguments;
|
||||||
|
import li.cil.oc.api.machine.Callback;
|
||||||
|
import li.cil.oc.api.machine.Context;
|
||||||
import cpw.mods.fml.common.Optional;
|
import cpw.mods.fml.common.Optional;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
|
@ -73,8 +76,101 @@ public class TileEntityTransporter extends TileEntityAbstractEnergy implements I
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getStatus() {
|
||||||
|
return getBlockType().getLocalizedName()
|
||||||
|
+ String.format("Energy level is %.0f/%.0f EU.",
|
||||||
|
convertInternalToEU(getEnergyStored()),
|
||||||
|
convertInternalToEU(getMaxEnergyStored())
|
||||||
|
)
|
||||||
|
+ String.format("\nSource: %.0f %.0f %.0f",
|
||||||
|
sourceVec.x,
|
||||||
|
sourceVec.y,
|
||||||
|
sourceVec.z
|
||||||
|
)
|
||||||
|
+ String.format("\nDestination: %.0f %.0f %.0f",
|
||||||
|
destVec.x,
|
||||||
|
destVec.y,
|
||||||
|
destVec.z
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// OpenComputer callback methods
|
// OpenComputer callback methods
|
||||||
// FIXME: implement OpenComputers...
|
// ------------------------------------------------------------------------------------------
|
||||||
|
@Callback
|
||||||
|
@Optional.Method(modid = "OpenComputers")
|
||||||
|
public Object[] source(Context context, Arguments arguments) {
|
||||||
|
return setVec3(true, argumentsOCtoCC(arguments));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Callback
|
||||||
|
@Optional.Method(modid = "OpenComputers")
|
||||||
|
public Object[] dest(Context context, Arguments arguments) {
|
||||||
|
return setVec3(false, argumentsOCtoCC(arguments));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Callback
|
||||||
|
@Optional.Method(modid = "OpenComputers")
|
||||||
|
public Object[] lock(Context context, Arguments arguments) {
|
||||||
|
return new Object[] {
|
||||||
|
lock(sourceVec, destVec)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Callback
|
||||||
|
@Optional.Method(modid = "OpenComputers")
|
||||||
|
public Object[] release(Context context, Arguments arguments) {
|
||||||
|
unlock();
|
||||||
|
return new Object[] {
|
||||||
|
null
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Callback
|
||||||
|
@Optional.Method(modid = "OpenComputers")
|
||||||
|
public Object[] lockStrength(Context context, Arguments arguments) {
|
||||||
|
return new Object[] {
|
||||||
|
getLockStrength()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Callback
|
||||||
|
@Optional.Method(modid = "OpenComputers")
|
||||||
|
public Object[] energize(Context context, Arguments arguments) {
|
||||||
|
return new Object[] {
|
||||||
|
energize()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Callback
|
||||||
|
@Optional.Method(modid = "OpenComputers")
|
||||||
|
public Object[] powerBoost(Context context, Arguments arguments) {
|
||||||
|
return new Object[] {
|
||||||
|
powerBoost(argumentsOCtoCC(arguments))
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Callback
|
||||||
|
@Optional.Method(modid = "OpenComputers")
|
||||||
|
public Object[] getEnergyRequired(Context context, Arguments arguments) {
|
||||||
|
return new Object[] {
|
||||||
|
getEnergyRequired()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Callback
|
||||||
|
@Optional.Method(modid = "OpenComputers")
|
||||||
|
public Object[] help(Context context, Arguments arguments) {
|
||||||
|
return new Object[] {
|
||||||
|
helpStr(argumentsOCtoCC(arguments))
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ComputerCraft IPeripheral methods implementation
|
// ComputerCraft IPeripheral methods implementation
|
||||||
private static String helpStr(Object[] function) {
|
private static String helpStr(Object[] function) {
|
||||||
|
@ -102,8 +198,8 @@ public class TileEntityTransporter extends TileEntityAbstractEnergy implements I
|
||||||
return "energize(): attempts to teleport all entities at source to dest. Returns the number of entities transported (-1 indicates a problem).";
|
return "energize(): attempts to teleport all entities at source to dest. Returns the number of entities transported (-1 indicates a problem).";
|
||||||
} else if (methodName.equals("powerboost")) {
|
} else if (methodName.equals("powerboost")) {
|
||||||
return "powerBoost(boostAmount): sets the level of power to use (1 being default), returns the level of power\npowerBoost(): returns the level of power";
|
return "powerBoost(boostAmount): sets the level of power to use (1 being default), returns the level of power\npowerBoost(): returns the level of power";
|
||||||
} else if (methodName.equals("energycost")) {
|
} else if (methodName.equals("getEnergyRequired")) {
|
||||||
return "energyCost(): returns the amount of energy it will take for a single entity to transport with the current settings";
|
return "getEnergyRequired(): returns the amount of energy it will take for a single entity to transport with the current settings";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
@ -170,14 +266,7 @@ public class TileEntityTransporter extends TileEntityAbstractEnergy implements I
|
||||||
return new Object[] { energize() };
|
return new Object[] { energize() };
|
||||||
|
|
||||||
} else if (methodName.equals("powerBoost")) {
|
} else if (methodName.equals("powerBoost")) {
|
||||||
try {
|
return new Object[] { powerBoost(arguments) };
|
||||||
if (arguments.length >= 1) {
|
|
||||||
powerBoost = clamp(1, WarpDriveConfig.TRANSPORTER_MAX_BOOST_MUL, toDouble(arguments[0]));
|
|
||||||
}
|
|
||||||
} catch (NumberFormatException e) {
|
|
||||||
powerBoost = 1;
|
|
||||||
}
|
|
||||||
return new Object[] { powerBoost };
|
|
||||||
|
|
||||||
} else if (methodName.equals("getEnergyRequired")) {
|
} else if (methodName.equals("getEnergyRequired")) {
|
||||||
return new Object[] { getEnergyRequired() };
|
return new Object[] { getEnergyRequired() };
|
||||||
|
@ -196,6 +285,19 @@ public class TileEntityTransporter extends TileEntityAbstractEnergy implements I
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private double powerBoost(Object[] arguments) {
|
||||||
|
try {
|
||||||
|
if (arguments.length >= 1) {
|
||||||
|
powerBoost = clamp(1, WarpDriveConfig.TRANSPORTER_MAX_BOOST_MUL, toDouble(arguments[0]));
|
||||||
|
}
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
powerBoost = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return powerBoost;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private int energize() {
|
private int energize() {
|
||||||
if (isLocked) {
|
if (isLocked) {
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
|
Loading…
Reference in a new issue