generated from tilera/1710mod
feat: Magneticraft converters
All checks were successful
ci/woodpecker/push/central-override Pipeline was successful
All checks were successful
ci/woodpecker/push/central-override Pipeline was successful
This commit is contained in:
parent
b0744ee826
commit
f812442a4f
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
|
@ -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";
|
||||
}
|
||||
}
|
|
@ -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() {}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue