drowned in the slop, forgotten in the slurry

This commit is contained in:
Bob 2025-08-10 20:07:53 +02:00
parent a7c1a42244
commit 242c4f5b03
13 changed files with 166 additions and 84 deletions

View File

@ -1,6 +1,15 @@
## Added
* QMAW (quick manual and wiki)
* It's a simple ingame manual that can be found by pressing F1 on items (like the WIAJ presentations)
* Supports text and links and not much else
* Easy to make entries for, the system scans `assets/manual` for valid `.json` format files
* Should also work in resource packs (no recent tests for that, not going to make promises)
* Still WIP, many new info pages are yet to be made
## Changed
* All the never completed missile parts (20/20 fuselage, 20 warhead, 10 and 15 tec kerosene thrusters) have been removed
* The electric arc furnace now scrapes the vanilla furnace recipe list on server start in addition to postinit, making sure recipes added during postinit after NTM loads (like Thermal's ingots) are covered too
* The shredder's sound will now start immediately when processing instead of with random delay
## Fixed
* Fixed GT6 compatibility watz pellets crashing due to misconfigured recipes

View File

@ -69,6 +69,10 @@ public class GUIMachineSolderingStation extends GuiInfoContainer {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
if(solderer.collisionPrevention) {
drawTexturedModalRect(guiLeft + 5, guiTop + 66, 192, 14, 10, 10);
}
int p = (int) (solderer.power * 52 / Math.max(solderer.maxPower, 1));
drawTexturedModalRect(guiLeft + 152, guiTop + 70 - p, 176, 52 - p, 16, p);

View File

@ -68,8 +68,8 @@ public class QComponentLink extends ManualElement {
GL11.glRotated(180, 1, 0, 0);
RenderHelper.enableStandardItemLighting();
GL11.glRotated(-180, 1, 0, 0);
itemRender.renderItemAndEffectIntoGUI(this.font, mc.renderEngine, this.icon, x, y);
itemRender.renderItemOverlayIntoGUI(this.font, mc.renderEngine, this.icon, x, y, null);
itemRender.renderItemAndEffectIntoGUI(this.font, mc.renderEngine, this.icon, x, y - 1);
itemRender.renderItemOverlayIntoGUI(this.font, mc.renderEngine, this.icon, x, y - 1, null);
RenderHelper.disableStandardItemLighting();
GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glPopMatrix();

View File

@ -32,7 +32,7 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I
public static final long maxPower = 10000;
public static final int processingSpeed = 60;
private static final int[] slots_io = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29};
private static final int[] slots_io = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 };
private String customName;
@ -52,21 +52,19 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I
@Override
public ItemStack getStackInSlotOnClosing(int i) {
if(slots[i] != null)
{
if(slots[i] != null) {
ItemStack itemStack = slots[i];
slots[i] = null;
return itemStack;
} else {
return null;
return null;
}
}
@Override
public void setInventorySlotContents(int i, ItemStack itemStack) {
slots[i] = itemStack;
if(itemStack != null && itemStack.stackSize > getInventoryStackLimit())
{
if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) {
itemStack.stackSize = getInventoryStackLimit();
}
}
@ -93,42 +91,44 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I
@Override
public boolean isUseableByPlayer(EntityPlayer player) {
if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this)
{
if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) {
return false;
}else{
return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=64;
} else {
return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 64;
}
}
//You scrubs aren't needed for anything (right now)
// You scrubs aren't needed for anything (right now)
@Override
public void openInventory() {}
public void openInventory() {
}
@Override
public void closeInventory() {}
public void closeInventory() {
}
@Override
public boolean isItemValidForSlot(int i, ItemStack stack) {
if(i < 9) return ShredderRecipes.getShredderResult(stack) != null && !(stack.getItem() instanceof ItemBlades);
if(i == 29) return stack.getItem() instanceof IBatteryItem;
if(i == 27 || i == 28) return stack.getItem() instanceof ItemBlades;
if(i < 9)
return ShredderRecipes.getShredderResult(stack) != null && !(stack.getItem() instanceof ItemBlades);
if(i == 29)
return stack.getItem() instanceof IBatteryItem;
if(i == 27 || i == 28)
return stack.getItem() instanceof ItemBlades;
return false;
}
@Override
public ItemStack decrStackSize(int i, int j) {
if(slots[i] != null)
{
if(slots[i].stackSize <= j)
{
if(slots[i] != null) {
if(slots[i].stackSize <= j) {
ItemStack itemStack = slots[i];
slots[i] = null;
return itemStack;
}
ItemStack itemStack1 = slots[i].splitStack(j);
if (slots[i].stackSize == 0)
{
if(slots[i].stackSize == 0) {
slots[i] = null;
}
@ -146,12 +146,10 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I
this.power = nbt.getLong("powerTime");
slots = new ItemStack[getSizeInventory()];
for(int i = 0; i < list.tagCount(); i++)
{
for(int i = 0; i < list.tagCount(); i++) {
NBTTagCompound nbt1 = list.getCompoundTagAt(i);
byte b0 = nbt1.getByte("slot");
if(b0 >= 0 && b0 < slots.length)
{
if(b0 >= 0 && b0 < slots.length) {
slots[b0] = ItemStack.loadItemStackFromNBT(nbt1);
}
}
@ -165,19 +163,17 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I
nbt.setLong("powerTime", power);
NBTTagList list = new NBTTagList();
for(int i = 0; i < slots.length; i++)
{
if(slots[i] != null)
{
for(int i = 0; i < slots.length; i++) {
if(slots[i] != null) {
NBTTagCompound nbt1 = new NBTTagCompound();
nbt1.setByte("slot", (byte)i);
nbt1.setByte("slot", (byte) i);
slots[i].writeToNBT(nbt1);
list.appendTag(nbt1);
}
}
nbt.setTag("items", list);
if (customName != null) {
if(customName != null) {
nbt.setString("name", customName);
}
}
@ -210,8 +206,11 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I
@Override
public boolean canExtractItem(int i, ItemStack itemStack, int j) {
if(i >= 9 && i <= 26) return true;
if(i >= 27 && i <= 28) if(itemStack.getItemDamage() == itemStack.getMaxDamage() && itemStack.getMaxDamage() > 0) return true;
if(i >= 9 && i <= 26)
return true;
if(i >= 27 && i <= 28)
if(itemStack.getItemDamage() == itemStack.getMaxDamage() && itemStack.getMaxDamage() > 0)
return true;
return false;
}
@ -235,15 +234,15 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I
if(!worldObj.isRemote) {
this.updateConnections();
if(this.progress == 0) this.soundCycle = 0;
if(hasPower() && canProcess())
{
if(hasPower() && canProcess()) {
progress++;
power -= 5;
if(this.progress == TileEntityMachineShredder.processingSpeed)
{
if(this.progress == TileEntityMachineShredder.processingSpeed) {
for(int i = 27; i <= 28; i++)
if(slots[i].getMaxDamage() > 0)
this.slots[i].setItemDamage(this.slots[i].getItemDamage() + 1);
@ -253,34 +252,31 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I
flag1 = true;
}
if(soundCycle == 0)
this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "minecart.base", getVolume(1.0F), 0.75F);
this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "minecart.base", getVolume(1.0F), 0.75F);
soundCycle++;
if(soundCycle >= 50)
soundCycle = 0;
}else{
} else {
progress = 0;
}
boolean trigger = true;
if(hasPower() && canProcess() && this.progress == 0)
{
if(hasPower() && canProcess() && this.progress == 0) {
trigger = false;
}
if(trigger)
{
flag1 = true;
}
if(trigger) {
flag1 = true;
}
power = Library.chargeTEFromItems(slots, 29, power, maxPower);
networkPackNT(50);
}
if(flag1)
{
if(flag1) {
this.markDirty();
}
}
@ -305,20 +301,15 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I
public void processItem() {
for(int inpSlot = 0; inpSlot < 9; inpSlot++)
{
if(slots[inpSlot] != null && hasSpace(slots[inpSlot]))
{
for(int inpSlot = 0; inpSlot < 9; inpSlot++) {
if(slots[inpSlot] != null && hasSpace(slots[inpSlot])) {
ItemStack inp = slots[inpSlot];
ItemStack outp = ShredderRecipes.getShredderResult(inp);
boolean flag = false;
for (int outSlot = 9; outSlot < 27; outSlot++)
{
if (slots[outSlot] != null && slots[outSlot].getItem() == outp.getItem() &&
slots[outSlot].getItemDamage() == outp.getItemDamage() &&
slots[outSlot].stackSize + outp.stackSize <= outp.getMaxStackSize()) {
for(int outSlot = 9; outSlot < 27; outSlot++) {
if(slots[outSlot] != null && slots[outSlot].getItem() == outp.getItem() && slots[outSlot].getItemDamage() == outp.getItemDamage() && slots[outSlot].stackSize + outp.stackSize <= outp.getMaxStackSize()) {
slots[outSlot].stackSize += outp.stackSize;
slots[inpSlot].stackSize -= 1;
@ -328,9 +319,8 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I
}
if(!flag)
for (int outSlot = 9; outSlot < 27; outSlot++)
{
if (slots[outSlot] == null) {
for(int outSlot = 9; outSlot < 27; outSlot++) {
if(slots[outSlot] == null) {
slots[outSlot] = outp.copy();
slots[inpSlot].stackSize -= 1;
break;
@ -344,14 +334,10 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I
}
public boolean canProcess() {
if(slots[27] != null && slots[28] != null &&
this.getGearLeft() > 0 && this.getGearLeft() < 3 &&
this.getGearRight() > 0 && this.getGearRight() < 3) {
if(slots[27] != null && slots[28] != null && this.getGearLeft() > 0 && this.getGearLeft() < 3 && this.getGearRight() > 0 && this.getGearRight() < 3) {
for(int i = 0; i < 9; i++)
{
if(slots[i] != null && slots[i].stackSize > 0 && hasSpace(slots[i]))
{
for(int i = 0; i < 9; i++) {
if(slots[i] != null && slots[i].stackSize > 0 && hasSpace(slots[i])) {
return true;
}
}
@ -364,14 +350,13 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I
ItemStack result = ShredderRecipes.getShredderResult(stack);
if (result != null)
for (int i = 9; i < 27; i++) {
if (slots[i] == null) {
if(result != null)
for(int i = 9; i < 27; i++) {
if(slots[i] == null) {
return true;
}
if (slots[i] != null && slots[i].getItem().equals(result.getItem())
&& slots[i].stackSize + result.stackSize <= result.getMaxStackSize()) {
if(slots[i] != null && slots[i].getItem().equals(result.getItem()) && slots[i].stackSize + result.stackSize <= result.getMaxStackSize()) {
return true;
}
}
@ -401,13 +386,11 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I
public int getGearLeft() {
if(slots[27] != null && slots[27].getItem() instanceof ItemBlades)
{
if(slots[27] != null && slots[27].getItem() instanceof ItemBlades) {
if(slots[27].getMaxDamage() == 0)
return 1;
if(slots[27].getItemDamage() < slots[27].getItem().getMaxDamage()/2)
{
if(slots[27].getItemDamage() < slots[27].getItem().getMaxDamage() / 2) {
return 1;
} else if(slots[27].getItemDamage() != slots[27].getItem().getMaxDamage()) {
return 2;
@ -421,13 +404,11 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I
public int getGearRight() {
if(slots[28] != null && slots[28].getItem() instanceof ItemBlades)
{
if(slots[28] != null && slots[28].getItem() instanceof ItemBlades) {
if(slots[28].getMaxDamage() == 0)
return 1;
if(slots[28].getItemDamage() < slots[28].getItem().getMaxDamage()/2)
{
if(slots[28].getItemDamage() < slots[28].getItem().getMaxDamage() / 2) {
return 1;
} else if(slots[28].getItemDamage() != slots[28].getItem().getMaxDamage()) {
return 2;

View File

@ -0,0 +1,11 @@
{
"name": "Arsenic",
"icon": ["hbm:item.ingot_arsenic", 1, 0],
"trigger": [["hbm:item.ingot_arsenic"], ["hbm:item.nugget_arsenic"]],
"title": {
"en_US": "Arsenic"
},
"content": {
"en_US": "Obtainable by treating oily scraps with [[high-performance solvent|High-Performance Solvent]] in an [[acidizer|Ore Acidizer]]. Oily scraps can be created by [[shredding|Shredder]] polluted blocks created by the [[fracking tower|Hydraulic Fracking Tower]]. Primarily used as [[arsenic bronze|Arsenic Bronze]]."
}
}

View File

@ -0,0 +1,11 @@
{
"name": "Arsenic Bronze",
"icon": ["hbm:item.ingot_arsenic_bronze", 1, 0],
"trigger": [["hbm:item.ingot_arsenic_bronze"]],
"title": {
"en_US": "Arsenic Bronze"
},
"content": {
"en_US": "Derivative of [[arsenic|Arsenic]] made in the [[crucible|Crucible]], therefore available only after building an [[RBMK]] due to requiring [[high-performance solvent|High-Performance Solvent]].<br><br>Fully interchangeable with [[bismuth bronze|Bismuth Bronze]]."
}
}

View File

@ -0,0 +1,11 @@
{
"name": "Bismuth",
"icon": ["hbm:item.ingot_bismuth", 1, 0],
"trigger": [["hbm:item.ingot_bismuth"], ["hbm:item.billet_bismuth"], ["hbm:item.nugget_bismuth"], ["hbm:item.powder_bismuth"]],
"title": {
"en_US": "Bismuth"
},
"content": {
"en_US": "Heavy metal, intially derived from reprocessing spent [[RBMK]] fuel in the [[SILEX]], can also be made from later stage bedrock ore processing using [[high-performance solvent|High-Performance Solvent]]. Primarily used as [[bismuth bronze|Bismuth Bronze]]."
}
}

View File

@ -0,0 +1,11 @@
{
"name": "Bismuth Bronze",
"icon": ["hbm:item.ingot_bismuth_bronze", 1, 0],
"trigger": [["hbm:item.ingot_bismuth_bronze"]],
"title": {
"en_US": "Bismuth Bronze"
},
"content": {
"en_US": "Derivative of [[bismuth|Bismuth]] made in the [[crucible|Crucible]], therefore available only after building an [[RBMK]].<br><br>Fully interchangeable with [[arsenic bronze|Arsenic Bronze]]."
}
}

View File

@ -0,0 +1,11 @@
{
"name": "BSCCO",
"icon": ["hbm:item.ingot_bscco", 1, 0],
"trigger": [["hbm:item.ingot_bscco"], ["hbm:item.wire_dense", 1, 48]],
"title": {
"en_US": "BSCCO"
},
"content": {
"en_US": "Powerful superconductor, used in high tier circuits and coils for the [[particle accelerator|Particle Accelerator]]. Requires [[bismuth|Bismuth]], and is therefore only obtainable after building an [[RBMK]]."
}
}

View File

@ -0,0 +1,11 @@
{
"name": "Cadmium",
"icon": ["hbm:item.ingot_cadmium", 1, 0],
"trigger": [["hbm:item.ingot_cadmium"], ["hbm:item.powder_cadmium"]],
"title": {
"en_US": "Cadmium"
},
"content": {
"en_US": "Made by treating mustard willow leaves with [[high-performance solvent|High-Performance Solvent]]. Used in [[PVC]], a lategame alternate recipe for [[rubber|Rubber]] and for [[cadmium steel|Cadmium Steel]], which acts as a [[technetium steel|Technetium Steel]] substitute."
}
}

View File

@ -0,0 +1,11 @@
{
"name": "Ferrouranium",
"icon": ["hbm:item.ingot_ferrouranium", 1, 0],
"trigger": [["hbm:item.ingot_ferrouranium"]],
"title": {
"en_US": "Ferrouranium"
},
"content": {
"en_US": "Alloy of [[steel|Steel]] and [[uranium-238|Uranium-238]] made in the [[crucible|Crucible]]. Mainly used in ducrete, weapon parts and high-explosive ammunition."
}
}

View File

@ -6,6 +6,6 @@
"en_US": "Silicon"
},
"content": {
"en_US": "Important material for producing integrated circuits, and any electronics more sophisticated than an analog circuit. Created in an [[electric arc furnace|Electric Arc Furnace]] using things that contain silicon dioxide, like regular sand, nether quartz, fiberglass, flint or [[asbestos|Asbestos]]. Used primarily as wafers (i.e. billets) which are [[pressed|Burner Press]] using a circuit stamp, and then crafted into different types of microchips. Due to requiring an arc furnace, silicon is available after obtaining [[polymer|Polmyer]], requiring [[oil|Crude Oil]] processing."
"en_US": "Important material for producing integrated circuits, and any electronics more sophisticated than an analog circuit. Created in an [[electric arc furnace|Electric Arc Furnace]] using things that contain silicon dioxide, like regular sand, nether quartz, fiberglass, flint or [[asbestos|Asbestos]]. Used primarily as wafers (i.e. billets) which are [[pressed|Burner Press]] using a circuit stamp, and then crafted into different types of microchips. Due to requiring an arc furnace, silicon is available after obtaining [[polymer|Polymer]], requiring [[oil|Crude Oil]] processing."
}
}

View File

@ -0,0 +1,11 @@
{
"name": "Tantalium",
"icon": ["hbm:item.ingot_tantalium", 1, 0],
"trigger": [["hbm:item.ingot_tantalium"], ["hbm:item.powder_tantalium"], ["hbm:item.nugget_tantalium"]],
"title": {
"en_US": "Tantalium"
},
"content": {
"en_US": "Tantalium ('Tantalum') can be ectracted out of [[coltan|Coltan]] which is only found within one specific area in the world. Used mainly for tantalium capacitors, which are crucial for the control units used by most nuclear bombs."
}
}