From 4ef895e6313358e914954cd7f72116544dc9e37a Mon Sep 17 00:00:00 2001 From: reobf <2215595288@qq.com> Date: Fri, 12 Apr 2024 14:29:53 +0800 Subject: [PATCH] update --- build.gradle | 2 +- .../eucrafting/PartEUP2PInterface.java | 62 ++++++++++++++++--- .../proghatches/eucrafting/PartEUSource.java | 42 ++++++++++++- .../eucrafting/TileFluidInterface_EU.java | 26 ++++++-- .../ProgrammingCircuitProvider.java | 30 +++++++++ .../MixinCpuClusterEUAutoRequest.java | 6 +- .../eucrafting/MixinRemoveExcessiveEU.java | 12 ++-- .../mixins/eucrafting/MixinWailaProvider.java | 2 + .../assets/proghatches/lang/en_US.lang | 14 ++++- .../assets/proghatches/lang/zh_CN.lang | 14 ++++- 10 files changed, 183 insertions(+), 27 deletions(-) diff --git a/build.gradle b/build.gradle index bf4fa7d..37e85ac 100644 --- a/build.gradle +++ b/build.gradle @@ -372,7 +372,7 @@ catch (Exception ignored) { // Pulls version first from the VERSION env and then git tag String identifiedVersion = null -String versionOverride = '0.0.10' +String versionOverride = '0.0.9' try { // Produce a version based on the tag, or for branches something like 0.2.2-configurable-maven-and-extras.38+43090270b6-dirty if (versionOverride == null) { diff --git a/src/main/java/reobf/proghatches/eucrafting/PartEUP2PInterface.java b/src/main/java/reobf/proghatches/eucrafting/PartEUP2PInterface.java index 138c225..2325443 100644 --- a/src/main/java/reobf/proghatches/eucrafting/PartEUP2PInterface.java +++ b/src/main/java/reobf/proghatches/eucrafting/PartEUP2PInterface.java @@ -146,35 +146,78 @@ public NBTTagCompound getNBTData(EntityPlayerMP player, IPart part, TileEntity t tag.setInteger("INPUT_Z",s.getTile().zCoord); tag.setInteger("INPUT_DIM",s.getTile().getWorldObj().provider.dimensionId); }); + + PartEUP2PInterface in = pt.isP2POut()?pt.getInput():pt; + Optional.ofNullable(in).ifPresent(s->{ + tag.setLong("V", pt.voltage); + tag.setLong("A", pt.amp); + tag.setLong("EA", pt.expectedamp); + tag.setDouble("AA", pt.averageamp); + tag.setDouble("AAL",pt.injectedamp_local); + }); + ; + + } + + + return tag; } @Override public List getWailaBody(IPart part, List currentToolTip, IWailaDataAccessor accessor, IWailaConfigHandler config) { if(PartEUP2PInterface.class.isInstance(part)){ - - + currentToolTip.add(StatCollector.translateToLocalFormatted( + "proghatches.eu.interface.waila.V",accessor.getNBTData().getLong("V"))); + currentToolTip.add(StatCollector.translateToLocalFormatted( + "proghatches.eu.interface.waila.EA",accessor.getNBTData().getLong("EA"))); + + currentToolTip.add(StatCollector.translateToLocalFormatted( + "proghatches.eu.interface.waila.AA",String.format("%.2f",accessor.getNBTData().getDouble("AA")),accessor.getNBTData().getLong("A"))); + //if(pt) + { + double d1=accessor.getNBTData().getDouble("AAL"); + double d2=accessor.getNBTData().getDouble("AA"); + + currentToolTip.add(StatCollector.translateToLocalFormatted( + "proghatches.eu.interface.waila.AAL", + String.format("%.2f", + (d1>0.01&&d1<=d2)? + d1/d2*100: + 0 + ) + )); + } + + if(accessor.getNBTData().getBoolean("p2p_out")){ + UUID id=ProghatchesUtil.deser(accessor.getNBTData(), "INPUT_ID"); + if(id.equals(zero)){return super.getWailaBody(part, currentToolTip, accessor, config);} + if(accessor.getNBTData().hasKey("INPUT_DIM")){ for(int i=0;i<4;i++) currentToolTip.add( StatCollector.translateToLocalFormatted("proghatches.eu.interface.waila.UUID.out."+i, - ProghatchesUtil.deser(accessor.getNBTData(), "INPUT_ID").toString(), + id.toString(), accessor.getNBTData().getInteger("INPUT_X"), accessor.getNBTData().getInteger("INPUT_Y"), accessor.getNBTData().getInteger("INPUT_Z"), accessor.getNBTData().getInteger("INPUT_DIM") ) ); - + }else{ + + currentToolTip.add(StatCollector.translateToLocal("proghatches.eu.interface.waila.inputmissing")); + } }else{ - + UUID id=ProghatchesUtil.deser(accessor.getNBTData(), "ID"); + if(id.equals(zero)){return super.getWailaBody(part, currentToolTip, accessor, config);} currentToolTip.add( StatCollector.translateToLocalFormatted("proghatches.eu.interface.waila.UUID", - ProghatchesUtil.deser(accessor.getNBTData(), "ID").toString()) + id.toString()) ); @@ -235,6 +278,7 @@ public int getInstalledUpgrades(Upgrades u) { private boolean updatev; private long instantamp; private double averageamp; + private double averageamp_local; private long amp; private long minv; private long maxv; @@ -1346,6 +1390,7 @@ public long doInject(long a, long v) { a-=consume; if(consume==0)dead.add(face); injectedamp+=consume; + face.injectedamp_local+=consume; if(a==0)break alldone; } @@ -1373,11 +1418,14 @@ public void accept(long a) { accepted+=a; } long injectedamp; + long injectedamp_local; @Override public void reset() { instantamp=injectedamp; - averageamp=(injectedamp)*0.01+averageamp*0.99; + averageamp=(injectedamp)/32.0+averageamp*31/32; injectedamp=0; + averageamp_local=(injectedamp_local)/32.0+averageamp_local*31/32; + injectedamp_local=0; accepted=0; } diff --git a/src/main/java/reobf/proghatches/eucrafting/PartEUSource.java b/src/main/java/reobf/proghatches/eucrafting/PartEUSource.java index 58a5617..63b9b09 100644 --- a/src/main/java/reobf/proghatches/eucrafting/PartEUSource.java +++ b/src/main/java/reobf/proghatches/eucrafting/PartEUSource.java @@ -58,6 +58,7 @@ import appeng.api.storage.data.IItemList; import appeng.client.texture.CableBusTextures; import appeng.core.settings.TickRates; +import appeng.integration.modules.waila.part.BasePartWailaDataProvider; import appeng.me.GridAccessException; import appeng.me.cache.CraftingGridCache; import appeng.me.cluster.implementations.CraftingCPUCluster; @@ -73,12 +74,15 @@ import gregtech.api.interfaces.tileentity.IEnergyConnected; import gregtech.common.gui.modularui.widget.CoverCycleButtonWidget; import io.netty.buffer.ByteBuf; +import mcp.mobius.waila.api.IWailaConfigHandler; +import mcp.mobius.waila.api.IWailaDataAccessor; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.InventoryCrafting; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -100,6 +104,39 @@ public class PartEUSource extends AEBasePart implements IGuiProvidingPart, ICraftingProvider, IGridTickable, IInstantCompletable, IPartGT5Power, ISource { + + public static class WailaDataProvider extends BasePartWailaDataProvider{ + + @Override + public NBTTagCompound getNBTData(EntityPlayerMP player, IPart part, TileEntity te, NBTTagCompound tag, + World world, int x, int y, int z) { + if(PartEUSource.class.isInstance(part)){ + PartEUSource pt = (PartEUSource) part; + + tag.setLong("V",pt.voltage); + tag.setLong("A",pt.amp); + tag.setLong("AC",pt.consumed); + tag.setDouble("AA",pt.averageamp); + } + return super.getNBTData(player, part, te, tag, world, x, y, z); + } + @Override + public List getWailaBody(IPart part, List currentToolTip, IWailaDataAccessor accessor, + IWailaConfigHandler config) { + if(PartEUSource.class.isInstance(part)){ + + currentToolTip.add(StatCollector.translateToLocalFormatted("proghatches.eu.source.waila.V", accessor.getNBTData().getLong("V"))); + currentToolTip.add(StatCollector.translateToLocalFormatted("proghatches.eu.source.waila.A", accessor.getNBTData().getLong("A"))); + currentToolTip.add(StatCollector.translateToLocalFormatted("proghatches.eu.source.waila.AC", accessor.getNBTData().getLong("AC"))); + currentToolTip.add(StatCollector.translateToLocalFormatted("proghatches.eu.source.waila.AA", String.format("%.2f",accessor.getNBTData().getDouble("AA")))); + + + + } + return super.getWailaBody(part, currentToolTip, accessor, config); + } + + } @Override public void markDirty() { this.getTile().markDirty(); @@ -699,11 +736,12 @@ public void complete() { returnItems(); } - + double averageamp; @Override public void reset() { + averageamp= (ampInjectedthisTick)/32.0+averageamp*31/32; ampInjectedthisTick = 0; - + } @Override diff --git a/src/main/java/reobf/proghatches/eucrafting/TileFluidInterface_EU.java b/src/main/java/reobf/proghatches/eucrafting/TileFluidInterface_EU.java index 21eadcc..3f38e7e 100644 --- a/src/main/java/reobf/proghatches/eucrafting/TileFluidInterface_EU.java +++ b/src/main/java/reobf/proghatches/eucrafting/TileFluidInterface_EU.java @@ -97,10 +97,23 @@ public List getWailaHead(ItemStack itemStack, List currenttip, I @Override public List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { - + UUID id=ProghatchesUtil.deser(accessor.getNBTData(), "EUFI"); + if(id.equals(zero)){return currenttip;} currenttip.add( - StatCollector.translateToLocalFormatted("proghatches.eu.interface.waila.UUID",ProghatchesUtil.deser(accessor.getNBTData(), "EUFI").toString()) - );return currenttip; + StatCollector.translateToLocalFormatted("proghatches.eu.interface.waila.UUID",id.toString()) + ); + + currenttip.add(StatCollector.translateToLocalFormatted( + "proghatches.eu.interface.waila.V",accessor.getNBTData().getLong("V"))); + currenttip.add(StatCollector.translateToLocalFormatted( + "proghatches.eu.interface.waila.EA",accessor.getNBTData().getLong("EA"))); + currenttip.add(StatCollector.translateToLocalFormatted( + "proghatches.eu.interface.waila.AA",String.format("%.2f",accessor.getNBTData().getDouble("AA")),accessor.getNBTData().getLong("A"))); + System.out.println( + StatCollector.translateToLocal("proghatches.eu.interface.waila.AA")); + + + return currenttip; } @Override @@ -114,6 +127,11 @@ public List getWailaTail(ItemStack itemStack, List currenttip, I public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, int x, int y, int z) { ProghatchesUtil.ser(tag, ((TileFluidInterface_EU)te).id, "EUFI"); + TileFluidInterface_EU pt= ((TileFluidInterface_EU)te); + tag.setLong("V", pt.voltage); + tag.setLong("A", pt.amp); + tag.setLong("EA", pt.expectedamp); + tag.setDouble("AA", pt.averageamp); return tag; }}; public TileFluidInterface_EU() { @@ -804,7 +822,7 @@ public void accept(long a) { @Override public void reset() { instantamp=injectedamp; - averageamp=(injectedamp)*0.01+averageamp*0.99; + averageamp=(injectedamp)/32.0+averageamp*31/32; injectedamp=0; accepted=0; } diff --git a/src/main/java/reobf/proghatches/gt/metatileentity/ProgrammingCircuitProvider.java b/src/main/java/reobf/proghatches/gt/metatileentity/ProgrammingCircuitProvider.java index d90c4c6..024a1af 100644 --- a/src/main/java/reobf/proghatches/gt/metatileentity/ProgrammingCircuitProvider.java +++ b/src/main/java/reobf/proghatches/gt/metatileentity/ProgrammingCircuitProvider.java @@ -14,11 +14,14 @@ import javax.annotation.Nullable; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Items; +import net.minecraft.inventory.IInventory; import net.minecraft.inventory.InventoryCrafting; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.StatCollector; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -63,6 +66,8 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch; import gregtech.api.render.TextureFactory; import gregtech.api.util.extensions.ArrayExt; +import mcp.mobius.waila.api.IWailaConfigHandler; +import mcp.mobius.waila.api.IWailaDataAccessor; import reobf.proghatches.eucrafting.TileFluidInterface_EU; import reobf.proghatches.item.ItemProgrammingCircuit; import reobf.proghatches.main.MyMod; @@ -554,5 +559,30 @@ public ItemStack getCrafterIcon() { return new ItemStack(GregTech_API.sBlockMachines, 1, getBaseMetaTileEntity().getMetaTileID()); } +@Override +public void getWailaNBTData(EntityPlayerMP player, TileEntity tile, NBTTagCompound tag, World world, int x, int y, + int z) { + //no-op get the name on client side + super.getWailaNBTData(player, tile, tag, world, x, y, z); +} +@Override +public void getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, + IWailaConfigHandler config) { + + currenttip.add( + StatCollector.translateToLocal("proghatches.provider.waila") + + + Optional.ofNullable( + ((IInventory)accessor.getTileEntity()) + .getStackInSlot(0)).map(s->s.getDisplayName()+"@"+s.getItemDamage()).orElse("") + + + ); + + + + + super.getWailaBody(itemStack, currenttip, accessor, config); +} } diff --git a/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinCpuClusterEUAutoRequest.java b/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinCpuClusterEUAutoRequest.java index 80db9e9..5b7ac26 100644 --- a/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinCpuClusterEUAutoRequest.java +++ b/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinCpuClusterEUAutoRequest.java @@ -124,7 +124,7 @@ private void executeCrafting1(final IEnergyGrid eg, final CraftingGridCache cc,C IAEItemStack u=s.copy().setStackSize(1); - storage.merge(u,0l, (a,b)->a+b+s.getStackSize()); + storage.merge(u,s.getStackSize(),Long::sum); } @@ -140,8 +140,8 @@ private void executeCrafting1(final IEnergyGrid eg, final CraftingGridCache cc,C if(d.out.getItemDamage()==1){ IAEItemStack key = d.o[0].copy().setStackSize(1); - storage.merge(key, 0l, - (a,b)->a+b+MixinCallback.getter.apply(s.getValue()) + storage.merge(key, MixinCallback.getter.apply(s.getValue()) , + Long::sum ); } diff --git a/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinRemoveExcessiveEU.java b/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinRemoveExcessiveEU.java index 9d836de..699ff57 100644 --- a/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinRemoveExcessiveEU.java +++ b/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinRemoveExcessiveEU.java @@ -69,10 +69,10 @@ public void startCrafting(MECraftingInventory storage, ICraftingCPU rawCluster, long excessive= actual-need; if(excessive<=0)return; // if(!tokill.containsKey(d.getKey()))tokill.put((PatternDetail) d.getKey(), 0l); - tokill.merge((PatternDetail) d.getKey(),0l, (aa,bb)->aa+bb+excessive); + tokill.merge((PatternDetail) d.getKey(),excessive, Long::sum); return ; }); - + System.out.println(tokill); HashMap killnum=new HashMap(); tokill.forEach((a,b)->{ tasks.computeIfPresent(a, @@ -84,7 +84,7 @@ public void startCrafting(MECraftingInventory storage, ICraftingCPU rawCluster, IAEItemStack is=a.i[0].copy().setStackSize(1); - killnum.merge(is,0l, (ax,bx)->ax+bx+a.i[0].getStackSize()*b); + killnum.merge(is,a.i[0].getStackSize()*b, Long::sum); @@ -94,7 +94,7 @@ public void startCrafting(MECraftingInventory storage, ICraftingCPU rawCluster, ); }); - + System.out.println(killnum); // HashSet<> = tokill.keySet().stream().map(S->S.i[0]).collect(Collectors.toCollection(HashSet::new)); tasks.forEach((a,b)->{ @@ -117,12 +117,12 @@ public void startCrafting(MECraftingInventory storage, ICraftingCPU rawCluster, }); - /* tasks.forEach((s,b)->{ + tasks.forEach((s,b)->{ System.out.println(s+" "+MixinCallback.getter.apply(b)); - });*/ + }); // // System.out.println(killnum.get(AEItemStack.create(w.out))); diff --git a/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinWailaProvider.java b/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinWailaProvider.java index c0b1616..7afbcca 100644 --- a/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinWailaProvider.java +++ b/src/main/java/reobf/proghatches/main/mixin/mixins/eucrafting/MixinWailaProvider.java @@ -11,6 +11,7 @@ import appeng.integration.modules.waila.PartWailaDataProvider; import appeng.integration.modules.waila.part.IPartWailaDataProvider; import reobf.proghatches.eucrafting.PartEUP2PInterface; +import reobf.proghatches.eucrafting.PartEUSource; @Mixin(value =PartWailaDataProvider.class, remap = false, priority = 1) public class MixinWailaProvider { @@ -23,6 +24,7 @@ public class MixinWailaProvider { public void constructor(CallbackInfo a) { providers.add(new PartEUP2PInterface.WailaDataProvider()); + providers.add(new PartEUSource.WailaDataProvider()); } diff --git a/src/main/resources/assets/proghatches/lang/en_US.lang b/src/main/resources/assets/proghatches/lang/en_US.lang index 1bd8d97..ca21403 100644 --- a/src/main/resources/assets/proghatches/lang/en_US.lang +++ b/src/main/resources/assets/proghatches/lang/en_US.lang @@ -209,12 +209,12 @@ item.proghatches.part.eu.source.name=EU Source tile.proghatches.euinterface.name=EU Interface item.eu_token.name=Current packet item.eu_token.1.name=Current packet(Bound) -proghatches.eu.interface.hint.amp=Instantaneous/Actual(5s average)/Assigned Current +proghatches.eu.interface.hint.amp=Instantaneous/Sample/Assigned Current proghatches.eu.interface.hint.volt=Actual Voltage(min/max voltage since GUI open) proghatches.eu.interface.hint=Note:if expected Current > 0, better not modify the expected A/V listed above. proghatches.eu.interface.tooltip.volt.0=The expected voltage that the Interface should emit. proghatches.eu.interface.tooltip.volt.1=Level:%s %s -proghatches.eu.interface.tooltip.amp=The expected current that the Interface should emit. +proghatches.eu.interface.tooltip.amp=The max current that the Interface should emit. item.proghatch.cover.dedicated.2=Idle Detecting Cover item.proghatch.cover.dedicated.tooltips.2.0=Place on an input hatch/bus or a Single Block Machine to make it works like an Idle Detector. item.proghatch.cover.dedicated.tooltips.2.1=Will not block item/fluid/energy interaction. @@ -241,3 +241,13 @@ item.proghatch.cover.dedicated.3.tooltips.5sec.true=Keep signal for 5 sec item.proghatch.cover.dedicated.3.tooltips.5sec.false=Instantly trun off signal item.proghatch.cover.dedicated.3.tooltips.inputdetect.true=Detect if input is not empty item.proghatch.cover.dedicated.3.tooltips.inputdetect.false=Ignore inputs +proghatches.eu.interface.waila.V=Voltage:%dV +proghatches.eu.interface.waila.EA=Expected Current:%dA +proghatches.eu.interface.waila.AA=Sample/Assigned Current:%f/%dA +proghatches.eu.interface.waila.AAL=Uses total Sample Current%f%% +proghatches.eu.source.waila.V=Voltage:%dV +proghatches.eu.source.waila.A=Max Current:%dA +proghatches.eu.source.waila.AC=Providing Current:%dA +proghatches.eu.source.waila.AA=Sample Current:%fA +proghatches.eu.interface.waila.inputmissing=Failed to locate input side +proghatches.provider.waila=Providing Circuit: diff --git a/src/main/resources/assets/proghatches/lang/zh_CN.lang b/src/main/resources/assets/proghatches/lang/zh_CN.lang index 637812d..d2a8d4c 100644 --- a/src/main/resources/assets/proghatches/lang/zh_CN.lang +++ b/src/main/resources/assets/proghatches/lang/zh_CN.lang @@ -219,12 +219,12 @@ item.proghatches.part.eu.source.name=EU源 tile.proghatches.euinterface.name=EU接口 item.eu_token.name=电流封包 item.eu_token.1.name=电流封包(绑定) -proghatches.eu.interface.hint.amp=瞬时/平均(5秒平均)/已分配到电流 +proghatches.eu.interface.hint.amp=瞬时/采样/已分配到电流 proghatches.eu.interface.hint.volt=实际电压(GUI打开后统计的 最小/最大 值) proghatches.eu.interface.hint=注意:期望电流如果不为0时,应当避免更改期望值 proghatches.eu.interface.tooltip.volt.0=EU接口期望电压 proghatches.eu.interface.tooltip.volt.1=电压等级:%s %s -proghatches.eu.interface.tooltip.amp=EU接口期望电流 +proghatches.eu.interface.tooltip.amp=EU接口最大电流 item.proghatch.cover.dedicated.2=空闲检测覆盖板 item.proghatch.cover.dedicated.tooltips.2.0=放在任意输入仓室或单方块机器上以使其获得空闲检测器功能. item.proghatch.cover.dedicated.tooltips.2.1=不阻隔此面物品/流体/能量交互. @@ -270,3 +270,13 @@ item.proghatch.cover.dedicated.3.tooltips.5sec.true=保持信号5s item.proghatch.cover.dedicated.3.tooltips.5sec.false=立刻熄灭信号 item.proghatch.cover.dedicated.3.tooltips.inputdetect.true=检测输入是否非空 item.proghatch.cover.dedicated.3.tooltips.inputdetect.false=忽略输入 +proghatches.eu.interface.waila.V=电压:%dV +proghatches.eu.interface.waila.EA=期望电流:%dA +proghatches.eu.interface.waila.AA=采样电流/分配电流:%f/%dA +proghatches.eu.interface.waila.AAL=占总采样电流%f%% +proghatches.eu.source.waila.V=电压:%dV +proghatches.eu.source.waila.A=最大电流:%dA +proghatches.eu.source.waila.AC=提供电流:%dA +proghatches.eu.source.waila.AA=采样电流:%fA +proghatches.eu.interface.waila.inputmissing=无法定位输入端 +proghatches.provider.waila=提供电路: