From ab706fea9e4192b611788981930a575f6d4205fe Mon Sep 17 00:00:00 2001 From: basdxz Date: Sun, 15 Nov 2020 17:57:49 +0000 Subject: Thaum Lightning fixes -Less spammy lightning bolts -Still has duplicate code and stuff --- .../tectech/mechanics/tesla/ITeslaConnectable.java | 19 +++-- .../multi/GT_MetaTileEntity_TM_teslaCoil.java | 55 +++++++-------- .../single/GT_MetaTileEntity_TeslaCoil.java | 82 +++++----------------- 3 files changed, 49 insertions(+), 107 deletions(-) diff --git a/src/main/java/com/github/technus/tectech/mechanics/tesla/ITeslaConnectable.java b/src/main/java/com/github/technus/tectech/mechanics/tesla/ITeslaConnectable.java index 07059c82b2..74aa4b8463 100644 --- a/src/main/java/com/github/technus/tectech/mechanics/tesla/ITeslaConnectable.java +++ b/src/main/java/com/github/technus/tectech/mechanics/tesla/ITeslaConnectable.java @@ -5,7 +5,6 @@ import com.google.common.collect.Multimap; import java.util.HashSet; import java.util.Map; -import java.util.Objects; import static java.lang.Math.sqrt; @@ -74,17 +73,15 @@ public interface ITeslaConnectable extends ITeslaConnectableSimple { } public static void generateTeslaNodeMap(ITeslaConnectable origin) { - if(!teslaNodeSet.contains(origin)) { - origin.getTeslaNodeMap().clear(); - for (ITeslaConnectableSimple target : teslaSimpleNodeSet) { - //Sanity checks - if (target == null) { - //The Tesla Covers do not remove themselves from the list and this is the code that does - teslaSimpleNodeSet.remove(null); - continue; - } - addTargetToTeslaOrigin(target, origin); + origin.getTeslaNodeMap().clear(); + for (ITeslaConnectableSimple target : teslaSimpleNodeSet) { + //Sanity checks + if (target == null) { + //The Tesla Covers do not remove themselves from the list and this is the code that does + teslaSimpleNodeSet.remove(null); + continue; } + addTargetToTeslaOrigin(target, origin); } teslaNodeSet.add(origin); } diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_teslaCoil.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_teslaCoil.java index 22f1d003e6..d1d645acc2 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_teslaCoil.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_teslaCoil.java @@ -52,8 +52,9 @@ import static net.minecraft.util.StatCollector.translateToLocal; public class GT_MetaTileEntity_TM_teslaCoil extends GT_MetaTileEntity_MultiblockBase_EM implements IConstructable, ITeslaConnectable { //Interface fields - Multimap teslaNodeMap = ArrayListMultimap.create(); - HashSet sparkList = new HashSet<>(); + private final Multimap teslaNodeMap = ArrayListMultimap.create(); + private final HashSet sparkList = new HashSet<>(); + private int sparkCount = 10; //region variables private static final int transferRadiusTowerFromConfig = TecTech.configTecTech.TESLA_MULTI_RANGE_TOWER;//Default is 32 @@ -81,8 +82,6 @@ public class GT_MetaTileEntity_TM_teslaCoil extends GT_MetaTileEntity_Multiblock private final ArrayList eCapacitorHatches = new ArrayList<>(); //Capacitor hatches which determine the max voltage tier and count of amps - private int sortTime = 0; //Scan timer used for tesla search intervals - private long energyCapacity = 0; //Total energy storage limited by capacitors private long outputVoltageMax = 0; //Tesla voltage output limited by capacitors private int vTier = -1; //Tesla voltage tier limited by capacitors @@ -459,13 +458,12 @@ public class GT_MetaTileEntity_TM_teslaCoil extends GT_MetaTileEntity_Multiblock @Override public void onRemoval() { super.onRemoval(); - if (this.getBaseMetaTileEntity().isClientSide()) { - return; - } - teslaSimpleNodeSetRemove(this); - for (GT_MetaTileEntity_Hatch_Capacitor cap : eCapacitorHatches) { - if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(cap)) { - cap.getBaseMetaTileEntity().setActive(false); + if (!getBaseMetaTileEntity().isClientSide()) { + teslaSimpleNodeSetRemove(this); + for (GT_MetaTileEntity_Hatch_Capacitor cap : eCapacitorHatches) { + if (GT_MetaTileEntity_MultiBlockBase.isValidMetaTileEntity(cap)) { + cap.getBaseMetaTileEntity().setActive(false); + } } } } @@ -557,13 +555,12 @@ public class GT_MetaTileEntity_TM_teslaCoil extends GT_MetaTileEntity_Multiblock super.onFirstTick_EM(aBaseMetaTileEntity); if (!aBaseMetaTileEntity.isClientSide()) { teslaSimpleNodeSetAdd(this); + generateTeslaNodeMap(this); } } @Override public boolean onRunningTick(ItemStack aStack) { - IGregTechTileEntity mte = getBaseMetaTileEntity(); - //Hysteresis based ePowerPass setting float energyFrac = (float) getEUVar() / energyCapacity; @@ -577,15 +574,6 @@ public class GT_MetaTileEntity_TM_teslaCoil extends GT_MetaTileEntity_Multiblock ePowerPass = false; } - //Create the teslaNodeMap - if (sortTime == sortTimeMinSetting.get()) { - sortTime = 0; - sortTimeDisplay.updateStatus(); - generateTeslaNodeMap(this); - } - sortTime++; - sortTimeDisplay.set(sortTime); - //Power Limit Settings if (outputVoltageSetting.get() > 0) { outputVoltage = min(outputVoltageMax, (long) outputVoltageSetting.get()); @@ -609,16 +597,21 @@ public class GT_MetaTileEntity_TM_teslaCoil extends GT_MetaTileEntity_Multiblock //Power transfer outputCurrentDisplay.set(powerTeslaNodeMap(this)); - if (!sparkList.isEmpty()) { - NetworkDispatcher.INSTANCE.sendToAllAround(new RendererMessage.RendererData(sparkList), - mte.getWorld().provider.dimensionId, - posTop.get0(), - posTop.get1(), - posTop.get2(), - 256); + //Randomly send all the sparks out once every 3 to 5 seconds + sparkCount--; + if (sparkCount == 0){ + IGregTechTileEntity mte = getBaseMetaTileEntity(); + sparkCount = 60 + mte.getWorld().rand.nextInt(41); + if(!sparkList.isEmpty()){ + NetworkDispatcher.INSTANCE.sendToAllAround(new RendererMessage.RendererData(sparkList), + mte.getWorld().provider.dimensionId, + mte.getXCoord(), + mte.getYCoord(), + mte.getZCoord(), + 256); + sparkList.clear(); + } } - sparkList.clear(); - return true; } diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/single/GT_MetaTileEntity_TeslaCoil.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/single/GT_MetaTileEntity_TeslaCoil.java index c7ebb76e09..292d363ad9 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/single/GT_MetaTileEntity_TeslaCoil.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/single/GT_MetaTileEntity_TeslaCoil.java @@ -35,15 +35,13 @@ import static net.minecraft.util.StatCollector.translateToLocalFormatted; public class GT_MetaTileEntity_TeslaCoil extends GT_MetaTileEntity_BasicBatteryBuffer implements ITeslaConnectable { //Interface fields - Multimap teslaNodeMap = ArrayListMultimap.create(); - HashSet sparkList = new HashSet<>(); + private final Multimap teslaNodeMap = ArrayListMultimap.create(); + private final HashSet sparkList = new HashSet<>(); + private int sparkCount = 10; private final static int transferRadiusMax = TecTech.configTecTech.TESLA_SINGLE_RANGE;//Default is 20 private final static int perBlockLoss = TecTech.configTecTech.TESLA_SINGLE_LOSS_PER_BLOCK;//Default is 1 private final static float overDriveLoss = TecTech.configTecTech.TESLA_SINGLE_LOSS_FACTOR_OVERDRIVE;//Default is 0.25F - - private byte sparkCount = 0; - private final static int transferRadiusMin = 4;//Minimum user configurable private int transferRadius = transferRadiusMax;//Default transferRadius setting @@ -61,9 +59,6 @@ public class GT_MetaTileEntity_TeslaCoil extends GT_MetaTileEntity_BasicBatteryB private String clientLocale = "en_US"; - private int sortTime = 0;//Sorting tick counter - private final static int sortTimeMax = 100;//Sorting tick counter limit, so we only sort once every 5 seconds - public GT_MetaTileEntity_TeslaCoil(int aID, String aName, String aNameRegional, int aTier, int aSlotCount) { super(aID, aName, aNameRegional, aTier, "", aSlotCount); Util.setTier(aTier, this); @@ -185,51 +180,12 @@ public class GT_MetaTileEntity_TeslaCoil extends GT_MetaTileEntity_BasicBatteryB return new GT_MetaTileEntity_TeslaCoil(mName, mTier, mDescription, mTextures, mInventory.length); } -// private void thaumLightning(IGregTechTileEntity mte, IGregTechTileEntity node) { -// int x = mte.getXCoord(); -// int y = mte.getYCoord(); -// int z = mte.getZCoord(); -// -// byte xR; -// byte yR; -// byte zR; -// -// IMetaTileEntity nodeInside = node.getMetaTileEntity(); -// if (nodeInside instanceof GT_MetaTileEntity_TM_teslaCoil) { -// GT_MetaTileEntity_TM_teslaCoil nodeTesla = (GT_MetaTileEntity_TM_teslaCoil) nodeInside; -// xR = (byte) (nodeTesla.posTop.get0() - x); -// yR = (byte) (nodeTesla.posTop.get1() - y); -// zR = (byte) (nodeTesla.posTop.get2() - z); -// } else { -// xR = (byte) (node.getXCoord() - x); -// yR = (byte) (node.getYCoord() - y); -// zR = (byte) (node.getZCoord() - z); -// } -// -// int wID = mte.getWorld().provider.dimensionId; -// -// sparkList.add(new ThaumSpark(x, y, z, xR, yR, zR, wID)); -// } -// -// private long[] getOutputVoltage(long outputVoltage, int distance, boolean overDriveToggle) { -// long outputVoltageInjectable; -// long outputVoltageConsumption; -// -// if (overDriveToggle) { -// outputVoltageInjectable = outputVoltage; -// outputVoltageConsumption = outputVoltage + (distance * perBlockLoss) + (long) Math.round(overDriveLoss * outputVoltage); -// } else { -// outputVoltageInjectable = outputVoltage - (distance * perBlockLoss); -// outputVoltageConsumption = outputVoltage; -// } -// return new long[]{outputVoltageInjectable, outputVoltageConsumption}; -// } - @Override public void onFirstTick(IGregTechTileEntity aBaseMetaTileEntity) { super.onFirstTick(aBaseMetaTileEntity); if (!aBaseMetaTileEntity.isClientSide()) { teslaSimpleNodeSetAdd(this); + generateTeslaNodeMap(this); } } @@ -266,27 +222,23 @@ public class GT_MetaTileEntity_TeslaCoil extends GT_MetaTileEntity_BasicBatteryB powerPassToggle = false; } - //Create the teslaNodeMap - if (sortTime == sortTimeMax) { - sortTime = 0; - generateTeslaNodeMap(this); - } - sortTime++; - //Send Power powerTeslaNodeMap(this); - sparkCount++; - if (sparkCount == 60 && !sparkList.isEmpty()) { - sparkCount = 0; - NetworkDispatcher.INSTANCE.sendToAllAround(new RendererMessage.RendererData(sparkList), - aBaseMetaTileEntity.getWorld().provider.dimensionId, - aBaseMetaTileEntity.getXCoord(), - aBaseMetaTileEntity.getYCoord(), - aBaseMetaTileEntity.getZCoord(), - 256); + //Randomly send all the sparks out once every 3 to 5 seconds + sparkCount--; + if (sparkCount == 0){ + sparkCount = 60 + aBaseMetaTileEntity.getWorld().rand.nextInt(41); + if(!sparkList.isEmpty()){ + NetworkDispatcher.INSTANCE.sendToAllAround(new RendererMessage.RendererData(sparkList), + aBaseMetaTileEntity.getWorld().provider.dimensionId, + aBaseMetaTileEntity.getXCoord(), + aBaseMetaTileEntity.getYCoord(), + aBaseMetaTileEntity.getZCoord(), + 256); + sparkList.clear(); + } } - sparkList.clear(); } @Override -- cgit