mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
Merge pull request #1540 from BallOfEnergy1/OC_bugfix
OC Compatibility part 2: the return of the `@Callback`
This commit is contained in:
commit
c866e9c541
@ -6,6 +6,7 @@ import java.util.List;
|
||||
import com.hbm.blocks.IBlockMultiPass;
|
||||
import com.hbm.blocks.ILookOverlay;
|
||||
import com.hbm.blocks.ITooltipProvider;
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.render.block.RenderBlockMultipass;
|
||||
import com.hbm.tileentity.INBTPacketReceiver;
|
||||
@ -14,8 +15,13 @@ import com.hbm.util.BobMathUtil;
|
||||
import com.hbm.util.I18nUtil;
|
||||
|
||||
import api.hbm.energymk2.PowerNetMK2;
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
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 net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.BlockPistonBase;
|
||||
import net.minecraft.block.material.Material;
|
||||
@ -98,7 +104,8 @@ public class BlockCableGauge extends BlockContainer implements IBlockMultiPass,
|
||||
return IBlockMultiPass.getRenderType();
|
||||
}
|
||||
|
||||
public static class TileEntityCableGauge extends TileEntityCableBaseNT implements INBTPacketReceiver {
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public static class TileEntityCableGauge extends TileEntityCableBaseNT implements INBTPacketReceiver, SimpleComponent, CompatHandler.OCComponent {
|
||||
|
||||
private long deltaTick = 0;
|
||||
private long deltaSecond = 0;
|
||||
@ -134,5 +141,22 @@ public class BlockCableGauge extends BlockContainer implements IBlockMultiPass,
|
||||
this.deltaTick = Math.max(nbt.getLong("deltaT"), 0);
|
||||
this.deltaLastSecond = Math.max(nbt.getLong("deltaS"), 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getComponentName() {
|
||||
return "ntm_power_gauge";
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getTransfer(Context context, Arguments args) {
|
||||
return new Object[] {deltaTick, deltaSecond};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getInfo(Context context, Arguments args) {
|
||||
return new Object[] {deltaTick, deltaSecond, xCoord, yCoord, zCoord};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,6 +8,7 @@ import java.util.Locale;
|
||||
import com.hbm.blocks.IBlockMultiPass;
|
||||
import com.hbm.blocks.ILookOverlay;
|
||||
import com.hbm.blocks.ITooltipProvider;
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.render.block.RenderBlockMultipass;
|
||||
@ -108,7 +109,7 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL
|
||||
}
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public static class TileEntityPipeGauge extends TileEntityPipeBaseNT implements INBTPacketReceiver, SimpleComponent {
|
||||
public static class TileEntityPipeGauge extends TileEntityPipeBaseNT implements INBTPacketReceiver, SimpleComponent, CompatHandler.OCComponent {
|
||||
|
||||
private BigInteger lastMeasurement = BigInteger.valueOf(10);
|
||||
private long deltaTick = 0;
|
||||
|
||||
@ -2,20 +2,32 @@ package com.hbm.handler;
|
||||
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import li.cil.oc.api.machine.Arguments;
|
||||
import li.cil.oc.api.machine.Context;
|
||||
import li.cil.oc.api.network.*;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ChatComponentTranslation;
|
||||
import net.minecraft.util.ChatStyle;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
|
||||
/**
|
||||
* General handler for OpenComputers compatibility.
|
||||
* <p/>
|
||||
* Mostly just functions used across many TEs.
|
||||
* @author BallOfEnergy (Microwave)
|
||||
*/
|
||||
public class CompatHandler {
|
||||
|
||||
public static Object[] steamTypeToInt(FluidType type) {
|
||||
if(type == Fluids.STEAM) {return new Object[] {0};}
|
||||
else if(type == Fluids.HOTSTEAM) {return new Object[] {1};}
|
||||
else if(type == Fluids.SUPERHOTSTEAM) {return new Object[] {2};}
|
||||
return new Object[] {3};
|
||||
}
|
||||
|
||||
public static FluidType intToSteamType(int arg) {
|
||||
switch(arg) {
|
||||
default:
|
||||
@ -28,4 +40,82 @@ public class CompatHandler {
|
||||
return Fluids.ULTRAHOTSTEAM;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This is an interface made specifically for adding OC compatibility to NTM machines. The {@link li.cil.oc.api.network.SimpleComponent} interface must also be implemented in the TE.
|
||||
* <br>
|
||||
* This interface is not required to be defined as an optional interface, though the {@link li.cil.oc.api.network.SimpleComponent} interface must be declared as an optional interface.
|
||||
* <br>
|
||||
* Pseudo multiblocks will automatically receive compatibility with their ports by proxying their `methods()` and `invoke()` functions. This is the only time they need to be defined.
|
||||
*
|
||||
**/
|
||||
@Optional.InterfaceList({
|
||||
@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers"),
|
||||
@Optional.Interface(iface = "li.cil.oc.api.network.SidedComponent", modid = "OpenComputers"),
|
||||
@Optional.Interface(iface = "li.cil.oc.api.network.Analyzable", modid = "OpenComputers"),
|
||||
@Optional.Interface(iface = "li.cil.oc.api.network.ManagedPeripheral", modid = "OpenComputers"),
|
||||
})
|
||||
@SimpleComponent.SkipInjection // make sure OC doesn't inject this shit into the interface and crash
|
||||
public interface OCComponent extends SimpleComponent, SidedComponent, Analyzable, ManagedPeripheral {
|
||||
|
||||
/**
|
||||
* Must be overridden in the implemented TE, or it will default to "ntm_null".
|
||||
* <br>
|
||||
* Dictates the component name exposed to the computer.
|
||||
* @return String
|
||||
*/
|
||||
@Override
|
||||
default String getComponentName() {
|
||||
return "ntm_null";
|
||||
}
|
||||
|
||||
/**
|
||||
* Tells OC which sides of the block cables should connect to.
|
||||
* @param side Side to check
|
||||
* @return If the side should be able to connect.
|
||||
*/
|
||||
@Override
|
||||
default boolean canConnectNode(ForgeDirection side) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to give more information when analyzing the block. Multiple entries in the array will be sent to the user in the order of the array.
|
||||
* @return Additional text to add in the form of lang entries (ex: "analyze.basic2").
|
||||
*/
|
||||
default String[] getExtraInfo() {return new String[] {"analyze.noInfo"};}
|
||||
|
||||
@Override
|
||||
default Node[] onAnalyze(EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
player.addChatComponentMessage(new ChatComponentTranslation("analyze.basic1").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GOLD)));
|
||||
player.addChatComponentMessage(new ChatComponentTranslation("analyze.basic2").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)));
|
||||
player.addChatComponentMessage(new ChatComponentTranslation("analyze.basic3").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GOLD)));
|
||||
player.addChatComponentMessage(new ChatComponentTranslation("analyze.name", this.getComponentName()).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GOLD)));
|
||||
String[] extraInfo = getExtraInfo();
|
||||
for (String info : extraInfo) {
|
||||
if(!info.equals(""))
|
||||
player.addChatComponentMessage(new ChatComponentTranslation(info).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)));
|
||||
}
|
||||
TileEntity te = player.worldObj.getTileEntity((int) hitX, (int) hitY, (int) hitZ);
|
||||
OCComponent component = (OCComponent) te;
|
||||
if((component.methods() == null && te instanceof TileEntityProxyCombo) || component.getComponentName().equals("ntm_null")) {
|
||||
player.addChatComponentMessage(new ChatComponentTranslation("analyze.error").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED)));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Standard methods array from {@link li.cil.oc.api.network.ManagedPeripheral} extending {@link li.cil.oc.api.network.SimpleComponent}.
|
||||
* @return Array of methods to expose to the computer.
|
||||
*/
|
||||
@Override
|
||||
default String[] methods() {return null;}
|
||||
|
||||
/**
|
||||
* Standard invoke function from {@link li.cil.oc.api.network.ManagedPeripheral} extending {@link li.cil.oc.api.network.SimpleComponent}.
|
||||
* @return Data to the computer as a return from the function.
|
||||
*/
|
||||
@Override
|
||||
default Object[] invoke(String method, Context context, Arguments args) throws Exception {return null;}
|
||||
}
|
||||
}
|
||||
|
||||
@ -65,7 +65,7 @@ public class GUIPWR extends GuiInfoContainer {
|
||||
this.drawCustomInfoStat(x, y, guiLeft + 151, guiTop + 31, 18, 18, x, y, new String[] { "Hull: " + String.format(Locale.US, "%,d", controller.hullHeat) + " / " + String.format(Locale.US, "%,d", controller.hullHeatCapacityBase) + " TU" });
|
||||
|
||||
this.drawCustomInfoStat(x, y, guiLeft + 52, guiTop + 31, 36, 18, x, y, new String[] { ((int) (controller.progress * 100 / controller.processTime)) + "%" });
|
||||
this.drawCustomInfoStat(x, y, guiLeft + 52, guiTop + 53, 54, 4, x, y, "Control rod level: " + (100 - controller.rodLevel) + "%");
|
||||
this.drawCustomInfoStat(x, y, guiLeft + 52, guiTop + 53, 54, 4, x, y, "Control rod level: " + (100 - (Math.round(controller.rodLevel * 100)/100)) + "%");
|
||||
|
||||
if(controller.typeLoaded != -1 && controller.amountLoaded > 0) {
|
||||
ItemStack display = new ItemStack(ModItems.pwr_fuel, 1, controller.typeLoaded);
|
||||
|
||||
@ -2,6 +2,7 @@ package com.hbm.tileentity;
|
||||
|
||||
|
||||
import api.hbm.block.ICrucibleAcceptor;
|
||||
import com.hbm.handler.CompatHandler.OCComponent;
|
||||
import com.hbm.interfaces.IFluidAcceptor;
|
||||
import com.hbm.interfaces.IFluidContainer;
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
@ -10,6 +11,10 @@ import api.hbm.energymk2.IEnergyReceiverMK2;
|
||||
import api.hbm.fluid.IFluidConnector;
|
||||
import api.hbm.tile.IHeatSource;
|
||||
import com.hbm.inventory.material.Mats;
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import li.cil.oc.api.machine.Arguments;
|
||||
import li.cil.oc.api.machine.Context;
|
||||
import li.cil.oc.api.network.SimpleComponent;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.ISidedInventory;
|
||||
import net.minecraft.item.ItemStack;
|
||||
@ -18,7 +23,11 @@ import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergyReceiverMK2, IFluidAcceptor, ISidedInventory, IFluidConnector, IHeatSource, ICrucibleAcceptor {
|
||||
@Optional.InterfaceList({
|
||||
@Optional.Interface(iface = "com.hbm.handler.CompatHandler.OCComponent", modid = "opencomputers"),
|
||||
@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")
|
||||
})
|
||||
public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergyReceiverMK2, IFluidAcceptor, ISidedInventory, IFluidConnector, IHeatSource, ICrucibleAcceptor, SimpleComponent, OCComponent {
|
||||
|
||||
TileEntity tile;
|
||||
boolean inventory;
|
||||
@ -537,4 +546,39 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override // please work
|
||||
public String getComponentName() {
|
||||
if(this.getTile() instanceof OCComponent)
|
||||
return ((OCComponent) this.getTile()).getComponentName();
|
||||
return OCComponent.super.getComponentName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConnectNode(ForgeDirection side) { //thank you vaer
|
||||
if(this.getTile() instanceof OCComponent)
|
||||
return (this.getTile().getBlockMetadata() & 6) == 6 && ((OCComponent) this.getTile()).canConnectNode(side);
|
||||
return OCComponent.super.canConnectNode(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getExtraInfo() {
|
||||
if(this.getTile() instanceof OCComponent)
|
||||
return new String[] {"analyze.dummy"};
|
||||
return OCComponent.super.getExtraInfo();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] methods() {
|
||||
if(this.getTile() instanceof OCComponent)
|
||||
return ((OCComponent) this.getTile()).methods();
|
||||
return OCComponent.super.methods();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object[] invoke(String method, Context context, Arguments args) throws Exception {
|
||||
if(this.getTile() instanceof OCComponent)
|
||||
return ((OCComponent) this.getTile()).invoke(method, context, args);
|
||||
return OCComponent.super.invoke(null, null, null);
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,6 +4,12 @@ import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import com.hbm.handler.CompatHandler;
|
||||
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 org.apache.logging.log4j.Level;
|
||||
|
||||
import com.hbm.config.GeneralConfig;
|
||||
@ -49,7 +55,8 @@ import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IRadarCommandReceiver {
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IRadarCommandReceiver, SimpleComponent, CompatHandler.OCComponent {
|
||||
|
||||
/** Automatic instantiation of generic missiles, i.e. everything that both extends EntityMissileBaseNT and needs a designator */
|
||||
public static final HashMap<ComparableStack, Class<? extends EntityMissileBaseNT>> missiles = new HashMap();
|
||||
@ -462,4 +469,87 @@ public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase impl
|
||||
/** Any extra conditions for launching in addition to the missile being valid and fueled */
|
||||
public abstract boolean isReadyForLaunch();
|
||||
public abstract double getLaunchOffset();
|
||||
|
||||
// do some opencomputer stuff
|
||||
@Override
|
||||
public String getComponentName() {
|
||||
return "ntm_launch_pad";
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getEnergyInfo(Context context, Arguments args) {
|
||||
return new Object[] {getPower(), getMaxPower()};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getFluid(Context context, Arguments args) {
|
||||
return new Object[] {
|
||||
this.tanks[0].getFill(), this.tanks[0].getMaxFill(), this.tanks[0].getTankType().getUnlocalizedName(),
|
||||
this.tanks[1].getFill(), this.tanks[1].getMaxFill(), this.tanks[1].getTankType().getUnlocalizedName()
|
||||
};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] canLaunch(Context context, Arguments args) {
|
||||
return new Object[] {canLaunch()};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getTier(Context context, Arguments args) {
|
||||
if(!isMissileValid())
|
||||
return new Object[] {};
|
||||
ItemMissile missile = (ItemMissile) slots[0].getItem();
|
||||
if(missile.tier == ItemMissile.MissileTier.TIER0)
|
||||
return new Object[] {0};
|
||||
if(missile.tier == ItemMissile.MissileTier.TIER1)
|
||||
return new Object[] {1};
|
||||
if(missile.tier == ItemMissile.MissileTier.TIER2)
|
||||
return new Object[] {2};
|
||||
if(missile.tier == ItemMissile.MissileTier.TIER3)
|
||||
return new Object[] {3};
|
||||
if(missile.tier == ItemMissile.MissileTier.TIER4)
|
||||
return new Object[] {4};
|
||||
return new Object[] {5}; // unknown tier
|
||||
}
|
||||
|
||||
@Callback
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] launch(Context context, Arguments args) {
|
||||
if(canLaunch()) {
|
||||
return new Object[] {sendCommandPosition(args.checkInteger(0), -1 /*unused anyway*/, args.checkInteger(1))};
|
||||
}
|
||||
return new Object[] {false};
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] methods() {
|
||||
return new String[] {
|
||||
"getEnergyInfo",
|
||||
"getFluid",
|
||||
"canLaunch",
|
||||
"getTier",
|
||||
"launch"
|
||||
};
|
||||
}
|
||||
|
||||
public Object[] invoke(String method, Context context, Arguments args) throws Exception {
|
||||
switch(method) {
|
||||
case ("getEnergyInfo"):
|
||||
return getEnergyInfo(context, args);
|
||||
case ("getFluid"):
|
||||
return getFluid(context, args);
|
||||
case ("canLaunch"):
|
||||
return canLaunch(context, args);
|
||||
case ("getTier"):
|
||||
return getTier(context, args);
|
||||
case ("launch"):
|
||||
return launch(context, args);
|
||||
}
|
||||
throw new NoSuchMethodException();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ package com.hbm.tileentity.bomb;
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.entity.missile.EntityMissileCustom;
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.handler.MissileStruct;
|
||||
import com.hbm.interfaces.IFluidAcceptor;
|
||||
import com.hbm.interfaces.IFluidContainer;
|
||||
@ -53,7 +54,7 @@ import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISidedInventory, IEnergyReceiverMK2, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider, SimpleComponent, IRadarCommandReceiver {
|
||||
public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISidedInventory, IEnergyReceiverMK2, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider, SimpleComponent, IRadarCommandReceiver, CompatHandler.OCComponent {
|
||||
|
||||
private ItemStack slots[];
|
||||
|
||||
@ -649,7 +650,7 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide
|
||||
// do some opencomputer stuff
|
||||
@Override
|
||||
public String getComponentName() {
|
||||
return "large_launch_pad";
|
||||
return "ntm_custom_launch_pad";
|
||||
}
|
||||
|
||||
@Callback
|
||||
@ -661,7 +662,11 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide
|
||||
@Callback
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getContents(Context context, Arguments args) {
|
||||
return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[0].getTankType().getName(), tanks[1].getFill(), tanks[1].getMaxFill(), tanks[1].getTankType().getName(), solid, maxSolid};
|
||||
return new Object[] {
|
||||
tanks[0].getFill(), tanks[0].getMaxFill(), tanks[0].getTankType().getUnlocalizedName(),
|
||||
tanks[1].getFill(), tanks[1].getMaxFill(), tanks[1].getTankType().getUnlocalizedName(),
|
||||
solid, maxSolid
|
||||
};
|
||||
}
|
||||
|
||||
@Callback
|
||||
@ -682,13 +687,6 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide
|
||||
} else
|
||||
return new Object[] {false};
|
||||
|
||||
// Not sure if i should have this
|
||||
/*
|
||||
if(xCoord2 == xCoord && zCoord2 == zCoord) {
|
||||
xCoord2 += 1;
|
||||
}
|
||||
*/
|
||||
|
||||
return new Object[] {xCoord2, zCoord2};
|
||||
}
|
||||
return new Object[] {false, "Designator not found"};
|
||||
@ -716,6 +714,35 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide
|
||||
return new Object[] {false};
|
||||
}
|
||||
|
||||
public String[] methods() {
|
||||
return new String[] {
|
||||
"getEnergyInfo",
|
||||
"getContents",
|
||||
"getLaunchInfo",
|
||||
"getCoords",
|
||||
"setCoords",
|
||||
"launch"
|
||||
};
|
||||
}
|
||||
|
||||
public Object[] invoke(String method, Context context, Arguments args) throws Exception {
|
||||
switch(method) {
|
||||
case ("getEnergyInfo"):
|
||||
return getEnergyInfo(context, args);
|
||||
case ("getContents"):
|
||||
return getContents(context, args);
|
||||
case ("getLaunchInfo"):
|
||||
return getLaunchInfo(context, args);
|
||||
case ("getCoords"):
|
||||
return getCoords(context, args);
|
||||
case ("setCoords"):
|
||||
return setCoords(context, args);
|
||||
case ("launch"):
|
||||
return launch(context, args);
|
||||
}
|
||||
throw new NoSuchMethodException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new ContainerLaunchTable(player.inventory, this);
|
||||
|
||||
@ -41,7 +41,7 @@ import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IEnergyProviderMK2, INBTPacketReceiver, IFluidStandardTransceiver, SimpleComponent, IInfoProviderEC {
|
||||
public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IEnergyProviderMK2, INBTPacketReceiver, IFluidStandardTransceiver, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent {
|
||||
|
||||
public long power;
|
||||
public static final long maxPower = 100000000000L;
|
||||
@ -345,7 +345,7 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getFluid(Context context, Arguments args) {
|
||||
return new Object[] {tanks[0].getFill(), tanks[1].getFill(), tanks[1].getFill(), tanks[1].getMaxFill()};
|
||||
return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill()};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@ -358,7 +358,7 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] setType(Context context, Arguments args) {
|
||||
tanks[0].setTankType(CompatHandler.intToSteamType(args.checkInteger(0)));
|
||||
return new Object[] {true};
|
||||
return new Object[] {};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@ -367,6 +367,29 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc
|
||||
return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), CompatHandler.steamTypeToInt(tanks[0].getTankType())};
|
||||
}
|
||||
|
||||
public String[] methods() {
|
||||
return new String[] {
|
||||
"getFluid",
|
||||
"getType",
|
||||
"setType",
|
||||
"getInfo"
|
||||
};
|
||||
}
|
||||
|
||||
public Object[] invoke(String method, Context context, Arguments args) throws Exception {
|
||||
switch(method) {
|
||||
case ("getFluid"):
|
||||
return getFluid(context, args);
|
||||
case ("getType"):
|
||||
return getType(context, args);
|
||||
case ("setType"):
|
||||
return setType(context, args);
|
||||
case ("getInfo"):
|
||||
return getInfo(context, args);
|
||||
}
|
||||
throw new NoSuchMethodException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidTank[] getSendingTanks() {
|
||||
return new FluidTank[] {tanks[1]};
|
||||
|
||||
@ -5,6 +5,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2;
|
||||
import api.hbm.fluid.IFluidStandardReceiver;
|
||||
import api.hbm.tile.IInfoProviderEC;
|
||||
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.inventory.container.ContainerCoreEmitter;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.inventory.fluid.tank.FluidTank;
|
||||
@ -37,7 +38,7 @@ import net.minecraftforge.common.util.ForgeDirection;
|
||||
import java.util.List;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEnergyReceiverMK2, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider, IInfoProviderEC {
|
||||
public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEnergyReceiverMK2, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent {
|
||||
|
||||
public long power;
|
||||
public static final long maxPower = 1000000000L;
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.hbm.tileentity.machine;
|
||||
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.interfaces.IFluidAcceptor;
|
||||
import com.hbm.inventory.container.ContainerCoreInjector;
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
@ -27,7 +28,7 @@ import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityCoreInjector extends TileEntityMachineBase implements IFluidAcceptor, IFluidStandardReceiver, SimpleComponent, IGUIProvider {
|
||||
public class TileEntityCoreInjector extends TileEntityMachineBase implements IFluidAcceptor, IFluidStandardReceiver, SimpleComponent, IGUIProvider, CompatHandler.OCComponent {
|
||||
|
||||
public FluidTank[] tanks;
|
||||
public static final int range = 15;
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.hbm.tileentity.machine;
|
||||
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.interfaces.IFluidAcceptor;
|
||||
import com.hbm.inventory.container.ContainerCoreReceiver;
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
@ -32,7 +33,7 @@ import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEnergyProviderMK2, IFluidAcceptor, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider, IInfoProviderEC {
|
||||
public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEnergyProviderMK2, IFluidAcceptor, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent {
|
||||
|
||||
public long power;
|
||||
public long joules;
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.hbm.tileentity.machine;
|
||||
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.inventory.container.ContainerCoreStabilizer;
|
||||
import com.hbm.inventory.gui.GUICoreStabilizer;
|
||||
import com.hbm.items.ModItems;
|
||||
@ -28,7 +29,7 @@ import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityCoreStabilizer extends TileEntityMachineBase implements IEnergyReceiverMK2, SimpleComponent, IGUIProvider, IInfoProviderEC {
|
||||
public class TileEntityCoreStabilizer extends TileEntityMachineBase implements IEnergyReceiverMK2, SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent {
|
||||
|
||||
public long power;
|
||||
public static final long maxPower = 2500000000L;
|
||||
|
||||
@ -3,6 +3,7 @@ package com.hbm.tileentity.machine;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.handler.radiation.ChunkRadiationManager;
|
||||
import com.hbm.util.CompatEnergyControl;
|
||||
import com.hbm.util.ContaminationUtil;
|
||||
@ -17,7 +18,7 @@ import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityGeiger extends TileEntity implements SimpleComponent, IInfoProviderEC {
|
||||
public class TileEntityGeiger extends TileEntity implements SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent {
|
||||
|
||||
int timer = 0;
|
||||
int ticker = 0;
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.hbm.tileentity.machine;
|
||||
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.inventory.container.ContainerICF;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.inventory.fluid.tank.FluidTank;
|
||||
@ -19,10 +20,15 @@ import com.hbm.util.fauxpointtwelve.DirPos;
|
||||
|
||||
import api.hbm.fluid.IFluidStandardTransceiver;
|
||||
import api.hbm.tile.IInfoProviderEC;
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
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 net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
@ -32,7 +38,8 @@ import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider, IFluidStandardTransceiver, IInfoProviderEC {
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider, IFluidStandardTransceiver, IInfoProviderEC, SimpleComponent, CompatHandler.OCComponent {
|
||||
|
||||
public long laser;
|
||||
public long maxLaser;
|
||||
@ -284,4 +291,86 @@ public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider
|
||||
data.setDouble(CompatEnergyControl.D_CONSUMPTION_MB, this.consumption);
|
||||
data.setDouble(CompatEnergyControl.D_OUTPUT_MB, this.output);
|
||||
}
|
||||
|
||||
//OC stuff
|
||||
|
||||
@Override
|
||||
public String getComponentName() {
|
||||
return "ntm_icf_reactor";
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getHeat(Context context, Arguments args) {
|
||||
return new Object[] {this.heat};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getHeatingRate(Context context, Arguments args) {
|
||||
return new Object[] {this.heatup};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getMaxHeat(Context context, Arguments args) {
|
||||
return new Object[] {maxHeat};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getPower(Context context, Arguments args) {
|
||||
return new Object[] {this.laser};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getFluid(Context context, Arguments args) {
|
||||
return new Object[] {
|
||||
tanks[0].getFill(), tanks[0].getMaxFill(), tanks[0].getTankType().getUnlocalizedName(),
|
||||
tanks[1].getFill(), tanks[1].getMaxFill(), tanks[1].getTankType().getUnlocalizedName(),
|
||||
tanks[2].getFill(), tanks[2].getMaxFill()
|
||||
};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getPelletStats(Context context, Arguments args) {
|
||||
return new Object[] {
|
||||
ItemICFPellet.getDepletion(slots[5]),
|
||||
ItemICFPellet.getMaxDepletion(slots[5]),
|
||||
ItemICFPellet.getFusingDifficulty(slots[5]),
|
||||
ItemICFPellet.getType(slots[5], true).name(),
|
||||
ItemICFPellet.getType(slots[5], false).name()
|
||||
};
|
||||
}
|
||||
|
||||
public String[] methods() {
|
||||
return new String[] {
|
||||
"getHeat",
|
||||
"getHeatingRate",
|
||||
"getMaxHeat",
|
||||
"getPower",
|
||||
"getFluid",
|
||||
"getPelletStats"
|
||||
};
|
||||
}
|
||||
|
||||
public Object[] invoke(String method, Context context, Arguments args) throws Exception {
|
||||
switch (method) {
|
||||
case ("getHeat"):
|
||||
return getHeat(context, args);
|
||||
case ("getHeatingRate"):
|
||||
return getHeatingRate(context, args);
|
||||
case ("getMaxHeat"):
|
||||
return getMaxHeat(context, args);
|
||||
case ("getPower"):
|
||||
return getPower(context, args);
|
||||
case ("getFluid"):
|
||||
return getFluid(context, args);
|
||||
case ("getPelletStats"):
|
||||
return getPelletStats(context, args);
|
||||
}
|
||||
throw new NoSuchMethodException();
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,6 +8,7 @@ import com.hbm.blocks.machine.MachineITER;
|
||||
import com.hbm.explosion.ExplosionLarge;
|
||||
import com.hbm.explosion.ExplosionNT;
|
||||
import com.hbm.explosion.ExplosionNT.ExAttrib;
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.interfaces.IFluidAcceptor;
|
||||
import com.hbm.interfaces.IFluidSource;
|
||||
import com.hbm.inventory.container.ContainerITER;
|
||||
@ -33,9 +34,14 @@ import com.hbm.util.fauxpointtwelve.DirPos;
|
||||
import api.hbm.energymk2.IEnergyReceiverMK2;
|
||||
import api.hbm.fluid.IFluidStandardTransceiver;
|
||||
import api.hbm.tile.IInfoProviderEC;
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
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 net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
@ -46,7 +52,8 @@ import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityITER extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, IGUIProvider, IInfoProviderEC {
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityITER extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, IGUIProvider, IInfoProviderEC, SimpleComponent, CompatHandler.OCComponent {
|
||||
|
||||
public long power;
|
||||
public static final long maxPower = 10000000;
|
||||
@ -659,4 +666,93 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyRece
|
||||
data.setDouble("consumption", output * 10);
|
||||
data.setDouble("outputmb", output);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getComponentName() {
|
||||
return "ntm_fusion";
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getEnergyInfo(Context context, Arguments args) {
|
||||
return new Object[] {getPower(), getMaxPower()};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] isActive(Context context, Arguments args) {
|
||||
return new Object[] {isOn};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] setActive(Context context, Arguments args) {
|
||||
isOn = args.checkBoolean(0);
|
||||
return new Object[] {};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getFluid(Context context, Arguments args) {
|
||||
return new Object[] {
|
||||
tanks[0].getFill(), tanks[0].getMaxFill(),
|
||||
tanks[1].getFill(), tanks[1].getMaxFill(),
|
||||
plasma.getFill(), plasma.getMaxFill(), plasma.getTankType().getUnlocalizedName()
|
||||
};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getPlasmaTemp(Context context, Arguments args) {
|
||||
return new Object[] {plasma.getTankType().temperature};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getMaxTemp(Context context, Arguments args) {
|
||||
if (slots[3] != null && (slots[3].getItem() instanceof ItemFusionShield))
|
||||
return new Object[] {((ItemFusionShield) slots[3].getItem()).maxTemp};
|
||||
return new Object[] {"N/A"};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getBlanketDamage(Context context, Arguments args) {
|
||||
if (slots[3] != null && (slots[3].getItem() instanceof ItemFusionShield))
|
||||
return new Object[]{ItemFusionShield.getShieldDamage(slots[3]), ((ItemFusionShield)slots[3].getItem()).maxDamage};
|
||||
return new Object[] {"N/A", "N/A"};
|
||||
}
|
||||
|
||||
public String[] methods() {
|
||||
return new String[] {
|
||||
"getEnergyInfo",
|
||||
"isActive",
|
||||
"setActive",
|
||||
"getFluid",
|
||||
"getPlasmaTemp",
|
||||
"getMaxTemp",
|
||||
"getBlanketDamage"
|
||||
};
|
||||
}
|
||||
|
||||
public Object[] invoke(String method, Context context, Arguments args) throws Exception {
|
||||
switch (method) {
|
||||
case ("getEnergyInfo"):
|
||||
return getEnergyInfo(context, args);
|
||||
case ("isActive"):
|
||||
return isActive(context, args);
|
||||
case ("setActive"):
|
||||
return setActive(context, args);
|
||||
case ("getFluid"):
|
||||
return getFluid(context, args);
|
||||
case ("getPlasmaTemp"):
|
||||
return getPlasmaTemp(context, args);
|
||||
case ("getMaxTemp"):
|
||||
return getMaxTemp(context, args);
|
||||
case ("getBlanketDamage"):
|
||||
return getBlanketDamage(context, args);
|
||||
}
|
||||
throw new NoSuchMethodException();
|
||||
}
|
||||
}
|
||||
|
||||
@ -44,7 +44,7 @@ import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityMachineLargeTurbine extends TileEntityMachineBase implements IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC {
|
||||
public class TileEntityMachineLargeTurbine extends TileEntityMachineBase implements IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent {
|
||||
|
||||
public long power;
|
||||
public static final long maxPower = 100000000;
|
||||
@ -365,7 +365,7 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] setType(Context context, Arguments args) {
|
||||
tanks[0].setTankType(CompatHandler.intToSteamType(args.checkInteger(0)));
|
||||
return new Object[] {true};
|
||||
return new Object[] {};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@ -374,6 +374,29 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme
|
||||
return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), CompatHandler.steamTypeToInt(tanks[0].getTankType())};
|
||||
}
|
||||
|
||||
public String[] methods() {
|
||||
return new String[] {
|
||||
"getFluid",
|
||||
"getType",
|
||||
"setType",
|
||||
"getInfo"
|
||||
};
|
||||
}
|
||||
|
||||
public Object[] invoke(String method, Context context, Arguments args) throws Exception {
|
||||
switch(method) {
|
||||
case ("getFluid"):
|
||||
return getFluid(context, args);
|
||||
case ("getType"):
|
||||
return getType(context, args);
|
||||
case ("setType"):
|
||||
return setType(context, args);
|
||||
case ("getInfo"):
|
||||
return getInfo(context, args);
|
||||
}
|
||||
throw new NoSuchMethodException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new ContainerMachineLargeTurbine(player.inventory, this);
|
||||
|
||||
@ -8,6 +8,7 @@ import java.util.function.Function;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.stream.JsonWriter;
|
||||
import com.hbm.extprop.HbmLivingProps;
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.interfaces.IControlReceiver;
|
||||
import com.hbm.inventory.container.ContainerMachineRadarNT;
|
||||
import com.hbm.inventory.gui.GUIMachineRadarNT;
|
||||
@ -37,11 +38,16 @@ import api.hbm.entity.IRadarDetectable;
|
||||
import api.hbm.entity.IRadarDetectableNT;
|
||||
import api.hbm.entity.IRadarDetectableNT.RadarScanParams;
|
||||
import api.hbm.entity.RadarEntry;
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
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 net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
@ -60,7 +66,8 @@ import net.minecraft.world.WorldServer;
|
||||
* Now with SmЯt™ lag-free entity detection! (patent pending)
|
||||
* @author hbm
|
||||
*/
|
||||
public class TileEntityMachineRadarNT extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider, IConfigurableMachine, IControlReceiver {
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityMachineRadarNT extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider, IConfigurableMachine, IControlReceiver, SimpleComponent, CompatHandler.OCComponent {
|
||||
|
||||
public boolean scanMissiles = true;
|
||||
public boolean scanShells = true;
|
||||
@ -592,4 +599,127 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
|
||||
return null;
|
||||
});
|
||||
}
|
||||
|
||||
//OC compat!
|
||||
|
||||
@Override
|
||||
public String getComponentName() {
|
||||
return "ntm_radar";
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getSettings(Context context, Arguments args) {
|
||||
return new Object[] {scanMissiles, scanShells, scanPlayers, smartMode};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getRange(Context context, Arguments args) {
|
||||
return new Object[] {this.getRange()};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] setSettings(Context context, Arguments args) {
|
||||
this.scanMissiles = args.checkBoolean(0);
|
||||
this.scanShells = args.checkBoolean(1);
|
||||
this.scanPlayers = args.checkBoolean(2);
|
||||
this.smartMode = args.checkBoolean(3);
|
||||
return new Object[] {};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getEnergyInfo(Context context, Arguments args) {
|
||||
return new Object[] {getPower(), getMaxPower()};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] isJammed(Context context, Arguments args) {
|
||||
return new Object[] {this.jammed};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getAmount(Context context, Arguments args) {
|
||||
return new Object[] {entries.size()};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] isIndexPlayer(Context context, Arguments args) {
|
||||
int index = args.checkInteger(0) - 1;
|
||||
if(index > entries.size() || index < 0) {
|
||||
return new Object[] {null, "No entity exists at that index."};
|
||||
}
|
||||
RadarEntry e = entries.get(index);
|
||||
return new Object[] {e.blipLevel == IRadarDetectableNT.PLAYER};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getIndexType(Context context, Arguments args) {
|
||||
int index = args.checkInteger(0) - 1;
|
||||
if(index > entries.size() || index < 0) {
|
||||
return new Object[] {null, "No entity exists at that index."};
|
||||
}
|
||||
RadarEntry e = entries.get(index);
|
||||
return new Object[] {e.blipLevel};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getEntityAtIndex(Context context, Arguments args) {
|
||||
int index = args.checkInteger(0) - 1;
|
||||
if(index > entries.size() || index < 0) {
|
||||
return new Object[] {null, "No entity exists at that index."};
|
||||
}
|
||||
RadarEntry e = entries.get(index);
|
||||
int type = e.blipLevel;
|
||||
if(e.blipLevel == IRadarDetectableNT.PLAYER) {
|
||||
return new Object[]{true, e.posX, e.posY, e.posZ, type, e.unlocalizedName};
|
||||
}
|
||||
return new Object[]{false, e.posX, e.posY, e.posZ, type};
|
||||
}
|
||||
|
||||
public String[] methods() {
|
||||
return new String[] {
|
||||
"getSettings",
|
||||
"getRange",
|
||||
"setSettings",
|
||||
"getEnergyInfo",
|
||||
"isJammed",
|
||||
"getAmount",
|
||||
"isIndexPlayer",
|
||||
"getIndexType",
|
||||
"getEntityAtIndex"
|
||||
};
|
||||
}
|
||||
|
||||
public Object[] invoke(String method, Context context, Arguments args) throws Exception {
|
||||
switch(method) {
|
||||
case ("getSettings"):
|
||||
return getSettings(context, args);
|
||||
case ("getRange"):
|
||||
return getRange(context, args);
|
||||
case ("setSettings"):
|
||||
return setSettings(context, args);
|
||||
case ("getEnergyInfo"):
|
||||
return getEnergyInfo(context, args);
|
||||
case ("isJammed"):
|
||||
return isJammed(context, args);
|
||||
case ("getAmount"):
|
||||
return getAmount(context, args);
|
||||
case ("isIndexPlayer"):
|
||||
return isIndexPlayer(context, args);
|
||||
case ("getIndexType"):
|
||||
return getIndexType(context, args);
|
||||
case ("getEntityAtIndex"):
|
||||
return getEntityAtIndex(context, args);
|
||||
}
|
||||
throw new NoSuchMethodException();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@ package com.hbm.tileentity.machine;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.machine.ReactorResearch;
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.inventory.container.ContainerMachineReactorBreeding;
|
||||
import com.hbm.inventory.gui.GUIMachineReactorBreeding;
|
||||
import com.hbm.inventory.recipes.BreederRecipes;
|
||||
@ -30,7 +31,7 @@ import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityMachineReactorBreeding extends TileEntityMachineBase implements SimpleComponent, IGUIProvider, IInfoProviderEC {
|
||||
public class TileEntityMachineReactorBreeding extends TileEntityMachineBase implements SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent {
|
||||
|
||||
public int flux;
|
||||
public float progress;
|
||||
|
||||
@ -39,7 +39,7 @@ import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityMachineTurbine extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC {
|
||||
public class TileEntityMachineTurbine extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent {
|
||||
|
||||
private ItemStack slots[];
|
||||
|
||||
@ -347,7 +347,7 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getFluid(Context context, Arguments args) {
|
||||
return new Object[] {tanks[0].getFill(), tanks[1].getFill(), tanks[1].getFill(), tanks[1].getMaxFill()};
|
||||
return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill()};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
|
||||
@ -3,6 +3,7 @@ package com.hbm.tileentity.machine;
|
||||
import java.util.HashMap;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.interfaces.IControlReceiver;
|
||||
@ -41,7 +42,7 @@ import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityMachineTurbineGas extends TileEntityMachineBase implements IFluidStandardTransceiver, IEnergyProviderMK2, IControlReceiver, IGUIProvider, SimpleComponent, IInfoProviderEC {
|
||||
public class TileEntityMachineTurbineGas extends TileEntityMachineBase implements IFluidStandardTransceiver, IEnergyProviderMK2, IControlReceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent {
|
||||
|
||||
public long power;
|
||||
public static final long maxPower = 1000000L;
|
||||
@ -605,14 +606,14 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] setThrottle(Context context, Arguments args) {
|
||||
throttle = args.checkInteger(0);
|
||||
return new Object[] {true};
|
||||
return new Object[] {};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] setAuto(Context context, Arguments args) {
|
||||
autoMode = args.checkBoolean(0);
|
||||
return new Object[] {true};
|
||||
return new Object[] {};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 4)
|
||||
@ -620,20 +621,19 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement
|
||||
public Object[] start(Context context, Arguments args) {
|
||||
stopIfNotReady();
|
||||
startup();
|
||||
return new Object[] {true};
|
||||
return new Object[] {};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] stop(Context context, Arguments args) {
|
||||
shutdown();
|
||||
return new Object[] {true};
|
||||
return new Object[] {};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getInfo(Context context, Arguments args) {
|
||||
|
||||
return new Object[] {throttle, state,
|
||||
tanks[0].getFill(), tanks[0].getMaxFill(),
|
||||
tanks[1].getFill(), tanks[1].getMaxFill(),
|
||||
@ -641,6 +641,64 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement
|
||||
tanks[3].getFill(), tanks[3].getMaxFill()};
|
||||
}
|
||||
|
||||
public String[] methods() {
|
||||
return new String[] {
|
||||
"getFluid",
|
||||
"getType",
|
||||
"getPower",
|
||||
"getThrottle",
|
||||
"getState",
|
||||
"getAuto",
|
||||
"setThrottle",
|
||||
"setAuto",
|
||||
"start",
|
||||
"stop",
|
||||
"getInfo"
|
||||
};
|
||||
}
|
||||
|
||||
public Object[] invoke(String method, Context context, Arguments args) throws Exception {
|
||||
switch(method) {
|
||||
case ("getFluid"):
|
||||
return new Object[] {
|
||||
tanks[0].getFill(), tanks[0].getMaxFill(),
|
||||
tanks[1].getFill(), tanks[1].getMaxFill(),
|
||||
tanks[2].getFill(), tanks[2].getMaxFill(),
|
||||
tanks[3].getFill(), tanks[3].getMaxFill()
|
||||
};
|
||||
case ("getType"):
|
||||
return new Object[] {tanks[0].getTankType().getName()};
|
||||
case ("getPower"):
|
||||
return new Object[] {power};
|
||||
case ("getThrottle"):
|
||||
return new Object[] {throttle};
|
||||
case ("getState"):
|
||||
return new Object[] {state};
|
||||
case ("getAuto"):
|
||||
return new Object[] {autoMode};
|
||||
case ("setThrottle"):
|
||||
throttle = args.checkInteger(0);
|
||||
return new Object[] {};
|
||||
case ("setAuto"):
|
||||
autoMode = args.checkBoolean(0);
|
||||
return new Object[] {};
|
||||
case ("start"):
|
||||
stopIfNotReady();
|
||||
startup();
|
||||
return new Object[] {};
|
||||
case ("stop"):
|
||||
shutdown();
|
||||
return new Object[] {};
|
||||
case ("getInfo"):
|
||||
return new Object[] {throttle, state,
|
||||
tanks[0].getFill(), tanks[0].getMaxFill(),
|
||||
tanks[1].getFill(), tanks[1].getMaxFill(),
|
||||
tanks[2].getFill(), tanks[2].getMaxFill(),
|
||||
tanks[3].getFill(), tanks[3].getMaxFill()};
|
||||
}
|
||||
throw new NoSuchMethodException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new ContainerMachineTurbineGas(player.inventory, this);
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.hbm.tileentity.machine;
|
||||
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.inventory.container.ContainerMicrowave;
|
||||
import com.hbm.inventory.gui.GUIMicrowave;
|
||||
import com.hbm.lib.Library;
|
||||
@ -23,11 +24,12 @@ import net.minecraft.item.crafting.FurnaceRecipes;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityMicrowave extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider, SimpleComponent {
|
||||
public class TileEntityMicrowave extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider, SimpleComponent, CompatHandler.OCComponent {
|
||||
|
||||
public long power;
|
||||
public static final long maxPower = 50000;
|
||||
@ -228,6 +230,19 @@ public class TileEntityMicrowave extends TileEntityMachineBase implements IEnerg
|
||||
return new Object[] {"This is a testing device for everything OC."};
|
||||
}
|
||||
|
||||
@Callback(direct = true, getter = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] variableget(Context context, Arguments args) {
|
||||
return new Object[] {speed, "test of the `getter` callback function"};
|
||||
}
|
||||
|
||||
@Callback(direct = true, setter = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] variableset(Context context, Arguments args) {
|
||||
speed = MathHelper.clamp_int(args.checkInteger(0), 0, 5);
|
||||
return new Object[] {"test of the `setter` callback function"};
|
||||
}
|
||||
|
||||
@Override
|
||||
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new ContainerMicrowave(player.inventory, this);
|
||||
|
||||
@ -6,6 +6,7 @@ import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.interfaces.IControlReceiver;
|
||||
import com.hbm.inventory.container.ContainerPWR;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
@ -43,7 +44,7 @@ import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityPWRController extends TileEntityMachineBase implements IGUIProvider, IControlReceiver, SimpleComponent, IFluidStandardTransceiver {
|
||||
public class TileEntityPWRController extends TileEntityMachineBase implements IGUIProvider, IControlReceiver, SimpleComponent, IFluidStandardTransceiver, CompatHandler.OCComponent {
|
||||
|
||||
public FluidTank[] tanks;
|
||||
public int coreHeat;
|
||||
@ -53,8 +54,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG
|
||||
public static final int hullHeatCapacityBase = 10_000_000;
|
||||
public double flux;
|
||||
|
||||
public int rodLevel = 100;
|
||||
public int rodTarget = 100;
|
||||
public double rodLevel = 100;
|
||||
public double rodTarget = 100;
|
||||
|
||||
public int typeLoaded;
|
||||
public int amountLoaded;
|
||||
@ -202,7 +203,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG
|
||||
this.decrStackSize(0, 1);
|
||||
this.markChanged();
|
||||
}
|
||||
|
||||
double diff = this.rodLevel - this.rodTarget;
|
||||
if(diff < 1 && diff > -1) this.rodLevel = this.rodTarget;
|
||||
if(this.rodTarget > this.rodLevel) this.rodLevel++;
|
||||
if(this.rodTarget < this.rodLevel) this.rodLevel--;
|
||||
|
||||
@ -280,8 +282,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG
|
||||
data.setDouble("progress", progress);
|
||||
data.setInteger("typeLoaded", typeLoaded);
|
||||
data.setInteger("amountLoaded", amountLoaded);
|
||||
data.setInteger("rodLevel", rodLevel);
|
||||
data.setInteger("rodTarget", rodTarget);
|
||||
data.setDouble("rodLevel", rodLevel);
|
||||
data.setDouble("rodTarget", rodTarget);
|
||||
data.setInteger("coreHeatCapacity", coreHeatCapacity);
|
||||
this.networkPack(data, 150);
|
||||
} else {
|
||||
@ -395,7 +397,7 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG
|
||||
progress = nbt.getDouble("progress");
|
||||
typeLoaded = nbt.getInteger("typeLoaded");
|
||||
amountLoaded = nbt.getInteger("amountLoaded");
|
||||
rodLevel = nbt.getInteger("rodLevel");
|
||||
rodLevel = nbt.getDouble("rodLevel");
|
||||
rodTarget = nbt.getInteger("rodTarget");
|
||||
coreHeatCapacity = nbt.getInteger("coreHeatCapacity");
|
||||
}
|
||||
@ -454,8 +456,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG
|
||||
this.coreHeat = nbt.getInteger("coreHeat");
|
||||
this.hullHeat = nbt.getInteger("hullHeat");
|
||||
this.flux = nbt.getDouble("flux");
|
||||
this.rodLevel = nbt.getInteger("rodLevel");
|
||||
this.rodTarget = nbt.getInteger("rodTarget");
|
||||
this.rodLevel = nbt.getDouble("rodLevel");
|
||||
this.rodTarget = nbt.getDouble("rodTarget");
|
||||
this.typeLoaded = nbt.getInteger("typeLoaded");
|
||||
this.amountLoaded = nbt.getInteger("amountLoaded");
|
||||
this.progress = nbt.getDouble("progress");
|
||||
@ -499,8 +501,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG
|
||||
nbt.setInteger("coreHeat", coreHeat);
|
||||
nbt.setInteger("hullHeat", hullHeat);
|
||||
nbt.setDouble("flux", flux);
|
||||
nbt.setInteger("rodLevel", rodLevel);
|
||||
nbt.setInteger("rodTarget", rodTarget);
|
||||
nbt.setDouble("rodLevel", rodLevel);
|
||||
nbt.setDouble("rodTarget", rodTarget);
|
||||
nbt.setInteger("typeLoaded", typeLoaded);
|
||||
nbt.setInteger("amountLoaded", amountLoaded);
|
||||
nbt.setDouble("progress", progress);
|
||||
@ -588,7 +590,7 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] setLevel(Context context, Arguments args) {
|
||||
rodTarget = MathHelper.clamp_int(args.checkInteger(0), 0, 100);
|
||||
rodTarget = MathHelper.clamp_double(args.checkDouble(0), 0, 100);
|
||||
this.markChanged();
|
||||
return new Object[] {true};
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@ package com.hbm.tileentity.machine;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.machine.ReactorResearch;
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.interfaces.IControlReceiver;
|
||||
import com.hbm.inventory.container.ContainerReactorControl;
|
||||
import com.hbm.inventory.gui.GUIReactorControl;
|
||||
@ -29,7 +30,7 @@ import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityReactorControl extends TileEntityMachineBase implements IControlReceiver, IGUIProvider, SimpleComponent {
|
||||
public class TileEntityReactorControl extends TileEntityMachineBase implements IControlReceiver, IGUIProvider, SimpleComponent, CompatHandler.OCComponent {
|
||||
|
||||
public TileEntityReactorControl() {
|
||||
super(1);
|
||||
|
||||
@ -5,6 +5,7 @@ import java.util.List;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.config.MobConfig;
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.handler.radiation.ChunkRadiationManager;
|
||||
import com.hbm.interfaces.IControlReceiver;
|
||||
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||
@ -41,7 +42,7 @@ import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
//TODO: fix reactor control;
|
||||
public class TileEntityReactorResearch extends TileEntityMachineBase implements IControlReceiver, SimpleComponent, IGUIProvider, IInfoProviderEC {
|
||||
public class TileEntityReactorResearch extends TileEntityMachineBase implements IControlReceiver, SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent {
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public double lastLevel;
|
||||
@ -430,6 +431,32 @@ public class TileEntityReactorResearch extends TileEntityMachineBase implements
|
||||
return new Object[] {heat, level, targetLevel, totalFlux};
|
||||
}
|
||||
|
||||
public String[] methods() {
|
||||
return new String[] {
|
||||
"getTemp",
|
||||
"getLevel",
|
||||
"getTargetLevel",
|
||||
"getFlux",
|
||||
"getInfo"
|
||||
};
|
||||
}
|
||||
|
||||
public Object[] invoke(String method, Context context, Arguments args) throws Exception {
|
||||
switch(method) {
|
||||
case ("getTemp"):
|
||||
return getTemp(context, args);
|
||||
case ("getLevel"):
|
||||
return getLevel(context, args);
|
||||
case ("getTargetLevel"):
|
||||
return getTargetLevel(context, args);
|
||||
case ("getFlux"):
|
||||
return getFlux(context, args);
|
||||
case ("getInfo"):
|
||||
return getInfo(context, args);
|
||||
}
|
||||
throw new NoSuchMethodException();
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] setLevel(Context context, Arguments args) {
|
||||
|
||||
@ -10,6 +10,7 @@ import com.hbm.config.MobConfig;
|
||||
import com.hbm.entity.projectile.EntityZirnoxDebris;
|
||||
import com.hbm.entity.projectile.EntityZirnoxDebris.DebrisType;
|
||||
import com.hbm.explosion.ExplosionNukeGeneric;
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.handler.MultiblockHandlerXR;
|
||||
import com.hbm.interfaces.IControlReceiver;
|
||||
import com.hbm.interfaces.IFluidAcceptor;
|
||||
@ -52,7 +53,7 @@ import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityReactorZirnox extends TileEntityMachineBase implements IFluidContainer, IFluidAcceptor, IFluidSource, IControlReceiver, IFluidStandardTransceiver, SimpleComponent, IGUIProvider, IInfoProviderEC {
|
||||
public class TileEntityReactorZirnox extends TileEntityMachineBase implements IFluidContainer, IFluidAcceptor, IFluidSource, IControlReceiver, IFluidStandardTransceiver, SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent {
|
||||
|
||||
public int heat;
|
||||
public static final int maxHeat = 100000;
|
||||
@ -600,6 +601,41 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IF
|
||||
return new Object[] {};
|
||||
}
|
||||
|
||||
public String[] methods() {
|
||||
return new String[] {
|
||||
"getTemp",
|
||||
"getPressure",
|
||||
"getWater",
|
||||
"getSteam",
|
||||
"getCarbonDioxide",
|
||||
"isActive",
|
||||
"getInfo",
|
||||
"setActive"
|
||||
};
|
||||
}
|
||||
|
||||
public Object[] invoke(String method, Context context, Arguments args) throws Exception {
|
||||
switch(method) {
|
||||
case ("getTemp"):
|
||||
return getTemp(context, args);
|
||||
case ("getPressure"):
|
||||
return getPressure(context, args);
|
||||
case ("getWater"):
|
||||
return getWater(context, args);
|
||||
case ("getSteam"):
|
||||
return getSteam(context, args);
|
||||
case ("getCarbonDioxide"):
|
||||
return getCarbonDioxide(context, args);
|
||||
case ("isActive"):
|
||||
return isActive(context, args);
|
||||
case ("getInfo"):
|
||||
return getInfo(context, args);
|
||||
case ("setActive"):
|
||||
return setActive(context, args);
|
||||
}
|
||||
throw new NoSuchMethodException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new ContainerReactorZirnox(player.inventory, this);
|
||||
|
||||
@ -3,6 +3,7 @@ package com.hbm.tileentity.machine.rbmk;
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.blocks.machine.rbmk.RBMKBase;
|
||||
import com.hbm.extprop.HbmPlayerProps;
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.handler.HbmKeybinds.EnumKeybind;
|
||||
import com.hbm.items.machine.ItemRBMKRod;
|
||||
import com.hbm.packet.NBTPacket;
|
||||
@ -28,7 +29,7 @@ import net.minecraftforge.common.util.ForgeDirection;
|
||||
import java.util.List;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityCraneConsole extends TileEntity implements INBTPacketReceiver, SimpleComponent {
|
||||
public class TileEntityCraneConsole extends TileEntity implements INBTPacketReceiver, SimpleComponent, CompatHandler.OCComponent {
|
||||
|
||||
public int centerX;
|
||||
public int centerY;
|
||||
|
||||
@ -33,12 +33,13 @@ import net.minecraft.inventory.Container;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements IFluidAcceptor, IFluidSource, IControlReceiver, IFluidStandardTransceiver, SimpleComponent, IInfoProviderEC {
|
||||
public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements IFluidAcceptor, IFluidSource, IControlReceiver, IFluidStandardTransceiver, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent {
|
||||
|
||||
public FluidTank feed;
|
||||
public FluidTank steam;
|
||||
@ -403,6 +404,11 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I
|
||||
return new Object[] {true};
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConnectNode(ForgeDirection side) {
|
||||
return side == ForgeDirection.DOWN;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new ContainerRBMKGeneric(player.inventory);
|
||||
|
||||
@ -7,6 +7,7 @@ import java.util.Locale;
|
||||
import java.util.Set;
|
||||
import java.util.LinkedHashMap;
|
||||
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.interfaces.IControlReceiver;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.inventory.gui.GUIRBMKConsole;
|
||||
@ -36,7 +37,7 @@ 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 TileEntityRBMKConsole extends TileEntityMachineBase implements IControlReceiver, IGUIProvider, SimpleComponent {
|
||||
public class TileEntityRBMKConsole extends TileEntityMachineBase implements IControlReceiver, IGUIProvider, SimpleComponent, CompatHandler.OCComponent {
|
||||
|
||||
private int targetX;
|
||||
private int targetY;
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package com.hbm.tileentity.machine.rbmk;
|
||||
|
||||
import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType;
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
@ -10,9 +11,10 @@ import li.cil.oc.api.machine.Context;
|
||||
import li.cil.oc.api.network.SimpleComponent;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements SimpleComponent {
|
||||
public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements SimpleComponent, CompatHandler.OCComponent {
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public double lastLevel;
|
||||
@ -164,4 +166,9 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im
|
||||
targetLevel = MathHelper.clamp_double(newLevel, 0, 1);
|
||||
return new Object[] {};
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConnectNode(ForgeDirection side) {
|
||||
return side == ForgeDirection.DOWN;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package com.hbm.tileentity.machine.rbmk;
|
||||
|
||||
import api.hbm.fluid.IFluidStandardReceiver;
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.interfaces.IFluidAcceptor;
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
@ -16,11 +17,12 @@ import net.minecraft.entity.Entity;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAcceptor, IFluidStandardReceiver, SimpleComponent {
|
||||
public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAcceptor, IFluidStandardReceiver, SimpleComponent, CompatHandler.OCComponent {
|
||||
|
||||
private FluidTank tank;
|
||||
private int lastCooled;
|
||||
@ -178,4 +180,9 @@ public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAc
|
||||
public Object[] getInfo(Context context, Arguments args) {
|
||||
return new Object[]{heat, tank.getFill(), tank.getMaxFill(), xCoord, yCoord, zCoord};
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConnectNode(ForgeDirection side) {
|
||||
return side == ForgeDirection.DOWN;
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ package com.hbm.tileentity.machine.rbmk;
|
||||
import api.hbm.fluid.IFluidStandardTransceiver;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType;
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.interfaces.IFluidAcceptor;
|
||||
import com.hbm.interfaces.IFluidSource;
|
||||
import com.hbm.inventory.container.ContainerRBMKHeater;
|
||||
@ -28,12 +29,13 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")})
|
||||
public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, SimpleComponent {
|
||||
public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, SimpleComponent, CompatHandler.OCComponent {
|
||||
|
||||
public FluidTank feed;
|
||||
public FluidTank steam;
|
||||
@ -334,6 +336,11 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I
|
||||
return new Object[] {xCoord, yCoord, zCoord};
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConnectNode(ForgeDirection side) {
|
||||
return side == ForgeDirection.DOWN;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new ContainerRBMKHeater(player.inventory, this);
|
||||
|
||||
@ -3,6 +3,7 @@ package com.hbm.tileentity.machine.rbmk;
|
||||
import api.hbm.fluid.IFluidStandardSender;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType;
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.inventory.FluidStack;
|
||||
import com.hbm.inventory.container.ContainerRBMKOutgasser;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
@ -26,9 +27,10 @@ import net.minecraft.inventory.Container;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IFluidStandardSender, SimpleComponent {
|
||||
public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IFluidStandardSender, SimpleComponent, CompatHandler.OCComponent {
|
||||
|
||||
public FluidTank gas;
|
||||
public double progress;
|
||||
@ -262,6 +264,11 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement
|
||||
return new Object[] {gas.getFill(), gas.getMaxFill(), progress, gas.getTankType().getID(), xCoord, yCoord, zCoord};
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConnectNode(ForgeDirection side) {
|
||||
return side == ForgeDirection.DOWN;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new ContainerRBMKOutgasser(player.inventory, this);
|
||||
|
||||
@ -4,6 +4,7 @@ import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.machine.rbmk.RBMKBase;
|
||||
import com.hbm.blocks.machine.rbmk.RBMKRod;
|
||||
import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType;
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.handler.radiation.ChunkRadiationManager;
|
||||
import com.hbm.inventory.container.ContainerRBMKRod;
|
||||
import com.hbm.inventory.gui.GUIRBMKRod;
|
||||
@ -33,7 +34,7 @@ import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IRBMKLoadable, SimpleComponent, IInfoProviderEC {
|
||||
public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IRBMKLoadable, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent {
|
||||
|
||||
//amount of "neutron energy" buffered for the next tick to use for the reaction
|
||||
public double fluxFast;
|
||||
@ -495,6 +496,11 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM
|
||||
return new Object[] {xCoord, yCoord, zCoord};
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConnectNode(ForgeDirection side) {
|
||||
return side == ForgeDirection.DOWN;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new ContainerRBMKRod(player.inventory, this);
|
||||
|
||||
@ -2,6 +2,7 @@ package com.hbm.tileentity.machine.storage;
|
||||
|
||||
import api.hbm.fluid.*;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.interfaces.IFluidAcceptor;
|
||||
import com.hbm.interfaces.IFluidSource;
|
||||
import com.hbm.inventory.FluidContainerRegistry;
|
||||
@ -44,7 +45,7 @@ import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")})
|
||||
public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcceptor, IFluidSource, SimpleComponent, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider {
|
||||
public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcceptor, IFluidSource, SimpleComponent, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider, CompatHandler.OCComponent {
|
||||
|
||||
public FluidTank tank;
|
||||
public short mode = 0;
|
||||
@ -427,4 +428,24 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc
|
||||
public Object[] getInfo(Context context, Arguments args) {
|
||||
return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getName()};
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] methods() {
|
||||
return new String[] {"getFluidStored", "getMaxStored", "getTypeStored", "getInfo"};
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object[] invoke(String method, Context context, Arguments args) throws Exception {
|
||||
switch (method) {
|
||||
case "getFluidStored":
|
||||
return getFluidStored(context, args);
|
||||
case "getMaxStored":
|
||||
return getMaxStored(context, args);
|
||||
case "getTypeStored":
|
||||
return getTypeStored(context, args);
|
||||
case "getInfo":
|
||||
return getInfo(context, args);
|
||||
}
|
||||
throw new NoSuchMethodException();
|
||||
}
|
||||
}
|
||||
|
||||
@ -9,6 +9,7 @@ import api.hbm.energymk2.Nodespace.PowerNode;
|
||||
import api.hbm.tile.IInfoProviderEC;
|
||||
|
||||
import com.hbm.blocks.machine.MachineBattery;
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.inventory.container.ContainerMachineBattery;
|
||||
import com.hbm.inventory.gui.GUIMachineBattery;
|
||||
import com.hbm.lib.Library;
|
||||
@ -34,7 +35,7 @@ import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")})
|
||||
public class TileEntityMachineBattery extends TileEntityMachineBase implements IEnergyConductorMK2, IEnergyProviderMK2, IEnergyReceiverMK2, IPersistentNBT, SimpleComponent, IGUIProvider, IInfoProviderEC {
|
||||
public class TileEntityMachineBattery extends TileEntityMachineBase implements IEnergyConductorMK2, IEnergyProviderMK2, IEnergyReceiverMK2, IPersistentNBT, SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent {
|
||||
|
||||
public long[] log = new long[20];
|
||||
public long delta = 0;
|
||||
|
||||
@ -5,6 +5,7 @@ import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.explosion.vanillant.ExplosionVNT;
|
||||
import com.hbm.extprop.HbmPlayerProps;
|
||||
import com.hbm.handler.CompatHandler.OCComponent;
|
||||
import com.hbm.handler.MultiblockHandlerXR;
|
||||
import com.hbm.interfaces.IFluidAcceptor;
|
||||
import com.hbm.interfaces.IFluidContainer;
|
||||
@ -55,7 +56,7 @@ import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")})
|
||||
public class TileEntityMachineFluidTank extends TileEntityMachineBase implements IFluidContainer, SimpleComponent, IFluidSource, IFluidAcceptor, IFluidStandardTransceiver, IPersistentNBT, IOverpressurable, IGUIProvider, IRepairable {
|
||||
public class TileEntityMachineFluidTank extends TileEntityMachineBase implements IFluidContainer, SimpleComponent, OCComponent, IFluidSource, IFluidAcceptor, IFluidStandardTransceiver, IPersistentNBT, IOverpressurable, IGUIProvider, IRepairable {
|
||||
|
||||
public FluidTank tank;
|
||||
public short mode = 0;
|
||||
@ -514,4 +515,24 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements
|
||||
public Object[] getInfo(Context context, Arguments args) {
|
||||
return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getName()};
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] methods() {
|
||||
return new String[] {"getFluidStored", "getMaxStored", "getTypeStored", "getInfo"};
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object[] invoke(String method, Context context, Arguments args) throws Exception {
|
||||
switch (method) {
|
||||
case "getFluidStored":
|
||||
return getFluidStored(context, args);
|
||||
case "getMaxStored":
|
||||
return getMaxStored(context, args);
|
||||
case "getTypeStored":
|
||||
return getTypeStored(context, args);
|
||||
case "getInfo":
|
||||
return getInfo(context, args);
|
||||
}
|
||||
throw new NoSuchMethodException();
|
||||
}
|
||||
}
|
||||
@ -3,6 +3,7 @@ package com.hbm.tileentity.network;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.interfaces.IControlReceiver;
|
||||
import com.hbm.inventory.gui.GuiScreenRadioTelex;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
@ -10,8 +11,13 @@ import com.hbm.tileentity.INBTPacketReceiver;
|
||||
import com.hbm.tileentity.network.RTTYSystem.RTTYChannel;
|
||||
import com.hbm.util.ItemStackUtil;
|
||||
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
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 net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
@ -23,7 +29,8 @@ import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiver, IControlReceiver, IGUIProvider {
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiver, IControlReceiver, IGUIProvider, SimpleComponent, CompatHandler.OCComponent {
|
||||
|
||||
public static final int lineWidth = 33;
|
||||
public String txChannel = "";
|
||||
@ -250,4 +257,82 @@ public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiv
|
||||
public double getMaxRenderDistanceSquared() {
|
||||
return 65536.0D;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getComponentName() {
|
||||
return "ntm_telex";
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getChannels(Context context, Arguments args) {
|
||||
return new Object[] {this.txChannel, this.rxChannel};
|
||||
}
|
||||
|
||||
@Callback
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] setChannels(Context context, Arguments args) {
|
||||
String[] old = {this.txChannel, this.rxChannel};
|
||||
this.rxChannel = args.checkString(0);
|
||||
this.txChannel = args.checkString(1);
|
||||
return new Object[] {old[0], old[1]};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getSendingTexts(Context context, Arguments args) {
|
||||
return new Object[] {this.txBuffer[0], this.txBuffer[1], this.txBuffer[2], this.txBuffer[3], this.txBuffer[4]};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getReceivingText(Context context, Arguments args) {
|
||||
return new Object[] {this.rxBuffer[0], this.rxBuffer[1], this.rxBuffer[2], this.rxBuffer[3], this.rxBuffer[4]};
|
||||
}
|
||||
|
||||
@Callback
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] setSendingText(Context context, Arguments args) { // this function nearly killed me
|
||||
for(int i = 0; i < 5; i++) {
|
||||
// check if it was never given or if it's an empty string
|
||||
// if it was never given then just assign it as an empty string
|
||||
// this also checks if it's even a string at all
|
||||
if(args.checkAny(i) == null || args.checkString(i).equals(""))
|
||||
this.txBuffer[i] = "";
|
||||
if(args.checkString(i).equals("")) { // if it isn't an empty string
|
||||
if(args.checkString(i).length() > TileEntityRadioTelex.lineWidth) { // line longer than allowed
|
||||
this.txBuffer[i] = args.checkString(i).substring(0, TileEntityRadioTelex.lineWidth); // truncate it
|
||||
} else
|
||||
this.txBuffer[i] = args.checkString(i); // else just set it directly
|
||||
}
|
||||
}
|
||||
return new Object[] {true};
|
||||
}
|
||||
|
||||
@Callback //you don't get to run this more than once per tick, that would be very very bad
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] printMessage(Context context, Arguments args) {
|
||||
this.print();
|
||||
return new Object[] {};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] clearAll(Context context, Arguments args) {
|
||||
for(int i = 0; i < 5; i++) this.rxBuffer[i] = "";
|
||||
this.writingLine = 0;
|
||||
return new Object[] {};
|
||||
}
|
||||
|
||||
@Callback
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] sendMessage(Context context, Arguments args) {
|
||||
if(!this.isSending) {
|
||||
this.isSending = true;
|
||||
this.sendingLine = 0;
|
||||
this.sendingIndex = 0;
|
||||
return new Object[] {true};
|
||||
}
|
||||
return new Object[] {false};
|
||||
}
|
||||
}
|
||||
|
||||
@ -15,9 +15,13 @@ import com.hbm.packet.AuxParticlePacketNT;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import li.cil.oc.api.machine.Arguments;
|
||||
import li.cil.oc.api.machine.Callback;
|
||||
import li.cil.oc.api.machine.Context;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
@ -464,4 +468,13 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen
|
||||
public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new GUITurretArty(player.inventory, this);
|
||||
}
|
||||
@Callback
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] addCoords(Context context, Arguments args) {
|
||||
this.mode = MODE_MANUAL;
|
||||
if(Math.sqrt(Math.pow(xCoord - args.checkDouble(0), 2)+Math.pow(yCoord - args.checkDouble(1), 2)+Math.pow(zCoord - args.checkDouble(2), 2)) >= this.getDecetorRange()) // check distance against range
|
||||
return new Object[] {false};
|
||||
targetQueue.add(Vec3.createVectorHelper(args.checkDouble(0), args.checkDouble(1), args.checkDouble(2)));
|
||||
return new Object[] {true};
|
||||
}
|
||||
}
|
||||
|
||||
@ -6,7 +6,12 @@ import java.util.List;
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.tileentity.IRadarCommandReceiver;
|
||||
|
||||
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 net.minecraft.entity.Entity;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
@ -69,4 +74,21 @@ public abstract class TileEntityTurretBaseArtillery extends TileEntityTurretBase
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getComponentName() {
|
||||
return "ntm_artillery";
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getCurrentTarget(Context context, Arguments args) {
|
||||
return new Object[] {targetQueue.get(0).xCoord, targetQueue.get(0).yCoord, targetQueue.get(0).zCoord};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getTargetDistance(Context context, Arguments args) {
|
||||
return new Object[] {Math.sqrt(Math.pow(xCoord - args.checkDouble(0), 2)+Math.pow(yCoord - args.checkDouble(1), 2)+Math.pow(zCoord - args.checkDouble(2), 2))};
|
||||
}
|
||||
}
|
||||
|
||||
@ -14,6 +14,7 @@ import com.hbm.entity.train.EntityRailCarBase;
|
||||
import com.hbm.handler.BulletConfigSyncingUtil;
|
||||
import com.hbm.handler.BulletConfiguration;
|
||||
import com.hbm.handler.CasingEjector;
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.interfaces.IControlReceiver;
|
||||
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||
import com.hbm.inventory.container.ContainerTurretBase;
|
||||
@ -29,9 +30,14 @@ import com.hbm.util.CompatExternal;
|
||||
|
||||
import api.hbm.energymk2.IEnergyReceiverMK2;
|
||||
import api.hbm.entity.IRadarDetectableNT;
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
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 net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
@ -48,6 +54,7 @@ import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.potion.Potion;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.FakePlayer;
|
||||
@ -58,7 +65,8 @@ import net.minecraftforge.common.util.ForgeDirection;
|
||||
* @author hbm
|
||||
*
|
||||
*/
|
||||
public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase implements IEnergyReceiverMK2, IControlReceiver, IGUIProvider {
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase implements IEnergyReceiverMK2, IControlReceiver, IGUIProvider, SimpleComponent, CompatHandler.OCComponent {
|
||||
|
||||
@Override
|
||||
public boolean hasPermission(EntityPlayer player) {
|
||||
@ -899,4 +907,160 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple
|
||||
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new ContainerTurretBase(player.inventory, this);
|
||||
}
|
||||
|
||||
// OC stuff
|
||||
// This is a large compat, so I have to leave comments to know what I'm doing
|
||||
|
||||
@Override
|
||||
public String getComponentName() {
|
||||
return "ntm_turret";
|
||||
}
|
||||
|
||||
// On/Off
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] setActive(Context context, Arguments args) {
|
||||
this.isOn = args.checkBoolean(0);
|
||||
return new Object[] {};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] isActive(Context context, Arguments args) {
|
||||
return new Object[] {this.isOn};
|
||||
}
|
||||
|
||||
// Energy information
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getEnergyInfo(Context context, Arguments args) {
|
||||
return new Object[] {this.getPower(), this.getMaxPower()};
|
||||
}
|
||||
|
||||
///////////////////////
|
||||
// Whitelist Control //
|
||||
///////////////////////
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getWhitelisted(Context context, Arguments args) {
|
||||
if(slots[0] != null && slots[0].getItem() == ModItems.turret_chip) {
|
||||
String[] array = ItemTurretBiometry.getNames(slots[0]);
|
||||
return new Object[] {array};
|
||||
}
|
||||
return new Object[] {};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] addWhitelist(Context context, Arguments args) {
|
||||
if(this.getWhitelist() != null) {
|
||||
List<String> names = this.getWhitelist();
|
||||
if (names.contains(args.checkString(0)))
|
||||
return new Object[]{false};
|
||||
}
|
||||
this.addName(args.checkString(0));
|
||||
return new Object[]{true};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] removeWhitelist(Context context, Arguments args) {
|
||||
List<String> names = this.getWhitelist();
|
||||
if(!names.contains(args.checkString(0)))
|
||||
return new Object[] {false};
|
||||
this.removeName(names.indexOf(args.checkString(0)));
|
||||
return new Object[] {true};
|
||||
}
|
||||
|
||||
///////////////////////
|
||||
// Targeting Control //
|
||||
///////////////////////
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] setTargeting(Context context, Arguments args) {
|
||||
this.targetPlayers = args.checkBoolean(0);
|
||||
this.targetAnimals = args.checkBoolean(1);
|
||||
this.targetMobs = args.checkBoolean(2);
|
||||
this.targetMachines = args.checkBoolean(3);
|
||||
return new Object[] {};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getTargeting(Context context, Arguments args) {
|
||||
return new Object[] {this.targetPlayers, this.targetAnimals, this.targetMobs, this.targetMachines};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] hasTarget(Context context, Arguments args) {
|
||||
return new Object[] {this.target != null};
|
||||
}
|
||||
|
||||
///////////////////
|
||||
// Angle Control //
|
||||
///////////////////
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getAngle(Context context, Arguments args) {
|
||||
return new Object[] {Math.toDegrees(this.rotationPitch), Math.toDegrees(this.rotationYaw)};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] isAligned(Context context, Arguments args) {
|
||||
return new Object[] {this.aligned};
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConnectNode(ForgeDirection side) {
|
||||
return side == ForgeDirection.DOWN;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] methods() { // :vomit:
|
||||
return new String[] {
|
||||
"setActive",
|
||||
"isActive",
|
||||
"getEnergyInfo",
|
||||
"getWhitelisted",
|
||||
"addWhitelist",
|
||||
"removeWhitelist",
|
||||
"setTargeting",
|
||||
"getTargeting",
|
||||
"hasTarget",
|
||||
"getAngle",
|
||||
"isAligned"
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object[] invoke(String method, Context context, Arguments args) throws Exception {
|
||||
switch (method) {
|
||||
case "setActive":
|
||||
return setActive(context, args);
|
||||
case "isActive":
|
||||
return isActive(context, args);
|
||||
case "getEnergyInfo":
|
||||
return getEnergyInfo(context, args);
|
||||
case "getWhitelisted":
|
||||
return getWhitelisted(context, args);
|
||||
case "addWhitelist":
|
||||
return addWhitelist(context, args);
|
||||
case "removeWhitelist":
|
||||
return removeWhitelist(context, args);
|
||||
case "setTargeting":
|
||||
return setTargeting(context, args);
|
||||
case "getTargeting":
|
||||
return getTargeting(context, args);
|
||||
case "hasTarget":
|
||||
return hasTarget(context, args);
|
||||
case "getAngle":
|
||||
return getAngle(context, args);
|
||||
case "isAligned":
|
||||
return isAligned(context, args);
|
||||
}
|
||||
throw new NoSuchMethodException();
|
||||
}
|
||||
}
|
||||
|
||||
@ -14,8 +14,12 @@ import com.hbm.lib.Library;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import li.cil.oc.api.machine.Arguments;
|
||||
import li.cil.oc.api.machine.Callback;
|
||||
import li.cil.oc.api.machine.Context;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
@ -373,4 +377,11 @@ public class TileEntityTurretHIMARS extends TileEntityTurretBaseArtillery implem
|
||||
public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new GUITurretHIMARS(player.inventory, this);
|
||||
}
|
||||
@Callback
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] addCoords(Context context, Arguments args) {
|
||||
this.mode = MODE_MANUAL;
|
||||
targetQueue.add(Vec3.createVectorHelper(args.checkDouble(0), args.checkDouble(1), args.checkDouble(2)));
|
||||
return new Object[] {};
|
||||
}
|
||||
}
|
||||
|
||||
@ -131,6 +131,14 @@ achievement.witchtaunter=Witch Taunter
|
||||
achievement.ZIRNOXBoom.desc=cope, seethe, mald
|
||||
achievement.ZIRNOXBoom=CIRNOX
|
||||
|
||||
analyze.basic1======NTM Component=====
|
||||
analyze.basic2=More documentation can be found on the wiki.
|
||||
analyze.basic3====Extra Information===
|
||||
analyze.dummy=Type: Dummy Block
|
||||
analyze.error=This block's compatibility has not been set properly, this should be reported as a bug!
|
||||
analyze.name=Name: %s
|
||||
analyze.noInfo=No additional information.
|
||||
|
||||
armor.blastProtection=Damage modifier of %s against explosions
|
||||
armor.cap=Hard damage cap of %s
|
||||
armor.damageModifier=Damage modifier of %s against %s
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user