mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
just fucking nodespace everything at this point
This commit is contained in:
parent
1cb8ca18cf
commit
732f6552b6
@ -47,6 +47,9 @@
|
|||||||
* ROR controller torches can now set the threshold of particle accelerator dipoles
|
* ROR controller torches can now set the threshold of particle accelerator dipoles
|
||||||
* Removed the legacy recipes from the terra drills
|
* Removed the legacy recipes from the terra drills
|
||||||
* Slag can now be cast into ingots
|
* Slag can now be cast into ingots
|
||||||
|
* Re-solidifcation of bedrock ore crumbs now requires ore slop instead of nitric acid
|
||||||
|
* Due to ore slop being only obtainable from processing raw bedrock ore, this places a hard cap on how many times a single ore can be re-solidified out of crumbs
|
||||||
|
* This approach means that crumb yields don't have to be nerfed, and prevents that issue from popping up again should there ever be a new, more efficient processing path
|
||||||
|
|
||||||
## Fixed
|
## Fixed
|
||||||
* Fixed arc furnace only allowing electrodes to be inserted when the lid is down instead of up
|
* Fixed arc furnace only allowing electrodes to be inserted when the lid is down instead of up
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import net.minecraft.inventory.Container;
|
|||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public class ContainerAssemfac extends Container {
|
public class ContainerAssemfac extends Container {
|
||||||
|
|
||||||
private TileEntityMachineAssemfac assemfac;
|
private TileEntityMachineAssemfac assemfac;
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import net.minecraft.inventory.Container;
|
|||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public class ContainerChemfac extends Container {
|
public class ContainerChemfac extends Container {
|
||||||
|
|
||||||
private TileEntityMachineChemfac chemfac;
|
private TileEntityMachineChemfac chemfac;
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import net.minecraft.inventory.Container;
|
|||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public class ContainerMachineAssembler extends Container {
|
public class ContainerMachineAssembler extends Container {
|
||||||
|
|
||||||
private TileEntityMachineAssembler assembler;
|
private TileEntityMachineAssembler assembler;
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package com.hbm.inventory.container;
|
package com.hbm.inventory.container;
|
||||||
|
|
||||||
|
import com.hbm.interfaces.NotableComments;
|
||||||
import com.hbm.inventory.SlotCraftingOutput;
|
import com.hbm.inventory.SlotCraftingOutput;
|
||||||
import com.hbm.inventory.SlotTakeOnly;
|
import com.hbm.inventory.SlotTakeOnly;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
@ -14,9 +15,11 @@ import net.minecraft.inventory.Container;
|
|||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
@NotableComments
|
||||||
public class ContainerMachineChemplant extends Container {
|
public class ContainerMachineChemplant extends Container {
|
||||||
|
|
||||||
private TileEntityMachineChemplant nukeBoy;
|
private TileEntityMachineChemplant nukeBoy; // still uses ancient copy pasted field names - lmfao
|
||||||
|
|
||||||
public ContainerMachineChemplant(InventoryPlayer invPlayer, TileEntityMachineChemplant tedf) {
|
public ContainerMachineChemplant(InventoryPlayer invPlayer, TileEntityMachineChemplant tedf) {
|
||||||
nukeBoy = tedf;
|
nukeBoy = tedf;
|
||||||
|
|||||||
@ -12,6 +12,7 @@ import net.minecraft.entity.player.InventoryPlayer;
|
|||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public class GUIAssemfac extends GuiInfoContainer {
|
public class GUIAssemfac extends GuiInfoContainer {
|
||||||
|
|
||||||
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_assemfac.png");
|
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_assemfac.png");
|
||||||
|
|||||||
@ -12,6 +12,7 @@ import net.minecraft.entity.player.InventoryPlayer;
|
|||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public class GUIChemfac extends GuiInfoContainer {
|
public class GUIChemfac extends GuiInfoContainer {
|
||||||
|
|
||||||
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_chemfac.png");
|
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_chemfac.png");
|
||||||
|
|||||||
@ -1,10 +1,14 @@
|
|||||||
package com.hbm.inventory.gui;
|
package com.hbm.inventory.gui;
|
||||||
|
|
||||||
import com.hbm.inventory.container.ContainerFusionTorus;
|
import com.hbm.inventory.container.ContainerFusionTorus;
|
||||||
|
import com.hbm.inventory.recipes.FusionRecipe;
|
||||||
|
import com.hbm.inventory.recipes.FusionRecipes;
|
||||||
|
import com.hbm.items.machine.ItemBlueprints;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.render.util.GaugeUtil;
|
import com.hbm.render.util.GaugeUtil;
|
||||||
import com.hbm.tileentity.machine.fusion.TileEntityFusionTorus;
|
import com.hbm.tileentity.machine.fusion.TileEntityFusionTorus;
|
||||||
import com.hbm.util.BobMathUtil;
|
import com.hbm.util.BobMathUtil;
|
||||||
|
import com.hbm.util.i18n.I18nUtil;
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
@ -26,11 +30,32 @@ public class GUIFusionTorus extends GuiInfoContainer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawScreen(int x, int y, float interp) {
|
public void drawScreen(int mouseX, int mouseY, float interp) {
|
||||||
super.drawScreen(x, y, interp);
|
super.drawScreen(mouseX, mouseY, interp);
|
||||||
|
|
||||||
torus.tanks[0].renderTankInfo(this, x, y, guiLeft + 188, guiTop + 46, 16, 52);
|
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 18, 16, 62, torus.power, torus.getMaxPower());
|
||||||
torus.tanks[1].renderTankInfo(this, x, y, guiLeft + 206, guiTop + 46, 16, 52);
|
torus.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 44, guiTop + 18, 16, 52);
|
||||||
|
torus.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 62, guiTop + 18, 16, 52);
|
||||||
|
torus.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 80, guiTop + 18, 16, 52);
|
||||||
|
torus.tanks[3].renderTankInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 18, 16, 52);
|
||||||
|
torus.coolantTanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 188, guiTop + 46, 16, 52);
|
||||||
|
torus.coolantTanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 206, guiTop + 46, 16, 52);
|
||||||
|
|
||||||
|
if(guiLeft + 43 <= mouseX && guiLeft + 43 + 18 > mouseX && guiTop + 80 < mouseY && guiTop + 80 + 18 >= mouseY) {
|
||||||
|
if(this.torus.fusionModule.recipe != null && FusionRecipes.INSTANCE.recipeNameMap.containsKey(this.torus.fusionModule.recipe)) {
|
||||||
|
FusionRecipe recipe = (FusionRecipe) FusionRecipes.INSTANCE.recipeNameMap.get(this.torus.fusionModule.recipe);
|
||||||
|
this.func_146283_a(recipe.print(), mouseX, mouseY);
|
||||||
|
} else {
|
||||||
|
this.drawCreativeTabHoveringText(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("gui.recipe.setRecipe"), mouseX, mouseY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void mouseClicked(int x, int y, int button) {
|
||||||
|
super.mouseClicked(x, y, button);
|
||||||
|
|
||||||
|
if(this.checkClick(x, y, 43, 80, 18, 18)) GUIScreenRecipeSelector.openSelector(FusionRecipes.INSTANCE, torus, torus.fusionModule.recipe, 0, ItemBlueprints.grabPool(torus.slots[1]), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -50,17 +75,42 @@ public class GUIFusionTorus extends GuiInfoContainer {
|
|||||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||||
|
|
||||||
// power LED
|
int p = (int) (torus.power * 62 / torus.getMaxPower());
|
||||||
drawTexturedModalRect(guiLeft + 160, guiTop + 115, 246, 14, 8, 8);
|
drawTexturedModalRect(guiLeft + 8, guiTop + 80 - p, 230, 62 - p, 16, p);
|
||||||
// coolant LED
|
|
||||||
drawTexturedModalRect(guiLeft + 170, guiTop + 115, 246, 14, 8, 8);
|
|
||||||
// plasma LED
|
|
||||||
drawTexturedModalRect(guiLeft + 180, guiTop + 115, 246, 14, 8, 8);
|
|
||||||
|
|
||||||
// recipe LED
|
if(torus.fusionModule.progress > 0) {
|
||||||
drawTexturedModalRect(guiLeft + 87, guiTop + 76, 249, 0, 3, 6);
|
int j = (int) Math.ceil(70 * torus.fusionModule.progress);
|
||||||
// progress LED
|
drawTexturedModalRect(guiLeft + 98, guiTop + 81, 0, 244, j, 6);
|
||||||
drawTexturedModalRect(guiLeft + 92, guiTop + 76, 249, 0, 3, 6);
|
}
|
||||||
|
|
||||||
|
if(torus.fusionModule.bonus > 0) {
|
||||||
|
int j = (int) Math.min(Math.ceil(70 * torus.fusionModule.bonus), 70);
|
||||||
|
drawTexturedModalRect(guiLeft + 98, guiTop + 91, 0, 250, j, 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
FusionRecipe recipe = FusionRecipes.INSTANCE.recipeNameMap.get(torus.fusionModule.recipe);
|
||||||
|
|
||||||
|
// power LED
|
||||||
|
if(recipe != null && torus.power >= recipe.power) drawTexturedModalRect(guiLeft + 160, guiTop + 115, 246, 14, 8, 8);
|
||||||
|
// coolant LED
|
||||||
|
int heat = (int) Math.ceil(torus.temperature);
|
||||||
|
if(heat <= 123) drawTexturedModalRect(guiLeft + 170, guiTop + 115, 246, 14, 8, 8);
|
||||||
|
// plasma LED
|
||||||
|
if(torus.didProcess) drawTexturedModalRect(guiLeft + 180, guiTop + 115, 246, 14, 8, 8);
|
||||||
|
|
||||||
|
/// LEFT LED
|
||||||
|
if(torus.didProcess) {
|
||||||
|
drawTexturedModalRect(guiLeft + 87, guiTop + 76, 249, 0, 3, 6);
|
||||||
|
} else if(recipe != null) {
|
||||||
|
drawTexturedModalRect(guiLeft + 87, guiTop + 76, 246, 0, 3, 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// RIGHT LED
|
||||||
|
if(torus.didProcess) {
|
||||||
|
drawTexturedModalRect(guiLeft + 92, guiTop + 76, 249, 0, 3, 6);
|
||||||
|
} else if(recipe != null && torus.power >= torus.power) {
|
||||||
|
drawTexturedModalRect(guiLeft + 92, guiTop + 76, 246, 0, 3, 6);
|
||||||
|
}
|
||||||
|
|
||||||
double gauge = BobMathUtil.sps((Minecraft.getMinecraft().theWorld.getTotalWorldTime() + interp) * 0.25) / 2 + 0.5D;
|
double gauge = BobMathUtil.sps((Minecraft.getMinecraft().theWorld.getTotalWorldTime() + interp) * 0.25) / 2 + 0.5D;
|
||||||
|
|
||||||
@ -71,8 +121,17 @@ public class GUIFusionTorus extends GuiInfoContainer {
|
|||||||
// fuel consumption
|
// fuel consumption
|
||||||
GaugeUtil.drawSmoothGauge(guiLeft + 124, guiTop + 124, this.zLevel, gauge, 5, 2, 1, 0xA00000);
|
GaugeUtil.drawSmoothGauge(guiLeft + 124, guiTop + 124, this.zLevel, gauge, 5, 2, 1, 0xA00000);
|
||||||
|
|
||||||
|
// recipe selector
|
||||||
|
this.renderItem(recipe != null ? recipe.getIcon() : TEMPLATE_FOLDER, 44, 81);
|
||||||
|
|
||||||
|
// fluids
|
||||||
|
torus.tanks[0].renderTank(guiLeft + 44, guiTop + 70, this.zLevel, 16, 52);
|
||||||
|
torus.tanks[1].renderTank(guiLeft + 62, guiTop + 70, this.zLevel, 16, 52);
|
||||||
|
torus.tanks[2].renderTank(guiLeft + 80, guiTop + 70, this.zLevel, 16, 52);
|
||||||
|
torus.tanks[3].renderTank(guiLeft + 152, guiTop + 70, this.zLevel, 16, 52);
|
||||||
|
|
||||||
// coolant
|
// coolant
|
||||||
torus.tanks[0].renderTank(guiLeft + 188, guiTop + 98, this.zLevel, 16, 52);
|
torus.coolantTanks[0].renderTank(guiLeft + 188, guiTop + 98, this.zLevel, 16, 52);
|
||||||
torus.tanks[1].renderTank(guiLeft + 206, guiTop + 98, this.zLevel, 16, 52);
|
torus.coolantTanks[1].renderTank(guiLeft + 206, guiTop + 98, this.zLevel, 16, 52);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import net.minecraft.client.resources.I18n;
|
|||||||
import net.minecraft.entity.player.InventoryPlayer;
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public class GUIMachineAssembler extends GuiInfoContainer {
|
public class GUIMachineAssembler extends GuiInfoContainer {
|
||||||
|
|
||||||
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_assembler.png");
|
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_assembler.png");
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import net.minecraft.client.resources.I18n;
|
|||||||
import net.minecraft.entity.player.InventoryPlayer;
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public class GUIMachineChemplant extends GuiInfoContainer {
|
public class GUIMachineChemplant extends GuiInfoContainer {
|
||||||
|
|
||||||
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_chemplant.png");
|
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_chemplant.png");
|
||||||
|
|||||||
@ -29,8 +29,8 @@ public class GUIPADetector extends GuiInfoContainer {
|
|||||||
public void drawScreen(int mouseX, int mouseY, float f) {
|
public void drawScreen(int mouseX, int mouseY, float f) {
|
||||||
super.drawScreen(mouseX, mouseY, f);
|
super.drawScreen(mouseX, mouseY, f);
|
||||||
|
|
||||||
source.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 36, 16, 52);
|
source.coolantTanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 36, 16, 52);
|
||||||
source.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 36, 16, 52);
|
source.coolantTanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 36, 16, 52);
|
||||||
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 18, 16, 52, source.power, source.getMaxPower());
|
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 18, 16, 52, source.power, source.getMaxPower());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,7 +60,7 @@ public class GUIPADetector extends GuiInfoContainer {
|
|||||||
if(heat <= 123) drawTexturedModalRect(guiLeft + 44, guiTop + 18, 176, 8, 8, 8);
|
if(heat <= 123) drawTexturedModalRect(guiLeft + 44, guiTop + 18, 176, 8, 8, 8);
|
||||||
if(source.power >= source.usage) drawTexturedModalRect(guiLeft + 44, guiTop + 43, 176, 8, 8, 8);
|
if(source.power >= source.usage) drawTexturedModalRect(guiLeft + 44, guiTop + 43, 176, 8, 8, 8);
|
||||||
|
|
||||||
source.tanks[0].renderTank(guiLeft + 134, guiTop + 88, this.zLevel, 16, 52);
|
source.coolantTanks[0].renderTank(guiLeft + 134, guiTop + 88, this.zLevel, 16, 52);
|
||||||
source.tanks[1].renderTank(guiLeft + 152, guiTop + 88, this.zLevel, 16, 52);
|
source.coolantTanks[1].renderTank(guiLeft + 152, guiTop + 88, this.zLevel, 16, 52);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -56,8 +56,8 @@ public class GUIPADipole extends GuiInfoContainer {
|
|||||||
public void drawScreen(int mouseX, int mouseY, float f) {
|
public void drawScreen(int mouseX, int mouseY, float f) {
|
||||||
super.drawScreen(mouseX, mouseY, f);
|
super.drawScreen(mouseX, mouseY, f);
|
||||||
|
|
||||||
dipole.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 36, 16, 52);
|
dipole.coolantTanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 36, 16, 52);
|
||||||
dipole.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 36, 16, 52);
|
dipole.coolantTanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 36, 16, 52);
|
||||||
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 18, 16, 52, dipole.power, dipole.getMaxPower());
|
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 18, 16, 52, dipole.power, dipole.getMaxPower());
|
||||||
|
|
||||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 62, guiTop + 29, 12, 12, mouseX, mouseY, EnumChatFormatting.BLUE + "Player orientation", EnumChatFormatting.RED + "Output orientation:", dipole.ditToForgeDir(dipole.dirLower).name());
|
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 62, guiTop + 29, 12, 12, mouseX, mouseY, EnumChatFormatting.BLUE + "Player orientation", EnumChatFormatting.RED + "Output orientation:", dipole.ditToForgeDir(dipole.dirLower).name());
|
||||||
@ -142,8 +142,8 @@ public class GUIPADipole extends GuiInfoContainer {
|
|||||||
|
|
||||||
this.threshold.drawTextBox();
|
this.threshold.drawTextBox();
|
||||||
|
|
||||||
dipole.tanks[0].renderTank(guiLeft + 134, guiTop + 88, this.zLevel, 16, 52);
|
dipole.coolantTanks[0].renderTank(guiLeft + 134, guiTop + 88, this.zLevel, 16, 52);
|
||||||
dipole.tanks[1].renderTank(guiLeft + 152, guiTop + 88, this.zLevel, 16, 52);
|
dipole.coolantTanks[1].renderTank(guiLeft + 152, guiTop + 88, this.zLevel, 16, 52);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addLine(Tessellator tess, int x, int y, int color, Vec3NT vec, float yaw) {
|
public void addLine(Tessellator tess, int x, int y, int color, Vec3NT vec, float yaw) {
|
||||||
|
|||||||
@ -30,8 +30,8 @@ public class GUIPAQuadrupole extends GuiInfoContainer {
|
|||||||
public void drawScreen(int mouseX, int mouseY, float f) {
|
public void drawScreen(int mouseX, int mouseY, float f) {
|
||||||
super.drawScreen(mouseX, mouseY, f);
|
super.drawScreen(mouseX, mouseY, f);
|
||||||
|
|
||||||
quadrupole.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 116, guiTop + 36, 16, 52);
|
quadrupole.coolantTanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 116, guiTop + 36, 16, 52);
|
||||||
quadrupole.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 36, 16, 52);
|
quadrupole.coolantTanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 36, 16, 52);
|
||||||
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 26, guiTop + 18, 16, 52, quadrupole.power, quadrupole.getMaxPower());
|
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 26, guiTop + 18, 16, 52, quadrupole.power, quadrupole.getMaxPower());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,7 +62,7 @@ public class GUIPAQuadrupole extends GuiInfoContainer {
|
|||||||
if(quadrupole.slots[1] != null && quadrupole.slots[1].getItem() == ModItems.pa_coil) drawTexturedModalRect(guiLeft + 85, guiTop + 64, 176, 8, 8, 8);
|
if(quadrupole.slots[1] != null && quadrupole.slots[1].getItem() == ModItems.pa_coil) drawTexturedModalRect(guiLeft + 85, guiTop + 64, 176, 8, 8, 8);
|
||||||
if(quadrupole.power >= quadrupole.usage) drawTexturedModalRect(guiLeft + 65, guiTop + 64, 176, 8, 8, 8);
|
if(quadrupole.power >= quadrupole.usage) drawTexturedModalRect(guiLeft + 65, guiTop + 64, 176, 8, 8, 8);
|
||||||
|
|
||||||
quadrupole.tanks[0].renderTank(guiLeft + 116, guiTop + 88, this.zLevel, 16, 52);
|
quadrupole.coolantTanks[0].renderTank(guiLeft + 116, guiTop + 88, this.zLevel, 16, 52);
|
||||||
quadrupole.tanks[1].renderTank(guiLeft + 134, guiTop + 88, this.zLevel, 16, 52);
|
quadrupole.coolantTanks[1].renderTank(guiLeft + 134, guiTop + 88, this.zLevel, 16, 52);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,8 +29,8 @@ public class GUIPARFC extends GuiInfoContainer {
|
|||||||
public void drawScreen(int mouseX, int mouseY, float f) {
|
public void drawScreen(int mouseX, int mouseY, float f) {
|
||||||
super.drawScreen(mouseX, mouseY, f);
|
super.drawScreen(mouseX, mouseY, f);
|
||||||
|
|
||||||
quadrupole.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 89, guiTop + 36, 16, 52);
|
quadrupole.coolantTanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 89, guiTop + 36, 16, 52);
|
||||||
quadrupole.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 107, guiTop + 36, 16, 52);
|
quadrupole.coolantTanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 107, guiTop + 36, 16, 52);
|
||||||
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 53, guiTop + 18, 16, 52, quadrupole.power, quadrupole.getMaxPower());
|
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 53, guiTop + 18, 16, 52, quadrupole.power, quadrupole.getMaxPower());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,7 +53,7 @@ public class GUIPARFC extends GuiInfoContainer {
|
|||||||
int j = (int) (quadrupole.power * 52 / quadrupole.getMaxPower());
|
int j = (int) (quadrupole.power * 52 / quadrupole.getMaxPower());
|
||||||
drawTexturedModalRect(guiLeft + 53, guiTop + 70 - j, 184, 52 - j, 16, j);
|
drawTexturedModalRect(guiLeft + 53, guiTop + 70 - j, 184, 52 - j, 16, j);
|
||||||
|
|
||||||
quadrupole.tanks[0].renderTank(guiLeft + 89, guiTop + 88, this.zLevel, 16, 52);
|
quadrupole.coolantTanks[0].renderTank(guiLeft + 89, guiTop + 88, this.zLevel, 16, 52);
|
||||||
quadrupole.tanks[1].renderTank(guiLeft + 107, guiTop + 88, this.zLevel, 16, 52);
|
quadrupole.coolantTanks[1].renderTank(guiLeft + 107, guiTop + 88, this.zLevel, 16, 52);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -38,8 +38,8 @@ public class GUIPASource extends GuiInfoContainer {
|
|||||||
public void drawScreen(int mouseX, int mouseY, float f) {
|
public void drawScreen(int mouseX, int mouseY, float f) {
|
||||||
super.drawScreen(mouseX, mouseY, f);
|
super.drawScreen(mouseX, mouseY, f);
|
||||||
|
|
||||||
source.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 36, 16, 52);
|
source.coolantTanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 36, 16, 52);
|
||||||
source.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 36, 16, 52);
|
source.coolantTanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 36, 16, 52);
|
||||||
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 18, 16, 52, source.power, source.getMaxPower());
|
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 18, 16, 52, source.power, source.getMaxPower());
|
||||||
|
|
||||||
List<String> info = new ArrayList();
|
List<String> info = new ArrayList();
|
||||||
@ -100,7 +100,7 @@ public class GUIPASource extends GuiInfoContainer {
|
|||||||
drawTexturedModalRect(guiLeft + 45, guiTop + 73, 176, 52, 68, 14);
|
drawTexturedModalRect(guiLeft + 45, guiTop + 73, 176, 52, 68, 14);
|
||||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||||
|
|
||||||
source.tanks[0].renderTank(guiLeft + 134, guiTop + 88, this.zLevel, 16, 52);
|
source.coolantTanks[0].renderTank(guiLeft + 134, guiTop + 88, this.zLevel, 16, 52);
|
||||||
source.tanks[1].renderTank(guiLeft + 152, guiTop + 88, this.zLevel, 16, 52);
|
source.coolantTanks[1].renderTank(guiLeft + 152, guiTop + 88, this.zLevel, 16, 52);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -201,7 +201,7 @@ public class CrystallizerRecipes extends SerializableRecipe {
|
|||||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary);
|
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary);
|
||||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary);
|
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary);
|
||||||
|
|
||||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type), bedrock).setReq(64), new FluidStack(Fluids.NITRIC_ACID, 1000));
|
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type), bedrock).setReq(64), new FluidStack(Fluids.SLOP, 1000));
|
||||||
}
|
}
|
||||||
|
|
||||||
FluidStack[] dyes = new FluidStack[] {new FluidStack(Fluids.WOODOIL, 100), new FluidStack(Fluids.FISHOIL, 100), new FluidStack(Fluids.LIGHTOIL, 100)};
|
FluidStack[] dyes = new FluidStack[] {new FluidStack(Fluids.WOODOIL, 100), new FluidStack(Fluids.FISHOIL, 100), new FluidStack(Fluids.LIGHTOIL, 100)};
|
||||||
|
|||||||
@ -90,6 +90,7 @@ public abstract class SerializableRecipe {
|
|||||||
recipeHandlers.add(AssemblyMachineRecipes.INSTANCE);
|
recipeHandlers.add(AssemblyMachineRecipes.INSTANCE);
|
||||||
recipeHandlers.add(ChemicalPlantRecipes.INSTANCE);
|
recipeHandlers.add(ChemicalPlantRecipes.INSTANCE);
|
||||||
recipeHandlers.add(PUREXRecipes.INSTANCE);
|
recipeHandlers.add(PUREXRecipes.INSTANCE);
|
||||||
|
recipeHandlers.add(FusionRecipes.INSTANCE);
|
||||||
|
|
||||||
recipeHandlers.add(new MatDistribution());
|
recipeHandlers.add(new MatDistribution());
|
||||||
recipeHandlers.add(new CustomMachineRecipes());
|
recipeHandlers.add(new CustomMachineRecipes());
|
||||||
|
|||||||
@ -37,7 +37,7 @@ public class ItemFluidIDMulti extends Item implements IItemFluidIdentifier, IIte
|
|||||||
for(int i = 1; i < order.length; ++i) {
|
for(int i = 1; i < order.length; ++i) {
|
||||||
if(!order[i].hasNoID()) {
|
if(!order[i].hasNoID()) {
|
||||||
ItemStack id = new ItemStack(item, 1, order[i].getID());
|
ItemStack id = new ItemStack(item, 1, order[i].getID());
|
||||||
setType(id, Fluids.fromID(i), true);
|
setType(id, order[i], true);
|
||||||
list.add(id);
|
list.add(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -77,6 +77,12 @@ public abstract class ModuleMachineBase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return canFitOutput(recipe);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Whether the machine can hold the output produced by the recipe */
|
||||||
|
protected boolean canFitOutput(GenericRecipe recipe) {
|
||||||
|
|
||||||
if(recipe.outputItem != null) {
|
if(recipe.outputItem != null) {
|
||||||
for(int i = 0; i < Math.min(recipe.outputItem.length, outputSlots.length); i++) {
|
for(int i = 0; i < Math.min(recipe.outputItem.length, outputSlots.length); i++) {
|
||||||
ItemStack stack = slots[outputSlots[i]];
|
ItemStack stack = slots[outputSlots[i]];
|
||||||
@ -107,45 +113,53 @@ public abstract class ModuleMachineBase {
|
|||||||
this.progress += step;
|
this.progress += step;
|
||||||
|
|
||||||
if(this.progress >= 1D) {
|
if(this.progress >= 1D) {
|
||||||
|
consumeInput(recipe);
|
||||||
|
produceItem(recipe);
|
||||||
|
|
||||||
if(recipe.inputItem != null) {
|
if(this.canProcess(recipe, speed, power)) this.progress -= 1D;
|
||||||
for(int i = 0; i < Math.min(recipe.inputItem.length, inputSlots.length); i++) {
|
else this.progress = 0D;
|
||||||
slots[inputSlots[i]].stackSize -= recipe.inputItem[i].stacksize;
|
|
||||||
if(slots[inputSlots[i]].stackSize <= 0) slots[inputSlots[i]] = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(recipe.inputFluid != null) {
|
|
||||||
for(int i = 0; i < Math.min(recipe.inputFluid.length, inputTanks.length); i++) {
|
|
||||||
inputTanks[i].setFill(inputTanks[i].getFill() - recipe.inputFluid[i].fill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(recipe.outputItem != null) {
|
|
||||||
for(int i = 0; i < Math.min(recipe.outputItem.length, outputSlots.length); i++) {
|
|
||||||
ItemStack collapse = recipe.outputItem[i].collapse();
|
|
||||||
if(slots[outputSlots[i]] == null) {
|
|
||||||
slots[outputSlots[i]] = collapse;
|
|
||||||
} else {
|
|
||||||
if(collapse != null) slots[outputSlots[i]].stackSize += collapse.stackSize; // we can do this because we've already established that the result slot is not null if it's a single output
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(recipe.outputFluid != null) {
|
|
||||||
for(int i = 0; i < Math.min(recipe.outputFluid.length, outputTanks.length); i++) {
|
|
||||||
outputTanks[i].setFill(outputTanks[i].getFill() + recipe.outputFluid[i].fill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.markDirty = true;
|
|
||||||
|
|
||||||
if(this.canProcess(recipe, speed, power))
|
|
||||||
this.progress -= 1D;
|
|
||||||
else
|
|
||||||
this.progress = 0D;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Part 1 of the process completion, uses up input */
|
||||||
|
protected void consumeInput(GenericRecipe recipe) {
|
||||||
|
|
||||||
|
if(recipe.inputItem != null) {
|
||||||
|
for(int i = 0; i < Math.min(recipe.inputItem.length, inputSlots.length); i++) {
|
||||||
|
slots[inputSlots[i]].stackSize -= recipe.inputItem[i].stacksize;
|
||||||
|
if(slots[inputSlots[i]].stackSize <= 0) slots[inputSlots[i]] = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(recipe.inputFluid != null) {
|
||||||
|
for(int i = 0; i < Math.min(recipe.inputFluid.length, inputTanks.length); i++) {
|
||||||
|
inputTanks[i].setFill(inputTanks[i].getFill() - recipe.inputFluid[i].fill);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Part 2 of the process completion, generated output */
|
||||||
|
protected void produceItem(GenericRecipe recipe) {
|
||||||
|
|
||||||
|
if(recipe.outputItem != null) {
|
||||||
|
for(int i = 0; i < Math.min(recipe.outputItem.length, outputSlots.length); i++) {
|
||||||
|
ItemStack collapse = recipe.outputItem[i].collapse();
|
||||||
|
if(slots[outputSlots[i]] == null) {
|
||||||
|
slots[outputSlots[i]] = collapse;
|
||||||
|
} else {
|
||||||
|
if(collapse != null) slots[outputSlots[i]].stackSize += collapse.stackSize; // we can do this because we've already established that the result slot is not null if it's a single output
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(recipe.outputFluid != null) {
|
||||||
|
for(int i = 0; i < Math.min(recipe.outputFluid.length, outputTanks.length); i++) {
|
||||||
|
outputTanks[i].setFill(outputTanks[i].getFill() + recipe.outputFluid[i].fill);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.markDirty = true;
|
||||||
|
}
|
||||||
|
|
||||||
public GenericRecipe getRecipe() {
|
public GenericRecipe getRecipe() {
|
||||||
return (GenericRecipe) getRecipeSet().recipeNameMap.get(this.recipe);
|
return (GenericRecipe) getRecipeSet().recipeNameMap.get(this.recipe);
|
||||||
|
|||||||
@ -2,12 +2,16 @@ package com.hbm.module.machine;
|
|||||||
|
|
||||||
import com.hbm.inventory.fluid.tank.FluidTank;
|
import com.hbm.inventory.fluid.tank.FluidTank;
|
||||||
import com.hbm.inventory.recipes.FusionRecipes;
|
import com.hbm.inventory.recipes.FusionRecipes;
|
||||||
|
import com.hbm.inventory.recipes.loader.GenericRecipe;
|
||||||
import com.hbm.inventory.recipes.loader.GenericRecipes;
|
import com.hbm.inventory.recipes.loader.GenericRecipes;
|
||||||
|
|
||||||
import api.hbm.energymk2.IEnergyHandlerMK2;
|
import api.hbm.energymk2.IEnergyHandlerMK2;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
public class ModuleMachineFusion extends ModuleMachineBase {
|
public class ModuleMachineFusion extends ModuleMachineBase {
|
||||||
|
|
||||||
|
public double bonusSpeed = 0D;
|
||||||
|
public double bonus;
|
||||||
|
|
||||||
public ModuleMachineFusion(int index, IEnergyHandlerMK2 battery, ItemStack[] slots) {
|
public ModuleMachineFusion(int index, IEnergyHandlerMK2 battery, ItemStack[] slots) {
|
||||||
super(index, battery, slots);
|
super(index, battery, slots);
|
||||||
@ -25,4 +29,31 @@ public class ModuleMachineFusion extends ModuleMachineBase {
|
|||||||
public ModuleMachineFusion itemOutput(int slot) { outputSlots[0] = slot; return this; }
|
public ModuleMachineFusion itemOutput(int slot) { outputSlots[0] = slot; return this; }
|
||||||
public ModuleMachineFusion fluidInput(FluidTank a, FluidTank b, FluidTank c) { inputTanks[0] = a; inputTanks[1] = b; inputTanks[2] = c; return this; }
|
public ModuleMachineFusion fluidInput(FluidTank a, FluidTank b, FluidTank c) { inputTanks[0] = a; inputTanks[1] = b; inputTanks[2] = c; return this; }
|
||||||
public ModuleMachineFusion fluidOutput(FluidTank a) { outputTanks[0] = a; return this; }
|
public ModuleMachineFusion fluidOutput(FluidTank a) { outputTanks[0] = a; return this; }
|
||||||
|
|
||||||
|
// setup needs to run before update, used to keep track of things that ModuleMachineBase doesn't handle
|
||||||
|
public void preUpdate(double bonusSpeed) {
|
||||||
|
this.bonusSpeed = bonusSpeed;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void process(GenericRecipe recipe, double speed, double power) {
|
||||||
|
this.battery.setPower(this.battery.getPower() - (power == 1 ? recipe.power : (long) (recipe.power * power)));
|
||||||
|
double step = Math.min(speed / recipe.duration, 1D); // can't do more than one recipe per tick, might look into that later
|
||||||
|
this.progress += step;
|
||||||
|
this.bonus += step * this.bonusSpeed;
|
||||||
|
this.bonus = Math.min(this.bonus, 1.5D); // bonus might not be used immediately in rare circumstances, allow 50% buffer
|
||||||
|
|
||||||
|
if(this.progress >= 1D) {
|
||||||
|
consumeInput(recipe);
|
||||||
|
produceItem(recipe);
|
||||||
|
|
||||||
|
if(this.canProcess(recipe, speed, power)) this.progress -= 1D;
|
||||||
|
else this.progress = 0D;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.bonus >= 1D && this.canFitOutput(recipe)) {
|
||||||
|
produceItem(recipe);
|
||||||
|
this.bonus -= 1D;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,7 +13,7 @@ import net.minecraft.nbt.NBTTagCompound;
|
|||||||
|
|
||||||
public abstract class TileEntityCooledBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiverMK2 {
|
public abstract class TileEntityCooledBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiverMK2 {
|
||||||
|
|
||||||
public FluidTank[] tanks;
|
public FluidTank[] coolantTanks; // originally just named "tanks" which would confuse the fuck out of me when working with child classes
|
||||||
|
|
||||||
public long power;
|
public long power;
|
||||||
|
|
||||||
@ -26,9 +26,9 @@ public abstract class TileEntityCooledBase extends TileEntityMachineBase impleme
|
|||||||
|
|
||||||
public TileEntityCooledBase(int slotCount) {
|
public TileEntityCooledBase(int slotCount) {
|
||||||
super(slotCount);
|
super(slotCount);
|
||||||
tanks = new FluidTank[2];
|
coolantTanks = new FluidTank[2];
|
||||||
tanks[0] = new FluidTank(Fluids.PERFLUOROMETHYL_COLD, 4_000);
|
coolantTanks[0] = new FluidTank(Fluids.PERFLUOROMETHYL_COLD, 4_000);
|
||||||
tanks[1] = new FluidTank(Fluids.PERFLUOROMETHYL, 4_000);
|
coolantTanks[1] = new FluidTank(Fluids.PERFLUOROMETHYL, 4_000);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -38,8 +38,8 @@ public abstract class TileEntityCooledBase extends TileEntityMachineBase impleme
|
|||||||
|
|
||||||
for(DirPos pos : this.getConPos()) {
|
for(DirPos pos : this.getConPos()) {
|
||||||
this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||||
this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
this.trySubscribe(coolantTanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||||
this.tryProvide(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
this.tryProvide(coolantTanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||||
}
|
}
|
||||||
|
|
||||||
this.temperature += this.temp_passive_heating;
|
this.temperature += this.temp_passive_heating;
|
||||||
@ -47,12 +47,12 @@ public abstract class TileEntityCooledBase extends TileEntityMachineBase impleme
|
|||||||
|
|
||||||
if(this.temperature > this.temperature_target) {
|
if(this.temperature > this.temperature_target) {
|
||||||
int cyclesTemp = (int) Math.ceil((Math.min(this.temperature - temperature_target, temp_change_max)) / temp_change_per_mb);
|
int cyclesTemp = (int) Math.ceil((Math.min(this.temperature - temperature_target, temp_change_max)) / temp_change_per_mb);
|
||||||
int cyclesCool = tanks[0].getFill();
|
int cyclesCool = coolantTanks[0].getFill();
|
||||||
int cyclesHot = tanks[1].getMaxFill() - tanks[1].getFill();
|
int cyclesHot = coolantTanks[1].getMaxFill() - coolantTanks[1].getFill();
|
||||||
int cycles = BobMathUtil.min(cyclesTemp, cyclesCool, cyclesHot);
|
int cycles = BobMathUtil.min(cyclesTemp, cyclesCool, cyclesHot);
|
||||||
|
|
||||||
tanks[0].setFill(tanks[0].getFill() - cycles);
|
coolantTanks[0].setFill(coolantTanks[0].getFill() - cycles);
|
||||||
tanks[1].setFill(tanks[1].getFill() + cycles);
|
coolantTanks[1].setFill(coolantTanks[1].getFill() + cycles);
|
||||||
this.temperature -= this.temp_change_per_mb * cycles;
|
this.temperature -= this.temp_change_per_mb * cycles;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -69,8 +69,8 @@ public abstract class TileEntityCooledBase extends TileEntityMachineBase impleme
|
|||||||
@Override
|
@Override
|
||||||
public void serialize(ByteBuf buf) {
|
public void serialize(ByteBuf buf) {
|
||||||
super.serialize(buf);
|
super.serialize(buf);
|
||||||
tanks[0].serialize(buf);
|
coolantTanks[0].serialize(buf);
|
||||||
tanks[1].serialize(buf);
|
coolantTanks[1].serialize(buf);
|
||||||
buf.writeFloat(temperature);
|
buf.writeFloat(temperature);
|
||||||
buf.writeLong(power);
|
buf.writeLong(power);
|
||||||
}
|
}
|
||||||
@ -78,8 +78,8 @@ public abstract class TileEntityCooledBase extends TileEntityMachineBase impleme
|
|||||||
@Override
|
@Override
|
||||||
public void deserialize(ByteBuf buf) {
|
public void deserialize(ByteBuf buf) {
|
||||||
super.deserialize(buf);
|
super.deserialize(buf);
|
||||||
tanks[0].deserialize(buf);
|
coolantTanks[0].deserialize(buf);
|
||||||
tanks[1].deserialize(buf);
|
coolantTanks[1].deserialize(buf);
|
||||||
this.temperature = buf.readFloat();
|
this.temperature = buf.readFloat();
|
||||||
this.power = buf.readLong();
|
this.power = buf.readLong();
|
||||||
}
|
}
|
||||||
@ -88,8 +88,8 @@ public abstract class TileEntityCooledBase extends TileEntityMachineBase impleme
|
|||||||
public void readFromNBT(NBTTagCompound nbt) {
|
public void readFromNBT(NBTTagCompound nbt) {
|
||||||
super.readFromNBT(nbt);
|
super.readFromNBT(nbt);
|
||||||
|
|
||||||
tanks[0].readFromNBT(nbt, "t0");
|
coolantTanks[0].readFromNBT(nbt, "t0");
|
||||||
tanks[1].readFromNBT(nbt, "t1");
|
coolantTanks[1].readFromNBT(nbt, "t1");
|
||||||
this.temperature = nbt.getFloat("temperature");
|
this.temperature = nbt.getFloat("temperature");
|
||||||
this.power = nbt.getLong("power");
|
this.power = nbt.getLong("power");
|
||||||
}
|
}
|
||||||
@ -98,8 +98,8 @@ public abstract class TileEntityCooledBase extends TileEntityMachineBase impleme
|
|||||||
public void writeToNBT(NBTTagCompound nbt) {
|
public void writeToNBT(NBTTagCompound nbt) {
|
||||||
super.writeToNBT(nbt);
|
super.writeToNBT(nbt);
|
||||||
|
|
||||||
tanks[0].writeToNBT(nbt, "t0");
|
coolantTanks[0].writeToNBT(nbt, "t0");
|
||||||
tanks[1].writeToNBT(nbt, "t1");
|
coolantTanks[1].writeToNBT(nbt, "t1");
|
||||||
nbt.setFloat("temperature", temperature);
|
nbt.setFloat("temperature", temperature);
|
||||||
nbt.setLong("power", power);
|
nbt.setLong("power", power);
|
||||||
}
|
}
|
||||||
@ -107,7 +107,7 @@ public abstract class TileEntityCooledBase extends TileEntityMachineBase impleme
|
|||||||
@Override public long getPower() { return this.power; }
|
@Override public long getPower() { return this.power; }
|
||||||
@Override public void setPower(long power) { this.power = power; }
|
@Override public void setPower(long power) { this.power = power; }
|
||||||
|
|
||||||
@Override public FluidTank[] getSendingTanks() { return new FluidTank[] {tanks[1]}; }
|
@Override public FluidTank[] getSendingTanks() { return new FluidTank[] {coolantTanks[1]}; }
|
||||||
@Override public FluidTank[] getReceivingTanks() { return new FluidTank[] {tanks[0]}; }
|
@Override public FluidTank[] getReceivingTanks() { return new FluidTank[] {coolantTanks[0]}; }
|
||||||
@Override public FluidTank[] getAllTanks() { return tanks; }
|
@Override public FluidTank[] getAllTanks() { return coolantTanks; }
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,12 +1,55 @@
|
|||||||
package com.hbm.tileentity.machine.fusion;
|
package com.hbm.tileentity.machine.fusion;
|
||||||
|
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
|
import com.hbm.uninos.GenNode;
|
||||||
|
import com.hbm.uninos.UniNodespace;
|
||||||
|
import com.hbm.uninos.networkproviders.KlystronNetwork;
|
||||||
|
import com.hbm.uninos.networkproviders.KlystronNetworkProvider;
|
||||||
|
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||||
|
import com.hbm.util.fauxpointtwelve.DirPos;
|
||||||
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.AxisAlignedBB;
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
public class TileEntityFusionKlystron extends TileEntity {
|
public class TileEntityFusionKlystron extends TileEntity {
|
||||||
|
|
||||||
|
protected GenNode klystronNode;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateEntity() {
|
||||||
|
super.updateEntity();
|
||||||
|
|
||||||
|
if(!worldObj.isRemote) {
|
||||||
|
|
||||||
|
if(klystronNode == null || klystronNode.expired) {
|
||||||
|
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10).getOpposite();
|
||||||
|
klystronNode = UniNodespace.getNode(worldObj, xCoord + dir.offsetX * 4, yCoord + 2, zCoord + dir.offsetZ * 4, KlystronNetworkProvider.THE_PROVIDER);
|
||||||
|
|
||||||
|
if(klystronNode == null) {
|
||||||
|
klystronNode = new GenNode(KlystronNetworkProvider.THE_PROVIDER,
|
||||||
|
new BlockPos(xCoord + dir.offsetX * 4, yCoord + 2, zCoord + dir.offsetZ * 4))
|
||||||
|
.setConnections(new DirPos(xCoord + dir.offsetX * 5, yCoord + 2, zCoord + dir.offsetZ * 5, dir));
|
||||||
|
|
||||||
|
UniNodespace.createNode(worldObj, klystronNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(klystronNode.net != null) klystronNode.net.addProvider(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(klystronNode != null && klystronNode.net != null) {
|
||||||
|
KlystronNetwork net = (KlystronNetwork) klystronNode.net;
|
||||||
|
|
||||||
|
if(!net.receiverEntries.isEmpty()) {
|
||||||
|
//worldObj.func_147480_a(xCoord, yCoord, zCoord, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
AxisAlignedBB bb = null;
|
AxisAlignedBB bb = null;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -1,12 +1,21 @@
|
|||||||
package com.hbm.tileentity.machine.fusion;
|
package com.hbm.tileentity.machine.fusion;
|
||||||
|
|
||||||
|
import com.hbm.interfaces.IControlReceiver;
|
||||||
import com.hbm.inventory.container.ContainerFusionTorus;
|
import com.hbm.inventory.container.ContainerFusionTorus;
|
||||||
import com.hbm.inventory.fluid.Fluids;
|
import com.hbm.inventory.fluid.Fluids;
|
||||||
import com.hbm.inventory.fluid.tank.FluidTank;
|
import com.hbm.inventory.fluid.tank.FluidTank;
|
||||||
import com.hbm.inventory.gui.GUIFusionTorus;
|
import com.hbm.inventory.gui.GUIFusionTorus;
|
||||||
|
import com.hbm.items.ModItems;
|
||||||
|
import com.hbm.lib.Library;
|
||||||
import com.hbm.module.machine.ModuleMachineFusion;
|
import com.hbm.module.machine.ModuleMachineFusion;
|
||||||
import com.hbm.tileentity.IGUIProvider;
|
import com.hbm.tileentity.IGUIProvider;
|
||||||
import com.hbm.tileentity.machine.albion.TileEntityCooledBase;
|
import com.hbm.tileentity.machine.albion.TileEntityCooledBase;
|
||||||
|
import com.hbm.uninos.GenNode;
|
||||||
|
import com.hbm.uninos.INetworkProvider;
|
||||||
|
import com.hbm.uninos.UniNodespace;
|
||||||
|
import com.hbm.uninos.networkproviders.KlystronNetworkProvider;
|
||||||
|
import com.hbm.uninos.networkproviders.PlasmaNetworkProvider;
|
||||||
|
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||||
import com.hbm.util.fauxpointtwelve.DirPos;
|
import com.hbm.util.fauxpointtwelve.DirPos;
|
||||||
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
@ -14,27 +23,38 @@ import cpw.mods.fml.relauncher.SideOnly;
|
|||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.AxisAlignedBB;
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
public class TileEntityFusionTorus extends TileEntityCooledBase implements IGUIProvider {
|
public class TileEntityFusionTorus extends TileEntityCooledBase implements IGUIProvider, IControlReceiver {
|
||||||
|
|
||||||
public FluidTank[] torusTanks;
|
public boolean didProcess = false;
|
||||||
|
|
||||||
|
public FluidTank[] tanks;
|
||||||
public ModuleMachineFusion fusionModule;
|
public ModuleMachineFusion fusionModule;
|
||||||
|
|
||||||
|
protected GenNode[] klystronNodes;
|
||||||
|
protected GenNode[] plasmaNodes;
|
||||||
|
|
||||||
public TileEntityFusionTorus() {
|
public TileEntityFusionTorus() {
|
||||||
super(3);
|
super(3);
|
||||||
|
|
||||||
this.torusTanks = new FluidTank[4];
|
|
||||||
|
|
||||||
this.torusTanks[0] = new FluidTank(Fluids.NONE, 4_000);
|
klystronNodes = new GenNode[4];
|
||||||
this.torusTanks[1] = new FluidTank(Fluids.NONE, 4_000);
|
plasmaNodes = new GenNode[4];
|
||||||
this.torusTanks[2] = new FluidTank(Fluids.NONE, 4_000);
|
|
||||||
this.torusTanks[3] = new FluidTank(Fluids.NONE, 4_000);
|
this.tanks = new FluidTank[4];
|
||||||
|
|
||||||
|
this.tanks[0] = new FluidTank(Fluids.NONE, 4_000);
|
||||||
|
this.tanks[1] = new FluidTank(Fluids.NONE, 4_000);
|
||||||
|
this.tanks[2] = new FluidTank(Fluids.NONE, 4_000);
|
||||||
|
this.tanks[3] = new FluidTank(Fluids.NONE, 4_000);
|
||||||
|
|
||||||
this.fusionModule = new ModuleMachineFusion(0, this, slots)
|
this.fusionModule = new ModuleMachineFusion(0, this, slots)
|
||||||
.fluidInput(torusTanks[0], torusTanks[1], torusTanks[2])
|
.fluidInput(tanks[0], tanks[1], tanks[2])
|
||||||
.fluidOutput(torusTanks[3])
|
.fluidOutput(tanks[3])
|
||||||
.itemOutput(2);
|
.itemOutput(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,18 +66,74 @@ public class TileEntityFusionTorus extends TileEntityCooledBase implements IGUIP
|
|||||||
@Override
|
@Override
|
||||||
public void updateEntity() {
|
public void updateEntity() {
|
||||||
super.updateEntity();
|
super.updateEntity();
|
||||||
|
|
||||||
|
if(!worldObj.isRemote) {
|
||||||
|
|
||||||
|
for(int i = 0; i < 4; i++) {
|
||||||
|
if(klystronNodes[i] == null || klystronNodes[i].expired) klystronNodes[i] = createNode(KlystronNetworkProvider.THE_PROVIDER, ForgeDirection.getOrientation(i + 2));
|
||||||
|
if(plasmaNodes[i] == null || plasmaNodes[i].expired) plasmaNodes[i] = createNode(PlasmaNetworkProvider.THE_PROVIDER, ForgeDirection.getOrientation(i + 2));
|
||||||
|
|
||||||
|
if(klystronNodes[i].net != null) klystronNodes[i].net.addReceiver(this);
|
||||||
|
if(plasmaNodes[i].net != null) plasmaNodes[i].net.addProvider(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.power = Library.chargeTEFromItems(slots, 0, power, this.getMaxPower());
|
||||||
|
|
||||||
|
this.fusionModule.update(1D, 1D, true, slots[1]);
|
||||||
|
this.didProcess = this.fusionModule.didProcess;
|
||||||
|
if(this.fusionModule.markDirty) this.markDirty();
|
||||||
|
|
||||||
|
this.networkPackNT(150);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public GenNode createNode(INetworkProvider provider, ForgeDirection dir) {
|
||||||
|
GenNode node = UniNodespace.getNode(worldObj, xCoord + dir.offsetX * 7, yCoord + 2, zCoord + dir.offsetZ * 7, provider);
|
||||||
|
if(node != null) return node;
|
||||||
|
|
||||||
|
node = new GenNode(provider,
|
||||||
|
new BlockPos(xCoord + dir.offsetX * 7, yCoord + 2, zCoord + dir.offsetZ * 7))
|
||||||
|
.setConnections(new DirPos(xCoord + dir.offsetX * 8, yCoord + 2, zCoord + dir.offsetZ * 8, dir));
|
||||||
|
|
||||||
|
UniNodespace.createNode(worldObj, node);
|
||||||
|
|
||||||
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void serialize(ByteBuf buf) {
|
public void serialize(ByteBuf buf) {
|
||||||
super.serialize(buf);
|
super.serialize(buf);
|
||||||
|
buf.writeBoolean(this.didProcess);
|
||||||
this.fusionModule.serialize(buf);
|
this.fusionModule.serialize(buf);
|
||||||
|
for(int i = 0; i < 4; i++) this.tanks[i].serialize(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deserialize(ByteBuf buf) {
|
public void deserialize(ByteBuf buf) {
|
||||||
super.deserialize(buf);
|
super.deserialize(buf);
|
||||||
|
this.didProcess = buf.readBoolean();
|
||||||
this.fusionModule.deserialize(buf);
|
this.fusionModule.deserialize(buf);
|
||||||
|
for(int i = 0; i < 4; i++) this.tanks[i].deserialize(buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void readFromNBT(NBTTagCompound nbt) {
|
||||||
|
super.readFromNBT(nbt);
|
||||||
|
|
||||||
|
for(int i = 0; i < 4; i++) this.tanks[i].readFromNBT(nbt, "t" + i);
|
||||||
|
|
||||||
|
this.power = nbt.getLong("power");
|
||||||
|
this.fusionModule.readFromNBT(nbt);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToNBT(NBTTagCompound nbt) {
|
||||||
|
super.writeToNBT(nbt);
|
||||||
|
|
||||||
|
for(int i = 0; i < 4; i++) this.tanks[i].writeToNBT(nbt, "t" + i);
|
||||||
|
|
||||||
|
nbt.setLong("power", power);
|
||||||
|
this.fusionModule.writeToNBT(nbt);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -76,6 +152,23 @@ public class TileEntityFusionTorus extends TileEntityCooledBase implements IGUIP
|
|||||||
return new DirPos[0]; // TBI
|
return new DirPos[0]; // TBI
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isItemValidForSlot(int slot, ItemStack stack) {
|
||||||
|
if(slot == 0) return true; // battery
|
||||||
|
if(slot == 1 && stack.getItem() == ModItems.blueprints) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canExtractItem(int i, ItemStack itemStack, int j) {
|
||||||
|
return i == 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int[] getAccessibleSlotsFromSide(int side) {
|
||||||
|
return new int[] {2};
|
||||||
|
}
|
||||||
|
|
||||||
AxisAlignedBB bb = null;
|
AxisAlignedBB bb = null;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -110,4 +203,27 @@ public class TileEntityFusionTorus extends TileEntityCooledBase implements IGUIP
|
|||||||
public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||||
return new GUIFusionTorus(player.inventory, this);
|
return new GUIFusionTorus(player.inventory, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isUseableByPlayer(EntityPlayer player) {
|
||||||
|
if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) return false;
|
||||||
|
return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 32 * 32;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasPermission(EntityPlayer player) {
|
||||||
|
return this.isUseableByPlayer(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receiveControl(NBTTagCompound data) {
|
||||||
|
if(data.hasKey("index") && data.hasKey("selection")) {
|
||||||
|
int index = data.getInteger("index");
|
||||||
|
String selection = data.getString("selection");
|
||||||
|
if(index == 0) {
|
||||||
|
this.fusionModule.recipe = selection;
|
||||||
|
this.markChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,9 @@
|
|||||||
|
package com.hbm.uninos.networkproviders;
|
||||||
|
|
||||||
|
import com.hbm.uninos.NodeNet;
|
||||||
|
|
||||||
|
public class KlystronNetwork extends NodeNet {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update() { }
|
||||||
|
}
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
package com.hbm.uninos.networkproviders;
|
||||||
|
|
||||||
|
import com.hbm.uninos.INetworkProvider;
|
||||||
|
|
||||||
|
public class KlystronNetworkProvider implements INetworkProvider<KlystronNetwork> {
|
||||||
|
|
||||||
|
public static KlystronNetworkProvider THE_PROVIDER = new KlystronNetworkProvider();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public KlystronNetwork provideNetwork() {
|
||||||
|
return new KlystronNetwork();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
package com.hbm.uninos.networkproviders;
|
||||||
|
|
||||||
|
import com.hbm.uninos.NodeNet;
|
||||||
|
|
||||||
|
public class PlasmaNetwork extends NodeNet {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update() { }
|
||||||
|
}
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
package com.hbm.uninos.networkproviders;
|
||||||
|
|
||||||
|
import com.hbm.uninos.INetworkProvider;
|
||||||
|
|
||||||
|
public class PlasmaNetworkProvider implements INetworkProvider<PlasmaNetwork> {
|
||||||
|
|
||||||
|
public static PlasmaNetworkProvider THE_PROVIDER = new PlasmaNetworkProvider();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PlasmaNetwork provideNetwork() {
|
||||||
|
return new PlasmaNetwork();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1273,6 +1273,8 @@ general.na=N/A
|
|||||||
|
|
||||||
gui.recipe.duration=Duration
|
gui.recipe.duration=Duration
|
||||||
gui.recipe.consumption=Consumption
|
gui.recipe.consumption=Consumption
|
||||||
|
gui.recipe.fusionIn=Klystron Input Energy
|
||||||
|
gui.recipe.fusionOut=Plasma Output Energy
|
||||||
gui.recipe.input=Input
|
gui.recipe.input=Input
|
||||||
gui.recipe.output=Output
|
gui.recipe.output=Output
|
||||||
gui.recipe.atPressure=at
|
gui.recipe.atPressure=at
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 4.8 KiB |
Loading…
x
Reference in New Issue
Block a user