Merge branch 'HbmMods:master' into rulang121

This commit is contained in:
Raaaaaaaaaay 2026-07-08 08:56:33 +03:00 committed by GitHub
commit 3b270f8a9f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
27 changed files with 6741 additions and 4079 deletions

View File

@ -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

View File

@ -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<EntityPlayer> players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, this.boundingBox.expand(50, 50, 50));
List<EntityPlayer> 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) {

View File

@ -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.075F, -1.5, -1.5, 0);
owner.worldObj.spawnEntityInWorld(bullet);
owner.playSound("hbm:weapon.calShoot", 1.0F, 1.0F);
}
this.owner.rotationYaw = this.owner.rotationYawHead;
}
}

View File

@ -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());

View File

@ -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();

View File

@ -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) {

View File

@ -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 <value>` - less than or equal buffer.",
"",
"### splitter (v1.1)",
"`splitter <value>` 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 <index>` 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 <amount>` 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 <amount>` 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 <channel>` 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 <channel>` 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",

View File

@ -61,7 +61,7 @@ public class ResourceManager {
//Landmines
public static final IModelCustom mine_ap = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/ap_mine.obj")).asVBO();
public static final IModelCustom mine_marelet = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/marelet.obj")).asVBO();
public static final IModelCustom mine_fat = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mine_fat.obj"));
public static final IModelCustom mine_fat = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/bombs/mine_fat.obj"));
public static final IModelCustom mine_naval = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/naval_mine.obj")).asVBO();
//Oil Pumps
@ -469,7 +469,7 @@ public class ResourceManager {
//public static final ResourceLocation mine_he_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_he.png");
public static final ResourceLocation mine_marelet_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_marelet.png");
public static final ResourceLocation mine_shrap_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_shrapnel.png");
public static final ResourceLocation mine_fat_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_fat.png");
public static final ResourceLocation mine_fat_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_fat.png");
public static final ResourceLocation mine_naval_tex = new ResourceLocation(RefStrings.MODID, "textures/models/NMine.png");

View File

@ -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));
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 595 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 623 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 538 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 557 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 582 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 620 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 605 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 635 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB