mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
also holy shit the whitespace changes, intelliJ wanted to optimize the imports and refactored a ton of whitespace in the process.
170 lines
7.6 KiB
Java
170 lines
7.6 KiB
Java
package com.hbm.util;
|
|
|
|
import api.hbm.energymk2.IBatteryItem;
|
|
import api.hbm.energymk2.IEnergyHandlerMK2;
|
|
import api.hbm.fluid.IFluidUser;
|
|
import api.hbm.tile.IInfoProviderEC;
|
|
import com.hbm.inventory.fluid.FluidType;
|
|
import com.hbm.inventory.fluid.Fluids;
|
|
import com.hbm.inventory.fluid.tank.FluidTank;
|
|
import com.hbm.items.ModItems;
|
|
import com.hbm.tileentity.machine.TileEntityMachineGasCent;
|
|
import com.hbm.tileentity.machine.TileEntityMachineGasCent.PseudoFluidTank;
|
|
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKBase;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.tileentity.TileEntity;
|
|
import net.minecraft.util.ResourceLocation;
|
|
import net.minecraft.world.World;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
/** Provides data specified by EC's CrossModBase */
|
|
public class CompatEnergyControl {
|
|
|
|
/** Returns the steel ingot to craft the sensor kit with */
|
|
public static ItemStack getCraftingMaterial() {
|
|
return new ItemStack(ModItems.ingot_steel); //in the event that i do end up moving all ingots to metadata
|
|
}
|
|
|
|
/** Returns true for stacks with electric items like batteries or powertools (i.e. implements IBatteryItem) */
|
|
public static boolean isElectricItem(ItemStack stack) {
|
|
return stack.getItem() instanceof IBatteryItem;
|
|
}
|
|
|
|
/** Standardized discharge for IBatteryItem, returns the amount that was removed */
|
|
public static double dischargeItem(ItemStack stack, double needed) {
|
|
IBatteryItem battery = (IBatteryItem) stack.getItem();
|
|
long toDischarge = Math.min(battery.getDischargeRate(), Math.min(battery.getCharge(stack), (long) needed));
|
|
battery.dischargeBattery(stack, toDischarge);
|
|
return toDischarge;
|
|
}
|
|
|
|
/** Returns the power and maxPower values for IEnergyUser */
|
|
public static void getEnergyData(TileEntity tile, NBTTagCompound data) {
|
|
|
|
data.setString(KEY_EUTYPE, "HE");
|
|
|
|
if(tile instanceof IEnergyHandlerMK2) {
|
|
IEnergyHandlerMK2 user = (IEnergyHandlerMK2) tile;
|
|
data.setDouble(L_ENERGY_HE, user.getPower());
|
|
data.setDouble(L_CAPACITY_HE, user.getMaxPower());
|
|
}
|
|
}
|
|
|
|
/** Returns the heat for RBMKs */
|
|
public static int getHeat(TileEntity tile) {
|
|
if(tile instanceof TileEntityRBMKBase) return (int) ((TileEntityRBMKBase) tile).heat;
|
|
//original implementation also used the SNR and LNR for some reason, but those no longer exist. neither ZINOX nor research reactor were part of the system.
|
|
return -1;
|
|
}
|
|
|
|
/** Returns a list of Object arrays, one array for each fluid tank where the array contains fluid name, fill state and capacity (STRING, INTEGER, INTEGER) */
|
|
public static List<Object[]> getAllTanks(TileEntity tile) {
|
|
|
|
List<Object[]> list = new ArrayList();
|
|
|
|
if(tile instanceof IFluidUser) {
|
|
IFluidUser user = (IFluidUser) tile;
|
|
|
|
for(FluidTank tank : user.getAllTanks()) {
|
|
if(tank.getTankType() == Fluids.SMOKE || tank.getTankType() == Fluids.SMOKE_LEADED || tank.getTankType() == Fluids.SMOKE_POISON) continue;
|
|
list.add(toFluidInfo(tank));
|
|
}
|
|
}
|
|
|
|
if(tile instanceof TileEntityMachineGasCent) {
|
|
TileEntityMachineGasCent cent = (TileEntityMachineGasCent) tile;
|
|
list.add(toFluidInfo(cent.inputTank));
|
|
list.add(toFluidInfo(cent.outputTank));
|
|
}
|
|
|
|
if(!list.isEmpty()) return list;
|
|
|
|
return null;
|
|
}
|
|
|
|
private static Object[] toFluidInfo(FluidTank tank) {
|
|
return new Object[] {tank.getTankType().getName(), tank.getFill(), tank.getMaxFill()};
|
|
}
|
|
|
|
private static Object[] toFluidInfo(PseudoFluidTank tank) {
|
|
return new Object[] {tank.getTankType().getName(), tank.getFill(), tank.getMaxFill()};
|
|
}
|
|
|
|
/** Returns any non-standard data like progress, unique stats and so forth. Data comes from the IInfoProviderEC implementation */
|
|
public static void getExtraData(TileEntity tile, NBTTagCompound data) {
|
|
|
|
if(tile instanceof IInfoProviderEC) {
|
|
IInfoProviderEC provider = (IInfoProviderEC) tile;
|
|
provider.provideExtraInfo(data);
|
|
}
|
|
}
|
|
|
|
/** Returns the core tile entity for that position, can resolve the MK1 "IMultiblock" and MK2 "BlockDummyable" systems. */
|
|
public static TileEntity findTileEntity(World world, int x, int y, int z) {
|
|
return CompatExternal.getCoreFromPos(world, x, y, z); //CompatExternal you're just standing around, do something for once
|
|
}
|
|
|
|
/** Returns the ResourceLocation for the given fluid name */
|
|
public static ResourceLocation getFluidTexture(String name) {
|
|
FluidType type = Fluids.fromName(name);
|
|
return type == null ? null : type.getTexture();
|
|
}
|
|
|
|
/*
|
|
* [DATA TYPE] _ [NAME] _ [UNIT]
|
|
*/
|
|
|
|
public static final String KEY_EUTYPE = "euType";
|
|
|
|
public static final String L_ENERGY_HE = "energy";
|
|
public static final String L_ENERGY_TU = "energyTU";
|
|
public static final String L_ENERGY_ = "energy_"; // Blast Furnace fuel
|
|
|
|
public static final String L_CAPACITY_HE = "capacity";
|
|
public static final String L_CAPACITY_TU = "capacityTU";
|
|
public static final String L_CAPACITY_ = "capacity_"; // Blast Furnace fuel capacity
|
|
|
|
public static final String D_CONSUMPTION_HE = "consumptionHE";
|
|
public static final String D_CONSUMPTION_MB = "consumption";
|
|
@Deprecated public static final String S_CONSUMPTION_ = "consumption_"; // FWatz fluid consumption rates
|
|
|
|
public static final String D_OUTPUT_HE = "output";
|
|
public static final String D_OUTPUT_MB = "outputmb";
|
|
public static final String D_OUTPUT_TU = "outputTU";
|
|
|
|
public static final String L_DIFF_HE = "diff"; // Battery diff per tick
|
|
@Deprecated public static final String I_TEMP_K = "temp"; // Unused?
|
|
public static final String D_TURBINE_PERCENT = "turbine"; // CCGT slider
|
|
public static final String I_TURBINE_SPEED = "speed"; // CCGT RPM
|
|
public static final String L_COREHEAT_C = "core"; // Research Reactor core heat
|
|
public static final String L_HULLHEAT_C = "hull"; // Research Reactor hull heat
|
|
public static final String S_LEVEL_PERCENT = "level"; // Research Reactor rods
|
|
@Deprecated public static final String L_HEATL = "heatL"; // AMS and old Watz heat values
|
|
public static final String D_HEAT_C = "heat"; // Research Reactor and RBMK column heat
|
|
public static final String D_MAXHEAT_C = "maxHeat"; // ZIRNOX melting temp
|
|
public static final String L_PRESSURE_BAR = "bar"; // ZIRNOX pressure
|
|
public static final String L_FUEL = "fuel"; // RTG Blast Furnace heat
|
|
@Deprecated public static final String S_FUELTEXT = "fuelText"; // Large Nuclear Reactor only
|
|
@Deprecated public static final String S_DEPLETED = "depleted"; // Large Nuclear Reactor only
|
|
public static final String D_DEPLETION_PERCENT = "depletion"; // RBMK Fuel depletion
|
|
public static final String D_XENON_PERCENT = "xenon"; // RBMK Fuel xenon poisoning
|
|
public static final String D_SKIN_C = "skin"; // RBMK Fuel skin heat
|
|
public static final String D_CORE_C = "c_heat"; // RBMK Fuel core heat
|
|
public static final String D_MELT_C = "melt"; // RBMK Fuel melting point
|
|
public static final String I_PROGRESS = "progress";
|
|
public static final String I_FLUX = "flux"; // Research and Breeding Reactor flux
|
|
public static final String I_WATER = "water"; // Research Reactor water gauge
|
|
public static final String L_DURABILITY = "durability"; // DFC Stabilizer Lens
|
|
public static final String S_TANK = "tank";
|
|
public static final String S_TANK2 = "tank2";
|
|
public static final String S_TANK3 = "tank3";
|
|
public static final String S_TANK4 = "tank4";
|
|
public static final String S_TANK5 = "tank5";
|
|
@Deprecated public static final String I_PISTONS = "pistons"; // Radial Performance Engine piston count
|
|
public static final String S_CHUNKRAD = "chunkRad"; // Geiger Counter
|
|
public static final String B_ACTIVE = "active";
|
|
}
|