mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
enough for today, my head hurts
This commit is contained in:
parent
3cb6e855a8
commit
1618d9be12
@ -3,7 +3,6 @@ package api.hbm.energymk2;
|
||||
import com.hbm.packet.AuxParticlePacketNT;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
|
||||
import api.hbm.energy.IEnergyConnector;
|
||||
import api.hbm.energymk2.Nodespace.PowerNode;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
@ -11,7 +10,9 @@ import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public interface IEnergyProviderMK2 extends IEnergyConnector {
|
||||
public interface IEnergyProviderMK2 extends IEnergyConnectorMK2 {
|
||||
|
||||
public void setPower(long power);
|
||||
|
||||
public default void tryProvide(World world, int x, int y, int z, ForgeDirection dir) {
|
||||
|
||||
@ -22,7 +23,7 @@ public interface IEnergyProviderMK2 extends IEnergyConnector {
|
||||
IEnergyConductorMK2 con = (IEnergyConductorMK2) te;
|
||||
if(!con.canConnect(dir.getOpposite())) return;
|
||||
|
||||
PowerNode node = con.createNode();
|
||||
PowerNode node = Nodespace.getNode(world, x, y, z);
|
||||
|
||||
if(node != null && node.net != null) {
|
||||
node.net.addProvider(this);
|
||||
@ -30,6 +31,8 @@ public interface IEnergyProviderMK2 extends IEnergyConnector {
|
||||
}
|
||||
}
|
||||
|
||||
//TODO: direct transfer
|
||||
|
||||
if(particleDebug) {
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setString("type", "network");
|
||||
|
||||
@ -12,7 +12,18 @@ import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public interface IEnergyReceiverMK2 extends IEnergyConnectorMK2 {
|
||||
|
||||
public long transferPower(long power);
|
||||
public default long transferPower(long power) {
|
||||
if(power + this.getPower() <= this.getMaxPower()) {
|
||||
this.setPower(power + this.getPower());
|
||||
return 0;
|
||||
}
|
||||
long capacity = this.getMaxPower() - this.getPower();
|
||||
long overshoot = power - capacity;
|
||||
this.setPower(this.getMaxPower());
|
||||
return overshoot;
|
||||
}
|
||||
|
||||
public void setPower(long power);
|
||||
|
||||
public default void trySubscribe(World world, int x, int y, int z, ForgeDirection dir) {
|
||||
|
||||
@ -23,7 +34,7 @@ public interface IEnergyReceiverMK2 extends IEnergyConnectorMK2 {
|
||||
IEnergyConductorMK2 con = (IEnergyConductorMK2) te;
|
||||
if(!con.canConnect(dir.getOpposite())) return;
|
||||
|
||||
PowerNode node = con.createNode();
|
||||
PowerNode node = Nodespace.getNode(world, x, y, z);
|
||||
|
||||
if(node != null && node.net != null) {
|
||||
node.net.addReceiver(this);
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package api.hbm.energymk2;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map.Entry;
|
||||
@ -49,9 +50,8 @@ public class Nodespace {
|
||||
}
|
||||
}
|
||||
|
||||
// UNUSED DO NOT TOUCH
|
||||
/** Grabs all neighbor nodes from the given node's connection points and removes them from the network entirely, forcing a hard reconnect */
|
||||
private static void markNeigbors(World world, PowerNode node) {
|
||||
@Deprecated private static void markNeigbors(World world, PowerNode node) {
|
||||
|
||||
for(DirPos con : node.connections) {
|
||||
PowerNode conNode = getNode(world, con.getX(), con.getY(), con.getZ());
|
||||
@ -72,9 +72,9 @@ public class Nodespace {
|
||||
node.recentlyChanged = false;
|
||||
}
|
||||
|
||||
if(node.hasValidNet()) {
|
||||
/*if(node.hasValidNet()) {
|
||||
|
||||
/*for(BlockPos pos : node.positions) {
|
||||
for(BlockPos pos : node.positions) {
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setString("type", "marker");
|
||||
data.setInteger("color", node.net.hashCode() % 0xffffff);
|
||||
@ -82,8 +82,35 @@ public class Nodespace {
|
||||
data.setDouble("dist", 50D);
|
||||
data.setString("label", "" + node.net.links.size());
|
||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, pos.getX(), pos.getY(), pos.getZ()), new TargetPoint(world.provider.dimensionId, pos.getX(), pos.getY(), pos.getZ(), 50));
|
||||
}*/
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
updatePowerNets();
|
||||
}
|
||||
|
||||
private static void updatePowerNets() {
|
||||
|
||||
int timeout = 3_000;
|
||||
|
||||
for(PowerNetMK2 net : activePowerNets) {
|
||||
|
||||
long timestamp = System.currentTimeMillis();
|
||||
|
||||
//TODO: start over, impose a per-tick transfer limit in order to avoid bigints
|
||||
|
||||
BigInteger supply = BigInteger.valueOf(0);
|
||||
BigInteger demand = BigInteger.valueOf(0);
|
||||
|
||||
for(Entry<IEnergyProviderMK2, Long> entry : net.providerEntries.entrySet()) {
|
||||
IEnergyProviderMK2 provider = entry.getKey();
|
||||
if(provider.isLoaded() && timestamp - entry.getValue() < timeout) supply = supply.add(BigInteger.valueOf(provider.getPower()));
|
||||
}
|
||||
|
||||
for(Entry<IEnergyReceiverMK2, Long> entry : net.receiverEntries.entrySet()) {
|
||||
IEnergyReceiverMK2 receiver = entry.getKey();
|
||||
if(receiver.isLoaded() && timestamp - entry.getValue() < timeout) demand = demand.add(BigInteger.valueOf(receiver.getMaxPower() - receiver.getPower()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,15 +2,15 @@ package com.hbm.tileentity.machine;
|
||||
|
||||
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||
|
||||
import api.hbm.energy.IEnergyUser;
|
||||
import api.hbm.energymk2.IEnergyReceiverMK2;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityMachineDetector extends TileEntityLoadedBase implements IEnergyUser {
|
||||
public class TileEntityMachineDetector extends TileEntityLoadedBase implements IEnergyReceiverMK2 {
|
||||
|
||||
long power;
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
public void updateEntity() {
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
|
||||
@ -56,5 +56,4 @@ public class TileEntityMachineDetector extends TileEntityLoadedBase implements I
|
||||
public ConnectionPriority getPriority() {
|
||||
return ConnectionPriority.HIGH;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -4,12 +4,12 @@ import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||
import com.hbm.util.CompatEnergyControl;
|
||||
|
||||
import api.hbm.energy.IEnergyGenerator;
|
||||
import api.hbm.energymk2.IEnergyProviderMK2;
|
||||
import api.hbm.tile.IInfoProviderEC;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityMachineMiniRTG extends TileEntityLoadedBase implements IEnergyGenerator, IInfoProviderEC {
|
||||
public class TileEntityMachineMiniRTG extends TileEntityLoadedBase implements IEnergyProviderMK2, IInfoProviderEC {
|
||||
|
||||
public long power;
|
||||
boolean tact = false;
|
||||
@ -24,8 +24,9 @@ public class TileEntityMachineMiniRTG extends TileEntityLoadedBase implements IE
|
||||
if(power > getMaxPower())
|
||||
power = getMaxPower();
|
||||
|
||||
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
|
||||
this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir);
|
||||
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
|
||||
this.tryProvide(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user