Fix and Improve Custom Multis (#483)
Adds Front Overlays back Fix Muffler Hatch not being allowed everywhere (multiverse) Adds Maintenance and Min Casing Requirements to all multis Add distinct mode to some multis Note: the HM crafting recipe for naq reactors has been removed, as the new assembly line recipe added applies to both NM and HM. Fixes #504 Fixes #505 Fixes #513 [EXPAND] [[messages]] messageTitle = "Improve Custom Multis" messageBody = """ [COMBINE] commits = [\"bd58b9072f45d647734ae66168cbd27bf9b2f220\"] [COMBINE] """ [[messages]] messageTitle = "Fix Custom Multis" messageBody = """ [BUG] [IGNORE] checks = { compareNot = \"1.7-alpha-1\" } [IGNORE] [DETAILS] details = [ \"Fixes Multiverse Projector Muffler Hatch Issues\", \"Fixes Naquadah Reactors\" ] [DETAILS] """ [EXPAND] [FIXUP] [[fixes]] sha = "bd58b9072f45d647734ae66168cbd27bf9b2f220" newTitle = "Update GT and Related Mods for 1.7" newBody = """ [EXPAND] [[messages]] messageTitle = \"Update GT to 2.7.4\" messageBody = \"\"\" [BREAKING] [DETAILS] details = [ \\"**Lots of Recipes have been moved to the Assembly Line, and now require Assembly Line Research.**\\", \\"Adds Assembly Line Research\\", \\"Adds ME Hatches and Buses, for combining Multiblocks with AE Networks\\", \\"Adds Filtered Output Hatches\\", \\"Adds EU Multiblock Power Storage\\", \\"Adds Multiblock Transformer and Laser Power Transfer\\", \\"Adds Long Distance Pipes\\", \\"Creating Waypoints in the Prospector\\", \\"Fixing many bugs\\", \\"And many more!\\" ] [DETAILS] \"\"\" [[messages]] messageTitle = \"Multiblock Changes\" messageBody = \"\"\" [BREAKING] [DETAILS] details = [ \\"Multiblocks accept a new **maximum** of 2 Energy Hatches.\\", \\"All Custom Multiblocks, such as Naquadah Reactors and Multiverse Projectors, now have **minimum casing requirements** and a **maintenance hatch**.\\", \\"Some Custom Multiblocks now have Distinct Mode\\", \\"All Custom Multiblocks now have custom Front Overlays\\", \\"Reworked & Improved Multiblock UIs\\" ] [DETAILS] \"\"\" [EXPAND] """ [FIXUP]
This commit is contained in:
parent
9fc71696fc
commit
0da5fe0971
21
overrides/groovy/classes/init/NaqRecipeLogic.groovy
Normal file
21
overrides/groovy/classes/init/NaqRecipeLogic.groovy
Normal file
@ -0,0 +1,21 @@
|
||||
import gregtech.api.capability.impl.MultiblockFuelRecipeLogic
|
||||
import gregtech.api.metatileentity.multiblock.RecipeMapMultiblockController
|
||||
import gregtech.api.GTValues
|
||||
|
||||
public class NaqRecipeLogic extends MultiblockFuelRecipeLogic {
|
||||
|
||||
public NaqRecipeLogic(RecipeMapMultiblockController tileEntity) {
|
||||
super(tileEntity)
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getParallelLimit() {
|
||||
// No Parallel for Naq Reactors
|
||||
return 1
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAllowOverclocking() {
|
||||
return false;
|
||||
}
|
||||
}
|
153
overrides/groovy/classes/init/NaquadahReactor.groovy
Normal file
153
overrides/groovy/classes/init/NaquadahReactor.groovy
Normal file
@ -0,0 +1,153 @@
|
||||
import gregtech.api.metatileentity.multiblock.FuelMultiblockController
|
||||
import gregtech.api.metatileentity.MetaTileEntity
|
||||
import gregtech.api.metatileentity.interfaces.IGregTechTileEntity
|
||||
import gregtech.api.metatileentity.multiblock.IMultiblockPart
|
||||
import gregtech.api.pattern.BlockPattern
|
||||
import gregtech.api.pattern.FactoryBlockPattern
|
||||
import gregtech.client.renderer.ICubeRenderer
|
||||
import gregtech.common.blocks.BlockMetalCasing.MetalCasingType
|
||||
import gregtech.common.blocks.MetaBlocks
|
||||
import gregtech.api.recipes.RecipeMap
|
||||
import net.minecraft.block.state.IBlockState
|
||||
import gregicality.multiblocks.api.render.GCYMTextures
|
||||
import gregtech.client.renderer.texture.Textures
|
||||
import gregtech.api.metatileentity.multiblock.MultiblockAbility
|
||||
import gregicality.multiblocks.common.block.GCYMMetaBlocks
|
||||
import gregicality.multiblocks.common.block.blocks.BlockLargeMultiblockCasing
|
||||
import gregtech.common.blocks.MetaBlocks
|
||||
import gregtech.common.blocks.BlockGlassCasing
|
||||
import net.minecraft.util.text.ITextComponent
|
||||
import net.minecraft.util.text.Style
|
||||
import net.minecraft.util.text.TextComponentTranslation
|
||||
import net.minecraft.util.text.TextFormatting
|
||||
import net.minecraft.util.text.event.HoverEvent
|
||||
import gregtech.api.util.TextFormattingUtil
|
||||
import gregtech.api.util.GTUtility
|
||||
import gregtech.api.GTValues
|
||||
import net.minecraft.item.ItemStack
|
||||
import net.minecraft.world.World
|
||||
import gregtech.client.utils.TooltipHelper
|
||||
import net.minecraftforge.fml.relauncher.Side
|
||||
import net.minecraftforge.fml.relauncher.SideOnly
|
||||
|
||||
public class NaquadahReactor extends FuelMultiblockController {
|
||||
public final int numSpatial
|
||||
public final IBlockState bottomFiller
|
||||
public final IBlockState topFiller
|
||||
public final int tier
|
||||
|
||||
public static final int AMP = 3
|
||||
|
||||
NaquadahReactor(ResourceLocation metaTileEntityId, RecipeMap recipeMap, int tier, int numSpatial, IBlockState bottomFiller, IBlockState topFiller) {
|
||||
super(metaTileEntityId, recipeMap, tier)
|
||||
this.tier = tier
|
||||
this.numSpatial = numSpatial
|
||||
this.bottomFiller = bottomFiller
|
||||
this.topFiller = topFiller
|
||||
this.recipeMapWorkable = new NaqRecipeLogic(this)
|
||||
}
|
||||
|
||||
@Override
|
||||
MetaTileEntity createMetaTileEntity(IGregTechTileEntity tileEntity) {
|
||||
return new NaquadahReactor(metaTileEntityId, recipeMap, tier, numSpatial, bottomFiller, topFiller)
|
||||
}
|
||||
|
||||
@Override
|
||||
protected BlockPattern createStructurePattern() {
|
||||
String[] aisle1 = new String[this.numSpatial + 2]
|
||||
String[] aisle2 = new String[this.numSpatial + 2]
|
||||
String[] aisle3 = new String[this.numSpatial + 2]
|
||||
|
||||
aisle1[0] = "CCC"
|
||||
aisle2[0] = "CCC"
|
||||
aisle3[0] = "CSC"
|
||||
|
||||
// Loop for numSpatial times, starting from index 1, adding spatials to outside aisles
|
||||
for (int i = 1; i <= numSpatial; i++) {
|
||||
aisle1[i] = "PGP"
|
||||
aisle3[i] = "PGP"
|
||||
}
|
||||
// Loop for numSpatial - 1 times, starting from index 1, adding bottomFillers to inside aisle
|
||||
for (int i = 1; i < numSpatial; i++) {
|
||||
aisle2[i] = "GBG"
|
||||
}
|
||||
// Add top filler
|
||||
aisle2[numSpatial] = "GTG"
|
||||
|
||||
aisle1[numSpatial + 1] = "CCC"
|
||||
aisle2[numSpatial + 1] = "CCC"
|
||||
aisle3[numSpatial + 1] = "CCC"
|
||||
|
||||
return FactoryBlockPattern.start()
|
||||
.aisle(aisle1)
|
||||
.aisle(aisle2)
|
||||
.aisle(aisle3)
|
||||
.where('S' as char, selfPredicate())
|
||||
.where('G' as char, states(getGlassState()))
|
||||
.where('P' as char, states(blockstate('appliedenergistics2:spatial_pylon'))) // Blockstate works here with no variants
|
||||
.where('T' as char, states(this.topFiller))
|
||||
.where('B' as char, states(this.bottomFiller))
|
||||
.where('C' as char, states(getCasingState()).setMinGlobalLimited(10)
|
||||
.or(abilities(MultiblockAbility.OUTPUT_ENERGY).setExactLimit(1))
|
||||
.or(autoAbilities(false, true, true, true, false, false, false)))
|
||||
.build()
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
ICubeRenderer getBaseTexture(IMultiblockPart sourcePart) {
|
||||
return GCYMTextures.MIXER_CASING
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
protected ICubeRenderer getFrontOverlay() {
|
||||
return Textures.FUSION_REACTOR_OVERLAY
|
||||
}
|
||||
|
||||
/* Would use blockstate handler, but does not work with special variants and types here? */
|
||||
public IBlockState getCasingState() {
|
||||
return GCYMMetaBlocks.LARGE_MULTIBLOCK_CASING.getState(BlockLargeMultiblockCasing.CasingType.MIXER_CASING)
|
||||
}
|
||||
|
||||
public IBlockState getGlassState() {
|
||||
return MetaBlocks.TRANSPARENT_CASING.getState(BlockGlassCasing.CasingType.FUSION_GLASS)
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
protected void addDisplayText(List<ITextComponent> textList) {
|
||||
if (!isStructureFormed()) {
|
||||
ITextComponent tooltip = new TextComponentTranslation("gregtech.multiblock.invalid_structure.tooltip")
|
||||
tooltip.setStyle(new Style().setColor(TextFormatting.GRAY))
|
||||
textList.add(new TextComponentTranslation("gregtech.multiblock.invalid_structure")
|
||||
.setStyle(new Style().setColor(TextFormatting.RED)
|
||||
.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, tooltip))))
|
||||
}
|
||||
else {
|
||||
long produces = GTValues.V[tier] * AMP
|
||||
String voltageName = GTValues.VNF[GTUtility.getFloorTierByVoltage(produces)] + TextFormatting.RESET
|
||||
textList.add(new TextComponentTranslation("gregtech.multiblock.max_energy_per_tick", TextFormattingUtil.formatNumbers(produces), voltageName))
|
||||
|
||||
if (!recipeMapWorkable.isWorkingEnabled()) {
|
||||
textList.add(new TextComponentTranslation("gregtech.multiblock.work_paused"))
|
||||
} else if (recipeMapWorkable.isActive()) {
|
||||
textList.add(new TextComponentTranslation("gregtech.multiblock.running"))
|
||||
int currentProgress = (int) (recipeMapWorkable.getProgressPercent() * 100)
|
||||
textList.add(new TextComponentTranslation("gregtech.multiblock.progress", currentProgress))
|
||||
} else {
|
||||
textList.add(new TextComponentTranslation("gregtech.multiblock.idling"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void addInformation(ItemStack stack, World player, List<String> tooltip, boolean advanced) {
|
||||
super.addInformation(stack, player, tooltip, advanced)
|
||||
// Must not import I18n as not available on server
|
||||
// Must call .toString() otherwise groovy tries to find an override for the + operator
|
||||
tooltip.add(net.minecraft.client.resources.I18n.format("tooltip.contenttweaker.naquadah_reactor.produces", AMP, GTValues.VNF[tier] + TextFormatting.RESET.toString()))
|
||||
tooltip.add(TooltipHelper.RAINBOW_SLOW.toString() + net.minecraft.client.resources.I18n.format("gui.contenttweaker.naquadah_reactor.overclock"))
|
||||
}
|
||||
}
|
7
overrides/groovy/classes/preInit/NomiRecipeMaps.groovy
Normal file
7
overrides/groovy/classes/preInit/NomiRecipeMaps.groovy
Normal file
@ -0,0 +1,7 @@
|
||||
import gregtech.api.recipes.RecipeMap
|
||||
import gregtech.api.recipes.builders.*
|
||||
|
||||
public class NomiRecipeMaps {
|
||||
public static RecipeMap<FuelRecipeBuilder> NAQUADAH_REACTOR_1;
|
||||
public static RecipeMap<FuelRecipeBuilder> NAQUADAH_REACTOR_2;
|
||||
}
|
20
overrides/groovy/init/register_multis.groovy
Normal file
20
overrides/groovy/init/register_multis.groovy
Normal file
@ -0,0 +1,20 @@
|
||||
import gregtech.common.metatileentities.MetaTileEntities
|
||||
import gregtech.api.recipes.RecipeMap
|
||||
import io.sommers.packmode.PMConfig
|
||||
|
||||
int naqFirstID
|
||||
|
||||
if (PMConfig.getPackMode() == "normal") {
|
||||
naqFirstID = 32004
|
||||
} else {
|
||||
naqFirstID = 32003
|
||||
}
|
||||
|
||||
/* Blockstate handler with variants works here */
|
||||
MetaTileEntities.registerMetaTileEntity(naqFirstID, new NaquadahReactor(new ResourceLocation("multiblocktweaker", "naquadah_reactor_1"), RecipeMap.getByName("naquadah_reactor_1"), 7, 3, blockstate('gregtech:meta_block_compressed_8', 'variant=gregtech__duranium'), blockstate('extendedcrafting:trimmed', 'variant=ultimate')))
|
||||
|
||||
if (PMConfig.getPackMode() == "normal") {
|
||||
MetaTileEntities.registerMetaTileEntity(++naqFirstID, new NaquadahReactor(new ResourceLocation("multiblocktweaker", "naquadah_reactor_2"), RecipeMap.getByName("naquadah_reactor_2"), 8, 4, blockstate('gregtech:meta_block_compressed_27', 'variant=gregtech__ruthenium_trinium_americium_neutronate'), blockstate('extendedcrafting:storage', 'variant=ultimate')))
|
||||
} else {
|
||||
MetaTileEntities.registerMetaTileEntity(++naqFirstID, new NaquadahReactor(new ResourceLocation("multiblocktweaker", "naquadah_reactor_2"), RecipeMap.getByName("naquadah_reactor_2"), 8, 4, blockstate('gregtech:meta_block_compressed_2006', 'variant=gregtech__taranium'), blockstate('extendedcrafting:storage', 'variant=ultimate')))
|
||||
}
|
14
overrides/groovy/preInit/recipe_maps.groovy
Normal file
14
overrides/groovy/preInit/recipe_maps.groovy
Normal file
@ -0,0 +1,14 @@
|
||||
import gregtech.api.recipes.RecipeMap
|
||||
import gregtech.api.recipes.builders.*
|
||||
import gregtech.core.sound.GTSoundEvents
|
||||
import gregtech.api.gui.GuiTextures
|
||||
|
||||
NomiRecipeMaps.NAQUADAH_REACTOR_1 = new RecipeMap<>("naquadah_reactor_1", 1, 1, 0, 0, new FuelRecipeBuilder(), false)
|
||||
.setSlotOverlay(false, false, GuiTextures.ATOMIC_OVERLAY_1).setSlotOverlay(false, true, GuiTextures.ATOMIC_OVERLAY_1)
|
||||
.setSlotOverlay(true, false, GuiTextures.ATOMIC_OVERLAY_1).setSlotOverlay(true, true, GuiTextures.ATOMIC_OVERLAY_1)
|
||||
.setSound(GTSoundEvents.TURBINE);
|
||||
|
||||
NomiRecipeMaps.NAQUADAH_REACTOR_2 = new RecipeMap<>("naquadah_reactor_2", 1, 1, 0, 0, new FuelRecipeBuilder(), false)
|
||||
.setSlotOverlay(false, false, GuiTextures.ATOMIC_OVERLAY_1).setSlotOverlay(false, true, GuiTextures.ATOMIC_OVERLAY_1)
|
||||
.setSlotOverlay(true, false, GuiTextures.ATOMIC_OVERLAY_1).setSlotOverlay(true, true, GuiTextures.ATOMIC_OVERLAY_1)
|
||||
.setSound(GTSoundEvents.TURBINE);
|
@ -4,7 +4,13 @@
|
||||
"version": "1.0.0",
|
||||
"debug": false,
|
||||
"classes": {
|
||||
"preInit": []
|
||||
"preInit": [
|
||||
"classes/preInit/"
|
||||
],
|
||||
"init": [
|
||||
"classes/init/NaqRecipeLogic.groovy",
|
||||
"classes/init"
|
||||
]
|
||||
},
|
||||
"loaders": {
|
||||
"preInit": [
|
||||
|
@ -391,6 +391,9 @@ item.contenttweaker.pulsatingmesh.name=Pulsating Mesh
|
||||
tile.contenttweaker.simulation_casing.name=Naquadah-Plated Dark Steel Machine Casing
|
||||
tile.contenttweaker.simulation_casing_2.name=Naquadah Machine Casing
|
||||
|
||||
gui.contenttweaker.naquadah_reactor.overclock=Does not overclock!
|
||||
tooltip.contenttweaker.naquadah_reactor.produces=Produces exactly %s amps of %s.
|
||||
|
||||
multiblocktweaker.machine.microverse_projector_basic.name=Basic Microverse Projector
|
||||
multiblocktweaker.machine.microverse_projector_advanced.name=Advanced Microverse Projector
|
||||
multiblocktweaker.machine.microverse_projector_advanced_ii.name=Advanced Microverse Projector II
|
||||
|
@ -122,8 +122,8 @@ val dml_sim_chamber = Builder.start("dml_sim_chamber", 3100)
|
||||
.where('G', <metastate:appliedenergistics2:quartz_vibrant_glass:0>)
|
||||
.where('O', <metastate:extendedcrafting:storage:4> /* omnium */)
|
||||
.where('-', CTPredicate.getAny())
|
||||
.where('C', CTPredicate.states(<metastate:gcym:large_multiblock_casing:11>)
|
||||
| controller.autoAbilities(true, false, true, true, false, false, false))
|
||||
.where('C', CTPredicate.states(<metastate:gcym:large_multiblock_casing:11>).setMinGlobalLimited(30)
|
||||
| controller.autoAbilities(true, true, true, true, false, false, false))
|
||||
.build();
|
||||
} as IPatternBuilderFunction)
|
||||
.withRecipeMap(
|
||||
@ -135,9 +135,10 @@ val dml_sim_chamber = Builder.start("dml_sim_chamber", 3100)
|
||||
.build())
|
||||
.withBaseTexture(<metastate:gcym:large_multiblock_casing:11>)
|
||||
.buildAndRegister();
|
||||
dml_sim_chamber.hasMaintenanceMechanics = false;
|
||||
dml_sim_chamber.hasMaintenanceMechanics = true;
|
||||
dml_sim_chamber.hasMufflerMechanics = false;
|
||||
//dml_sim_chamber.frontOverlay = <cube_renderer:CREATIVE_CONTAINER_OVERLAY>;
|
||||
dml_sim_chamber.canBeDistinct = true;
|
||||
dml_sim_chamber.frontOverlay = <cube_renderer:FUSION_REACTOR_OVERLAY>;
|
||||
|
||||
//Recipe for Controller
|
||||
// Moved to Groovy
|
||||
|
@ -26,14 +26,13 @@ val microverse_projector_basic = Builder.start("mbt:microverse_projector_basic")
|
||||
.withPattern(function(controller as IControllerTile) as IBlockPattern {
|
||||
return FactoryBlockPattern.start()
|
||||
.aisle("CCC", "CVC", "CCC")
|
||||
.aisle("CCC", "GDG", "CMC")
|
||||
.aisle("CCC", "GDG", "CCC")
|
||||
.aisle("CSC", "CGC", "CCC")
|
||||
.where('S', controller.self())
|
||||
.where('G', <blockstate:gregtech:transparent_casing>)
|
||||
.where('V', <metastate:gregtech:multiblock_casing:2>)
|
||||
.where('D', <metastate:chisel:diamond:3>)
|
||||
.where('M', CTPredicate.abilities(<mte_ability:MUFFLER_HATCH>))
|
||||
.where("C", CTPredicate.states(<blockstate:contenttweaker:microverse_casing>).setMinGlobalLimited(12) | controller.autoAbilities(true, true, true, true, true, false, false))
|
||||
.where("C", CTPredicate.states(<blockstate:contenttweaker:microverse_casing>).setMinGlobalLimited(12) | controller.autoAbilities(true, true, true, true, true, false, true))
|
||||
.build();
|
||||
} as IPatternBuilderFunction)
|
||||
.withRecipeMap(
|
||||
@ -50,7 +49,8 @@ val microverse_projector_basic = Builder.start("mbt:microverse_projector_basic")
|
||||
|
||||
microverse_projector_basic.hasMufflerMechanics = true;
|
||||
microverse_projector_basic.hasMaintenanceMechanics = true;
|
||||
//microverse_projector_basic.frontOverlay = <cube_renderer:COMPRESSOR_OVERLAY>;
|
||||
microverse_projector_basic.canBeDistinct = true;
|
||||
microverse_projector_basic.frontOverlay = <cube_renderer:COMPRESSOR_OVERLAY>;
|
||||
|
||||
// Advanced Microverse Projector
|
||||
val microverse_projector_advanced = Builder.start("mbt:microverse_projector_advanced")
|
||||
@ -69,7 +69,7 @@ val microverse_projector_advanced = Builder.start("mbt:microverse_projector_adva
|
||||
"GDDDG",
|
||||
"CVCVC")
|
||||
.aisle(
|
||||
"CCMCC",
|
||||
"CCCCC",
|
||||
"GDDDG",
|
||||
"GD DG",
|
||||
"GDDDG",
|
||||
@ -91,8 +91,7 @@ val microverse_projector_advanced = Builder.start("mbt:microverse_projector_adva
|
||||
.where('D', <metastate:chisel:diamond:3>)
|
||||
.where('V', <metastate:gregtech:multiblock_casing:2>)
|
||||
.where(' ', CTPredicate.getAny())
|
||||
.where('M', CTPredicate.abilities(<mte_ability:MUFFLER_HATCH>))
|
||||
.where("C", CTPredicate.states(<blockstate:contenttweaker:microverse_casing>).setMinGlobalLimited(45) | controller.autoAbilities(true, true, true, true, false, false, false))
|
||||
.where("C", CTPredicate.states(<blockstate:contenttweaker:microverse_casing>).setMinGlobalLimited(45) | controller.autoAbilities(true, true, true, true, false, false, true))
|
||||
.build();
|
||||
} as IPatternBuilderFunction)
|
||||
.withRecipeMap(
|
||||
@ -108,7 +107,8 @@ val microverse_projector_advanced = Builder.start("mbt:microverse_projector_adva
|
||||
|
||||
microverse_projector_advanced.hasMufflerMechanics = true;
|
||||
microverse_projector_advanced.hasMaintenanceMechanics = true;
|
||||
//microverse_projector_advanced.frontOverlay = <cube_renderer:COMPRESSOR_OVERLAY>;
|
||||
microverse_projector_advanced.canBeDistinct = true;
|
||||
microverse_projector_advanced.frontOverlay = <cube_renderer:COMPRESSOR_OVERLAY>;
|
||||
|
||||
// Advanced Microverse Projector II
|
||||
val microverse_projector_advanced_ii = Builder.start("mbt:microverse_projector_advanced_ii")
|
||||
@ -119,7 +119,7 @@ val microverse_projector_advanced_ii = Builder.start("mbt:microverse_projector_a
|
||||
" ",
|
||||
" CCCCC ",
|
||||
" CVCVC ",
|
||||
" CCMCC ",
|
||||
" CCCCC ",
|
||||
" CVCVC ",
|
||||
" CCCCC ",
|
||||
" ",
|
||||
@ -190,7 +190,6 @@ val microverse_projector_advanced_ii = Builder.start("mbt:microverse_projector_a
|
||||
.where('V', <blockstate:gregtech:multiblock_casing>)
|
||||
.where(' ', CTPredicate.getAny())
|
||||
.where('D', <metastate:chisel:diamond:3>)
|
||||
.where('M', CTPredicate.abilities(<mte_ability:MUFFLER_HATCH>))
|
||||
.where("C", CTPredicate.states(<blockstate:contenttweaker:microverse_casing>).setMinGlobalLimited(115) | controller.autoAbilities(true, true, true, true, false, false, true))
|
||||
.build();
|
||||
} as IPatternBuilderFunction)
|
||||
@ -207,128 +206,19 @@ val microverse_projector_advanced_ii = Builder.start("mbt:microverse_projector_a
|
||||
|
||||
microverse_projector_advanced_ii.hasMufflerMechanics = true;
|
||||
microverse_projector_advanced_ii.hasMaintenanceMechanics = true;
|
||||
//microverse_projector_advanced_ii.frontOverlay = <cube_renderer:COMPRESSOR_OVERLAY>;
|
||||
microverse_projector_advanced_ii.canBeDistinct = true;
|
||||
microverse_projector_advanced_ii.frontOverlay = <cube_renderer:COMPRESSOR_OVERLAY>;
|
||||
|
||||
<gcym:large_multiblock_casing:9>.displayName = "Reaction-Safe Casing";
|
||||
|
||||
// Naquadah Reactor 1
|
||||
<gcym:large_multiblock_casing:9>.displayName = "Reaction-Safe Casing";
|
||||
val naquadah_reactor_1 = Builder.start("naquadah_reactor_1")
|
||||
.withPattern(function(controller as IControllerTile) as IBlockPattern {
|
||||
return FactoryBlockPattern.start()
|
||||
.aisle(
|
||||
"CCC",
|
||||
"PGP",
|
||||
"PGP",
|
||||
"PGP",
|
||||
"CCC"
|
||||
)
|
||||
.aisle(
|
||||
"CCC",
|
||||
"GNG",
|
||||
"GNG",
|
||||
"GOG",
|
||||
"CCC"
|
||||
)
|
||||
.aisle(
|
||||
"CSC",
|
||||
"PGP",
|
||||
"PGP",
|
||||
"PGP",
|
||||
"CCC"
|
||||
)
|
||||
.where('S', controller.self())
|
||||
.where('G', <metastate:gregtech:transparent_casing:1>)
|
||||
.where('P', <blockstate:appliedenergistics2:spatial_pylon>)
|
||||
.where('O', <metastate:extendedcrafting:trimmed:5>)
|
||||
.where('N', <metastate:gregtech:meta_block_compressed_8:1>)
|
||||
.where('C', CTPredicate.states(<metastate:gcym:large_multiblock_casing:9>)
|
||||
| CTPredicate.abilities(<mte_ability:IMPORT_ITEMS>).setMinGlobalLimited(1).setPreviewCount(1)
|
||||
| CTPredicate.abilities(<mte_ability:EXPORT_ITEMS>).setMinGlobalLimited(1).setPreviewCount(1)
|
||||
| CTPredicate.abilities(<mte_ability:OUTPUT_ENERGY>).setMinGlobalLimited(1).setMaxGlobalLimited(3).setPreviewCount(1)
|
||||
)
|
||||
.build();
|
||||
} as IPatternBuilderFunction)
|
||||
.withRecipeMap(
|
||||
FactoryRecipeMap.start("naquadah_reactor_1")
|
||||
.minInputs(1)
|
||||
.maxInputs(1)
|
||||
.minOutputs(1)
|
||||
.maxOutputs(1)
|
||||
.build())
|
||||
.withBaseTexture(<metastate:gcym:large_multiblock_casing:9>)
|
||||
.buildAndRegister();
|
||||
naquadah_reactor_1.hasMufflerMechanics = false;
|
||||
naquadah_reactor_1.hasMaintenanceMechanics = false;
|
||||
//naquadah_reactor_1.frontOverlay = <cube_renderer:CANNER_OVERLAY>;
|
||||
|
||||
naquadah_reactor_1.runOverclockingLogic = function(recipelogic as IRecipeLogic, recipe as IRecipe, negativeEU as bool, maxOverclocks as int) as int[] {
|
||||
return IRecipeLogic.standardOverclockingLogic(recipe.getEUt() * (negativeEU ? -1 : 1), recipelogic.maxVoltage, recipe.getDuration(), 1, 1, 0); // 1x duration, 1x voltage, 0 overclocks
|
||||
} as IRunOverclockingLogicFunction;
|
||||
|
||||
<metaitem:multiblocktweaker:naquadah_reactor_1>.addTooltip(format.yellow("Produces exactly 3A ZPM, does not overclock"));
|
||||
// Groovy (special generator)
|
||||
|
||||
// Naquadah Reactor 2
|
||||
val naquadah_reactor_2 = Builder.start("naquadah_reactor_2")
|
||||
.withPattern(function(controller as IControllerTile) as IBlockPattern {
|
||||
return FactoryBlockPattern.start()
|
||||
.aisle(
|
||||
"CCC",
|
||||
"PGP",
|
||||
"PGP",
|
||||
"PGP",
|
||||
"PGP",
|
||||
"CCC"
|
||||
)
|
||||
.aisle(
|
||||
"CCC",
|
||||
"GNG",
|
||||
"GNG",
|
||||
"GNG",
|
||||
"GOG",
|
||||
"CCC"
|
||||
)
|
||||
.aisle(
|
||||
"CSC",
|
||||
"PGP",
|
||||
"PGP",
|
||||
"PGP",
|
||||
"PGP",
|
||||
"CCC"
|
||||
)
|
||||
.where('S', controller.self())
|
||||
.where('P', <blockstate:appliedenergistics2:spatial_pylon>)
|
||||
.where('G', <metastate:gregtech:transparent_casing:1>)
|
||||
.where('O', <metastate:extendedcrafting:storage:4>)
|
||||
.where('N', <metastate:gregtech:meta_block_compressed_2006:13>)
|
||||
.where('C', CTPredicate.states(<metastate:gcym:large_multiblock_casing:9>)
|
||||
| CTPredicate.abilities(<mte_ability:IMPORT_ITEMS>).setMinGlobalLimited(1).setPreviewCount(1)
|
||||
| CTPredicate.abilities(<mte_ability:EXPORT_ITEMS>).setMinGlobalLimited(1).setPreviewCount(1)
|
||||
| CTPredicate.abilities(<mte_ability:OUTPUT_ENERGY>).setMinGlobalLimited(1).setMaxGlobalLimited(3).setPreviewCount(1)
|
||||
)
|
||||
.build();
|
||||
} as IPatternBuilderFunction)
|
||||
.withRecipeMap(
|
||||
FactoryRecipeMap.start("naquadah_reactor_2")
|
||||
.minInputs(1)
|
||||
.maxInputs(1)
|
||||
.minOutputs(1)
|
||||
.maxOutputs(1)
|
||||
.build())
|
||||
.withBaseTexture(<metastate:gcym:large_multiblock_casing:9>)
|
||||
.buildAndRegister();
|
||||
|
||||
naquadah_reactor_2.hasMufflerMechanics = false;
|
||||
naquadah_reactor_2.hasMaintenanceMechanics = false;
|
||||
//naquadah_reactor_2.frontOverlay = <cube_renderer:CANNER_OVERLAY>;
|
||||
|
||||
naquadah_reactor_2.runOverclockingLogic = function(recipelogic as IRecipeLogic, recipe as IRecipe, negativeEU as bool, maxOverclocks as int) as int[] {
|
||||
return IRecipeLogic.standardOverclockingLogic(recipe.getEUt() * (negativeEU ? -1 : 1), recipelogic.maxVoltage, recipe.getDuration(), 1, 1, 0); // 1x duration, 1x voltage, 0 overclocks
|
||||
} as IRunOverclockingLogicFunction;
|
||||
|
||||
<metaitem:multiblocktweaker:naquadah_reactor_2>.addTooltip(format.yellow("Produces exactly 3A UV, does not overclock"));
|
||||
// Groovy (special generator)
|
||||
|
||||
// Actualization Chamber
|
||||
val actualization_chamber = Builder.start("actualization_chamber")
|
||||
val actualization_chamber = Builder.start("actualization_chamber", 32005)
|
||||
.withPattern(function(controller as IControllerTile) as IBlockPattern {
|
||||
return FactoryBlockPattern.start()
|
||||
.aisle("CCC","GGG","CCC")
|
||||
@ -337,8 +227,8 @@ val actualization_chamber = Builder.start("actualization_chamber")
|
||||
.where('S', controller.self())
|
||||
.where('O', <metastate:gregtech:fusion_casing:1>)
|
||||
.where('G', <metastate:gregtech:transparent_casing:1>)
|
||||
.where('C', CTPredicate.states(<metastate:gregtech:fusion_casing:4>)
|
||||
| controller.autoAbilities(true, false, true, true, false, false, false)
|
||||
.where('C', CTPredicate.states(<metastate:gregtech:fusion_casing:4>).setMinGlobalLimited(9)
|
||||
| controller.autoAbilities(true, true, true, true, false, false, false)
|
||||
)
|
||||
.build();
|
||||
} as IPatternBuilderFunction)
|
||||
@ -354,11 +244,12 @@ val actualization_chamber = Builder.start("actualization_chamber")
|
||||
.buildAndRegister();
|
||||
|
||||
actualization_chamber.hasMufflerMechanics = false;
|
||||
actualization_chamber.hasMaintenanceMechanics = false;
|
||||
//actualization_chamber.frontOverlay = <cube_renderer:ENDER_FLUID_LINK>;
|
||||
actualization_chamber.hasMaintenanceMechanics = true;
|
||||
actualization_chamber.canBeDistinct = true;
|
||||
actualization_chamber.frontOverlay = <cube_renderer:ENDER_FLUID_LINK>;
|
||||
|
||||
// Universal Crystallizer
|
||||
val universal_crystallizer = Builder.start("universal_crystallizer")
|
||||
val universal_crystallizer = Builder.start("universal_crystallizer", 32006)
|
||||
.withPattern(function(controller as IControllerTile) as IBlockPattern {
|
||||
return FactoryBlockPattern.start(RelativeDirection.FRONT, RelativeDirection.UP, RelativeDirection.LEFT)
|
||||
.aisle("AAAAAAA",
|
||||
@ -436,7 +327,8 @@ val universal_crystallizer = Builder.start("universal_crystallizer")
|
||||
|
||||
universal_crystallizer.hasMufflerMechanics = false;
|
||||
universal_crystallizer.hasMaintenanceMechanics = true;
|
||||
//universal_crystallizer.frontOverlay = <cube_renderer:CREATIVE_CONTAINER_OVERLAY>;
|
||||
universal_crystallizer.canBeDistinct = true;
|
||||
universal_crystallizer.frontOverlay = <cube_renderer:CREATIVE_CONTAINER_OVERLAY>;
|
||||
|
||||
// multiblock controller recipes
|
||||
recipes.addShaped("microverse_projector_basic", <metaitem:mbt:microverse_projector_basic>, [
|
||||
@ -458,26 +350,8 @@ recipes.addShaped("microverse_projector_advanced_ii", <metaitem:mbt:microverse_p
|
||||
]);
|
||||
|
||||
|
||||
makeShaped("naquadah_reactor_1", <metaitem:multiblocktweaker:naquadah_reactor_1>,
|
||||
["NCN",
|
||||
"GSG",
|
||||
"PPP"],
|
||||
{ C : <ore:circuitIv>, //T5
|
||||
G : <gregtech:transparent_casing:1>,
|
||||
S : <metaitem:cover.screen>,
|
||||
P : <appliedenergistics2:spatial_pylon>,
|
||||
N : <extendedcrafting:material:33>}); //Omnium Nugget
|
||||
|
||||
makeShaped("naquadah_reactor_2", <metaitem:multiblocktweaker:naquadah_reactor_2>,
|
||||
["NCN",
|
||||
"GSG",
|
||||
"PPP"],
|
||||
{ C : <ore:circuitLuv>, //T6
|
||||
G : <gregtech:transparent_casing:1>,
|
||||
S : <metaitem:cover.screen>,
|
||||
P : <appliedenergistics2:spatial_pylon>,
|
||||
N : <extendedcrafting:material:32>}); //Omnium Ingot
|
||||
|
||||
// Naquadah Reactor
|
||||
// Moved to Groovy
|
||||
|
||||
makeExtremeRecipe5(<metaitem:multiblocktweaker:actualization_chamber>,
|
||||
["PPPPP",
|
||||
@ -1570,37 +1444,32 @@ actualization_chamber.recipeMap
|
||||
<minecraft:dragon_egg> * 64)
|
||||
.buildAndRegister();
|
||||
|
||||
|
||||
// Naquadah Reactor Mk1 Recipes
|
||||
naquadah_reactor_1.recipeMap
|
||||
.recipeBuilder()
|
||||
<recipemap:naquadah_reactor_1>.recipeBuilder()
|
||||
.duration(938)
|
||||
.EUt(-393216)
|
||||
.EUt(393216)
|
||||
.inputs(<metaitem:boltNaquadahEnriched>)
|
||||
.outputs(<metaitem:boltLead>)
|
||||
.buildAndRegister();
|
||||
|
||||
naquadah_reactor_1.recipeMap
|
||||
.recipeBuilder()
|
||||
<recipemap:naquadah_reactor_1>.recipeBuilder()
|
||||
.duration(3750)
|
||||
.EUt(-393216)
|
||||
.EUt(393216)
|
||||
.inputs(<metaitem:boltNaquadria>)
|
||||
.outputs(<metaitem:boltLead>)
|
||||
.buildAndRegister();
|
||||
|
||||
// Naquadah Reactor Mk2 Recipes
|
||||
naquadah_reactor_2.recipeMap
|
||||
.recipeBuilder()
|
||||
<recipemap:naquadah_reactor_2>.recipeBuilder()
|
||||
.duration(1875)
|
||||
.EUt(-1572864)
|
||||
.EUt(1572864)
|
||||
.inputs(<metaitem:boltNaquadahEnriched>)
|
||||
.outputs(<metaitem:boltLead>)
|
||||
.buildAndRegister();
|
||||
|
||||
naquadah_reactor_2.recipeMap
|
||||
.recipeBuilder()
|
||||
<recipemap:naquadah_reactor_2>.recipeBuilder()
|
||||
.duration(7500)
|
||||
.EUt(-1572864)
|
||||
.EUt(1572864)
|
||||
.inputs(<metaitem:boltNaquadria>)
|
||||
.outputs(<metaitem:boltLead>)
|
||||
.buildAndRegister();
|
||||
|
@ -25,14 +25,13 @@ val microverse_projector_basic = Builder.start("mbt:microverse_projector_basic")
|
||||
.withPattern(function(controller as IControllerTile) as IBlockPattern {
|
||||
return FactoryBlockPattern.start()
|
||||
.aisle("CCC", "CVC", "CCC")
|
||||
.aisle("CCC", "GDG", "CMC")
|
||||
.aisle("CCC", "GDG", "CCC")
|
||||
.aisle("CSC", "CGC", "CCC")
|
||||
.where('S', controller.self())
|
||||
.where('G', <blockstate:gregtech:transparent_casing>)
|
||||
.where('V', <metastate:gregtech:multiblock_casing:2>)
|
||||
.where('D', <metastate:chisel:diamond:3>)
|
||||
.where('M', CTPredicate.abilities(<mte_ability:MUFFLER_HATCH>))
|
||||
.where("C", CTPredicate.states(<blockstate:contenttweaker:microverse_casing>).setMinGlobalLimited(12) | controller.autoAbilities(true, true, true, true, true, false, false))
|
||||
.where("C", CTPredicate.states(<blockstate:contenttweaker:microverse_casing>).setMinGlobalLimited(12) | controller.autoAbilities(true, true, true, true, true, false, true))
|
||||
.build();
|
||||
} as IPatternBuilderFunction)
|
||||
.withRecipeMap(
|
||||
@ -49,7 +48,8 @@ val microverse_projector_basic = Builder.start("mbt:microverse_projector_basic")
|
||||
|
||||
microverse_projector_basic.hasMufflerMechanics = true;
|
||||
microverse_projector_basic.hasMaintenanceMechanics = true;
|
||||
//microverse_projector_basic.frontOverlay = <cube_renderer:COMPRESSOR_OVERLAY>;
|
||||
microverse_projector_basic.canBeDistinct = true;
|
||||
microverse_projector_basic.frontOverlay = <cube_renderer:COMPRESSOR_OVERLAY>;
|
||||
|
||||
// Advanced Microverse Projector
|
||||
val microverse_projector_advanced = Builder.start("mbt:microverse_projector_advanced")
|
||||
@ -68,7 +68,7 @@ val microverse_projector_advanced = Builder.start("mbt:microverse_projector_adva
|
||||
"GDDDG",
|
||||
"CVCVC")
|
||||
.aisle(
|
||||
"CCMCC",
|
||||
"CCCCC",
|
||||
"GDDDG",
|
||||
"GD DG",
|
||||
"GDDDG",
|
||||
@ -90,8 +90,7 @@ val microverse_projector_advanced = Builder.start("mbt:microverse_projector_adva
|
||||
.where('D', <metastate:chisel:diamond:3>)
|
||||
.where('V', <metastate:gregtech:multiblock_casing:2>)
|
||||
.where(' ', CTPredicate.getAny())
|
||||
.where('M', CTPredicate.abilities(<mte_ability:MUFFLER_HATCH>))
|
||||
.where("C", CTPredicate.states(<blockstate:contenttweaker:microverse_casing>).setMinGlobalLimited(45) | controller.autoAbilities(true, true, true, true, false, false, false))
|
||||
.where("C", CTPredicate.states(<blockstate:contenttweaker:microverse_casing>).setMinGlobalLimited(45) | controller.autoAbilities(true, true, true, true, false, false, true))
|
||||
.build();
|
||||
} as IPatternBuilderFunction)
|
||||
.withRecipeMap(
|
||||
@ -107,7 +106,8 @@ val microverse_projector_advanced = Builder.start("mbt:microverse_projector_adva
|
||||
|
||||
microverse_projector_advanced.hasMufflerMechanics = true;
|
||||
microverse_projector_advanced.hasMaintenanceMechanics = true;
|
||||
//microverse_projector_advanced.frontOverlay = <cube_renderer:COMPRESSOR_OVERLAY>;
|
||||
microverse_projector_advanced.canBeDistinct = true;
|
||||
microverse_projector_advanced.frontOverlay = <cube_renderer:COMPRESSOR_OVERLAY>;
|
||||
|
||||
// Advanced Microverse Projector II
|
||||
val microverse_projector_advanced_ii = Builder.start("mbt:microverse_projector_advanced_ii")
|
||||
@ -118,7 +118,7 @@ val microverse_projector_advanced_ii = Builder.start("mbt:microverse_projector_a
|
||||
" ",
|
||||
" CCCCC ",
|
||||
" CVCVC ",
|
||||
" CCMCC ",
|
||||
" CCCCC ",
|
||||
" CVCVC ",
|
||||
" CCCCC ",
|
||||
" ",
|
||||
@ -189,7 +189,6 @@ val microverse_projector_advanced_ii = Builder.start("mbt:microverse_projector_a
|
||||
.where('V', <blockstate:gregtech:multiblock_casing>)
|
||||
.where(' ', CTPredicate.getAny())
|
||||
.where('D', <metastate:chisel:diamond:3>)
|
||||
.where('M', CTPredicate.abilities(<mte_ability:MUFFLER_HATCH>))
|
||||
.where("C", CTPredicate.states(<blockstate:contenttweaker:microverse_casing>).setMinGlobalLimited(115) | controller.autoAbilities(true, true, true, true, false, false, true))
|
||||
.build();
|
||||
} as IPatternBuilderFunction)
|
||||
@ -206,7 +205,8 @@ val microverse_projector_advanced_ii = Builder.start("mbt:microverse_projector_a
|
||||
|
||||
microverse_projector_advanced_ii.hasMufflerMechanics = true;
|
||||
microverse_projector_advanced_ii.hasMaintenanceMechanics = true;
|
||||
//microverse_projector_advanced_ii.frontOverlay = <cube_renderer:COMPRESSOR_OVERLAY>;
|
||||
microverse_projector_advanced_ii.canBeDistinct = true;
|
||||
microverse_projector_advanced_ii.frontOverlay = <cube_renderer:COMPRESSOR_OVERLAY>;
|
||||
|
||||
// Creative Tank Provider
|
||||
val creative_tank_provider = Builder.start("mbt:creative_tank_provider")
|
||||
@ -217,7 +217,7 @@ val creative_tank_provider = Builder.start("mbt:creative_tank_provider")
|
||||
.aisle("CCC", "CSC", "CCC")
|
||||
.where('S', controller.self())
|
||||
.where('F', <metastate:gregtech:meta_block_frame_24:12>) // Tungstencarbide Frame Box
|
||||
.where("C", CTPredicate.states(<metastate:gcym:large_multiblock_casing:11>).setMinGlobalLimited(15) | controller.autoAbilities(true, false, true, true, false, false, false))
|
||||
.where("C", CTPredicate.states(<metastate:gcym:large_multiblock_casing:11>).setMinGlobalLimited(15) | controller.autoAbilities(true, true, true, true, false, false, false))
|
||||
.build();
|
||||
} as IPatternBuilderFunction)
|
||||
.withRecipeMap(
|
||||
@ -231,126 +231,16 @@ val creative_tank_provider = Builder.start("mbt:creative_tank_provider")
|
||||
.buildAndRegister();
|
||||
|
||||
creative_tank_provider.hasMufflerMechanics = false;
|
||||
creative_tank_provider.hasMaintenanceMechanics = false;
|
||||
|
||||
creative_tank_provider.hasMaintenanceMechanics = true;
|
||||
creative_tank_provider.frontOverlay = <cube_renderer:CREATIVE_CONTAINER_OVERLAY>;
|
||||
|
||||
<gcym:large_multiblock_casing:9>.displayName = "Reaction-Safe Casing";
|
||||
|
||||
// Naquadah Reactor 1
|
||||
<gcym:large_multiblock_casing:9>.displayName = "Reaction-Safe Casing";
|
||||
val naquadah_reactor_1 = Builder.start("naquadah_reactor_1")
|
||||
.withPattern(function(controller as IControllerTile) as IBlockPattern {
|
||||
return FactoryBlockPattern.start()
|
||||
.aisle(
|
||||
"CCC",
|
||||
"PGP",
|
||||
"PGP",
|
||||
"PGP",
|
||||
"CCC"
|
||||
)
|
||||
.aisle(
|
||||
"CCC",
|
||||
"GNG",
|
||||
"GNG",
|
||||
"GOG",
|
||||
"CCC"
|
||||
)
|
||||
.aisle(
|
||||
"CSC",
|
||||
"PGP",
|
||||
"PGP",
|
||||
"PGP",
|
||||
"CCC"
|
||||
)
|
||||
.where('S', controller.self())
|
||||
.where('G', <metastate:gregtech:transparent_casing:1>)
|
||||
.where('P', <blockstate:appliedenergistics2:spatial_pylon>)
|
||||
.where('O', <metastate:extendedcrafting:trimmed:5>)
|
||||
.where('N', <metastate:gregtech:meta_block_compressed_8:1>)
|
||||
.where('C', CTPredicate.states(<metastate:gcym:large_multiblock_casing:9>)
|
||||
| CTPredicate.abilities(<mte_ability:IMPORT_ITEMS>).setMinGlobalLimited(1).setPreviewCount(1)
|
||||
| CTPredicate.abilities(<mte_ability:EXPORT_ITEMS>).setMinGlobalLimited(1).setPreviewCount(1)
|
||||
| CTPredicate.abilities(<mte_ability:OUTPUT_ENERGY>).setMinGlobalLimited(1).setMaxGlobalLimited(3).setPreviewCount(1)
|
||||
)
|
||||
.build();
|
||||
} as IPatternBuilderFunction)
|
||||
.withRecipeMap(
|
||||
FactoryRecipeMap.start("naquadah_reactor_1")
|
||||
.minInputs(1)
|
||||
.maxInputs(1)
|
||||
.minOutputs(1)
|
||||
.maxOutputs(1)
|
||||
.build())
|
||||
.withBaseTexture(<metastate:gcym:large_multiblock_casing:9>)
|
||||
.buildAndRegister();
|
||||
naquadah_reactor_1.hasMufflerMechanics = false;
|
||||
naquadah_reactor_1.hasMaintenanceMechanics = false;
|
||||
//naquadah_reactor_1.frontOverlay = <cube_renderer:CANNER_OVERLAY>;
|
||||
|
||||
naquadah_reactor_1.runOverclockingLogic = function(recipelogic as IRecipeLogic, recipe as IRecipe, negativeEU as bool, maxOverclocks as int) as int[] {
|
||||
return IRecipeLogic.standardOverclockingLogic(recipe.getEUt() * (negativeEU ? -1 : 1), recipelogic.maxVoltage, recipe.getDuration(), 1, 1, 0); // 1x duration, 1x voltage, 0 overclocks
|
||||
} as IRunOverclockingLogicFunction;
|
||||
|
||||
<metaitem:multiblocktweaker:naquadah_reactor_1>.addTooltip(format.yellow("Produces exactly 3A ZPM, does not overclock"));
|
||||
// Groovy (special generator)
|
||||
|
||||
// Naquadah Reactor 2
|
||||
val naquadah_reactor_2 = Builder.start("naquadah_reactor_2")
|
||||
.withPattern(function(controller as IControllerTile) as IBlockPattern {
|
||||
return FactoryBlockPattern.start()
|
||||
.aisle(
|
||||
"CCC",
|
||||
"PGP",
|
||||
"PGP",
|
||||
"PGP",
|
||||
"PGP",
|
||||
"CCC"
|
||||
)
|
||||
.aisle(
|
||||
"CCC",
|
||||
"GNG",
|
||||
"GNG",
|
||||
"GNG",
|
||||
"GOG",
|
||||
"CCC"
|
||||
)
|
||||
.aisle(
|
||||
"CSC",
|
||||
"PGP",
|
||||
"PGP",
|
||||
"PGP",
|
||||
"PGP",
|
||||
"CCC"
|
||||
)
|
||||
.where('S', controller.self())
|
||||
.where('P', <blockstate:appliedenergistics2:spatial_pylon>)
|
||||
.where('G', <metastate:gregtech:transparent_casing:1>)
|
||||
.where('O', <metastate:extendedcrafting:storage:4>)
|
||||
.where('N', <metastate:gregtech:meta_block_compressed_27:0>)
|
||||
.where('C', CTPredicate.states(<metastate:gcym:large_multiblock_casing:9>)
|
||||
| CTPredicate.abilities(<mte_ability:IMPORT_ITEMS>).setMinGlobalLimited(1).setPreviewCount(1)
|
||||
| CTPredicate.abilities(<mte_ability:EXPORT_ITEMS>).setMinGlobalLimited(1).setPreviewCount(1)
|
||||
| CTPredicate.abilities(<mte_ability:OUTPUT_ENERGY>).setMinGlobalLimited(1).setMaxGlobalLimited(3).setPreviewCount(1)
|
||||
)
|
||||
.build();
|
||||
} as IPatternBuilderFunction)
|
||||
.withRecipeMap(
|
||||
FactoryRecipeMap.start("naquadah_reactor_2")
|
||||
.minInputs(1)
|
||||
.maxInputs(1)
|
||||
.minOutputs(1)
|
||||
.maxOutputs(1)
|
||||
.build())
|
||||
.withBaseTexture(<metastate:gcym:large_multiblock_casing:9>)
|
||||
.buildAndRegister();
|
||||
|
||||
naquadah_reactor_2.hasMufflerMechanics = false;
|
||||
naquadah_reactor_2.hasMaintenanceMechanics = false;
|
||||
//naquadah_reactor_2.frontOverlay = <cube_renderer:CANNER_OVERLAY>;
|
||||
|
||||
naquadah_reactor_2.runOverclockingLogic = function(recipelogic as IRecipeLogic, recipe as IRecipe, negativeEU as bool, maxOverclocks as int) as int[] {
|
||||
return IRecipeLogic.standardOverclockingLogic(recipe.getEUt() * (negativeEU ? -1 : 1), recipelogic.maxVoltage, recipe.getDuration(), 1, 1, 0); // 1x duration, 1x voltage, 0 overclocks
|
||||
} as IRunOverclockingLogicFunction;
|
||||
|
||||
<metaitem:multiblocktweaker:naquadah_reactor_2>.addTooltip(format.yellow("Produces exactly 3A UV, does not overclock"));
|
||||
// Groovy (special generator)
|
||||
|
||||
// multiblock controller recipes
|
||||
recipes.addShaped("microverse_projector_basic", <metaitem:mbt:microverse_projector_basic>, [
|
||||
@ -799,35 +689,31 @@ creative_tank_provider.recipeMap
|
||||
|
||||
|
||||
// Naquadah Reactor Mk1 Recipes
|
||||
naquadah_reactor_1.recipeMap
|
||||
.recipeBuilder()
|
||||
<recipemap:naquadah_reactor_1>.recipeBuilder()
|
||||
.duration(938)
|
||||
.EUt(-393216)
|
||||
.EUt(393216)
|
||||
.inputs(<metaitem:boltNaquadahEnriched>)
|
||||
.outputs(<metaitem:boltLead>)
|
||||
.buildAndRegister();
|
||||
|
||||
naquadah_reactor_1.recipeMap
|
||||
.recipeBuilder()
|
||||
<recipemap:naquadah_reactor_1>.recipeBuilder()
|
||||
.duration(3750)
|
||||
.EUt(-393216)
|
||||
.EUt(393216)
|
||||
.inputs(<metaitem:boltNaquadria>)
|
||||
.outputs(<metaitem:boltLead>)
|
||||
.buildAndRegister();
|
||||
|
||||
// Naquadah Reactor Mk2 Recipes
|
||||
naquadah_reactor_2.recipeMap
|
||||
.recipeBuilder()
|
||||
<recipemap:naquadah_reactor_2>.recipeBuilder()
|
||||
.duration(1875)
|
||||
.EUt(-1572864)
|
||||
.EUt(1572864)
|
||||
.inputs(<metaitem:boltNaquadahEnriched>)
|
||||
.outputs(<metaitem:boltLead>)
|
||||
.buildAndRegister();
|
||||
|
||||
naquadah_reactor_2.recipeMap
|
||||
.recipeBuilder()
|
||||
<recipemap:naquadah_reactor_2>.recipeBuilder()
|
||||
.duration(7500)
|
||||
.EUt(-1572864)
|
||||
.EUt(1572864)
|
||||
.inputs(<metaitem:boltNaquadria>)
|
||||
.outputs(<metaitem:boltLead>)
|
||||
.buildAndRegister();
|
||||
|
Loading…
x
Reference in New Issue
Block a user