From 9a7ee2199a9d1a87667c03b2c3875a4c8ac870e5 Mon Sep 17 00:00:00 2001 From: HbmMods Date: Sun, 5 Jul 2026 22:48:08 +0200 Subject: [PATCH 1/4] iced creams --- changelog | 1 + .../TileEntityPneumoStorageExporter.java | 5 ++++ src/main/resources/assets/hbm/lang/en_US.lang | 22 +++++++++--------- .../models/machines/supercomputer.png | Bin 2652 -> 7778 bytes 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/changelog b/changelog index 7ac809e1b..1a05839a3 100644 --- a/changelog +++ b/changelog @@ -83,3 +83,4 @@ * Fixed RoR gauge not using SI suffixes on values below 0 * Fixed AUTOCAL units not closing their GUI when the unit is destroyed * Fixed AUTOCAL's $buffer$ substitution not working +* Fixed meteorite sword localization still being broken diff --git a/src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumoStorageExporter.java b/src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumoStorageExporter.java index f0913de23..e2e0165ce 100644 --- a/src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumoStorageExporter.java +++ b/src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumoStorageExporter.java @@ -40,6 +40,8 @@ public class TileEntityPneumoStorageExporter extends TileEntityPneumaticMachineB public static final int MODE_FULL_REQUEST = 2; public boolean lastRedstone = false; + + public int[] SLOT_ACCESS = new int[] {9, 10, 11, 12, 13, 14, 15, 16, 17}; public TileEntityPneumoStorageExporter() { super(18); @@ -50,6 +52,9 @@ public class TileEntityPneumoStorageExporter extends TileEntityPneumaticMachineB return "container.pneumoStorageExporter"; } + @Override public boolean canExtractItem(int slot, ItemStack itemStack, int side) { return slot >= 9; } + @Override public int[] getAccessibleSlotsFromSide(int side) { return SLOT_ACCESS; } + @Override public void updateEntity() { super.updateEntity(); diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 1a30570d7..dc5e332c1 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3287,27 +3287,27 @@ item.meteor_remote.name=Meteorite Remote item.meteorite_sword.name=Meteorite Sword item.meteorite_sword.desc=Forged from a fallen star$Sharper than most terrestrial blades item.meteorite_sword_seared.name=Meteorite Sword (Seared) -item.meteorite_sword.seared.desc=Fire strengthens the blade$Making it even more powerful +item.meteorite_sword_seared.desc=Fire strengthens the blade$Making it even more powerful item.meteorite_sword_reforged.name=Meteorite Sword (Reforged) -item.meteorite_sword.reforged.desc=The sword has been reforged$To rectify past imperfections +item.meteorite_sword_reforged.desc=The sword has been reforged$To rectify past imperfections item.meteorite_sword_hardened.name=Meteorite Sword (Hardened) -item.meteorite_sword.hardened.desc=Extremely high pressure has been used$To harden the blade further +item.meteorite_sword_hardened.desc=Extremely high pressure has been used$To harden the blade further item.meteorite_sword_alloyed.name=Meteorite Sword (Alloyed) -item.meteorite_sword.alloyed.desc=Cobalt fills the fissures$Strengthening the sword +item.meteorite_sword_alloyed.desc=Cobalt fills the fissures$Strengthening the sword item.meteorite_sword_machined.name=Meteorite Sword (Machined) -item.meteorite_sword.machined.desc=Advanced machinery was used$To refine the blade even more +item.meteorite_sword_machined.desc=Advanced machinery was used$To refine the blade even more item.meteorite_sword_treated.name=Meteorite Sword (Treated) -item.meteorite_sword.treated.desc=Chemicals have been applied$Making the sword more powerful +item.meteorite_sword_treated.desc=Chemicals have been applied$Making the sword more powerful item.meteorite_sword_etched.name=Meteorite Sword (Etched) -item.meteorite_sword.etched.desc=Acids clean the material$To make this the perfect sword +item.meteorite_sword_etched.desc=Acids clean the material$To make this the perfect sword item.meteorite_sword_bred.name=Meteorite Sword (Bred) -item.meteorite_sword.bred.desc=Immense heat and radiation$Compress the material +item.meteorite_sword_bred.desc=Immense heat and radiation$Compress the material item.meteorite_sword_irradiated.name=Meteorite Sword (Irradiated) -item.meteorite_sword.irradiated.desc=The power of the Atom$Gives the sword might +item.meteorite_sword_irradiated.desc=The power of the Atom$Gives the sword might item.meteorite_sword_fused.name=Meteorite Sword (Fused) -item.meteorite_sword.fused.desc=This blade has met$With the forces of the stars +item.meteorite_sword_fused.desc=This blade has met$With the forces of the stars item.meteorite_sword_baleful.name=Meteorite Sword (Baleful) -item.meteorite_sword.baleful.desc=This sword has met temperatures$Far beyond what normal material can endure +item.meteorite_sword_baleful.desc=This sword has met temperatures$Far beyond what normal material can endure item.mike_cooling_unit.name=Deuterium Cooling Unit item.mike_core.name=Uranium Coated Deuterium Tank item.mike_deut.name=Deuterium Tank diff --git a/src/main/resources/assets/hbm/textures/models/machines/supercomputer.png b/src/main/resources/assets/hbm/textures/models/machines/supercomputer.png index 0095b0695979a82db0bf4c0af56ad1311edff535..23f523d4ac00c8e1dfcece1b528a048ebe95c3ec 100644 GIT binary patch literal 7778 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 From c31ec9e08b374cfd7b00cfc1aeaedfaa1c2a028c Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 6 Jul 2026 16:48:43 +0200 Subject: [PATCH 2/4] ough --- changelog | 3 ++- .../java/com/hbm/entity/mob/EntityMaskMan.java | 17 +++++------------ .../entity/mob/ai/EntityAIMaskmanMinigun.java | 8 +++----- .../hbm/handler/BulletConfigSyncingUtil.java | 2 -- .../com/hbm/handler/guncfg/GunNPCFactory.java | 15 --------------- .../java/com/hbm/inventory/gui/GUIRadioRec.java | 2 +- .../TileEntityPneumaticStorageBase.java | 2 +- 7 files changed, 12 insertions(+), 37 deletions(-) diff --git a/changelog b/changelog index 1a05839a3..e80502e33 100644 --- a/changelog +++ b/changelog @@ -11,7 +11,7 @@ * Filters can be set using items or RoR commands * Requests can be configured to take as much as possible, to only take full stacks, or to only take full requests * In combination with assembler recipe switching, using RoR logic, this means that on-demand recipe automation is now possible - * The budget didn't cover actually testing this so uh, you go figure it out + * Still in testing, there's no recpes for any of the parts yet ## Changed * Updated chinese localization @@ -84,3 +84,4 @@ * Fixed AUTOCAL units not closing their GUI when the unit is destroyed * Fixed AUTOCAL's $buffer$ substitution not working * Fixed meteorite sword localization still being broken +* Fixed missing localization on the FM radio diff --git a/src/main/java/com/hbm/entity/mob/EntityMaskMan.java b/src/main/java/com/hbm/entity/mob/EntityMaskMan.java index 64e1658c0..c29a6ce1d 100644 --- a/src/main/java/com/hbm/entity/mob/EntityMaskMan.java +++ b/src/main/java/com/hbm/entity/mob/EntityMaskMan.java @@ -92,25 +92,18 @@ public class EntityMaskMan extends EntityMob implements IBossDisplayData, IRadia } @Override - public void onDeath(DamageSource p_70645_1_) { - super.onDeath(p_70645_1_); + public void onDeath(DamageSource source) { + super.onDeath(source); - List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, this.boundingBox.expand(50, 50, 50)); + List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, this.boundingBox.expand(100, 100, 100)); for(EntityPlayer player : players) { player.triggerAchievement(MainRegistry.bossMaskman); } } - @Override - public boolean isAIEnabled() { - return true; - } - - @Override - protected boolean canDespawn() { - return false; - } + @Override public boolean isAIEnabled() { return true; } + @Override protected boolean canDespawn() { return false; } @Override protected void dropFewItems(boolean bool, int i) { diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanMinigun.java b/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanMinigun.java index 3d451b9d5..94f38d363 100644 --- a/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanMinigun.java +++ b/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanMinigun.java @@ -1,7 +1,7 @@ package com.hbm.entity.mob.ai; -import com.hbm.entity.projectile.EntityBulletBaseNT; -import com.hbm.handler.BulletConfigSyncingUtil; +import com.hbm.entity.projectile.EntityBulletBaseMK4; +import com.hbm.items.weapon.sedna.factory.XFactory762mm; import net.minecraft.entity.EntityCreature; import net.minecraft.entity.EntityLivingBase; @@ -51,11 +51,9 @@ public class EntityAIMaskmanMinigun extends EntityAIBase { if(timer <= 0) { timer = delay; - EntityBulletBaseNT bullet = new EntityBulletBaseNT(owner.worldObj, BulletConfigSyncingUtil.MASKMAN_BULLET, owner, target, 1.0F, 0); + EntityBulletBaseMK4 bullet = new EntityBulletBaseMK4(this.owner, XFactory762mm.r762_fmj, 5F, 0.05F, 0, 0, 0); // TODO: test the offsets owner.worldObj.spawnEntityInWorld(bullet); owner.playSound("hbm:weapon.calShoot", 1.0F, 1.0F); } - - this.owner.rotationYaw = this.owner.rotationYawHead; } } diff --git a/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java index bf9cddaa0..893eaa866 100644 --- a/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java +++ b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java @@ -16,7 +16,6 @@ public class BulletConfigSyncingUtil { public static int TURBINE = i++; - public static int MASKMAN_BULLET = i++; public static int MASKMAN_ORB = i++; public static int MASKMAN_BOLT = i++; public static int MASKMAN_ROCKET = i++; @@ -32,7 +31,6 @@ public class BulletConfigSyncingUtil { configSet.put(TURBINE, GunEnergyFactory.getTurbineConfig()); - configSet.put(MASKMAN_BULLET, GunNPCFactory.getMaskmanBullet()); configSet.put(MASKMAN_ORB, GunNPCFactory.getMaskmanOrb()); configSet.put(MASKMAN_BOLT, GunNPCFactory.getMaskmanBolt()); configSet.put(MASKMAN_ROCKET, GunNPCFactory.getMaskmanRocket()); diff --git a/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java b/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java index d6ffd12f6..995625114 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java @@ -93,21 +93,6 @@ public class GunNPCFactory { return bullet; } - public static BulletConfiguration getMaskmanBullet() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.coin_maskman); - bullet.spread = 0.0F; - bullet.dmgMin = 5; - bullet.dmgMax = 10; - bullet.leadChance = 15; - bullet.style = BulletConfiguration.STYLE_FLECHETTE; - bullet.vPFX = "bluedust"; - - return bullet; - } - public static BulletConfiguration getMaskmanTracer() { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); diff --git a/src/main/java/com/hbm/inventory/gui/GUIRadioRec.java b/src/main/java/com/hbm/inventory/gui/GUIRadioRec.java index 7c3184bc4..299785a2a 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIRadioRec.java +++ b/src/main/java/com/hbm/inventory/gui/GUIRadioRec.java @@ -65,7 +65,7 @@ public class GUIRadioRec extends GuiScreen { private void drawGuiContainerForegroundLayer(int x, int y) { - String name = I18nUtil.resolveKey("container.radio"); + String name = I18nUtil.resolveKey("container.radiorec"); this.fontRendererObj.drawString(name, this.guiLeft + this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, this.guiTop + 6, 4210752); if(guiLeft + 137 <= x && guiLeft + 137 + 18 > x && guiTop + 17 < y && guiTop + 17 + 18 >= y) { diff --git a/src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumaticStorageBase.java b/src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumaticStorageBase.java index c9dca5229..3e4ab8c74 100644 --- a/src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumaticStorageBase.java +++ b/src/main/java/com/hbm/tileentity/network/pneumatic/TileEntityPneumaticStorageBase.java @@ -86,7 +86,7 @@ public abstract class TileEntityPneumaticStorageBase extends TileEntityMachineBa } if(this.compair.getFill() > 0) { - int consumption = (int) Math.ceil(this.compair.getFill() * 17 / this.compair.getMaxFill()) + 3; + int consumption = (int) Math.ceil(this.compair.getFill() * 9 / this.compair.getMaxFill()) + 1; this.compair.setFill(Math.max(this.compair.getFill() - consumption, 0)); } From daf1275fc246bc371cab3fe77fee63657f24eafd Mon Sep 17 00:00:00 2001 From: HbmMods Date: Mon, 6 Jul 2026 22:46:45 +0200 Subject: [PATCH 3/4] =?UTF-8?q?=C3=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/mob/ai/EntityAIMaskmanMinigun.java | 2 +- .../gui/processing/gui_supercomputer.png | Bin 0 -> 4136 bytes .../gui/reactors/gui_fusion_breeder.png | Bin 2752 -> 3183 bytes .../gui/reactors/gui_fusion_klystron.png | Bin 3391 -> 3638 bytes .../gui/reactors/gui_fusion_torus.png | Bin 4931 -> 5379 bytes 5 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 src/main/resources/assets/hbm/textures/gui/processing/gui_supercomputer.png diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanMinigun.java b/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanMinigun.java index 94f38d363..f0dca734a 100644 --- a/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanMinigun.java +++ b/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanMinigun.java @@ -51,7 +51,7 @@ public class EntityAIMaskmanMinigun extends EntityAIBase { if(timer <= 0) { timer = delay; - EntityBulletBaseMK4 bullet = new EntityBulletBaseMK4(this.owner, XFactory762mm.r762_fmj, 5F, 0.05F, 0, 0, 0); // TODO: test the offsets + EntityBulletBaseMK4 bullet = new EntityBulletBaseMK4(this.owner, XFactory762mm.r762_fmj, 5F, 0.075F, -1.5, -1.5, 0); owner.worldObj.spawnEntityInWorld(bullet); owner.playSound("hbm:weapon.calShoot", 1.0F, 1.0F); } diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_supercomputer.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_supercomputer.png new file mode 100644 index 0000000000000000000000000000000000000000..a68dda7ab3cc93e4605826eb7d08c1afac99cdf5 GIT binary patch literal 4136 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 D1_ggS literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_breeder.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_breeder.png index 4510d8219f1fec86530bd32e34a690bb3bcfce9c..eb981107dcd07ded6a3c4e510e071eff24bc497b 100644 GIT binary patch literal 3183 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 Gp7}enTBd#g diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_klystron.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_klystron.png index d26b84bdb451d9e37e7d8b9cfc7866109771e9a4..b1da9e7743de676befbd8b0a0a92b7976f1d7d06 100644 GIT binary patch delta 3316 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 WIo%uAJf`)_BIHFo%gPJhfBqK)Gi>Yt delta 3076 zcmYjTc|26>A3ifpA-h47J;qW=lrm!%cQm$;MuaRCTF9DgXQX@eE9(rQEG=}>9Q7 zE5x{QZIdl#Fh~r>HU`b`n|}A7-}~QrKJW9q&wHNpdA{epLbF`@X;5SnYh~dQmA6E@ z5Fqa_M_Dc0@xLG}RT?~4Jklp?#X41YD;8^0Uu5z@08X_PKX_YQ*oXL?kXNlEEpn&j z_r>c@N43AT5gZ8~$xQ8mzsZOC7j;fGA(U-JX&0Y&E6p5cHh(AG!1QwVX;kaS^P<-N z>iyYcMDmge@9AHZjs+D?cSU&L$R4Q;~x?ato z$8kn%p>7*_H^#Tr=htSt2DX$6I?{5tLg(P~MTfjmNB-1vPvb(Nl*%UiMP^nY{DJ|)qbx4YG4a4dq424D?{`qZc%BQHB zsILzdeB}(5o+rE=T(HB4nL9HOkeLcjwyFjmm5xf^@9-IRmqj4p#2Dn9XXH{!j%cX5Km+Q>Hg}!+h3XTV(y)zDQ=QTBx@Z5Y-t)085ubs26<#G zFxeQ-Yb=_I0NiBI5aXy7a|(q*=QwG=5^9aX7`djC<%2if>1KtW;{)w?j!iQG=-yyc z8;CuYWfLcA`a|8~bwA>xXy-xm?!5J`U{zjh@H7}$F}I!F6}=w*o_YI$U>@*gwwj;Y zL|9OwzbSBEX4nuLDCzg`{uDqfYD|L~L03zuV}XVzMrEF_3S5TK^j5dY{0F9Y=F z+sCkX-LiK)0m6Z5mDC6zn15sC;oyxk+>@qTW88{;2p65~z|PLP4?~cT+wHLmwCHxOWU4sxH(HczV+E$1O(jeO02as2bANsHb;gTjl$^$7p(yw ze~u?rLtyf#8n6caC%Z}im)ZD0Kc-y%b#?{-dl*Ng?7(%3A&ScXtz3>@O@SBHV zrYjPUkdA*I343&`k^`L)6;e6S(;H}wFUi?w9*_*Iom?=)e^iBh#!H&->OubprJ;d` z9fB%*2#AV42H2)30O$N*>0mM-A*Y7t`iTKA^`M<*7(g%u{6!ML_wl1wR{NL4m(>y$ z7LL9%#j9;Ix8jp*_$GI77q2OY0eBz&^Fbr%^+J+jLVVq*^zGe2y|Iaj3q~+I$Fji@ z$p8^4K;=6CP;>SHB7Ta1H$n~gq{|1|5D?%GJplmGAqeOuqxm3)uLgGiLZSSvd{f%m z+9kNMV#Nchst^_FNZ2#@-U;aeu_K~LyrAjM%2KT*pn6|t2>^ez3iqZvs4m;C@~AEUUQvLk7aI|%{00U^Fu{#j3F(SSAK;B
*1n!Np~x1nSiknBZD z4}Vnl!>@SO`)xnIkv>Al?-PaYZL6( zL|f-}%~m_q*EjW_AE&%Lz5yEIBgr&QR#6N6pNjE8;jXt{mp6|^lG3te*%u?+%r0e< zDVyEbU5?4bZI1fWIZY|xK$sKbesyh$(cpF3s^o=W5hCM})P?kQxPF0dkhp0GbI2~W zM(2O^6la1dcFrB;MUz6oIIk)uyV2e3Y?Gf&#hc-uaj`=yI9Je>;t=4~7+y-ED0Atq z#)mp6VKtfsnx>4y(nVA1A@Sn~j7jRk%*?gLTS-Yt|4~e;{3PW4Zk0^1flh0@N0x@I zmXPk14Kw40$;u~BM7OalrlT9quf`go3p9^R=Vqqgh>L&VCAS?Cvmz9|mn&ofO>fNl zY=58z0oh;&rGc`8jROisE$R`+x&Po!yO89y3To)hY`@smjULN~3p_Z=EXX)SBO!*f zJWpL(S~jQ;x}U;MWHk@(>_q$WU*T8eWC`7LQScM3s{PCq?Mj^Cp)~ywmZE~fc>>PW z^=ENCpD`k+U5bcwOVO z^!fxT$q0p7`J?q7i_R`!(H9Jj;$!_0CzOJ7@-w2OjLoq2(8ii|s@%y~ZB4JvbXe75}c2a@OZ zo7Yb+T!|ZQNo*aT6O->{=Bv?epV91qV+i1!CN^=-w6ie@OWEJ_#Mfy-=tX~kbaXR! z*Q0E7aWm9s{M26d>@ZKakm?PL2~I%UC^r zYt>3`iL=E6<+5P9+HA!Ht{B+$q@B@sy`#2Ju^!#=;nvuT6rK5~2c7Q5K3gVxAjBHGw=lbGiRd z#cX|sg^~;sJ?78Kd)9upnX}yD#8F~T);4qgHjmX3BvjYe&zS`2%YlS`@dF`y0dxHS zqtn56{iN_nG`~ON_&x4?9`Nj8FjnXx*xbG?&z_Esj^tMfm!8Tu>-%oyGgwOP8v+Kt z8r^5(fnUqpx=%<#V>bPe-SW1?4D!BkIKKRfn_I?t=*4ZC#KVp>k5L*e3sL1TYhbyl z4m|y#${fE`Bsp|w#}2+w1A%lWeKpv>KV6AfDXdDoDk_MQ-6kfO?s3;UEy^n@0zt4a zR7*1)9sF?>GZU))c=mP6(9n=7kNf@mn@tYqXj168>^8DX+msa1M^u%_5|K53*ZC9j ziy9VoI#eao5}jkxT=;yMKQb;4tWXkb)FfuFz07M-OxWDqL}F7gmTOmg|M9U_`I7r2 zbVO21;XBbu^b}u6K-uqKP(sWI>eS*?XQpYBMw;qcS<6)s8)rm7i9UJQI%k>wNJEHB``n5LHBu z5O+o34wzq)*wy=&1qm@S)K91C_`ClT$uU}9QKoL^!?erG%TfHC@;tm#VfhLnXV0FM z5`sOFhvTWgqtOnFPQc$UR`(J6MeT``qWcl)K6?T|#SRu*7My`!Sz&*3u&O-g{oudk CsqL-+ diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_torus.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_torus.png index 48b84ef87f121b9caadb58081697690414b47a0e..edd94f252e17b9aa37971aed054e1eafd0fd79e2 100644 GIT binary patch literal 5379 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 XDAf)98p!-927sQHk!G2Oee{0;xq>!C From fd3a8147ec0cd1bfd01982a111564f00ccd10b58 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 7 Jul 2026 13:21:23 +0200 Subject: [PATCH 4/4] MS-ES v1.1 documentation --- .../inventory/gui/GUIScreenRadioAUTOCAL.java | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenRadioAUTOCAL.java b/src/main/java/com/hbm/inventory/gui/GUIScreenRadioAUTOCAL.java index 3344dec11..b27f2e7bb 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenRadioAUTOCAL.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenRadioAUTOCAL.java @@ -234,9 +234,17 @@ public class GUIScreenRadioAUTOCAL extends GuiScreen { "", "Example: `/ntmserver set AUTOCAL_MAX_CLOCK 10` -> Sets the max clock speed to 10.", "", + "## About MS-ES v1.1", + "MS-ES v1.1 (or MS-ES1 FEID, \"First Extended Instruction Set\") is the second released version of the AUTOCAL's script interpreter. It features various useful additions such as text splitting, substrings, a stack-based buffer and world time grabbing. The stack for example allows for a call stack, which means that functions that were jumped to can now be nested without having to save the most recent jumping points in dedicated variables. The string split and substring operations now allow for reversing concat operations and potentially grabbing individual coordinates out of combined coordinate strings. A single RoR send operation can now send serialized data (i.e. multiple values in a single text string) which can now finally be de-serialized again.", + "", + "Programs witten in MS-ES1 are largely compatible with MS-ES1.1 interpreters, however, MS-ES1.1 now imposes a character limit of 256 on buffered values.", + "", "## About the Buffer", "The buffer is a single \"slot\" of information that can be used for many commands. Some commands produce an output which is saved to the buffer, some commands modify the contents of the buffer, and some commands use the buffer's contents. The buffer's contents can also be saved permanently as a named variable, and named variables can be written back into the buffer again if needed. The buffer persists as long as the AUTOCAL unit is running, should it restart or shut down, the buffer's contents are lost.", "", + "## About the Stack (v1.1)", + "The stack functions similar to the buffer, as in there is only one single stack that can be accessed per AUTOCAL unit, and it can save arbitrary text data. The difference being, while the buffer can only store one value, the stack can store a list of up to 256 values. Values on a stack follow the last-in-first-out principle, i.e. the most recently added values are read first. The stack supports `push` (adding new elements), `pop` (reading and removing elements) and `peek` (reading but not removing elements).", + "", "## About Variables", "MS-ES1 allows named variables to be saved for later use. There is no limit to how many variables can be saved. All variables are text (\"Strings\"), however depending on the command and context, that text may be interpreted as a number (both full and decimal). Variables, much like the buffer, are also stored as long as the program is running, if the AUTOCAL unit shuts down, all stored variables are lost.", "", @@ -325,6 +333,15 @@ public class GUIScreenRadioAUTOCAL extends GuiScreen { "", "-> Will buffer the value `Horseshoe` and then save it to the variable called \"item\".", "", + "### push (v1.1)", + "`push [value]` will add the supplied value to the stack. If no value is supplied, it will write the buffer's contents to the stack instead. Do note that the stack can only hold up to 256 values! Supports variable substitution!", + "", + "### pop (v1.1)", + "`pop` will remove the most recently added value from the stack and write it to the buffer.", + "", + "### peek (v1.1)", + "`peek` will write the most recently added value from the stack to the buffer, but without removing it from the stack like `pop` would.", + "", "### eval", "`eval [statement]` will evaluate the supplied statement as a mathematical expression. In short, anything NTM's calculator can make sense of (the one you open with N by default), this function can do the same. The statement is optional, if no statement is supplied, then it will try to use the buffer's contents as the statement. `eval` produces **decimal** values and not whole number **integers**, so for use in RoR signals, the output needs to be rounded! The result of the calculation is then saved to the buffer. Supports variable substitution!", "", @@ -387,6 +404,54 @@ public class GUIScreenRadioAUTOCAL extends GuiScreen { "### leb", "`leb ` - less than or equal buffer.", "", + "### splitter (v1.1)", + "`splitter ` sets the splitter character (or text) which is used for splitting operations. This value exists once per AUTOCAL, similar to the clockspeed. By default, the splitter is set to `;`. Supports variable substitution!", + "", + "### split (v1.1)", + "`split ` will split the buffer's contents, grab the fragment with the desired index, and write its contents to the buffer.", + "", + "Example:", + "`buffer cats;and;dogs`", + "`split 3`", + "", + "-> Will buffer the value of the third fragment, being `dogs`.", + "", + "### splitcount (v1.1)", + "`splitcount` will split the buffer's contents, count the number of fragments created, and write that value to the buffer.", + "", + "Example:", + "`buffer cats;and;dogs;and;birds`", + "`splitcount`", + "", + "-> Will buffer the number of fragments, being `5`.", + "", + "### length (v1.1)", + "`length` will count the number of characters in the buffer's stored text, and write that value to the buffer.", + "", + "Example:", + "`buffer cats and dogs`", + "`lenght`", + "", + "-> Will buffer the number of characters in `cats and dogs`, being `13`.", + "", + "### first (v1.1)", + "`first ` will grab the first x characters from the buffer and write them to the buffer. This is a substring operation that always starts at the first letter.", + "", + "Example:", + "`buffer cats and dogs`", + "`first 4`", + "", + "-> Will buffer the first four characters of the buffer, `cats`.", + "", + "### last (v1.1)", + "`last ` will grab the last x characters from the buffer and write them to the buffer. This is a substring operation that always ends at the last letter.", + "", + "Example:", + "`buffer cats and dogs`", + "`last 4`", + "", + "-> Will buffer the last four characters of the buffer, `dogs`.", + "", "### send", "`send ` will send a Redstone-over-Radio signal over the supplied channel, with the signal's value being the current buffer's value. Sending repeatedly over the same channel requires waiting for a full game tick, so using `endtick` after sending is advised. Supports variable substitution!", "", @@ -412,6 +477,12 @@ public class GUIScreenRadioAUTOCAL extends GuiScreen { "", "-> Will take the signal from the RoR channel \"input\", multiply it by 100, and send that value on the channel \"output\".", "", + "### poll (v1.1)", + "`poll ` will listen to the supplied RoR channel and write the signal to the buffer. Unlike `listen`, it will only detect signals from the last tick. Supports variable substitution!", + "", + "### worldtime (v1.1)", + "`worldtime` will save the amount of ticks since world creation to the buffer. If the result is saved to a variable, it can be compared later, allowing for precise and clockspeed-agnostic timers.", + "", "## Advanced", "", "### Conditional Branches",