feat: implement UltraTech converters

closes #11
This commit is contained in:
LordMZTE 2023-07-19 17:08:00 +02:00
parent f8ab90cda0
commit 4e4b32d541
Signed by: LordMZTE
GPG key ID: B64802DC33A64FF6
7 changed files with 298 additions and 9 deletions

View file

@ -14,6 +14,7 @@ import net.anvilcraft.pccompat.mods.GregTechProxy;
import net.anvilcraft.pccompat.mods.HBMProxy;
import net.anvilcraft.pccompat.mods.ProjectRedProxy;
import net.anvilcraft.pccompat.mods.RedPowerProxy;
import net.anvilcraft.pccompat.mods.UltraTechProxy;
import net.anvilcraft.pccompat.mods.UniversalElectricityProxy;
@Mod(
@ -21,7 +22,7 @@ import net.anvilcraft.pccompat.mods.UniversalElectricityProxy;
name = "PC Compat",
version = "0.1.0",
dependencies
= "required-after:PowerConverters3;after:basiccomponents;after:appliedenergistics2;after:hbm;after:RedPowerCore;after:ProjRed|Expansion;after:gregtech"
= "required-after:PowerConverters3;after:basiccomponents;after:appliedenergistics2;after:hbm;after:RedPowerCore;after:ProjRed|Expansion;after:gregtech;after:UltraTech"
)
public class PCCompat {
public static HashSet<IModProxy> mods = new HashSet<>();
@ -64,5 +65,7 @@ public class PCCompat {
mods.add(new ProjectRedProxy());
if (Loader.isModLoaded("gregtech"))
mods.add(new GregTechProxy());
if (Loader.isModLoaded("UltraTech"))
mods.add(new UltraTechProxy());
}
}

View file

@ -0,0 +1,28 @@
package net.anvilcraft.pccompat.blocks;
import covers1624.powerconverters.block.BlockPowerConverter;
import covers1624.powerconverters.gui.PCCreativeTab;
import net.anvilcraft.pccompat.Utils;
import net.anvilcraft.pccompat.tiles.TileEntityUltraTechConsumer;
import net.anvilcraft.pccompat.tiles.TileEntityUltraTechProducer;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public class BlockPowerConverterUltraTech extends BlockPowerConverter {
public BlockPowerConverterUltraTech() {
super(2); // 1 Consumer, 1 Producer
this.setCreativeTab(PCCreativeTab.tab);
}
@Override
public void registerBlockIcons(IIconRegister reg) {
Utils.registerStandardPowerConverterBlockIcons(reg, this._icons, "ut");
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return meta == 0 ? new TileEntityUltraTechConsumer()
: new TileEntityUltraTechProducer();
}
}

View file

@ -0,0 +1,14 @@
package net.anvilcraft.pccompat.items;
import net.minecraft.block.Block;
public class ItemBlockPowerConverterUltraTech extends AbstractItemBlockPowerConverter {
public ItemBlockPowerConverterUltraTech(Block block) {
super(block);
}
@Override
public String getModPrefix() {
return "ut";
}
}

View file

@ -0,0 +1,45 @@
package net.anvilcraft.pccompat.mods;
import covers1624.powerconverters.api.registry.PowerSystemRegistry;
import covers1624.powerconverters.api.registry.PowerSystemRegistry.PowerSystem;
import cpw.mods.fml.common.registry.GameRegistry;
import net.anvilcraft.pccompat.IModProxy;
import net.anvilcraft.pccompat.blocks.BlockPowerConverterUltraTech;
import net.anvilcraft.pccompat.items.ItemBlockPowerConverterUltraTech;
import net.anvilcraft.pccompat.tiles.TileEntityUltraTechConsumer;
import net.anvilcraft.pccompat.tiles.TileEntityUltraTechProducer;
import net.minecraft.block.Block;
public class UltraTechProxy implements IModProxy {
public static PowerSystem powerSystem;
public static Block blockPowerConverter;
@Override
public void registerPowerSystem() {
PowerSystemRegistry.registerPowerSystem(
powerSystem = new PowerSystem("Quantum Power", "QP", 20000, "QP/t")
);
}
@Override
public void registerBlocks() {
GameRegistry.registerBlock(
blockPowerConverter = new BlockPowerConverterUltraTech(),
ItemBlockPowerConverterUltraTech.class,
"power_converter_ultra_tech"
);
}
@Override
public void registerTiles() {
GameRegistry.registerTileEntity(
TileEntityUltraTechConsumer.class, "ultra_tech_consumer"
);
GameRegistry.registerTileEntity(
TileEntityUltraTechProducer.class, "ultra_tech_producer"
);
}
@Override
public void registerRecipes() {}
}

View file

@ -0,0 +1,101 @@
package net.anvilcraft.pccompat.tiles;
import covers1624.powerconverters.tile.main.TileEntityEnergyConsumer;
import net.anvilcraft.pccompat.mods.UltraTechProxy;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;
import ultratech.api.power.NetworkManagerRegistry;
import ultratech.api.power.PowerInterface;
import ultratech.api.power.StorageInterface;
import ultratech.api.power.StorageInterface.PowerIO;
import ultratech.api.power.interfaces.ICable;
import ultratech.api.power.interfaces.IPowerConductor;
import ultratech.api.power.prefab.CableInterfaceBlock;
public class TileEntityUltraTechConsumer
extends TileEntityEnergyConsumer<IPowerConductor> implements IPowerConductor {
private double lastTransfer;
private StorageInterface interf;
public TileEntityUltraTechConsumer() {
super(UltraTechProxy.powerSystem, 0, IPowerConductor.class);
this.interf
= new StorageInterface(this, new CableInterfaceBlock(this), 10000, 1);
this.interf.configIO = PowerIO.Input;
}
@Override
public void updateEntity() {
super.updateEntity();
this.interf.MachineUpdate();
if (this.worldObj.isRemote)
return;
double demand
= this.getTotalEnergyDemand() / this.getPowerSystem().getScaleAmmount();
double toConsume = Math.min(demand, this.interf.getCharge());
this.interf.removeCharge(toConsume);
this.storeEnergy(toConsume * this.getPowerSystem().getScaleAmmount(), false);
this.lastTransfer = toConsume;
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
this.interf.readFromNBT(nbt);
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
this.interf.writeToNBT(nbt);
}
@Override
public boolean isSideConnected(int side_) {
ForgeDirection side = ForgeDirection.getOrientation(side_);
TileEntity adjTE = this.worldObj.getTileEntity(
this.xCoord + side.offsetX,
this.yCoord + side.offsetY,
this.zCoord + side.offsetZ
);
if (adjTE instanceof IPowerConductor)
return true;
if (adjTE == null)
return false;
for (ICable cable : NetworkManagerRegistry.getConnections(adjTE))
if (cable.shouldConnectWithThis(this.interf.getCable(), side.getOpposite()))
return true;
return false;
}
@Override
public boolean isSideConnectedClient(int side) {
return this.isSideConnected(side);
}
@Override
public boolean isConnected() {
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
if (this.isSideConnected(dir.ordinal()))
return true;
return false;
}
@Override
public PowerInterface getPower() {
return this.interf;
}
@Override
public double getInputRate() {
return lastTransfer;
}
}

View file

@ -0,0 +1,95 @@
package net.anvilcraft.pccompat.tiles;
import covers1624.powerconverters.tile.main.TileEntityEnergyProducer;
import net.anvilcraft.pccompat.mods.UltraTechProxy;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;
import ultratech.api.power.NetworkManagerRegistry;
import ultratech.api.power.PowerInterface;
import ultratech.api.power.StorageInterface;
import ultratech.api.power.StorageInterface.PowerIO;
import ultratech.api.power.interfaces.ICable;
import ultratech.api.power.interfaces.IPowerConductor;
import ultratech.api.power.prefab.CableInterfaceBlock;
public class TileEntityUltraTechProducer
extends TileEntityEnergyProducer<IPowerConductor> implements IPowerConductor {
private StorageInterface interf;
public TileEntityUltraTechProducer() {
super(UltraTechProxy.powerSystem, 0, IPowerConductor.class);
this.interf = new StorageInterface(this, new CableInterfaceBlock(this), 10000, 1);
this.interf.configIO = PowerIO.Output;
}
@Override
public void updateEntity() {
super.updateEntity();
this.interf.MachineUpdate();
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
this.interf.readFromNBT(nbt);
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
this.interf.writeToNBT(nbt);
}
@Override
public boolean isSideConnected(int side_) {
ForgeDirection side = ForgeDirection.getOrientation(side_);
TileEntity adjTE = this.worldObj.getTileEntity(
this.xCoord + side.offsetX,
this.yCoord + side.offsetY,
this.zCoord + side.offsetZ
);
if (adjTE instanceof IPowerConductor)
return true;
if (adjTE == null)
return false;
for (ICable cable : NetworkManagerRegistry.getConnections(adjTE))
if (cable.shouldConnectWithThis(this.interf.getCable(), side.getOpposite()))
return true;
return false;
}
@Override
public boolean isSideConnectedClient(int side) {
return this.isSideConnected(side);
}
@Override
public boolean isConnected() {
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
if (this.isSideConnected(dir.ordinal()))
return true;
return false;
}
@Override
public PowerInterface getPower() {
return this.interf;
}
@Override
public double produceEnergy(double energy) {
double toProduce = Math.min(
energy / this.getPowerSystem().getScaleAmmount(),
this.interf.getCapacity() - this.interf.getCharge()
);
this.interf.addCharge(toProduce);
return energy - toProduce * this.getPowerSystem().getScaleAmmount();
}
}

View file

@ -19,11 +19,14 @@ pccompat:power_converter_rp_1.name=Bluetricity Producer
pccompat:power_converter_pr_0.name=Bluetricity Consumer
pccompat:power_converter_pr_1.name=Bluetricity Producer
pccompat:power_converter_gregtech_0.name=GregTech LV Consumer
pccompat:power_converter_gregtech_1.name=GregTech LV Producer
pccompat:power_converter_gregtech_2.name=GregTech MV Consumer
pccompat:power_converter_gregtech_3.name=GregTech MV Producer
pccompat:power_converter_gregtech_4.name=GregTech HV Consumer
pccompat:power_converter_gregtech_5.name=GregTech HV Producer
pccompat:power_converter_gregtech_6.name=GregTech EV Consumer
pccompat:power_converter_gregtech_7.name=GregTech EV Producer
pccompat:power_converter_gt_0.name=GregTech LV Consumer
pccompat:power_converter_gt_1.name=GregTech LV Producer
pccompat:power_converter_gt_2.name=GregTech MV Consumer
pccompat:power_converter_gt_3.name=GregTech MV Producer
pccompat:power_converter_gt_4.name=GregTech HV Consumer
pccompat:power_converter_gt_5.name=GregTech HV Producer
pccompat:power_converter_gt_6.name=GregTech EV Consumer
pccompat:power_converter_gt_7.name=GregTech EV Producer
pccompat:power_converter_ut_0.name=Quantum Power Consumer
pccompat:power_converter_ut_1.name=Quantum Power Producer