Merge pull request #885 from Voxelstice/its-oc-again

Some more changes with OpenComputers integration
This commit is contained in:
HbmMods 2023-02-06 08:31:19 +01:00 committed by GitHub
commit 5a1fa78350
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 129 additions and 16 deletions

View File

@ -19,7 +19,19 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser {
import cpw.mods.fml.common.Optional;
import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.SimpleComponent;
import api.hbm.item.IDesignatorItem;
import net.minecraft.block.Block;
import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.bomb.LaunchPad;
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, SimpleComponent {
public ItemStack slots[];
@ -30,7 +42,6 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI
private static final int[] slots_bottom = new int[] { 0, 1, 2};
private static final int[] slots_side = new int[] {0};
public int state = 0;
private String customName;
public TileEntityLaunchPad() {
@ -256,4 +267,57 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI
{
return 65536.0D;
}
// do some opencomputer stuff
@Override
public String getComponentName() {
return "launch_pad";
}
@Callback
@Optional.Method(modid = "OpenComputers")
public Object[] getEnergyStored(Context context, Arguments args) {
return new Object[] {getPower()};
}
@Callback
@Optional.Method(modid = "OpenComputers")
public Object[] getMaxEnergy(Context context, Arguments args) {
return new Object[] {getMaxPower()};
}
@Callback
@Optional.Method(modid = "OpenComputers")
public Object[] getCoords(Context context, Arguments args) {
if (slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) {
int xCoord2 = slots[1].stackTagCompound.getInteger("xCoord");
int zCoord2 = slots[1].stackTagCompound.getInteger("zCoord");
// Not sure if i should have this
if(xCoord2 == xCoord && zCoord2 == zCoord) {
xCoord2 += 1;
}
return new Object[] {xCoord2, zCoord2};
}
return new Object[] {"Designator not found"};
}
@Callback
@Optional.Method(modid = "OpenComputers")
public Object[] setCoords(Context context, Arguments args) {
if (slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) {
slots[1].stackTagCompound.setInteger("xCoord", args.checkInteger(0));
slots[1].stackTagCompound.setInteger("zCoord", args.checkInteger(1));
return new Object[] {"Success"};
}
return new Object[] {"Designator not found"};
}
@Callback
@Optional.Method(modid = "OpenComputers")
public Object[] launch(Context context, Arguments args) {
//worldObj.getBlock(xCoord, yCoord, zCoord).explode(worldObj, xCoord, yCoord, zCoord);
((LaunchPad) ModBlocks.launch_pad).explode(worldObj, xCoord, yCoord, zCoord);
return new Object[] {};
}
}

View File

@ -339,16 +339,18 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne
@Callback
@Optional.Method(modid = "OpenComputers")
public Object[] setActive(Context context, Arguments args) {
isOn = Boolean.parseBoolean(args.checkString(0));
isOn = args.checkBoolean(0);
return new Object[] {};
}
@Callback
@Optional.Method(modid = "OpenComputers")
public Object[] setInput(Context context, Arguments args) {
int newOutput = Integer.parseInt(args.checkString(0));
int newOutput = args.checkInteger(0);
if (newOutput > 100) {
newOutput = 100;
} else if (newOutput < 0) {
newOutput = 0;
}
watts = newOutput;
return new Object[] {};

View File

@ -197,9 +197,11 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I
@Callback
@Optional.Method(modid = "OpenComputers")
public Object[] setInput(Context context, Arguments args) {
int newOutput = Integer.parseInt(args.checkString(0));
int newOutput = args.checkInteger(0);
if (newOutput > 100) {
newOutput = 100;
} else if (newOutput < 0) {
newOutput = 0;
}
watts = newOutput;
return new Object[] {};

View File

@ -413,9 +413,11 @@ public class TileEntityReactorResearch extends TileEntityMachineBase implements
@Callback
@Optional.Method(modid = "OpenComputers")
public Object[] setLevel(Context context, Arguments args) {
double newLevel = Double.parseDouble(args.checkString(0))/100.0;
if (newLevel > 1) { // check if its above 100 so the control rod wont do funny things
newLevel = 1;
double newLevel = args.checkDouble(0)/100.0;
if (newLevel > 1.0) {
newLevel = 1.0;
} else if (newLevel < 0.0) {
newLevel = 0.0;
}
targetLevel = newLevel;
return new Object[] {};

View File

@ -578,7 +578,7 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IF
@Callback
@Optional.Method(modid = "OpenComputers")
public Object[] setActive(Context context, Arguments args) {
isOn = Boolean.parseBoolean(args.checkString(0));
isOn = args.checkBoolean(0);
return new Object[] {};
}
}

View File

@ -23,7 +23,14 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.Vec3;
public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements IFluidAcceptor, IFluidSource, IControlReceiver, IFluidStandardTransceiver {
import cpw.mods.fml.common.Optional;
import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback;
import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.SimpleComponent;
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements IFluidAcceptor, IFluidSource, IControlReceiver, IFluidStandardTransceiver, SimpleComponent {
public FluidTank feed;
public FluidTank steam;
@ -314,4 +321,38 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I
public FluidTank[] getReceivingTanks() {
return new FluidTank[] {feed};
}
// do some opencomputer stuff
@Override
public String getComponentName() {
return "rbmk_boiler";
}
@Callback
@Optional.Method(modid = "OpenComputers")
public Object[] getHeat(Context context, Arguments args) {
return new Object[] {heat};
}
@Callback
@Optional.Method(modid = "OpenComputers")
public Object[] getSteam(Context context, Arguments args) {
return new Object[] {steam.getFill()};
}
@Callback
@Optional.Method(modid = "OpenComputers")
public Object[] getSteamMax(Context context, Arguments args) {
return new Object[] {steam.getMaxFill()};
}
@Callback
@Optional.Method(modid = "OpenComputers")
public Object[] getWater(Context context, Arguments args) {
return new Object[] {feed.getFill()};
}
@Callback
@Optional.Method(modid = "OpenComputers")
public Object[] getWaterMax(Context context, Arguments args) {
return new Object[] {feed.getMaxFill()};
}
}

View File

@ -131,13 +131,13 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im
@Callback
@Optional.Method(modid = "OpenComputers")
public Object[] getLevel(Context context, Arguments args) {
return new Object[] {getMult()};
return new Object[] {getMult() * 100};
}
@Callback
@Optional.Method(modid = "OpenComputers")
public Object[] getTargetLevel(Context context, Arguments args) {
return new Object[] {targetLevel};
return new Object[] {targetLevel * 100};
}
@ -150,10 +150,12 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im
@Callback
@Optional.Method(modid = "OpenComputers")
public Object[] setLevel(Context context, Arguments args) {
double newLevel = Double.parseDouble(args.checkString(0))/100.0;
if (newLevel > 1) { // check if its above 100 so the control rod wont do funny things
newLevel = 1;
}
double newLevel = args.checkDouble(0)/100.0;
if (newLevel > 1.0) {
newLevel = 1.0;
} else if (newLevel < 0.0) {
newLevel = 0.0;
}
targetLevel = newLevel;
return new Object[] {};
}