feat: Magneticraft converters
All checks were successful
ci/woodpecker/push/central-override Pipeline was successful

This commit is contained in:
LordMZTE 2023-07-27 18:16:33 +02:00
parent b0744ee826
commit f812442a4f
Signed by: LordMZTE
GPG key ID: B64802DC33A64FF6
7 changed files with 286 additions and 1 deletions

View file

@ -12,6 +12,7 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import net.anvilcraft.pccompat.mods.AppliedEnergisticsProxy;
import net.anvilcraft.pccompat.mods.GregTechProxy;
import net.anvilcraft.pccompat.mods.HBMProxy;
import net.anvilcraft.pccompat.mods.MagneticraftProxy;
import net.anvilcraft.pccompat.mods.ProjectRedProxy;
import net.anvilcraft.pccompat.mods.RailcraftProxy;
import net.anvilcraft.pccompat.mods.RedPowerProxy;
@ -23,7 +24,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;after:UltraTech;after:Railcraft"
= "required-after:PowerConverters3;after:basiccomponents;after:appliedenergistics2;after:hbm;after:RedPowerCore;after:ProjRed|Expansion;after:gregtech;after:UltraTech;after:Railcraft;after:Magneticraft"
)
public class PCCompat {
public static HashSet<IModProxy> mods = new HashSet<>();
@ -70,5 +71,7 @@ public class PCCompat {
mods.add(new UltraTechProxy());
if (Loader.isModLoaded("Railcraft"))
mods.add(new RailcraftProxy());
if (Loader.isModLoaded("Magneticraft"))
mods.add(new MagneticraftProxy());
}
}

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.TileEntityMagneticraftConsumer;
import net.anvilcraft.pccompat.tiles.TileEntityMagneticraftProducer;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public class BlockPowerConverterMagneticraft extends BlockPowerConverter {
public BlockPowerConverterMagneticraft() {
super(2); // 1 Consumer, 1 Producer
this.setCreativeTab(PCCreativeTab.tab);
}
@Override
public void registerBlockIcons(IIconRegister reg) {
Utils.registerStandardPowerConverterBlockIcons(reg, this._icons, "mc");
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return meta == 0 ? new TileEntityMagneticraftConsumer()
: new TileEntityMagneticraftProducer();
}
}

View file

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

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.BlockPowerConverterMagneticraft;
import net.anvilcraft.pccompat.items.ItemBlockPowerConverterMagneticraft;
import net.anvilcraft.pccompat.tiles.TileEntityMagneticraftConsumer;
import net.anvilcraft.pccompat.tiles.TileEntityMagneticraftProducer;
import net.minecraft.block.Block;
public class MagneticraftProxy implements IModProxy {
public static PowerSystem powerSystem;
public static Block blockPowerConverter;
@Override
public void registerPowerSystem() {
PowerSystemRegistry.registerPowerSystem(
powerSystem = new PowerSystem("Joules", "J", 100, "W")
);
}
@Override
public void registerBlocks() {
GameRegistry.registerBlock(
blockPowerConverter = new BlockPowerConverterMagneticraft(),
ItemBlockPowerConverterMagneticraft.class,
"power_converter_magneticraft"
);
}
@Override
public void registerTiles() {
GameRegistry.registerTileEntity(
TileEntityMagneticraftConsumer.class, "magneticraft_consumber"
);
GameRegistry.registerTileEntity(
TileEntityMagneticraftProducer.class, "magneticraft_producer"
);
}
@Override
public void registerRecipes() {}
}

View file

@ -0,0 +1,97 @@
package net.anvilcraft.pccompat.tiles;
import com.cout970.magneticraft.api.electricity.ElectricConstants;
import com.cout970.magneticraft.api.electricity.ElectricUtils;
import com.cout970.magneticraft.api.electricity.IElectricConductor;
import com.cout970.magneticraft.api.electricity.IElectricTile;
import com.cout970.magneticraft.api.electricity.prefab.BufferedConductor;
import com.cout970.magneticraft.api.util.MgDirection;
import com.cout970.magneticraft.api.util.VecInt;
import covers1624.powerconverters.tile.main.TileEntityEnergyConsumer;
import net.anvilcraft.pccompat.mods.MagneticraftProxy;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMagneticraftConsumer
extends TileEntityEnergyConsumer<IElectricTile> implements IElectricTile {
public double lastTransfer;
public IElectricConductor cond;
public TileEntityMagneticraftConsumer() {
super(MagneticraftProxy.powerSystem, 0, IElectricTile.class);
this.cond = new BufferedConductor(
this, ElectricConstants.RESISTANCE_COPPER_LOW, 5000000, 0.0, 10.0
);
}
@Override
public void updateEntity() {
super.updateEntity();
if (this.worldObj.isRemote)
return;
this.cond.recache();
this.cond.iterate();
int toStore = (int) Math.min(
this.cond.getStorage(),
this.getTotalEnergyDemand() / this.getPowerSystem().getScaleAmmount()
);
this.cond.drainCharge(toStore);
this.lastTransfer = toStore;
this.storeEnergy(toStore * this.getPowerSystem().getScaleAmmount(), false);
}
@Override
public void onNeighboorChanged() {
super.onNeighboorChanged();
this.cond.disconnect();
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
this.cond.load(nbt);
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
this.cond.save(nbt);
}
@Override
public IElectricConductor[] getConds(VecInt arg0, int arg1) {
return new IElectricConductor[] { this.cond };
}
@Override
public double getInputRate() {
return this.lastTransfer;
}
@Override
public boolean isSideConnected(int side_) {
MgDirection side = MgDirection.getDirection(side_);
IElectricConductor[] conds = ElectricUtils.getElectricCond(
new VecInt(this).add(side).getTileEntity(this.worldObj), VecInt.NULL_VECTOR, 0
);
return conds != null && conds.length > 0;
}
@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;
}
}

View file

@ -0,0 +1,95 @@
package net.anvilcraft.pccompat.tiles;
import com.cout970.magneticraft.api.electricity.ElectricConstants;
import com.cout970.magneticraft.api.electricity.ElectricUtils;
import com.cout970.magneticraft.api.electricity.IElectricConductor;
import com.cout970.magneticraft.api.electricity.IElectricTile;
import com.cout970.magneticraft.api.electricity.prefab.ElectricConductor;
import com.cout970.magneticraft.api.util.MgDirection;
import com.cout970.magneticraft.api.util.VecInt;
import covers1624.powerconverters.tile.main.TileEntityEnergyProducer;
import net.anvilcraft.pccompat.mods.MagneticraftProxy;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMagneticraftProducer
extends TileEntityEnergyProducer<IElectricTile> implements IElectricTile {
private IElectricConductor cond;
public TileEntityMagneticraftProducer() {
super(MagneticraftProxy.powerSystem, 0, IElectricTile.class);
this.cond = new ElectricConductor(this);
}
@Override
public IElectricConductor[] getConds(VecInt arg0, int arg1) {
return new IElectricConductor[] { this.cond };
}
@Override
public void onNeighboorChanged() {
super.onNeighboorChanged();
this.cond.disconnect();
}
@Override
public void updateEntity() {
super.updateEntity();
this.cond.recache();
this.cond.iterate();
}
@Override
public double produceEnergy(double energy) {
if (this.cond.getVoltage() >= ElectricConstants.ALTERNATOR_DISCHARGE
|| energy <= 0.0)
return energy;
double joules = energy / this.getPowerSystem().getScaleAmmount();
double alec = Math.min(
(ElectricConstants.ALTERNATOR_DISCHARGE - this.cond.getVoltage()) * 80, // WTF
Math.min(joules, 400)
);
this.cond.applyPower(alec);
return energy - alec * this.getPowerSystem().getScaleAmmount();
}
@Override
public boolean isSideConnected(int side_) {
MgDirection side = MgDirection.getDirection(side_);
IElectricConductor[] conds = ElectricUtils.getElectricCond(
new VecInt(this).add(side).getTileEntity(this.worldObj), VecInt.NULL_VECTOR, 0
);
return conds != null && conds.length > 0;
}
@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 void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
this.cond.load(nbt);
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
this.cond.save(nbt);
}
}

View file

@ -33,3 +33,6 @@ pccompat:power_converter_ut_1.name=Quantum Power Producer
pccompat:power_converter_rc_0.name=Railcraft Consumer
pccompat:power_converter_rc_1.name=Railcraft Producer
pccompat:power_converter_mc_0.name=Magneticraft Consumer
pccompat:power_converter_mc_1.name=Magneticraft Producer