From e4b9285eac846d1c8bf67c3318f566bfa3eefd94 Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 11 Aug 2021 23:13:22 +0200 Subject: [PATCH] functional power net NT --- src/main/java/api/hbm/energy/IPowerNet.java | 12 ++- src/main/java/api/hbm/energy/PowerNet.java | 75 ++++++++++++++++-- src/main/java/com/hbm/blocks/ModBlocks.java | 3 + .../com/hbm/blocks/test/TestConductor.java | 26 ++++++ src/main/java/com/hbm/main/MainRegistry.java | 2 + .../machine/TileEntityMachineBattery.java | 54 ++++++++++++- ...BaseTN.java => TileEntityCableBaseNT.java} | 38 ++++++--- .../assets/hbm/sounds/entity/vomit.ogg | Bin 18044 -> 18114 bytes .../hbm/textures/blocks/test_conductor.png | Bin 0 -> 193 bytes 9 files changed, 186 insertions(+), 24 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/test/TestConductor.java rename src/main/java/com/hbm/tileentity/network/{TileEntityCableBaseTN.java => TileEntityCableBaseNT.java} (60%) create mode 100644 src/main/resources/assets/hbm/textures/blocks/test_conductor.png diff --git a/src/main/java/api/hbm/energy/IPowerNet.java b/src/main/java/api/hbm/energy/IPowerNet.java index 196b34d8f..31a3690cb 100644 --- a/src/main/java/api/hbm/energy/IPowerNet.java +++ b/src/main/java/api/hbm/energy/IPowerNet.java @@ -11,12 +11,18 @@ public interface IPowerNet { public void join(IPowerNet network); - public IPowerNet subscribe(IEnergyConductor conductor); - public void unsubscribe(IEnergyConductor conductor); + public IPowerNet joinLink(IEnergyConductor conductor); + public void leaveLink(IEnergyConductor conductor); + + public void subscribe(IEnergyConnector connector); + public void unsubscribe(IEnergyConnector connector); + public boolean isSubscribed(IEnergyConnector connector); public void destroy(); public boolean isValid(); - public List getSubscribers(); + public List getLinks(); + + public long transferPower(long power); } diff --git a/src/main/java/api/hbm/energy/PowerNet.java b/src/main/java/api/hbm/energy/PowerNet.java index 98c7a788e..598e349f0 100644 --- a/src/main/java/api/hbm/energy/PowerNet.java +++ b/src/main/java/api/hbm/energy/PowerNet.java @@ -3,6 +3,8 @@ package api.hbm.energy; import java.util.ArrayList; import java.util.List; +import net.minecraft.tileentity.TileEntity; + /** * Basic IPowerNet implementation. The behavior of this demo might change inbetween releases, but the API remains the same. * For more consistency please implement your own IPowerNet. @@ -11,40 +13,97 @@ import java.util.List; public class PowerNet implements IPowerNet { private boolean valid = true; - private List subscribers = new ArrayList(); + private List links = new ArrayList(); + private List subscribers = new ArrayList(); @Override public void join(IPowerNet network) { } @Override - public IPowerNet subscribe(IEnergyConductor conductor) { + public IPowerNet joinLink(IEnergyConductor conductor) { if(conductor.getPowerNet() != null) - conductor.getPowerNet().unsubscribe(conductor); + conductor.getPowerNet().leaveLink(conductor); conductor.setPowerNet(this); - this.getSubscribers().add(conductor); + this.getLinks().add(conductor); return this; } @Override - public void unsubscribe(IEnergyConductor conductor) { + public void leaveLink(IEnergyConductor conductor) { conductor.setPowerNet(null); - this.getSubscribers().remove(conductor); + this.getLinks().remove(conductor); } @Override - public List getSubscribers() { - return null; + public void subscribe(IEnergyConnector connector) { + this.subscribers.add(connector); + } + + @Override + public void unsubscribe(IEnergyConnector connector) { + this.subscribers.remove(connector); + } + + @Override + public boolean isSubscribed(IEnergyConnector connector) { + return this.subscribers.contains(connector); + } + + @Override + public List getLinks() { + return this.links; } @Override public void destroy() { this.valid = false; + + for(IEnergyConductor link : this.links) { + link.setPowerNet(null); + } + + this.links.clear(); + this.subscribers.clear(); } @Override public boolean isValid() { return this.valid; } + + @Override + public long transferPower(long power) { + + this.subscribers.removeIf(x -> + x == null || !(x instanceof TileEntity) || ((TileEntity)x).isInvalid() + ); + + if(this.subscribers.isEmpty()) + return power; + + List weight = new ArrayList(); + long totalReq = 0; + + for(IEnergyConnector con : this.subscribers) { + long req = Math.max(con.getMaxPower() - con.getPower(), 0); + weight.add(req); + totalReq += req; + } + + long totalGiven = 0; + + for(int i = 0; i < this.subscribers.size(); i++) { + IEnergyConnector con = this.subscribers.get(i); + long req = weight.get(i); + double fraction = (double)req / (double)totalReq; + + long given = (int) Math.floor(fraction * power); + + totalGiven += (given - con.transferPower(given)); + } + + return power - totalGiven; + } } diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index fe3c311e5..9c7871169 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -47,6 +47,7 @@ public class ModBlocks { public static Block test_missile; public static Block test_core; public static Block test_charge; + public static Block test_conductor; public static Block ore_uranium; public static Block ore_uranium_scorched; @@ -1148,6 +1149,7 @@ public class ModBlocks { test_missile = new TestMissile(Material.iron).setBlockName("test_missile").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":test_missile"); test_core = new TestCore(Material.iron).setBlockName("test_core").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":test_core"); test_charge = new TestCharge(Material.iron).setBlockName("test_charge").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F); + test_conductor = new TestConductor(Material.iron).setBlockName("test_conductor").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":test_conductor"); ore_uranium = new BlockOutgas(Material.rock, true, 5, false).setBlockName("ore_uranium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_uranium"); ore_uranium_scorched = new BlockOutgas(Material.rock, true, 5, false).setBlockName("ore_uranium_scorched").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_uranium_scorched"); @@ -2060,6 +2062,7 @@ public class ModBlocks { GameRegistry.registerBlock(test_missile, test_missile.getUnlocalizedName()); GameRegistry.registerBlock(test_core, test_core.getUnlocalizedName()); GameRegistry.registerBlock(test_charge, test_charge.getUnlocalizedName()); + GameRegistry.registerBlock(test_conductor, test_conductor.getUnlocalizedName()); //Ores GameRegistry.registerBlock(ore_uranium, ore_uranium.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/test/TestConductor.java b/src/main/java/com/hbm/blocks/test/TestConductor.java new file mode 100644 index 000000000..5dd970e40 --- /dev/null +++ b/src/main/java/com/hbm/blocks/test/TestConductor.java @@ -0,0 +1,26 @@ +package com.hbm.blocks.test; + +import com.hbm.interfaces.Untested; +import com.hbm.tileentity.network.TileEntityCableBaseNT; + +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +/** + * Powered by satan energy! + * @author hbm + */ +@Untested +public class TestConductor extends BlockContainer { + + public TestConductor(Material p_i45386_1_) { + super(p_i45386_1_); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityCableBaseNT(); + } +} diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 608e57418..b9bc3c6d5 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -74,6 +74,7 @@ import com.hbm.tileentity.deco.*; import com.hbm.tileentity.machine.*; import com.hbm.tileentity.machine.TileEntityMachineReactorLarge.ReactorFuelType; import com.hbm.tileentity.machine.rbmk.*; +import com.hbm.tileentity.network.TileEntityCableBaseNT; import com.hbm.tileentity.turret.*; import com.hbm.world.feature.SchistStratum; import com.hbm.world.generator.CellularDungeonFactory; @@ -480,6 +481,7 @@ public class MainRegistry { GameRegistry.registerTileEntity(TileEntityStorageDrum.class, "tileentity_waste_storage_drum"); GameRegistry.registerTileEntity(TileEntityDeaerator.class, "tileentity_deaerator"); GameRegistry.registerTileEntity(TileEntityChungus.class, "tileentity_chungus"); + GameRegistry.registerTileEntity(TileEntityCableBaseNT.class, "tileentity_ohgod"); GameRegistry.registerTileEntity(TileEntityRBMKRod.class, "tileentity_rbmk_rod"); GameRegistry.registerTileEntity(TileEntityRBMKRodReaSim.class, "tileentity_rbmk_rod_reasim"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBattery.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBattery.java index af1c65af7..0dc73c21f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBattery.java @@ -10,11 +10,15 @@ import com.hbm.lib.Library; import com.hbm.tileentity.TileEntityMachineBase; import api.hbm.energy.IBatteryItem; +import api.hbm.energy.IEnergyConductor; +import api.hbm.energy.IEnergyConnector; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineBattery extends TileEntityMachineBase implements IConsumer, ISource { +public class TileEntityMachineBattery extends TileEntityMachineBase implements IConsumer, ISource, IEnergyConnector { public long power = 0; public long maxPower = 1000000; @@ -162,11 +166,32 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I public void updateEntity() { if(worldObj.getBlock(xCoord, yCoord, zCoord) instanceof MachineBattery && !worldObj.isRemote) { - - this.maxPower = ((MachineBattery)worldObj.getBlock(xCoord, yCoord, zCoord)).maxPower; short mode = (short) this.getRelevantMode(); + ////////////////////////////////////////////////////////////////////// + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + + TileEntity te = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); + + if(te instanceof IEnergyConductor) { + IEnergyConductor con = (IEnergyConductor) te; + + if(con.getPowerNet() != null && !con.getPowerNet().isSubscribed(this)) + con.getPowerNet().subscribe(this); + } + + if(mode == 1 || mode == 2) { + if(te instanceof IEnergyConnector) { + IEnergyConnector con = (IEnergyConnector) te; + this.power = con.transferPower(this.power); + } + } + } + ////////////////////////////////////////////////////////////////////// + + this.maxPower = ((MachineBattery)worldObj.getBlock(xCoord, yCoord, zCoord)).maxPower; + if(mode == 1 || mode == 2) { age++; @@ -273,5 +298,28 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I public void clearList() { this.list.clear(); } + + /* + * SATAN - TECH + */ + @Override + public long transferPower(long power) { + + this.power += power; + + if(this.power > this.maxPower) { + + long overshoot = this.power - this.maxPower; + this.power = this.maxPower; + return overshoot; + } + + return 0; + } + + @Override + public boolean canConnect(ForgeDirection dir) { + return true; + } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCableBaseTN.java b/src/main/java/com/hbm/tileentity/network/TileEntityCableBaseNT.java similarity index 60% rename from src/main/java/com/hbm/tileentity/network/TileEntityCableBaseTN.java rename to src/main/java/com/hbm/tileentity/network/TileEntityCableBaseNT.java index 1d80970a5..ad5b560a8 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCableBaseTN.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCableBaseNT.java @@ -1,23 +1,26 @@ package com.hbm.tileentity.network; import api.hbm.energy.IEnergyConductor; -import api.hbm.energy.IEnergyConnector; import api.hbm.energy.IPowerNet; import api.hbm.energy.PowerNet; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCableBaseTN extends TileEntity implements IEnergyConductor { +public class TileEntityCableBaseNT extends TileEntity implements IEnergyConductor { private IPowerNet network; + @Override public void updateEntity() { if(!worldObj.isRemote) { + //we got here either because the net doesn't exist or because it's not valid, so that's safe to assume + this.setPowerNet(null); + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - TileEntity te = worldObj.getTileEntity(xCoord, yCoord, zCoord); + TileEntity te = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); if(te instanceof IEnergyConductor) { @@ -25,24 +28,36 @@ public class TileEntityCableBaseTN extends TileEntity implements IEnergyConducto if(this.getPowerNet() == null) { this.setPowerNet(conductor.getPowerNet()); - } else if(conductor.getPowerNet() != null) { + } + + if(conductor.getPowerNet() != null) { conductor.getPowerNet().join(this.getPowerNet()); } } } if(this.getPowerNet() == null) { - this.setPowerNet(new PowerNet().subscribe(this)); + this.setPowerNet(new PowerNet().joinLink(this)); } } } + @Override + public void invalidate() { + super.invalidate(); + + //TODO: find out why sometimes the power net doesn't dissolve when it definitely should + if(this.network != null) { + this.network.destroy(); + } + } + /** * Only update until a power net is formed, in >99% of the cases it should be the first tick. Everything else is handled by neighbors and the net itself. */ @Override public boolean canUpdate() { - return network == null; + return (this.network == null || !this.network.isValid()) && !this.isInvalid(); } @Override @@ -62,17 +77,20 @@ public class TileEntityCableBaseTN extends TileEntity implements IEnergyConducto @Override public void setPowerNet(IPowerNet network) { - + this.network = network; } @Override public long transferPower(long power) { - return 0; + + if(this.network == null) + return power; + + return this.network.transferPower(power); } @Override public IPowerNet getPowerNet() { - return null; + return this.network; } - } diff --git a/src/main/resources/assets/hbm/sounds/entity/vomit.ogg b/src/main/resources/assets/hbm/sounds/entity/vomit.ogg index bdfbbf513dabd08f18efb044ed11c80af47031c6..a409ab687d80aacaedfe2bcda5ef1263b8eb355c 100644 GIT binary patch literal 18114 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�=(5uy^ND`fF@+i^mWpPIonk`1 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 diff --git a/src/main/resources/assets/hbm/textures/blocks/test_conductor.png b/src/main/resources/assets/hbm/textures/blocks/test_conductor.png new file mode 100644 index 0000000000000000000000000000000000000000..c1b14c7080dfbe4f2edf5642c3c3dc7663028c0a GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf&fPIq z{^T o=Um^$%yQv%@xPfz&cFY|5T0hKypmC11<(x)p00i_>zopr0NLt8W&i*H literal 0 HcmV?d00001