diff --git a/changelog b/changelog index fa5fe2270..01b3f2283 100644 --- a/changelog +++ b/changelog @@ -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 diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineSolderingStation.java b/src/main/java/com/hbm/inventory/gui/GUIMachineSolderingStation.java index 7e718b9f9..e2283b312 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineSolderingStation.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineSolderingStation.java @@ -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); diff --git a/src/main/java/com/hbm/qmaw/components/QComponentLink.java b/src/main/java/com/hbm/qmaw/components/QComponentLink.java index 97402d9fb..c2816835e 100644 --- a/src/main/java/com/hbm/qmaw/components/QComponentLink.java +++ b/src/main/java/com/hbm/qmaw/components/QComponentLink.java @@ -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(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java index 5fe3ae5ca..b3589fd45 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java @@ -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; diff --git a/src/main/resources/assets/hbm/manual/arsenic.json b/src/main/resources/assets/hbm/manual/arsenic.json new file mode 100644 index 000000000..b6bf7df40 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/arsenic.json @@ -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]]." + } +} diff --git a/src/main/resources/assets/hbm/manual/arsenic_bronze.json b/src/main/resources/assets/hbm/manual/arsenic_bronze.json new file mode 100644 index 000000000..450f8dd21 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/arsenic_bronze.json @@ -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]].

Fully interchangeable with [[bismuth bronze|Bismuth Bronze]]." + } +} diff --git a/src/main/resources/assets/hbm/manual/bismuth.json b/src/main/resources/assets/hbm/manual/bismuth.json new file mode 100644 index 000000000..369e6bf60 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/bismuth.json @@ -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]]." + } +} diff --git a/src/main/resources/assets/hbm/manual/bismuth_bronze.json b/src/main/resources/assets/hbm/manual/bismuth_bronze.json new file mode 100644 index 000000000..fcb22393f --- /dev/null +++ b/src/main/resources/assets/hbm/manual/bismuth_bronze.json @@ -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]].

Fully interchangeable with [[arsenic bronze|Arsenic Bronze]]." + } +} diff --git a/src/main/resources/assets/hbm/manual/bscco.json b/src/main/resources/assets/hbm/manual/bscco.json new file mode 100644 index 000000000..4b25d11c0 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/bscco.json @@ -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]]." + } +} diff --git a/src/main/resources/assets/hbm/manual/cadmium.json b/src/main/resources/assets/hbm/manual/cadmium.json new file mode 100644 index 000000000..fb9281a02 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/cadmium.json @@ -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." + } +} diff --git a/src/main/resources/assets/hbm/manual/ferrouranium.json b/src/main/resources/assets/hbm/manual/ferrouranium.json new file mode 100644 index 000000000..86629c988 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/ferrouranium.json @@ -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." + } +} diff --git a/src/main/resources/assets/hbm/manual/silicon.json b/src/main/resources/assets/hbm/manual/silicon.json index 97cec4e51..4a6f8defd 100644 --- a/src/main/resources/assets/hbm/manual/silicon.json +++ b/src/main/resources/assets/hbm/manual/silicon.json @@ -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." } } diff --git a/src/main/resources/assets/hbm/manual/tantalium.json b/src/main/resources/assets/hbm/manual/tantalium.json new file mode 100644 index 000000000..5368737b3 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/tantalium.json @@ -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." + } +}