From ce7e6d07b265cde4dc03718045fb6eceeb731806 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 4 Apr 2022 13:03:24 +0200 Subject: [PATCH] finished cable debugger, disabled bidirectional re-eval --- .../java/api/hbm/energy/IEnergyConductor.java | 25 +++++++---- .../java/api/hbm/energy/IEnergyConnector.java | 22 +++------- src/main/java/api/hbm/energy/PowerNet.java | 2 + .../java/com/hbm/crafting/ToolRecipes.java | 1 + .../com/hbm/items/tool/ItemPowerNetTool.java | 39 +++++++++++++++--- .../java/com/hbm/main/ModEventHandler.java | 5 +-- .../java/com/hbm/particle/ParticleText.java | 7 ++-- src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../hbm/textures/items/power_net_tool.png | Bin 321 -> 368 bytes 10 files changed, 68 insertions(+), 35 deletions(-) diff --git a/src/main/java/api/hbm/energy/IEnergyConductor.java b/src/main/java/api/hbm/energy/IEnergyConductor.java index a8c244b7a..6fc2e5206 100644 --- a/src/main/java/api/hbm/energy/IEnergyConductor.java +++ b/src/main/java/api/hbm/energy/IEnergyConductor.java @@ -5,7 +5,6 @@ import java.util.HashMap; import java.util.List; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; /** @@ -84,7 +83,7 @@ public interface IEnergyConductor extends IEnergyConnector { } //bidirectional re-eval, experimental and technically optional, only useful as a fallback - } else { + } /*else { //no neighbor net and no self net if(this.getPowerNet() == null) { @@ -94,7 +93,9 @@ public interface IEnergyConductor extends IEnergyConnector { } else { neighbor.setPowerNet(this.getPowerNet().joinLink(neighbor)); } - } + }*/ + + //extensive debugging has shown that bidirectional re-eval ic complete shit } } } @@ -141,9 +142,19 @@ public interface IEnergyConductor extends IEnergyConnector { return this.getPowerNet().transferPower(power); } - public default Vec3 getDebugParticlePos() { - TileEntity te = (TileEntity) this; - Vec3 vec = Vec3.createVectorHelper(te.xCoord + 0.5, te.yCoord + 1.5, te.zCoord + 0.5); - return vec; + /** + * Returns whether the conductor has mutliblock proxies which need to be taken into consideration for re-eval. + * @return + */ + public default boolean hasProxies() { + return false; + } + + /** + * Returns the identities (position-based) of proxies which resolve into the conductor's own identity. + * @return + */ + public default List getProxies() { + return new ArrayList(); } } diff --git a/src/main/java/api/hbm/energy/IEnergyConnector.java b/src/main/java/api/hbm/energy/IEnergyConnector.java index 0799c228a..663ed8c7b 100644 --- a/src/main/java/api/hbm/energy/IEnergyConnector.java +++ b/src/main/java/api/hbm/energy/IEnergyConnector.java @@ -1,14 +1,12 @@ package api.hbm.energy; -import java.util.ArrayList; -import java.util.List; - import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -98,19 +96,9 @@ public interface IEnergyConnector extends ILoadedTile { public static final boolean particleDebug = false; - /** - * Returns whether the conductor has mutliblock proxies which need to be taken into consideration for re-eval. - * @return - */ - public default boolean hasProxies() { - return false; - } - - /** - * Returns the identities (position-based) of proxies which resolve into the conductor's own identity. - * @return - */ - public default List getProxies() { - return new ArrayList(); + public default Vec3 getDebugParticlePos() { + TileEntity te = (TileEntity) this; + Vec3 vec = Vec3.createVectorHelper(te.xCoord + 0.5, te.yCoord + 1, te.zCoord + 0.5); + return vec; } } diff --git a/src/main/java/api/hbm/energy/PowerNet.java b/src/main/java/api/hbm/energy/PowerNet.java index d563c2bf5..89efb819c 100644 --- a/src/main/java/api/hbm/energy/PowerNet.java +++ b/src/main/java/api/hbm/energy/PowerNet.java @@ -164,6 +164,8 @@ public class PowerNet implements IPowerNet { @Override public void reevaluate() { + + //this.destroy();// HashMap copy = new HashMap(links); HashMap proxyCopy = new HashMap(proxies); diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index b37cb4b44..b5b4d4312 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -137,6 +137,7 @@ public class ToolRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.mirror_tool), new Object[] { " A ", " IA", "I ", 'A', AL.ingot(), 'I', IRON.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.rbmk_tool), new Object[] { " A ", " IA", "I ", 'A', PB.ingot(), 'I', IRON.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.power_net_tool), new Object[] { "WRW", " I ", " B ", 'W', ModItems.wire_red_copper, 'R', REDSTONE.dust(), 'I', IRON.ingot(), 'B', ModItems.battery_su }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.kit_toolbox_empty), new Object[] { "CCC", "CIC", 'C', CU.plate(), 'I', IRON.ingot() }); diff --git a/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java b/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java index b67ded1b3..7151b97c4 100644 --- a/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java +++ b/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java @@ -1,11 +1,14 @@ package com.hbm.items.tool; +import java.util.List; + import com.hbm.blocks.BlockDummyable; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; import com.hbm.util.ChatBuilder; import api.hbm.energy.IEnergyConductor; +import api.hbm.energy.IEnergyConnector; import api.hbm.energy.IPowerNet; import api.hbm.energy.PowerNet; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -59,23 +62,49 @@ public class ItemPowerNetTool extends Item { PowerNet network = (PowerNet) net; String id = Integer.toHexString(net.hashCode()); - player.addChatComponentMessage(ChatBuilder.start("Start of diagnostic for network" + id).color(EnumChatFormatting.GOLD).flush()); + player.addChatComponentMessage(ChatBuilder.start("Start of diagnostic for network " + id).color(EnumChatFormatting.GOLD).flush()); player.addChatComponentMessage(ChatBuilder.start("Links: " + network.getLinks().size()).color(EnumChatFormatting.YELLOW).flush()); player.addChatComponentMessage(ChatBuilder.start("Proxies: " + network.getProxies().size()).color(EnumChatFormatting.YELLOW).flush()); player.addChatComponentMessage(ChatBuilder.start("Subscribers: " + network.getSubscribers().size()).color(EnumChatFormatting.YELLOW).flush()); - player.addChatComponentMessage(ChatBuilder.start("End of diagnostic for network" + id).color(EnumChatFormatting.GOLD).flush()); + player.addChatComponentMessage(ChatBuilder.start("End of diagnostic for network " + id).color(EnumChatFormatting.GOLD).flush()); for(IEnergyConductor link : network.getLinks()) { Vec3 pos = link.getDebugParticlePos(); + boolean errored = link.getPowerNet() != net; + NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "text"); - data.setInteger("color", 0xffff00); + data.setString("type", "debug"); + data.setInteger("color", errored ? 0xff0000 : 0xffff00); data.setFloat("scale", 0.5F); data.setString("text", id); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, pos.xCoord, pos.yCoord, pos.zCoord), new TargetPoint(world.provider.dimensionId, pos.xCoord, pos.yCoord, pos.zCoord, 20)); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, pos.xCoord, pos.yCoord, pos.zCoord), new TargetPoint(world.provider.dimensionId, pos.xCoord, pos.yCoord, pos.zCoord, radius)); + } + + for(IEnergyConnector subscriber : network.getSubscribers()) { + Vec3 pos = subscriber.getDebugParticlePos(); + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "debug"); + data.setInteger("color", 0x0000ff); + data.setFloat("scale", 1.5F); + data.setString("text", id); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, pos.xCoord, pos.yCoord, pos.zCoord), new TargetPoint(world.provider.dimensionId, pos.xCoord, pos.yCoord, pos.zCoord, radius)); } return true; } + + private static final int radius = 20; + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + list.add(EnumChatFormatting.RED + "Right-click cable to analyze the power net."); + list.add(EnumChatFormatting.RED + "Links (cables, poles, etc.) are YELLOW"); + list.add(EnumChatFormatting.RED + "Subscribers (any receiver) are BLUE"); + list.add(EnumChatFormatting.RED + "Links with mismatching netowrk info (BUGGED!) are RED"); + list.add(EnumChatFormatting.RED + "Displays stats such as link and subscriber count"); + list.add(EnumChatFormatting.RED + "Proxies are connection points for multiblock links (e.g. 4 for substations)"); + list.add(EnumChatFormatting.RED + "Particles only spawn in a " + radius + " block radius!"); + } } diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 7cce6df80..8913738e7 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -62,7 +62,6 @@ import com.hbm.util.EntityDamageUtil; import com.hbm.world.WorldProviderNTM; import com.hbm.world.generator.TimedGenerator; -import api.hbm.energy.IEnergyConductor; import cpw.mods.fml.common.eventhandler.Event.Result; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; @@ -1171,7 +1170,7 @@ public class ModEventHandler { /// PU RADIATION END /// - if(player instanceof EntityPlayerMP) { + /*if(player instanceof EntityPlayerMP) { int x = (int) Math.floor(player.posX); int y = (int) Math.floor(player.posY - 0.01); @@ -1180,7 +1179,7 @@ public class ModEventHandler { if(player.worldObj.getTileEntity(x, y, z) instanceof IEnergyConductor) { PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(((IEnergyConductor) player.worldObj.getTileEntity(x, y, z)).getPowerNet() + ""), (EntityPlayerMP) player); } - } + }*/ /// NEW ITEM SYS START /// HazardSystem.updatePlayerInventory(player); diff --git a/src/main/java/com/hbm/particle/ParticleText.java b/src/main/java/com/hbm/particle/ParticleText.java index f1c6711c9..34ad3e928 100644 --- a/src/main/java/com/hbm/particle/ParticleText.java +++ b/src/main/java/com/hbm/particle/ParticleText.java @@ -17,11 +17,12 @@ public class ParticleText extends EntityFX { public ParticleText(World world, double x, double y, double z, int color, String text) { super(world, x, y, z); - this.particleMaxAge = 30; + this.particleMaxAge = 100; this.color = color; this.text = text; - this.motionY = 0.1D; + this.motionY = 0.01D; + this.noClip = true; } public int getFXLayer() { @@ -51,7 +52,7 @@ public class ParticleText extends EntityFX { GL11.glRotatef(this.rotationPitch, 1.0F, 0.0F, 0.0F); GL11.glScalef(-1.0F, -1.0F, 1.0F); - GL11.glScaled(particleScale, particleScale, particleScale); + GL11.glScaled(particleScale * 0.01, particleScale * 0.01, particleScale * 0.01); font.drawStringWithShadow(text, -(int) (font.getStringWidth(text) * 0.5F), -(int) (font.FONT_HEIGHT * 0.5F), color); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 0417bff05..839e5f15e 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -2262,6 +2262,7 @@ item.powder_xe135.name=Xenon-135-Staub item.powder_xe135_tiny.name=Kleiner Haufen Xenon-135-Staub item.powder_yellowcake.name=Yellowcake item.powder_zirconium.name=Zirkoniumstaub +item.power_net_tool.name=Stromnetz-Analysewerkzeug item.primer_357.name=.357 Magnum-Zündhütchen (x24) item.primer_44.name=.44 Magnum-Zündhütchen (x24) item.primer_50.name=Großkaliber-Zündhütchen (x12) diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index d913ffc38..039c75c54 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -2570,6 +2570,7 @@ item.powder_xe135.name=Xenon-135 Powder item.powder_xe135_tiny.name=Tiny Pile of Xenon-135 Powder item.powder_yellowcake.name=Yellowcake item.powder_zirconium.name=Zirconium Powder +item.power_net_tool.name=Cable Network Analysis Tool item.primer_357.name=.357 Magnum Primer (x24) item.primer_44.name=.44 Magnum Primer (x24) item.primer_50.name=Large Caliber Primer (x12) diff --git a/src/main/resources/assets/hbm/textures/items/power_net_tool.png b/src/main/resources/assets/hbm/textures/items/power_net_tool.png index 66d95247d60a6a64a3998978fa85600a89d1526b..8a333cbf0988d9b107d0bcc66617e0e568fc4a2a 100644 GIT binary patch delta 326 zcmV-M0lEIc0`LNmGk*amNklv?lV4<2WWw(*RHu#V|rfjj+g1J|8rBw4$z0+*|!TJ{1Gk*a1Nklb>k6hI$Q278Kpg;@6Btv6tbI7Cm;gXBCY z6Q}S{&M8fG)b)AW}XstyE0j;$tw&1;A zB`Nbf@Ah_rShn|moky&-qU*XPm7O>FOw&Z$w(C3+6SwRHDNz(JF_l?s1-$r7rCztK d93J=!KQ@PK;}Gj{2BrW2002ovPDHLkV1hHees2H(