every step we take that's synchronized

This commit is contained in:
Boblet 2025-09-12 11:03:27 +02:00
parent 4a4606e6ed
commit c0cb28c2ad
8 changed files with 51 additions and 51 deletions

View File

@ -1,9 +1,20 @@
## Added
* New assembly factory
* Once again four recipe units at double the base speed
* Upgrades and stats are identical to the chemical factory
* Comes with an improved version of the old assemfac animations
## Changed
* Updated chinese localization
* Added more QMAW manual pages
* WIAJ presentations now use the same configurable keybind as QMAW
* Shift has to be held for the presentations, while F1 will open the standard QMAW page
* Double UZIs no longer render weirdly when dropped
* Added keyboard controls to the recipe selector's scroll function
* Up and down keys scroll by one line
* PgUp and PgDown scroll by 5 lines (full page)
* Pos1 and End keys scroll to the top and bottom of the list respectively
* C4, like semtex, is now edible
## Fixed
* Fixed fusion reactor item IO being broken

View File

@ -27,6 +27,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.MathHelper;
import net.minecraft.util.ResourceLocation;
public class GUIScreenRecipeSelector extends GuiScreen {
@ -326,6 +327,15 @@ public class GUIScreenRecipeSelector extends GuiScreen {
return;
}
if(keyCode == Keyboard.KEY_UP) pageIndex--;
if(keyCode == Keyboard.KEY_DOWN) pageIndex++;
if(keyCode == Keyboard.KEY_PRIOR) pageIndex -= 5;
if(keyCode == Keyboard.KEY_NEXT) pageIndex += 5;
if(keyCode == Keyboard.KEY_HOME) pageIndex = 0;
if(keyCode == Keyboard.KEY_END) pageIndex = size;
pageIndex = MathHelper.clamp_int(pageIndex, 0, size);
if(keyCode == 1 || keyCode == this.mc.gameSettings.keyBindInventory.getKeyCode()) {
FMLCommonHandler.instance().showGuiScreen(previousScreen);
}

View File

@ -793,29 +793,6 @@ import net.minecraft.item.ItemStack;
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_BOARD)
}, 100);
makeRecipe(new ComparableStack(ModBlocks.machine_assemfac, 1), new AStack[] {
!exp ? new OreDictStack(STEEL.ingot(), 48) : new OreDictStack(STEEL.heavyComp(), 2),
new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8),
new OreDictStack(B.ingot(), 4),
new OreDictStack(RUBBER.ingot(), 16),
new OreDictStack(KEY_ANYPANE, 64),
new ComparableStack(ModItems.motor, 18),
new OreDictStack(W.bolt(), 16),
new OreDictStack(STEEL.pipe(), 8),
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC)
}, 400);
makeRecipe(new ComparableStack(ModBlocks.machine_chemical_factory, 1), new AStack[] {
new OreDictStack(DURA.ingot(), 16),
new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8),
new OreDictStack(RUBBER.ingot(), 16),
new OreDictStack(STEEL.shell(), 12),
new OreDictStack(CU.pipe(), 8),
new ComparableStack(ModItems.motor_desh, 4),
new ComparableStack(ModItems.coil_tungsten, 16),
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC)
}, 400);
makeRecipe(new ComparableStack(ModItems.missile_shuttle, 1), new AStack[] {
new ComparableStack(ModItems.missile_generic, 2),
new ComparableStack(ModItems.missile_strong, 1),

View File

@ -338,6 +338,9 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
this.register(new GenericRecipe("ass.strandcaster").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_strand_caster, 1))
.inputItems(new ComparableStack(ModItems.ingot_firebrick, 16), new OreDictStack(STEEL.plateCast(), 6), new OreDictStack(CU.plateWelded(), 2), new OreDictStack(STEEL.shell(), 2), new OreDictStack(ANY_CONCRETE.any(), 8))
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.HEAVY_FRAME), new ComparableStack(ModItems.ingot_firebrick, 16), new OreDictStack(STEEL.shell(), 4), new OreDictStack(ANY_CONCRETE.any(), 8)));
this.register(new GenericRecipe("ass.assemfac").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_assembly_factory, 1))
.inputItems(new OreDictStack(DURA.ingot(), 16), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(B.ingot(), 8), new OreDictStack(STEEL.shell(), 4), new ComparableStack(ModItems.motor, 12), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC))
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.HEAVY_FRAME), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 16), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(B.ingot(), 8), new OreDictStack(STEEL.shell(), 4), new ComparableStack(ModItems.motor, 24), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.CIRCUIT)));
this.register(new GenericRecipe("ass.chemfac").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_chemical_factory, 1))
.inputItems(new OreDictStack(DURA.ingot(), 16), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(STEEL.shell(), 12), new OreDictStack(CU.pipe(), 8), new ComparableStack(ModItems.motor_desh, 4), new ComparableStack(ModItems.coil_tungsten, 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC))
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.HEAVY_FRAME), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 16), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(STEEL.shell(), 12), new OreDictStack(CU.pipe(), 16), new ComparableStack(ModItems.motor_desh, 16), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.CIRCUIT)));

View File

@ -2316,7 +2316,7 @@ public class ModItems {
lithium = new Item().setUnlocalizedName("lithium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":lithium");
ingot_zirconium = new Item().setUnlocalizedName("ingot_zirconium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_zirconium");
ingot_semtex = new ItemLemon(4, 5, true).setUnlocalizedName("ingot_semtex").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_semtex");
ingot_c4 = new Item().setUnlocalizedName("ingot_c4").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_c4");
ingot_c4 = new ItemLemon(4, 5, true).setUnlocalizedName("ingot_c4").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_c4");
ingot_phosphorus = new Item().setUnlocalizedName("ingot_phosphorus").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_phosphorus");
coil_advanced_alloy = new Item().setUnlocalizedName("coil_advanced_alloy").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_advanced_alloy");
coil_advanced_torus = new Item().setUnlocalizedName("coil_advanced_torus").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_advanced_torus");

View File

@ -71,7 +71,7 @@ public class TileEntityMachineAssemblyFactory extends TileEntityMachineBase impl
super(60);
animations = new TragicYuri[2];
for(int i = 0; i < animations.length; i++) animations[i] = new TragicYuri();
for(int i = 0; i < animations.length; i++) animations[i] = new TragicYuri(i);
this.inputTanks = new FluidTank[4];
this.outputTanks = new FluidTank[4];
@ -171,7 +171,7 @@ public class TileEntityMachineAssemblyFactory extends TileEntityMachineBase impl
boolean markDirty = false;
for(int i = 0; i < 4; i++) {
this.assemblerModule[i].update(speed * 2D, pow * 2D, canCool(), slots[4 + i * 7]);
this.assemblerModule[i].update(speed * 2D, pow * 2D, canCool(), slots[4 + i * 14]);
this.didProcess[i] = this.assemblerModule[i].didProcess;
markDirty |= this.assemblerModule[i].markDirty;
@ -204,7 +204,7 @@ public class TileEntityMachineAssemblyFactory extends TileEntityMachineBase impl
}
}
for(TragicYuri animation : animations) animation.update(true || didProcess[0] ||didProcess[1] ||didProcess[2] ||didProcess[3]);
for(TragicYuri animation : animations) animation.update(didProcess[0] ||didProcess[1] ||didProcess[2] ||didProcess[3]);
if(worldObj.getTotalWorldTime() % 20 == 0) {
frame = !worldObj.getBlock(xCoord, yCoord + 3, zCoord).isAir(worldObj, xCoord, yCoord + 3, zCoord);
@ -246,17 +246,6 @@ public class TileEntityMachineAssemblyFactory extends TileEntityMachineBase impl
new DirPos(xCoord + 0, yCoord, zCoord - 3, Library.NEG_Z),
new DirPos(xCoord + 2, yCoord, zCoord - 3, Library.NEG_Z),
new DirPos(xCoord + dir.offsetX * 2 + rot.offsetX * 2, yCoord + 3, zCoord + dir.offsetZ * 2 + rot.offsetZ * 2, Library.POS_Y),
new DirPos(xCoord + dir.offsetX * 1 + rot.offsetX * 2, yCoord + 3, zCoord + dir.offsetZ * 1 + rot.offsetZ * 2, Library.POS_Y),
new DirPos(xCoord + dir.offsetX * 0 + rot.offsetX * 2, yCoord + 3, zCoord + dir.offsetZ * 0 + rot.offsetZ * 2, Library.POS_Y),
new DirPos(xCoord - dir.offsetX * 1 + rot.offsetX * 2, yCoord + 3, zCoord - dir.offsetZ * 1 + rot.offsetZ * 2, Library.POS_Y),
new DirPos(xCoord - dir.offsetX * 2 + rot.offsetX * 2, yCoord + 3, zCoord - dir.offsetZ * 2 + rot.offsetZ * 2, Library.POS_Y),
new DirPos(xCoord + dir.offsetX * 2 - rot.offsetX * 2, yCoord + 3, zCoord + dir.offsetZ * 2 - rot.offsetZ * 2, Library.POS_Y),
new DirPos(xCoord + dir.offsetX * 1 - rot.offsetX * 2, yCoord + 3, zCoord + dir.offsetZ * 1 - rot.offsetZ * 2, Library.POS_Y),
new DirPos(xCoord + dir.offsetX * 0 - rot.offsetX * 2, yCoord + 3, zCoord + dir.offsetZ * 0 - rot.offsetZ * 2, Library.POS_Y),
new DirPos(xCoord - dir.offsetX * 1 - rot.offsetX * 2, yCoord + 3, zCoord - dir.offsetZ * 1 - rot.offsetZ * 2, Library.POS_Y),
new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX * 2, yCoord + 3, zCoord - dir.offsetZ * 2 - rot.offsetZ * 2, Library.POS_Y),
new DirPos(xCoord + dir.offsetX + rot.offsetX * 3, yCoord, zCoord + dir.offsetZ + rot.offsetZ * 3, rot),
new DirPos(xCoord - dir.offsetX + rot.offsetX * 3, yCoord, zCoord - dir.offsetZ + rot.offsetZ * 3, rot),
new DirPos(xCoord + dir.offsetX - rot.offsetX * 3, yCoord, zCoord + dir.offsetZ - rot.offsetZ * 3, rot.getOpposite()),
@ -451,16 +440,17 @@ public class TileEntityMachineAssemblyFactory extends TileEntityMachineBase impl
boolean direction = false;
int timeUntilReposition;
public TragicYuri() {
striker = new AssemblerArm();
saw = new AssemblerArm().yepThatsASaw();
public TragicYuri(int group) {
striker = new AssemblerArm( group == 0 ? 0 : 3);
saw = new AssemblerArm( group == 0 ? 1 : 2).yepThatsASaw();
timeUntilReposition = 200;
}
public void update(boolean working) {
this.prevSlider = this.slider;
if(working) switch(state) {
// one of the arms must do something. doesn't matter which or what position the carriage is in
if(didProcess[striker.recipeIndex] || didProcess[saw.recipeIndex]) switch(state) {
case WORKING: {
timeUntilReposition--;
if(timeUntilReposition <= 0) {
@ -475,7 +465,7 @@ public class TileEntityMachineAssemblyFactory extends TileEntityMachineBase impl
}
} break;
case SLIDING: {
double sliderSpeed = 1D / 20D; // 20 ticks for transit
double sliderSpeed = 1D / 10D; // 10 ticks for transit
if(direction) {
slider += sliderSpeed;
if(slider >= 1) {
@ -493,8 +483,8 @@ public class TileEntityMachineAssemblyFactory extends TileEntityMachineBase impl
} break;
}
striker.updateArm(working);
saw.updateArm(working);
striker.updateArm();
saw.updateArm();
}
public double getSlider(float interp) {
@ -510,12 +500,14 @@ public class TileEntityMachineAssemblyFactory extends TileEntityMachineBase impl
public double[] speed = new double[4];
public double sawAngle;
public double prevSawAngle;
public int recipeIndex; // the index of which pedestal is serviced, assuming the carriage is at default position
ArmState state = ArmState.REPOSITION;
int actionDelay = 0;
boolean saw = false;
public AssemblerArm() {
public AssemblerArm(int index) {
this.recipeIndex = index;
this.resetSpeed();
this.chooseNewArmPoistion();
}
@ -529,7 +521,7 @@ public class TileEntityMachineAssemblyFactory extends TileEntityMachineBase impl
speed[3] = saw ? 0.125 : 0.5; //Striker
}
public void updateArm(boolean working) {
public void updateArm() {
resetSpeed();
for(int i = 0; i < angles.length; i++) {
@ -538,7 +530,9 @@ public class TileEntityMachineAssemblyFactory extends TileEntityMachineBase impl
prevSawAngle = sawAngle;
if(!working) return;
int serviceIndex = recipeIndex;
if(slider > 0.5) serviceIndex += (serviceIndex % 2 == 0 ? 1 : -1); // if the carriage has moved, swap the indices so they match up with the serviced pedestal
if(!didProcess[serviceIndex]) state = ArmState.RETIRE;
if(state == ArmState.CUT || state == ArmState.EXTEND) {
this.sawAngle += 45D;

View File

@ -379,6 +379,7 @@ container.leadBox=Sicherheitsbehälter
container.machineAmmoPress=Munitionspresse
container.machineArcWelder=Lichtbogenschweißer
container.machineArcFurnaceLarge=Lichtbogenofen
container.machineAssemblyFactory=Montagefabrik
container.machineAssemblyMachine=Montagemaschine
container.machineBoiler=Ölwärmer
container.machineChemicalFactory=Chemiefabrik
@ -4382,7 +4383,8 @@ tile.machine_armor_table.name=Rüstungsmodifikationstisch
tile.machine_ashpit.name=Aschekasten
tile.machine_ashpit.desc=Sammelt Asche von Feuerbüchsen und Heizöfen
tile.machine_assembler.name=Fertigungsmaschine (Legacy)
tile.machine_assemfac.name=Fertigungsfabrik
tile.machine_assemfac.name=Fertigungsfabrik (Legacy)
tile.machine_assembly_factory.name=Fertigungsfabrik
tile.machine_assembly_machine.name=Montagemaschine
tile.machine_autocrafter.name=Automatische Werkbank
tile.machine_autosaw.name=Automatische Kreissäge

View File

@ -785,6 +785,7 @@ container.leadBox=Containment Box
container.machineAmmoPress=Ammo Press
container.machineArcWelder=Arc Welder
container.machineArcFurnaceLarge=Arc Furnace
container.machineAssemblyFactory=Assembly Factory
container.machineAssemblyMachine=Assembly Machine
container.machineBoiler=Oil Heater
container.machineChemicalFactory=Chemical Factory
@ -5642,7 +5643,9 @@ tile.machine_armor_table.name=Armor Modification Table
tile.machine_ashpit.name=Ashpit
tile.machine_ashpit.desc=Collects ashes from fireboxes and heating ovens
tile.machine_assembler.name=Assembly Machine (Legacy)
tile.machine_assemfac.name=Assembly Factory
tile.machine_assemfac.name=Assembly Factory (Legacy)
tile.machine_assembly_factory.name=Assembly Factory
tile.machine_assembly_factory.desc=Quadruple assembly machine.$Recipes process twice as fast,$but need twice as much power.$Needs to be cooled with water,$produces low-pressure steam.
tile.machine_assembly_machine.name=Assembly Machine
tile.machine_autocrafter.name=Automatic Crafting Table
tile.machine_autosaw.name=Automatic Buzz Saw