mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
better hadron errors, RBMK fuel depletion slopes, mud recycling
This commit is contained in:
parent
9294758fef
commit
7daceac39f
@ -18,53 +18,50 @@ import net.minecraft.item.ItemStack;
|
|||||||
|
|
||||||
public class GasCentrifugeRecipeHandler extends TemplateRecipeHandler {
|
public class GasCentrifugeRecipeHandler extends TemplateRecipeHandler {
|
||||||
|
|
||||||
public static ArrayList<Fuel> fuels;
|
public static ArrayList<Fuel> fuels;
|
||||||
|
|
||||||
public class SmeltingSet extends TemplateRecipeHandler.CachedRecipe
|
public class SmeltingSet extends TemplateRecipeHandler.CachedRecipe {
|
||||||
{
|
PositionedStack input;
|
||||||
PositionedStack input;
|
PositionedStack result1;
|
||||||
PositionedStack result1;
|
PositionedStack result2;
|
||||||
PositionedStack result2;
|
PositionedStack result3;
|
||||||
PositionedStack result3;
|
|
||||||
|
|
||||||
|
public SmeltingSet(ItemStack input, ItemStack result1, ItemStack result2, ItemStack result3) {
|
||||||
|
input.stackSize = 1;
|
||||||
|
this.input = new PositionedStack(input, 25, 35 - 11);
|
||||||
|
this.result1 = new PositionedStack(result1, 128, 26 - 11);
|
||||||
|
this.result2 = new PositionedStack(result2, 128, 44 - 11);
|
||||||
|
this.result3 = new PositionedStack(result3, 146, 35 - 11);
|
||||||
|
}
|
||||||
|
|
||||||
public SmeltingSet(ItemStack input, ItemStack result1, ItemStack result2, ItemStack result3) {
|
@Override
|
||||||
input.stackSize = 1;
|
|
||||||
this.input = new PositionedStack(input, 25, 35 - 11);
|
|
||||||
this.result1 = new PositionedStack(result1, 128, 26 - 11);
|
|
||||||
this.result2 = new PositionedStack(result2, 128, 44 - 11);
|
|
||||||
this.result3 = new PositionedStack(result3, 146, 35 - 11);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<PositionedStack> getIngredients() {
|
public List<PositionedStack> getIngredients() {
|
||||||
return getCycledIngredients(cycleticks / 48, Arrays.asList(new PositionedStack[] {input}));
|
return getCycledIngredients(cycleticks / 48, Arrays.asList(new PositionedStack[] { input }));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<PositionedStack> getOtherStacks() {
|
public List<PositionedStack> getOtherStacks() {
|
||||||
List<PositionedStack> stacks = new ArrayList<PositionedStack>();
|
List<PositionedStack> stacks = new ArrayList<PositionedStack>();
|
||||||
stacks.add(fuels.get((cycleticks / 48) % fuels.size()).stack);
|
stacks.add(fuels.get((cycleticks / 48) % fuels.size()).stack);
|
||||||
stacks.add(result2);
|
stacks.add(result2);
|
||||||
stacks.add(result3);
|
stacks.add(result3);
|
||||||
return stacks;
|
return stacks;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PositionedStack getResult() {
|
public PositionedStack getResult() {
|
||||||
return result1;
|
return result1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Fuel
|
public static class Fuel {
|
||||||
{
|
public Fuel(ItemStack ingred) {
|
||||||
public Fuel(ItemStack ingred) {
|
|
||||||
|
|
||||||
this.stack = new PositionedStack(ingred, 3, 42, false);
|
this.stack = new PositionedStack(ingred, 3, 42, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PositionedStack stack;
|
public PositionedStack stack;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getRecipeName() {
|
public String getRecipeName() {
|
||||||
@ -76,28 +73,27 @@ public class GasCentrifugeRecipeHandler extends TemplateRecipeHandler {
|
|||||||
return GUIMachineGasCent.texture.toString();
|
return GUIMachineGasCent.texture.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Class<? extends GuiContainer> getGuiClass() {
|
public Class<? extends GuiContainer> getGuiClass() {
|
||||||
return GUIMachineGasCent.class;
|
return GUIMachineGasCent.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TemplateRecipeHandler newInstance() {
|
public TemplateRecipeHandler newInstance() {
|
||||||
if (fuels == null || fuels.isEmpty())
|
if(fuels == null || fuels.isEmpty())
|
||||||
fuels = new ArrayList<Fuel>();
|
fuels = new ArrayList<Fuel>();
|
||||||
for(ItemStack i : MachineRecipes.instance().getBatteries())
|
for(ItemStack i : MachineRecipes.instance().getBatteries()) {
|
||||||
{
|
fuels.add(new Fuel(i));
|
||||||
fuels.add(new Fuel(i));
|
}
|
||||||
}
|
return super.newInstance();
|
||||||
return super.newInstance();
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadCraftingRecipes(String outputId, Object... results) {
|
public void loadCraftingRecipes(String outputId, Object... results) {
|
||||||
if ((outputId.equals("gascentprocessing")) && getClass() == GasCentrifugeRecipeHandler.class) {
|
if((outputId.equals("gascentprocessing")) && getClass() == GasCentrifugeRecipeHandler.class) {
|
||||||
Map<Object, Object[]> recipes = GasCentrifugeRecipes.getGasCentrifugeRecipes();
|
Map<Object, Object[]> recipes = GasCentrifugeRecipes.getGasCentrifugeRecipes();
|
||||||
for (Map.Entry<Object, Object[]> recipe : recipes.entrySet()) {
|
for(Map.Entry<Object, Object[]> recipe : recipes.entrySet()) {
|
||||||
this.arecipes.add(new SmeltingSet((ItemStack)recipe.getKey(), (ItemStack)recipe.getValue()[0], (ItemStack)recipe.getValue()[1], (ItemStack)recipe.getValue()[2]));
|
this.arecipes.add(new SmeltingSet((ItemStack) recipe.getKey(), (ItemStack) recipe.getValue()[0], (ItemStack) recipe.getValue()[1], (ItemStack) recipe.getValue()[2]));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
super.loadCraftingRecipes(outputId, results);
|
super.loadCraftingRecipes(outputId, results);
|
||||||
@ -107,15 +103,16 @@ public class GasCentrifugeRecipeHandler extends TemplateRecipeHandler {
|
|||||||
@Override
|
@Override
|
||||||
public void loadCraftingRecipes(ItemStack result) {
|
public void loadCraftingRecipes(ItemStack result) {
|
||||||
Map<Object, Object[]> recipes = GasCentrifugeRecipes.getGasCentrifugeRecipes();
|
Map<Object, Object[]> recipes = GasCentrifugeRecipes.getGasCentrifugeRecipes();
|
||||||
for (Map.Entry<Object, Object[]> recipe : recipes.entrySet()) {
|
for(Map.Entry<Object, Object[]> recipe : recipes.entrySet()) {
|
||||||
if (NEIServerUtils.areStacksSameType((ItemStack)recipe.getValue()[0], result) || NEIServerUtils.areStacksSameType((ItemStack)recipe.getValue()[1], result) || NEIServerUtils.areStacksSameType((ItemStack)recipe.getValue()[2], result))
|
if(NEIServerUtils.areStacksSameType((ItemStack) recipe.getValue()[0], result) || NEIServerUtils.areStacksSameType((ItemStack) recipe.getValue()[1], result)
|
||||||
this.arecipes.add(new SmeltingSet((ItemStack)recipe.getKey(), (ItemStack)recipe.getValue()[0], (ItemStack)recipe.getValue()[1], (ItemStack)recipe.getValue()[2]));
|
|| NEIServerUtils.areStacksSameType((ItemStack) recipe.getValue()[2], result))
|
||||||
|
this.arecipes.add(new SmeltingSet((ItemStack) recipe.getKey(), (ItemStack) recipe.getValue()[0], (ItemStack) recipe.getValue()[1], (ItemStack) recipe.getValue()[2]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadUsageRecipes(String inputId, Object... ingredients) {
|
public void loadUsageRecipes(String inputId, Object... ingredients) {
|
||||||
if ((inputId.equals("gascentprocessing")) && getClass() == GasCentrifugeRecipeHandler.class) {
|
if((inputId.equals("gascentprocessing")) && getClass() == GasCentrifugeRecipeHandler.class) {
|
||||||
loadCraftingRecipes("gascentprocessing", new Object[0]);
|
loadCraftingRecipes("gascentprocessing", new Object[0]);
|
||||||
} else {
|
} else {
|
||||||
super.loadUsageRecipes(inputId, ingredients);
|
super.loadUsageRecipes(inputId, ingredients);
|
||||||
@ -125,9 +122,9 @@ public class GasCentrifugeRecipeHandler extends TemplateRecipeHandler {
|
|||||||
@Override
|
@Override
|
||||||
public void loadUsageRecipes(ItemStack ingredient) {
|
public void loadUsageRecipes(ItemStack ingredient) {
|
||||||
Map<Object, Object[]> recipes = GasCentrifugeRecipes.getGasCentrifugeRecipes();
|
Map<Object, Object[]> recipes = GasCentrifugeRecipes.getGasCentrifugeRecipes();
|
||||||
for (Map.Entry<Object, Object[]> recipe : recipes.entrySet()) {
|
for(Map.Entry<Object, Object[]> recipe : recipes.entrySet()) {
|
||||||
if (compareFluidStacks(ingredient, (ItemStack)recipe.getKey()))
|
if(compareFluidStacks(ingredient, (ItemStack) recipe.getKey()))
|
||||||
this.arecipes.add(new SmeltingSet((ItemStack)recipe.getKey(), (ItemStack)recipe.getValue()[0], (ItemStack)recipe.getValue()[1], (ItemStack)recipe.getValue()[2]));
|
this.arecipes.add(new SmeltingSet((ItemStack) recipe.getKey(), (ItemStack) recipe.getValue()[0], (ItemStack) recipe.getValue()[1], (ItemStack) recipe.getValue()[2]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -135,14 +132,14 @@ public class GasCentrifugeRecipeHandler extends TemplateRecipeHandler {
|
|||||||
return sta1.getItem() == sta2.getItem() && sta1.getItemDamage() == sta2.getItemDamage();
|
return sta1.getItem() == sta2.getItem() && sta1.getItemDamage() == sta2.getItemDamage();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawExtras(int recipe) {
|
public void drawExtras(int recipe) {
|
||||||
drawProgressBar(3, 51 - 45, 176, 0, 16, 34, 480, 7);
|
drawProgressBar(3, 51 - 45, 176, 0, 16, 34, 480, 7);
|
||||||
drawProgressBar(69, 26, 208, 0, 33, 12, 200, 0);
|
drawProgressBar(69, 26, 208, 0, 33, 12, 200, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadTransferRects() {
|
public void loadTransferRects() {
|
||||||
transferRects.add(new RecipeTransferRect(new Rectangle(69, 26, 32, 12), "gascentprocessing"));
|
transferRects.add(new RecipeTransferRect(new Rectangle(69, 26, 32, 12), "gascentprocessing"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -100,7 +100,7 @@ public class GUIHadron extends GuiInfoContainer {
|
|||||||
if(hadron.state == EnumHadronState.NORESULT) {
|
if(hadron.state == EnumHadronState.NORESULT) {
|
||||||
drawTexturedModalRect(guiLeft + 73, guiTop + 29, 176, 30, 30, 30);
|
drawTexturedModalRect(guiLeft + 73, guiTop + 29, 176, 30, 30, 30);
|
||||||
}
|
}
|
||||||
if(hadron.state == EnumHadronState.ERROR) {
|
if(hadron.state == EnumHadronState.ERROR_GENERIC) {
|
||||||
drawTexturedModalRect(guiLeft + 73, guiTop + 29, 176, 106, 30, 30);
|
drawTexturedModalRect(guiLeft + 73, guiTop + 29, 176, 106, 30, 30);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -15,14 +15,17 @@ import net.minecraft.item.ItemStack;
|
|||||||
public class GasCentrifugeRecipes {
|
public class GasCentrifugeRecipes {
|
||||||
|
|
||||||
public static enum PseudoFluidType {
|
public static enum PseudoFluidType {
|
||||||
NONE (0, 0, "NONE", "Empty", false, (ItemStack[])null),
|
NONE (0, 0, "NONE", "Empty", false, (ItemStack[])null),
|
||||||
|
|
||||||
NUF6 (400, 300, "LEUF6", "Natural UF6", false, new ItemStack(ModItems.nugget_u238, 1)),
|
NUF6 (400, 300, "LEUF6", "Natural UF6", false, new ItemStack(ModItems.nugget_u238, 1)),
|
||||||
LEUF6 (300, 200, "MEUF6", "Low Enriched UF6", false, new ItemStack(ModItems.nugget_u238, 1), new ItemStack(ModItems.fluorite, 1)),
|
LEUF6 (300, 200, "MEUF6", "Low Enriched UF6", false, new ItemStack(ModItems.nugget_u238, 1), new ItemStack(ModItems.fluorite, 1)),
|
||||||
MEUF6 (200, 100, "HEUF6", "Medium Enriched UF6", false, new ItemStack(ModItems.nugget_u238, 1)),
|
MEUF6 (200, 100, "HEUF6", "Medium Enriched UF6", false, new ItemStack(ModItems.nugget_u238, 1)),
|
||||||
HEUF6 (300, 0, "NONE", "High Enriched UF6", true, new ItemStack(ModItems.nugget_u238, 2), new ItemStack(ModItems.nugget_u235, 1), new ItemStack(ModItems.fluorite, 1)),
|
HEUF6 (300, 0, "NONE", "High Enriched UF6", true, new ItemStack(ModItems.nugget_u238, 2), new ItemStack(ModItems.nugget_u235, 1), new ItemStack(ModItems.fluorite, 1)),
|
||||||
|
|
||||||
PF6 (300, 0, "NONE", "Plutonium Hexafluoride", false, new ItemStack(ModItems.nugget_pu238, 1), new ItemStack(ModItems.nugget_pu_mix, 2), new ItemStack(ModItems.fluorite, 1));
|
PF6 (300, 0, "NONE", "Plutonium Hexafluoride", false, new ItemStack(ModItems.nugget_pu238, 1), new ItemStack(ModItems.nugget_pu_mix, 2), new ItemStack(ModItems.fluorite, 1)),
|
||||||
|
|
||||||
|
MUD (1000, 500, "MUD_HEAVY", "Poisonous Mud", false, new ItemStack(ModItems.powder_lead, 1), new ItemStack(ModItems.dust, 1)),
|
||||||
|
MUD_HEAVY (500, 0, "NONE", "Heavy Mud Fraction", false, new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.dust, 1), new ItemStack(ModItems.nuclear_waste_tiny, 1));
|
||||||
|
|
||||||
int fluidConsumed;
|
int fluidConsumed;
|
||||||
int fluidProduced;
|
int fluidProduced;
|
||||||
@ -78,6 +81,10 @@ public class GasCentrifugeRecipes {
|
|||||||
outputs.add(new ItemStack(ModItems.nugget_pu238, 3));
|
outputs.add(new ItemStack(ModItems.nugget_pu238, 3));
|
||||||
outputs.add(new ItemStack(ModItems.nugget_pu_mix, 6));
|
outputs.add(new ItemStack(ModItems.nugget_pu_mix, 6));
|
||||||
outputs.add(new ItemStack(ModItems.fluorite, 3));
|
outputs.add(new ItemStack(ModItems.fluorite, 3));
|
||||||
|
} else if(fluid == Fluids.WATZ) {
|
||||||
|
outputs.add(new ItemStack(ModItems.powder_iron, 1));
|
||||||
|
outputs.add(new ItemStack(ModItems.powder_lead, 1));
|
||||||
|
outputs.add(new ItemStack(ModItems.nuclear_waste_tiny, 1)); //we have to omit dust here because the NEI handler only supports 3 items
|
||||||
}
|
}
|
||||||
return outputs;
|
return outputs;
|
||||||
}
|
}
|
||||||
@ -85,6 +92,7 @@ public class GasCentrifugeRecipes {
|
|||||||
public static int getQuantityRequired(FluidType fluid) {
|
public static int getQuantityRequired(FluidType fluid) {
|
||||||
if(fluid == Fluids.UF6) return 1200;
|
if(fluid == Fluids.UF6) return 1200;
|
||||||
if(fluid == Fluids.PUF6)return 900;
|
if(fluid == Fluids.PUF6)return 900;
|
||||||
|
if(fluid == Fluids.WATZ)return 1000;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1066,6 +1066,7 @@ public class ModItems {
|
|||||||
public static ItemRBMKRod rbmk_fuel_zfb_pu241;
|
public static ItemRBMKRod rbmk_fuel_zfb_pu241;
|
||||||
public static ItemRBMKRod rbmk_fuel_zfb_am_mix;
|
public static ItemRBMKRod rbmk_fuel_zfb_am_mix;
|
||||||
public static ItemRBMKRod rbmk_fuel_drx;
|
public static ItemRBMKRod rbmk_fuel_drx;
|
||||||
|
public static ItemRBMKRod rbmk_fuel_test;
|
||||||
public static ItemRBMKPellet rbmk_pellet_ueu;
|
public static ItemRBMKPellet rbmk_pellet_ueu;
|
||||||
public static ItemRBMKPellet rbmk_pellet_meu;
|
public static ItemRBMKPellet rbmk_pellet_meu;
|
||||||
public static ItemRBMKPellet rbmk_pellet_heu233;
|
public static ItemRBMKPellet rbmk_pellet_heu233;
|
||||||
@ -3741,6 +3742,13 @@ public class ModItems {
|
|||||||
.setHeat(0.1D)
|
.setHeat(0.1D)
|
||||||
.setMeltingPoint(100000)
|
.setMeltingPoint(100000)
|
||||||
.setUnlocalizedName("rbmk_fuel_drx").setTextureName(RefStrings.MODID + ":rbmk_fuel_drx");
|
.setUnlocalizedName("rbmk_fuel_drx").setTextureName(RefStrings.MODID + ":rbmk_fuel_drx");
|
||||||
|
rbmk_fuel_test = (ItemRBMKRod) new ItemRBMKRod("THE VOICES")
|
||||||
|
.setYield(1000000D)
|
||||||
|
.setStats(1000, 10)
|
||||||
|
.setFunction(EnumBurnFunc.QUADRATIC)
|
||||||
|
.setHeat(0.1D)
|
||||||
|
.setMeltingPoint(100000)
|
||||||
|
.setUnlocalizedName("rbmk_fuel_drx").setTextureName(RefStrings.MODID + ":rbmk_fuel_drx");
|
||||||
|
|
||||||
trinitite = new ItemNuclearWaste().setUnlocalizedName("trinitite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":trinitite_new");
|
trinitite = new ItemNuclearWaste().setUnlocalizedName("trinitite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":trinitite_new");
|
||||||
nuclear_waste_long = new ItemWasteLong().setUnlocalizedName("nuclear_waste_long").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nuclear_waste_long");
|
nuclear_waste_long = new ItemWasteLong().setUnlocalizedName("nuclear_waste_long").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nuclear_waste_long");
|
||||||
|
|||||||
@ -25,6 +25,7 @@ public class ItemRBMKRod extends Item {
|
|||||||
public double reactivity; //endpoint of the function
|
public double reactivity; //endpoint of the function
|
||||||
public double selfRate; //self-inflicted flux from self-igniting fuels
|
public double selfRate; //self-inflicted flux from self-igniting fuels
|
||||||
public EnumBurnFunc function = EnumBurnFunc.LOG_TEN;
|
public EnumBurnFunc function = EnumBurnFunc.LOG_TEN;
|
||||||
|
public EnumDepleteFunction depFunc = EnumDepleteFunction.LINEAR;
|
||||||
public double xGen = 0.5D; //multiplier for xenon production
|
public double xGen = 0.5D; //multiplier for xenon production
|
||||||
public double xBurn = 50D; //divider for xenon burnup
|
public double xBurn = 50D; //divider for xenon burnup
|
||||||
public double heat = 1D; //heat produced per outFlux
|
public double heat = 1D; //heat produced per outFlux
|
||||||
@ -87,6 +88,11 @@ public class ItemRBMKRod extends Item {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ItemRBMKRod setDepletionFunction(EnumDepleteFunction func) {
|
||||||
|
this.depFunc = func;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public ItemRBMKRod setHeat(double heat) {
|
public ItemRBMKRod setHeat(double heat) {
|
||||||
this.heat = heat;
|
this.heat = heat;
|
||||||
return this;
|
return this;
|
||||||
@ -211,7 +217,8 @@ public class ItemRBMKRod extends Item {
|
|||||||
SIGMOID(EnumChatFormatting.GREEN + "SAFE / SIGMOID"), //100 / (1 + e^(-(x - 50) / 10)) <- tiny amount of reactivity at x=0 !
|
SIGMOID(EnumChatFormatting.GREEN + "SAFE / SIGMOID"), //100 / (1 + e^(-(x - 50) / 10)) <- tiny amount of reactivity at x=0 !
|
||||||
SQUARE_ROOT(EnumChatFormatting.YELLOW + "MEDIUM / SQUARE ROOT"), //sqrt(x) * 10 * reactivity
|
SQUARE_ROOT(EnumChatFormatting.YELLOW + "MEDIUM / SQUARE ROOT"), //sqrt(x) * 10 * reactivity
|
||||||
LINEAR(EnumChatFormatting.RED + "DANGEROUS / LINEAR"), //x * reactivity
|
LINEAR(EnumChatFormatting.RED + "DANGEROUS / LINEAR"), //x * reactivity
|
||||||
QUADRATIC(EnumChatFormatting.RED + "DANGEROUS / QUADRATIC"); //x^2 / 100 * reactivity
|
QUADRATIC(EnumChatFormatting.RED + "DANGEROUS / QUADRATIC"), //x^2 / 100 * reactivity
|
||||||
|
EXPERIMENTAL(EnumChatFormatting.RED + "EXPERIMENTAL / SINE SLOPE"); //x * (sin(x) + 1)
|
||||||
|
|
||||||
public String title = "";
|
public String title = "";
|
||||||
|
|
||||||
@ -226,7 +233,7 @@ public class ItemRBMKRod extends Item {
|
|||||||
*/
|
*/
|
||||||
public double reactivityFunc(double in, double enrichment) {
|
public double reactivityFunc(double in, double enrichment) {
|
||||||
|
|
||||||
double flux = in * enrichment;
|
double flux = in * reativityModByEnrichment(enrichment);
|
||||||
|
|
||||||
switch(this.function) {
|
switch(this.function) {
|
||||||
case PASSIVE: return selfRate * enrichment;
|
case PASSIVE: return selfRate * enrichment;
|
||||||
@ -237,6 +244,7 @@ public class ItemRBMKRod extends Item {
|
|||||||
case SQUARE_ROOT: return Math.sqrt(flux) * reactivity / 10D;
|
case SQUARE_ROOT: return Math.sqrt(flux) * reactivity / 10D;
|
||||||
case LINEAR: return flux / 100D * reactivity;
|
case LINEAR: return flux / 100D * reactivity;
|
||||||
case QUADRATIC: return flux * flux / 10000D * reactivity;
|
case QUADRATIC: return flux * flux / 10000D * reactivity;
|
||||||
|
case EXPERIMENTAL: return flux * (Math.sin(flux) + 1) * reactivity;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -258,11 +266,32 @@ public class ItemRBMKRod extends Item {
|
|||||||
case SQUARE_ROOT: return "sqrt(" + x + ") * " + reactivity + " / 10";
|
case SQUARE_ROOT: return "sqrt(" + x + ") * " + reactivity + " / 10";
|
||||||
case LINEAR: return x + " / 100 * " + reactivity;
|
case LINEAR: return x + " / 100 * " + reactivity;
|
||||||
case QUADRATIC: return x + "² / 10000 * " + reactivity;
|
case QUADRATIC: return x + "² / 10000 * " + reactivity;
|
||||||
|
case EXPERIMENTAL: return x + " * (sin(" + x + ") + 1) * " + reactivity;
|
||||||
}
|
}
|
||||||
|
|
||||||
return "ERROR";
|
return "ERROR";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static enum EnumDepleteFunction {
|
||||||
|
LINEAR, //old function
|
||||||
|
RAISING_SLOPE, //for breeding fuels such as MEU, maximum of 110% at 28% depletion
|
||||||
|
BOOSTED_SLOPE, //for strong breeding fuels such Th232, maximum of 132% at 64% depletion
|
||||||
|
GENTLE_SLOPE, //recommended for most fuels, maximum barely over the start, near the beginning
|
||||||
|
STATIC; //for arcade-style neutron sources
|
||||||
|
}
|
||||||
|
|
||||||
|
public double reativityModByEnrichment(double enrichment) {
|
||||||
|
|
||||||
|
switch(this.depFunc) {
|
||||||
|
default:
|
||||||
|
case LINEAR: return enrichment;
|
||||||
|
case STATIC: return 1D;
|
||||||
|
case BOOSTED_SLOPE: return -enrichment + 1 + Math.sin(enrichment * enrichment * Math.PI);
|
||||||
|
case RAISING_SLOPE: return -enrichment + 1 + (Math.sin(enrichment * Math.PI) / 2D);
|
||||||
|
case GENTLE_SLOPE: return -enrichment + 1 + (Math.sin(enrichment * Math.PI) / 3D);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Xenon generated per tick, linear function
|
* Xenon generated per tick, linear function
|
||||||
* @param flux
|
* @param flux
|
||||||
|
|||||||
@ -48,7 +48,8 @@ public class ItemGuideBook extends Item {
|
|||||||
public enum BookType {
|
public enum BookType {
|
||||||
|
|
||||||
TEST("book.test.cover", 2F, statFacTest()),
|
TEST("book.test.cover", 2F, statFacTest()),
|
||||||
RBMK("book.rbmk.cover", 1.5F, statFacRBMK());
|
RBMK("book.rbmk.cover", 1.5F, statFacRBMK()),
|
||||||
|
HADRON("book.error.cover", 1.5F, statFacHadron());
|
||||||
|
|
||||||
public List<GuidePage> pages;
|
public List<GuidePage> pages;
|
||||||
public float titleScale;
|
public float titleScale;
|
||||||
@ -115,6 +116,17 @@ public class ItemGuideBook extends Item {
|
|||||||
return pages;
|
return pages;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<GuidePage> statFacHadron() {
|
||||||
|
|
||||||
|
List<GuidePage> pages = new ArrayList();
|
||||||
|
|
||||||
|
for(int i = 1; i <= 9; i++) {
|
||||||
|
pages.add(new GuidePage("book.error.page" + i).setScale(2F).addTitle("book.error.title" + i, 0x800000, 1F));
|
||||||
|
}
|
||||||
|
|
||||||
|
return pages;
|
||||||
|
}
|
||||||
|
|
||||||
public static class GuidePage {
|
public static class GuidePage {
|
||||||
|
|
||||||
public String title;
|
public String title;
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import com.hbm.items.ModItems;
|
|||||||
import com.hbm.items.machine.ItemBattery;
|
import com.hbm.items.machine.ItemBattery;
|
||||||
import com.hbm.items.special.ItemCircuitStarComponent.CircuitComponentType;
|
import com.hbm.items.special.ItemCircuitStarComponent.CircuitComponentType;
|
||||||
import com.hbm.items.special.ItemPlasticScrap.ScrapType;
|
import com.hbm.items.special.ItemPlasticScrap.ScrapType;
|
||||||
|
import com.hbm.items.tool.ItemGuideBook.BookType;
|
||||||
import com.hbm.util.EnchantmentUtil;
|
import com.hbm.util.EnchantmentUtil;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
@ -733,7 +734,7 @@ public class CraftingManager {
|
|||||||
addRecipeAuto(new ItemStack(ModItems.upgrade_smelter, 1), new Object[] { "PHP", "CUC", "DTD", 'P', CU.plate(), 'H', Blocks.hopper, 'C', ModItems.coil_tungsten, 'U', ModItems.upgrade_template, 'D', ModItems.coil_copper, 'T', ModBlocks.machine_transformer });
|
addRecipeAuto(new ItemStack(ModItems.upgrade_smelter, 1), new Object[] { "PHP", "CUC", "DTD", 'P', CU.plate(), 'H', Blocks.hopper, 'C', ModItems.coil_tungsten, 'U', ModItems.upgrade_template, 'D', ModItems.coil_copper, 'T', ModBlocks.machine_transformer });
|
||||||
addRecipeAuto(new ItemStack(ModItems.upgrade_shredder, 1), new Object[] { "PHP", "CUC", "DTD", 'P', ModItems.motor, 'H', Blocks.hopper, 'C', ModItems.blades_advanced_alloy, 'U', ModItems.upgrade_smelter, 'D', TI.plate(), 'T', ModBlocks.machine_transformer });
|
addRecipeAuto(new ItemStack(ModItems.upgrade_shredder, 1), new Object[] { "PHP", "CUC", "DTD", 'P', ModItems.motor, 'H', Blocks.hopper, 'C', ModItems.blades_advanced_alloy, 'U', ModItems.upgrade_smelter, 'D', TI.plate(), 'T', ModBlocks.machine_transformer });
|
||||||
addRecipeAuto(new ItemStack(ModItems.upgrade_centrifuge, 1), new Object[] { "PHP", "PUP", "DTD", 'P', ModItems.centrifuge_element, 'H', Blocks.hopper, 'U', ModItems.upgrade_shredder, 'D', POLYMER.ingot(), 'T', ModBlocks.machine_transformer });
|
addRecipeAuto(new ItemStack(ModItems.upgrade_centrifuge, 1), new Object[] { "PHP", "PUP", "DTD", 'P', ModItems.centrifuge_element, 'H', Blocks.hopper, 'U', ModItems.upgrade_shredder, 'D', POLYMER.ingot(), 'T', ModBlocks.machine_transformer });
|
||||||
addRecipeAuto(new ItemStack(ModItems.upgrade_crystallizer, 1), new Object[] { "PHP", "CUC", "DTD", 'P', new ItemStack(ModItems.fluid_barrel_full, 1, Fluids.ACID.ordinal()), 'H', ModItems.circuit_targeting_tier4, 'C', ModBlocks.barrel_steel, 'U', ModItems.upgrade_centrifuge, 'D', ModItems.motor, 'T', ModBlocks.machine_transformer });
|
addRecipeAuto(new ItemStack(ModItems.upgrade_crystallizer, 1), new Object[] { "PHP", "CUC", "DTD", 'P', new ItemStack(ModItems.fluid_barrel_full, 1, Fluids.ACID.getID()), 'H', ModItems.circuit_targeting_tier4, 'C', ModBlocks.barrel_steel, 'U', ModItems.upgrade_centrifuge, 'D', ModItems.motor, 'T', ModBlocks.machine_transformer });
|
||||||
addRecipeAuto(new ItemStack(ModItems.upgrade_screm, 1), new Object[] { "SUS", "SCS", "SUS", 'S', STEEL.plate(), 'U', ModItems.upgrade_template, 'C', ModItems.crystal_xen });
|
addRecipeAuto(new ItemStack(ModItems.upgrade_screm, 1), new Object[] { "SUS", "SCS", "SUS", 'S', STEEL.plate(), 'U', ModItems.upgrade_template, 'C', ModItems.crystal_xen });
|
||||||
addRecipeAuto(new ItemStack(ModItems.upgrade_gc_speed, 1), new Object[] {"TCT", "HUH", "TCT", 'T', ModItems.nugget_bismuth, 'C', ModItems.coil_copper, 'H', ModItems.coil_tungsten, 'U', ModItems.upgrade_template});
|
addRecipeAuto(new ItemStack(ModItems.upgrade_gc_speed, 1), new Object[] {"TCT", "HUH", "TCT", 'T', ModItems.nugget_bismuth, 'C', ModItems.coil_copper, 'H', ModItems.coil_tungsten, 'U', ModItems.upgrade_template});
|
||||||
|
|
||||||
@ -844,6 +845,10 @@ public class CraftingManager {
|
|||||||
|
|
||||||
addRecipeAuto(new ItemStack(ModBlocks.machine_condenser), new Object[] { "SIS", "ICI", "SIS", 'S', STEEL.ingot(), 'I', IRON.plate(), 'C', ModItems.board_copper });
|
addRecipeAuto(new ItemStack(ModBlocks.machine_condenser), new Object[] { "SIS", "ICI", "SIS", 'S', STEEL.ingot(), 'I', IRON.plate(), 'C', ModItems.board_copper });
|
||||||
|
|
||||||
|
addShapelessAuto(new ItemStack(ModItems.book_guide, 1, BookType.TEST.ordinal()), new Object[] { Items.book, ModItems.canned_jizz });
|
||||||
|
addShapelessAuto(new ItemStack(ModItems.book_guide, 1, BookType.RBMK.ordinal()), new Object[] { Items.book, Items.potato });
|
||||||
|
addShapelessAuto(new ItemStack(ModItems.book_guide, 1, BookType.HADRON.ordinal()), new Object[] { Items.book, ModItems.fuse });
|
||||||
|
|
||||||
if(GeneralConfig.enableBabyMode) {
|
if(GeneralConfig.enableBabyMode) {
|
||||||
addShapelessAuto(new ItemStack(ModItems.cordite, 3), new Object[] { ModItems.ballistite, Items.gunpowder, new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) });
|
addShapelessAuto(new ItemStack(ModItems.cordite, 3), new Object[] { ModItems.ballistite, Items.gunpowder, new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) });
|
||||||
addShapelessAuto(new ItemStack(ModItems.ingot_semtex, 3), new Object[] { Items.slime_ball, Blocks.tnt, KNO.dust() });
|
addShapelessAuto(new ItemStack(ModItems.ingot_semtex, 3), new Object[] { Items.slime_ball, Blocks.tnt, KNO.dust() });
|
||||||
|
|||||||
@ -41,7 +41,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
public EnumHadronState state = EnumHadronState.IDLE;
|
public EnumHadronState state = EnumHadronState.IDLE;
|
||||||
private static final int delaySuccess = 20;
|
private static final int delaySuccess = 20;
|
||||||
private static final int delayNoResult = 60;
|
private static final int delayNoResult = 60;
|
||||||
private static final int delayError = 60;
|
private static final int delayError = 100;
|
||||||
|
|
||||||
public TileEntityHadron() {
|
public TileEntityHadron() {
|
||||||
super(5);
|
super(5);
|
||||||
@ -293,7 +293,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
this.momentum = 0;
|
this.momentum = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void expire() {
|
public void expire(EnumHadronState reason) {
|
||||||
|
|
||||||
if(expired)
|
if(expired)
|
||||||
return;
|
return;
|
||||||
@ -305,7 +305,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
//System.out.println("Last pos: " + posX + " " + posY + " " + posZ);
|
//System.out.println("Last pos: " + posX + " " + posY + " " + posZ);
|
||||||
//Thread.currentThread().dumpStack();
|
//Thread.currentThread().dumpStack();
|
||||||
|
|
||||||
TileEntityHadron.this.state = EnumHadronState.ERROR;
|
TileEntityHadron.this.state = reason;
|
||||||
TileEntityHadron.this.delay = delayError;
|
TileEntityHadron.this.delay = delayError;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -327,7 +327,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
isCheckExempt = false; //clearing up the exemption we might have held from the previous turn, AFTER stepping
|
isCheckExempt = false; //clearing up the exemption we might have held from the previous turn, AFTER stepping
|
||||||
|
|
||||||
if(charge < 0)
|
if(charge < 0)
|
||||||
this.expire();
|
this.expire(EnumHadronState.ERROR_NO_CHARGE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -354,7 +354,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
if(te instanceof TileEntityHadron) {
|
if(te instanceof TileEntityHadron) {
|
||||||
|
|
||||||
if(p.analysis != 3)
|
if(p.analysis != 3)
|
||||||
p.expire();
|
p.expire(EnumHadronState.ERROR_NO_ANALYSIS);
|
||||||
else
|
else
|
||||||
this.finishParticle(p);
|
this.finishParticle(p);
|
||||||
|
|
||||||
@ -362,7 +362,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(block.getMaterial() != Material.air && block != ModBlocks.hadron_diode)
|
if(block.getMaterial() != Material.air && block != ModBlocks.hadron_diode)
|
||||||
p.expire();
|
p.expire(EnumHadronState.ERROR_OBSTRUCTED_CHANNEL);
|
||||||
|
|
||||||
if(block == ModBlocks.hadron_diode)
|
if(block == ModBlocks.hadron_diode)
|
||||||
p.isCheckExempt = true;
|
p.isCheckExempt = true;
|
||||||
@ -433,7 +433,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
|
|
||||||
//not a valid coil: kablam!
|
//not a valid coil: kablam!
|
||||||
if(coilVal == 0) {
|
if(coilVal == 0) {
|
||||||
p.expire();
|
p.expire(EnumHadronState.ERROR_EXPECTED_COIL);
|
||||||
} else {
|
} else {
|
||||||
p.momentum += coilVal;
|
p.momentum += coilVal;
|
||||||
p.charge -= coilVal;
|
p.charge -= coilVal;
|
||||||
@ -480,7 +480,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
//System.out.println("Was exempt: " + p.isCheckExempt);
|
//System.out.println("Was exempt: " + p.isCheckExempt);
|
||||||
//worldObj.setBlock(a, b, c, Blocks.dirt);
|
//worldObj.setBlock(a, b, c, Blocks.dirt);
|
||||||
|
|
||||||
p.expire();
|
p.expire(EnumHadronState.ERROR_MALFORMED_SEGMENT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -492,7 +492,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
|
|
||||||
//if the analysis chamber is too big, destroy
|
//if the analysis chamber is too big, destroy
|
||||||
if(p.analysis > 3)
|
if(p.analysis > 3)
|
||||||
p.expire();
|
p.expire(EnumHadronState.ERROR_ANALYSIS_TOO_LONG);
|
||||||
|
|
||||||
if(p.analysis == 2) {
|
if(p.analysis == 2) {
|
||||||
this.worldObj.playSoundEffect(p.posX + 0.5, p.posY + 0.5, p.posZ + 0.5, "fireworks.blast", 2.0F, 2F);
|
this.worldObj.playSoundEffect(p.posX + 0.5, p.posY + 0.5, p.posZ + 0.5, "fireworks.blast", 2.0F, 2F);
|
||||||
@ -511,7 +511,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
|
|
||||||
//if the analysis stops despite being short of 3 steps in the analysis chamber, destroy
|
//if the analysis stops despite being short of 3 steps in the analysis chamber, destroy
|
||||||
if(p.analysis > 0 && p.analysis < 3)
|
if(p.analysis > 0 && p.analysis < 3)
|
||||||
p.expire();
|
p.expire(EnumHadronState.ERROR_ANALYSIS_TOO_SHORT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -542,7 +542,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
|
|
||||||
if(diode.getConfig(p.dir.getOpposite().ordinal()) != DiodeConfig.IN) {
|
if(diode.getConfig(p.dir.getOpposite().ordinal()) != DiodeConfig.IN) {
|
||||||
//it appears as if we have slammed into the side of a diode, ouch
|
//it appears as if we have slammed into the side of a diode, ouch
|
||||||
p.expire();
|
p.expire(EnumHadronState.ERROR_DIODE_COLLISION);
|
||||||
}
|
}
|
||||||
|
|
||||||
//there's a diode ahead, turn off checks so we can make the curve
|
//there's a diode ahead, turn off checks so we can make the curve
|
||||||
@ -600,28 +600,22 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
|
|
||||||
List<ForgeDirection> dirs = getRandomDirs();
|
List<ForgeDirection> dirs = getRandomDirs();
|
||||||
|
|
||||||
//System.out.println("Starting as " + dir.name());
|
|
||||||
|
|
||||||
//let's look at every direction we could go in
|
//let's look at every direction we could go in
|
||||||
for(ForgeDirection d : dirs) {
|
for(ForgeDirection d : dirs) {
|
||||||
|
|
||||||
if(d == dir || d == dir.getOpposite())
|
if(d == dir || d == dir.getOpposite())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
//System.out.println("Trying " + d.name());
|
|
||||||
|
|
||||||
//there is air! we can pass!
|
//there is air! we can pass!
|
||||||
if(worldObj.getBlock(x + d.offsetX, y + d.offsetY, z + d.offsetZ).getMaterial() == Material.air) {
|
if(worldObj.getBlock(x + d.offsetX, y + d.offsetY, z + d.offsetZ).getMaterial() == Material.air) {
|
||||||
|
|
||||||
if(validDir == ForgeDirection.UNKNOWN) {
|
if(validDir == ForgeDirection.UNKNOWN) {
|
||||||
validDir = d;
|
validDir = d;
|
||||||
//System.out.println("yes");
|
|
||||||
|
|
||||||
//it seems like there are two or more possible ways, which is not allowed without a diode
|
//it seems like there are two or more possible ways, which is not allowed without a diode
|
||||||
//sorry kid, nothing personal
|
//sorry kid, nothing personal
|
||||||
} else {
|
} else {
|
||||||
//System.out.println("what");
|
p.expire(EnumHadronState.ERROR_BRANCHING_TURN);
|
||||||
p.expire();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -633,7 +627,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
p.expire();
|
p.expire(EnumHadronState.ERROR_OBSTRUCTED_CHANNEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -680,7 +674,16 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs
|
|||||||
ANALYSIS(0xffff00),
|
ANALYSIS(0xffff00),
|
||||||
NORESULT(0xff8000),
|
NORESULT(0xff8000),
|
||||||
SUCCESS(0x00ff00),
|
SUCCESS(0x00ff00),
|
||||||
ERROR(0xff0000);
|
ERROR_NO_CHARGE(0xff0000),
|
||||||
|
ERROR_NO_ANALYSIS(0xff0000),
|
||||||
|
ERROR_OBSTRUCTED_CHANNEL(0xff0000),
|
||||||
|
ERROR_EXPECTED_COIL(0xff0000),
|
||||||
|
ERROR_MALFORMED_SEGMENT(0xff0000),
|
||||||
|
ERROR_ANALYSIS_TOO_LONG(0xff0000),
|
||||||
|
ERROR_ANALYSIS_TOO_SHORT(0xff0000),
|
||||||
|
ERROR_DIODE_COLLISION(0xff0000),
|
||||||
|
ERROR_BRANCHING_TURN(0xff0000),
|
||||||
|
ERROR_GENERIC(0xff0000);
|
||||||
|
|
||||||
public int color;
|
public int color;
|
||||||
|
|
||||||
|
|||||||
@ -405,7 +405,16 @@ geiger.title.dosimeter=DOSIMETER
|
|||||||
hadron.analysis=Analysiere...
|
hadron.analysis=Analysiere...
|
||||||
hadron.buttonOn=Analysekammer (falls vorhanden) ist AN
|
hadron.buttonOn=Analysekammer (falls vorhanden) ist AN
|
||||||
hadron.buttonOff=Analysekammer ist AUS
|
hadron.buttonOff=Analysekammer ist AUS
|
||||||
hadron.error=Fehler!
|
hadron.error_generic=Fehler!
|
||||||
|
hadron.error_no_charge=Fehler 0x01 [NC]
|
||||||
|
hadron.error_no_analysis=Fehler 0x02 [NA]
|
||||||
|
hadron.error_obstructed_channel=Fehler 0x03 [OC]
|
||||||
|
hadron.error_expected_coil=Fehler 0x04 [EC]
|
||||||
|
hadron.error_malformed_segment=Fehler 0x05 [MS]
|
||||||
|
hadron.error_analysis_too_long=Fehler 0x06 [ATL]
|
||||||
|
hadron.error_analysis_too_short=Fehler 0x07 [ATS]
|
||||||
|
hadron.error_diode_collision=Fehler 0x08 [DC]
|
||||||
|
hadron.error_branching_turn=Fehler 0x09 [BT]
|
||||||
hadron.hopper0=§eNormalmodus:$Alle Items werden beschleunigt.
|
hadron.hopper0=§eNormalmodus:$Alle Items werden beschleunigt.
|
||||||
hadron.hopper1=§eTrichtermodus:$Ein Item bleibt immer übrig.
|
hadron.hopper1=§eTrichtermodus:$Ein Item bleibt immer übrig.
|
||||||
hadron.idle=Leerlauf
|
hadron.idle=Leerlauf
|
||||||
|
|||||||
@ -150,6 +150,26 @@ bomb.triggered=Triggered successfully!
|
|||||||
book.test.cover=HOW 2 SEX
|
book.test.cover=HOW 2 SEX
|
||||||
book.test.page1=Test Page 1
|
book.test.page1=Test Page 1
|
||||||
|
|
||||||
|
book.error.cover=Hadron Collider:$Troubleshooting
|
||||||
|
book.error.title1=Error 0x01 [NC]
|
||||||
|
book.error.page1=§Name:§r "ERROR_NO_CHARGE" §lDescription:§r The particle has reached a segment with insufficient charge. §Potential fix:§r Either replace one of the plugs that the particle successfully passes with higher-tier ones or add another plug slightly before the segment where the particle expires.
|
||||||
|
book.error.title2=Error 0x02 [NA]
|
||||||
|
book.error.page2=§Name:§r "ERROR_NO_ANALYSIS" §lDescription:§r The particle has reached the core, despite not passing an analysis chamber. §Potential fix:§r Make sure that your accelerator has an analysis chamber and double-check the operating mode (linear/circular).
|
||||||
|
book.error.title3=Error 0x03 [OC]
|
||||||
|
book.error.page3=§Name:§r "ERROR_OBSTRUCTED_CHANNEL" §lDescription:§r The particle has collided with a block inside the collider's channel. §Potential fix:§r Make sure that the inside of your particle collider is free of any obstructions, except for particle diodes and core blocks.
|
||||||
|
book.error.title4=Error 0x04 [EC]
|
||||||
|
book.error.page4=§Name:§r "ERROR_EXPECTED_COIL" §lDescription:§r The particle has passed a segment that lacks one or multiple coils. §Potential fix:§r Remove the plating of the collider in the offending area and check if all the coils are there. This error will also happen at T-crossings that are built without diodes.
|
||||||
|
book.error.title5=Error 0x05 [MS]
|
||||||
|
book.error.page5=§Name:§r "ERROR_MALFORMED_SEGMENT" §lDescription:§r The particle has passed a segment that was built incorrectly (but neither obstructed nor missing coils). §Potential fix:§r Make sure that the offending segment has platings in all the required spaces, leaving no coils exposed.
|
||||||
|
book.error.title6=Error 0x06 [ATL]
|
||||||
|
book.error.page6=§Name:§r "ERROR_ANALYSIS_TOO_LONG" §lDescription:§r The particle has passed more than the three required valid analysis chamber segments. §Potential fix:§r Make sure that the analysis chamber is exactly 3 blocks long for circular accelerator and at least 2 blocks long for linear ones. Also check if the particle doesn't pass multiple analysis chambers in a branching and/or looped accelerator.
|
||||||
|
book.error.title7=Error 0x07 [ATS]
|
||||||
|
book.error.page7=§Name:§r "ERROR_ANALYSIS_TOO_SHORT" §lDescription:§r The particle has left the analysis chamber, despite not meeting the length requirement. §Potential fix:§r Make sure that the analysis chamber on your circular accelerator is exactly 3 blocks long. Valid analysis segments have no coils and the plating is entirely composed of analysis chamber walls/windows. Analysis chambers with coils in them count as regular segments.
|
||||||
|
book.error.title8=Error 0x08 [DC]
|
||||||
|
book.error.page8=§Name:§r "ERROR_DIODE_COLLISION" §lDescription:§r The particle collided with a non-input side of a schottky particle diode. §Potential fix:§r Check if your diodes are configured correctly. Particles can only enter the diode from sides with green inward-pointing arrows.
|
||||||
|
book.error.title9=Error 0x09 [BT]
|
||||||
|
book.error.page9=§Name:§r "ERROR_BRANCHING_TURN" §lDescription:§r The particle has reached a turn with multiple exits. §Potential fix:§r If your turn is a normal one, check if all the required coils are present (i.e. no holes in the coil layer). If the turn is intended to be branched, it requires a schottky particle diode that is correctly configured.
|
||||||
|
|
||||||
book.rbmk.cover=My first RBMK:$Basics of$building a$reactor
|
book.rbmk.cover=My first RBMK:$Basics of$building a$reactor
|
||||||
book.rbmk.title1=Introduction
|
book.rbmk.title1=Introduction
|
||||||
book.rbmk.page1=§lRBMK§r is fully modular nuclear reactor. Unlike most other reactors, there is no "core" and no size restrictions, rather behavior and efficiency of reactor depends on how it is built and how various parts interact with each other.
|
book.rbmk.page1=§lRBMK§r is fully modular nuclear reactor. Unlike most other reactors, there is no "core" and no size restrictions, rather behavior and efficiency of reactor depends on how it is built and how various parts interact with each other.
|
||||||
@ -522,7 +542,16 @@ geiger.title.dosimeter=DOSIMETER
|
|||||||
hadron.analysis=Analyzing...
|
hadron.analysis=Analyzing...
|
||||||
hadron.buttonOn=Analysis Chamber (if present) is ON
|
hadron.buttonOn=Analysis Chamber (if present) is ON
|
||||||
hadron.buttonOff=Analysis Chamber is OFF
|
hadron.buttonOff=Analysis Chamber is OFF
|
||||||
hadron.error=Error!
|
hadron.error_generic=Error!
|
||||||
|
hadron.error_no_charge=Error 0x01 [NC]
|
||||||
|
hadron.error_no_analysis=Error 0x02 [NA]
|
||||||
|
hadron.error_obstructed_channel=Error 0x03 [OC]
|
||||||
|
hadron.error_expected_coil=Error 0x04 [EC]
|
||||||
|
hadron.error_malformed_segment=Error 0x05 [MS]
|
||||||
|
hadron.error_analysis_too_long=Error 0x06 [ATL]
|
||||||
|
hadron.error_analysis_too_short=Error 0x07 [ATS]
|
||||||
|
hadron.error_diode_collision=Error 0x08 [DC]
|
||||||
|
hadron.error_branching_turn=Error 0x09 [BT]
|
||||||
hadron.hopper0=§eNormal Mode:$All items will be used.
|
hadron.hopper0=§eNormal Mode:$All items will be used.
|
||||||
hadron.hopper1=§eHopper Mode:$One item will always remain.
|
hadron.hopper1=§eHopper Mode:$One item will always remain.
|
||||||
hadron.idle=Idle
|
hadron.idle=Idle
|
||||||
|
|||||||
BIN
src/main/resources/assets/hbm/textures/items/rbmk_fuel_test.png
Normal file
BIN
src/main/resources/assets/hbm/textures/items/rbmk_fuel_test.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 749 B |
Loading…
x
Reference in New Issue
Block a user