Skip to content

Commit e9e7526

Browse files
committed
优化API调用,替换为新版本GTLCore中的API;进阶无尽流体钻机现在支持安装天球分歧引擎;宏原子增加元素复制模式,并且为非空岛模式启用仅该模式下的版本,增加温度不足/星阵不足的相关提示;天基无尽矿处现在每次工作前需要输入100B的星能火箭燃料,同时移除配方所需流体;
1 parent e446723 commit e9e7526

25 files changed

Lines changed: 449 additions & 139 deletions

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ dependencies {
147147
modImplementation("earth.terrarium.adastra:ad_astra-forge-${project.minecraft_version}:${ad_astra_version}") { transitive false }
148148

149149
modImplementation("dev:gtmthings-1.3.5.a")
150-
modImplementation("dev:gtlcore-1.2.2.6-fix13")
150+
modImplementation("dev:gtlcore-1.2.2.7")
151151

152152
// Adds KFF as dependency and Kotlin libs (use the variant matching your mod loader)
153153
include(modImplementation("thedarkcolour:kotlinforforge:4.11.0"))

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ parchment_mappings=2023.09.03
88
quilt_mappings=23
99

1010
# Mod Properties
11-
mod_version=2.6.4Custom-fix5
11+
mod_version=2.6.4Custom-fix6
1212
maven_group=com.gtladd.gtladditions
1313
archives_base_name=gtladditions
1414
mod_id=gtladditions

src/main/java/com/gtladd/gtladditions/common/machine/muiltblock/MultiBlockMachine.kt

Lines changed: 84 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ import com.gtladd.gtladditions.common.recipe.GTLAddRecipesTypes.MATTER_EXOTIC
6969
import com.gtladd.gtladditions.common.recipe.GTLAddRecipesTypes.MOLECULAR_DECONSTRUCTION
7070
import com.gtladd.gtladditions.common.recipe.GTLAddRecipesTypes.NIGHTMARE_CRAFTING
7171
import com.gtladd.gtladditions.common.recipe.GTLAddRecipesTypes.PHOTON_MATRIX_ETCH
72+
import com.gtladd.gtladditions.common.recipe.GTLAddRecipesTypes.SPACE_ORE_PROCESSOR
7273
import com.gtladd.gtladditions.common.recipe.GTLAddRecipesTypes.STAR_CORE_STRIPPER
7374
import com.gtladd.gtladditions.common.recipe.GTLAddRecipesTypes.STELLAR_LGNITION
7475
import com.gtladd.gtladditions.common.recipe.GTLAddRecipesTypes.TECTONIC_FAULT_GENERATOR
@@ -132,7 +133,7 @@ object MultiBlockMachine {
132133
val LIGHT_HUNTER_SPACE_STATION: MultiblockMachineDefinition
133134
val DIMENSION_FOCUS_INFINITY_CRAFTING_ARRAY: MultiblockMachineDefinition
134135
val SPACE_INFINITY_INTEGRATED_ORE_PROCESSOR: MultiblockMachineDefinition
135-
val MACRO_ATOMIC_RESONANT_FRAGMENT_STRIPPER: MultiblockMachineDefinition?
136+
val MACRO_ATOMIC_RESONANT_FRAGMENT_STRIPPER: MultiblockMachineDefinition
136137

137138
init {
138139
REGISTRATE.creativeModeTab { GTLAddCreativeModeTabs.GTLADD_MACHINE }
@@ -1535,13 +1536,14 @@ object MultiBlockMachine {
15351536
SPACE_INFINITY_INTEGRATED_ORE_PROCESSOR = REGISTRATE.multiblock("space_infinity_integrated_ore_processor",
15361537
Function { SpaceInfinityIntegratedOreProcessor(it) })
15371538
.allRotation()
1538-
.tooltipTextKey(Component.translatable("gtceu.machine.integrated_ore_processor.tooltip.0"))
1539-
.tooltipTextKey(Component.translatable("gtceu.multiblock.only.laser.tooltip"))
1539+
.tooltipTextKey(Component.translatable("gtladditions.multiblock.space_infinity_integrated_ore_processor.tooltip.0"))
1540+
.tooltipTextKey(Component.translatable("gtladditions.multiblock.space_infinity_integrated_ore_processor.tooltip.1"))
15401541
.tooltipTextKey(Component.translatable("gtladditions.multiblock.forge_of_the_antichrist.tooltip.8"))
1542+
.tooltipTextKey(Component.translatable("gtceu.multiblock.only.laser.tooltip"))
15411543
.tooltipTextKey(Component.translatable("tooltip.gtlcore.structure.source", "TST"))
1542-
.tooltipTextRecipeTypes(INTEGRATED_ORE_PROCESSOR)
1544+
.tooltipTextRecipeTypes(SPACE_ORE_PROCESSOR)
15431545
.tooltipBuilder(GTLAddMachines.GTLAdd_ADD)
1544-
.recipeType(INTEGRATED_ORE_PROCESSOR)
1546+
.recipeType(SPACE_ORE_PROCESSOR)
15451547
.appearanceBlock(CASING_TUNGSTENSTEEL_ROBUST)
15461548
.pattern { definition: MultiblockMachineDefinition? ->
15471549
MultiBlockStructureE.SPACE_INFINITY_INTEGRATED_ORE_PROCESSOR!!
@@ -1567,62 +1569,84 @@ object MultiBlockMachine {
15671569
)
15681570
.register()
15691571

1570-
MACRO_ATOMIC_RESONANT_FRAGMENT_STRIPPER = if (ConfigHolder.INSTANCE.enableSkyBlokeMode)
1571-
REGISTRATE.multiblock(
1572-
"macro_atomic_resonant_fragment_stripper",
1573-
Function { MacroAtomicResonantFragmentStripper(it) })
1574-
.nonYAxisRotation()
1575-
.tooltipTextKey(Component.translatable("gtladditions.multiblock.macro_atomic_resonant_fragment_stripper.tooltip.0"))
1576-
.tooltipTextKey(Component.translatable("gtladditions.multiblock.macro_atomic_resonant_fragment_stripper.tooltip.1"))
1577-
.tooltipTextKey(Component.translatable("gtladditions.multiblock.macro_atomic_resonant_fragment_stripper.tooltip.2"))
1578-
.tooltipTextKey(Component.translatable("gtceu.machine.eut_multiplier.tooltip", 4))
1579-
.tooltipTextLaser()
1580-
.tooltipTextKey(Component.translatable("gtladditions.multiblock.base_parallel", Component.literal("1536").withStyle(ChatFormatting.GOLD)))
1581-
.tooltipTextKey(Component.translatable("gtladditions.multiblock.macro_atomic_resonant_fragment_stripper.tooltip.3"))
1582-
.tooltipTextKey(Component.translatable("gtladditions.multiblock.macro_atomic_resonant_fragment_stripper.tooltip.4"))
1583-
.tooltipTextKey(Component.translatable("gtladditions.multiblock.macro_atomic_resonant_fragment_stripper.tooltip.5"))
1584-
.tooltipTextKey(Component.translatable("gtladditions.multiblock.macro_atomic_resonant_fragment_stripper.tooltip.6"))
1585-
.tooltipTextKey(Component.translatable("gtladditions.multiblock.macro_atomic_resonant_fragment_stripper.tooltip.7"))
1586-
.tooltipTextKey(Component.translatable("gtladditions.multiblock.macro_atomic_resonant_fragment_stripper.tooltip.8"))
1587-
.tooltipTextKey(Component.translatable("tooltip.gtlcore.structure.source", "TST"))
1588-
.tooltipTextRecipeTypes(STAR_CORE_STRIPPER)
1589-
.tooltipBuilder(GTLAddMachines.GTLAdd_ADD)
1590-
.recipeTypes(STAR_CORE_STRIPPER)
1591-
.appearanceBlock(HYPER_MECHANICAL_CASING)
1592-
.pattern { definition: MultiblockMachineDefinition? ->
1593-
MultiBlockStructureE.MACRO_ATOMIC_RESONANT_FRAGMENT_STRIPPER!!
1594-
.where("~", Predicates.controller(Predicates.blocks(definition!!.get())))
1595-
.where("A", Predicates.blocks(FUSION_GLASS.get()))
1596-
.where("B", Predicates.blocks(QFT_COIL.get()))
1597-
.where("C", Predicates.blocks(getBlock("kubejs:annihilate_core")))
1598-
.where("D", Predicates.heatingCoils())
1599-
.where("E", Predicates.blocks(ECHO_CASING.get()))
1600-
.where("F", Predicates.blocks(getBlock("kubejs:dimensional_stability_casing")))
1601-
.where("G", Predicates.blocks(HYPER_MECHANICAL_CASING.get()))
1602-
.where("H", Predicates.blocks(FUSION_CASING_MK5.get()))
1603-
.where("I", Predicates.blocks(SPS_CASING.get()))
1604-
.where("J", Predicates.blocks(getBlock("kubejs:dyson_control_toroid")))
1605-
.where("K", Predicates.blocks(getBlock("kubejs:dyson_receiver_casing")))
1606-
.where("L", Predicates.blocks(getBlock("kubejs:dyson_control_casing")))
1607-
.where("M", Predicates.blocks(getBlock("kubejs:dimensional_bridge_casing")))
1608-
.where("N", Predicates.blocks(ChemicalHelper.getBlock(frameGt, QuantumChromodynamicallyConfinedMatter)))
1609-
.where("O", Predicates.blocks(ChemicalHelper.getBlock(frameGt, Neutronium)))
1610-
.where("Y", Predicates.blocks(HYPER_MECHANICAL_CASING.get())
1611-
.or(Predicates.abilities(PartAbility.EXPORT_ITEMS))
1612-
.or(Predicates.abilities(PartAbility.IMPORT_ITEMS))
1613-
.or(Predicates.abilities(PartAbility.EXPORT_FLUIDS))
1614-
.or(Predicates.abilities(PartAbility.IMPORT_FLUIDS))
1615-
.or(Predicates.abilities(PartAbility.INPUT_ENERGY).setMaxGlobalLimited(2))
1616-
.or(Predicates.abilities(PartAbility.INPUT_LASER).setMaxGlobalLimited(1)))
1617-
.where("Z", Predicates.blocks(HIGH_POWER_CASING.get()))
1618-
.build()
1572+
MACRO_ATOMIC_RESONANT_FRAGMENT_STRIPPER = REGISTRATE.multiblock(
1573+
"macro_atomic_resonant_fragment_stripper",
1574+
Function { MacroAtomicResonantFragmentStripper(it) })
1575+
.nonYAxisRotation()
1576+
.tooltipTextKey(Component.translatable("gtladditions.multiblock.macro_atomic_resonant_fragment_stripper.tooltip.0"))
1577+
.tooltipTextKey(Component.translatable("gtladditions.multiblock.macro_atomic_resonant_fragment_stripper.tooltip.1"))
1578+
.tooltipTextKey(Component.translatable("gtladditions.multiblock.macro_atomic_resonant_fragment_stripper.tooltip.2"))
1579+
.tooltipTextKey(Component.translatable("gtceu.machine.eut_multiplier.tooltip", 4))
1580+
.tooltipTextLaser()
1581+
.tooltipTextKey(Component.translatable("gtladditions.multiblock.macro_atomic_resonant_fragment_stripper.tooltip.3"))
1582+
.tooltipTextKey(Component.translatable("gtladditions.multiblock.macro_atomic_resonant_fragment_stripper.tooltip.4"))
1583+
.apply {
1584+
if (ConfigHolder.INSTANCE.enableSkyBlokeMode) {
1585+
tooltipTextKey(Component.translatable("gtladditions.multiblock.forge_of_the_antichrist.tooltip.3"))
1586+
tooltipTextKey(
1587+
Component.translatable(
1588+
"gtladditions.multiblock.base_parallel",
1589+
Component.literal("1536").withStyle(ChatFormatting.GOLD)
1590+
)
1591+
)
1592+
tooltipTextKey(Component.translatable("gtladditions.multiblock.macro_atomic_resonant_fragment_stripper.tooltip.5"))
1593+
tooltipTextKey(Component.translatable("gtladditions.multiblock.macro_atomic_resonant_fragment_stripper.tooltip.6"))
1594+
tooltipTextKey(Component.translatable("gtladditions.multiblock.macro_atomic_resonant_fragment_stripper.tooltip.7"))
1595+
tooltipTextKey(Component.translatable("gtladditions.multiblock.macro_atomic_resonant_fragment_stripper.tooltip.8"))
16191596
}
1620-
.workableCasingRenderer(
1621-
GTLCore.id("block/casings/hyper_mechanical_casing"),
1622-
GTCEu.id("block/multiblock/fusion_reactor")
1623-
)
1624-
.register()
1625-
else null
1597+
}
1598+
.tooltipTextKey(Component.translatable("gtladditions.multiblock.forge_of_the_antichrist.tooltip.3"))
1599+
.tooltipTextKey(Component.translatable("gtladditions.multiblock.macro_atomic_resonant_fragment_stripper.tooltip.9"))
1600+
.tooltipTextKey(Component.translatable("gtladditions.multiblock.macro_atomic_resonant_fragment_stripper.tooltip.10"))
1601+
.tooltipTextKey(Component.translatable("tooltip.gtlcore.structure.source", "TST"))
1602+
.apply {
1603+
if (ConfigHolder.INSTANCE.enableSkyBlokeMode) tooltipTextRecipeTypes(STAR_CORE_STRIPPER, ELEMENT_COPYING_RECIPES)
1604+
else tooltipTextRecipeTypes(ELEMENT_COPYING_RECIPES)
1605+
}
1606+
.tooltipBuilder(GTLAddMachines.GTLAdd_ADD)
1607+
.apply {
1608+
if (ConfigHolder.INSTANCE.enableSkyBlokeMode) recipeTypes(STAR_CORE_STRIPPER, ELEMENT_COPYING_RECIPES)
1609+
else recipeTypes(ELEMENT_COPYING_RECIPES)
1610+
}
1611+
.appearanceBlock(HYPER_MECHANICAL_CASING)
1612+
.pattern { definition: MultiblockMachineDefinition? ->
1613+
MultiBlockStructureE.MACRO_ATOMIC_RESONANT_FRAGMENT_STRIPPER!!
1614+
.where("~", Predicates.controller(Predicates.blocks(definition!!.get())))
1615+
.where("A", Predicates.blocks(FUSION_GLASS.get()))
1616+
.where("B", Predicates.blocks(QFT_COIL.get()))
1617+
.where("C", Predicates.blocks(getBlock("kubejs:annihilate_core")))
1618+
.where("D", Predicates.heatingCoils())
1619+
.where("E", Predicates.blocks(ECHO_CASING.get()))
1620+
.where("F", Predicates.blocks(getBlock("kubejs:dimensional_stability_casing")))
1621+
.where("G", Predicates.blocks(HYPER_MECHANICAL_CASING.get()))
1622+
.where("H", Predicates.blocks(FUSION_CASING_MK5.get()))
1623+
.where("I", Predicates.blocks(SPS_CASING.get()))
1624+
.where("J", Predicates.blocks(getBlock("kubejs:dyson_control_toroid")))
1625+
.where("K", Predicates.blocks(getBlock("kubejs:dyson_receiver_casing")))
1626+
.where("L", Predicates.blocks(getBlock("kubejs:dyson_control_casing")))
1627+
.where("M", Predicates.blocks(getBlock("kubejs:dimensional_bridge_casing")))
1628+
.where(
1629+
"N",
1630+
Predicates.blocks(ChemicalHelper.getBlock(frameGt, QuantumChromodynamicallyConfinedMatter))
1631+
)
1632+
.where("O", Predicates.blocks(ChemicalHelper.getBlock(frameGt, Neutronium)))
1633+
.where(
1634+
"Y", Predicates.blocks(HYPER_MECHANICAL_CASING.get())
1635+
.or(Predicates.abilities(PartAbility.EXPORT_ITEMS))
1636+
.or(Predicates.abilities(PartAbility.IMPORT_ITEMS))
1637+
.or(Predicates.abilities(PartAbility.EXPORT_FLUIDS))
1638+
.or(Predicates.abilities(PartAbility.IMPORT_FLUIDS))
1639+
.or(Predicates.abilities(PartAbility.INPUT_ENERGY).setMaxGlobalLimited(2))
1640+
.or(Predicates.abilities(PartAbility.INPUT_LASER).setMaxGlobalLimited(1))
1641+
)
1642+
.where("Z", Predicates.blocks(HIGH_POWER_CASING.get()))
1643+
.build()
1644+
}
1645+
.workableCasingRenderer(
1646+
GTLCore.id("block/casings/hyper_mechanical_casing"),
1647+
GTCEu.id("block/multiblock/fusion_reactor")
1648+
)
1649+
.register()
16261650

16271651
REGISTRATE.creativeModeTab { GTLAddCreativeModeTabs.GTLADD_ITEMS }
16281652
}

src/main/java/com/gtladd/gtladditions/common/machine/muiltblock/controller/MacroAtomicResonantFragmentStripper.kt

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,21 @@ import com.google.common.primitives.Ints
55
import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity
66
import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine
77
import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic
8+
import com.gregtechceu.gtceu.api.recipe.GTRecipe
89
import com.gregtechceu.gtceu.utils.FormattingUtil
910
import com.gtladd.gtladditions.api.machine.IAstralArrayInteractionMachine
1011
import com.gtladd.gtladditions.api.machine.logic.GTLAddMultipleRecipesLogic
1112
import com.gtladd.gtladditions.api.machine.multiblock.GTLAddCoilWorkableElectricMultipleRecipesMultiblockMachine
1213
import com.gtladd.gtladditions.api.machine.multiblock.GTLAddWorkableElectricMultipleRecipesMachine
1314
import com.gtladd.gtladditions.common.data.ParallelData
15+
import com.gtladd.gtladditions.common.recipe.GTLAddRecipesTypes.STAR_CORE_STRIPPER
1416
import com.gtladd.gtladditions.utils.RecipeCalculationHelper
1517
import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted
1618
import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder
1719
import net.minecraft.ChatFormatting
1820
import net.minecraft.network.chat.Component
21+
import org.gtlcore.gtlcore.api.recipe.RecipeResult
22+
import org.gtlcore.gtlcore.common.data.GTLRecipeTypes.ELEMENT_COPYING_RECIPES
1923
import kotlin.math.max
2024
import kotlin.math.pow
2125
import kotlin.math.roundToLong
@@ -35,7 +39,7 @@ class MacroAtomicResonantFragmentStripper(holder: IMachineBlockEntity) :
3539

3640
override fun needConfirmMEStock(): Boolean = true
3741

38-
override fun getMaxParallel(): Int = Ints.saturatedCast(parallelAmount)
42+
override fun getMaxParallel(): Int = Ints.saturatedCast(getRealParallel())
3943

4044
override fun createRecipeLogic(vararg args: Any): RecipeLogic {
4145
return MacroAtomicResonantFragmentStripperLogic(this)
@@ -88,8 +92,36 @@ class MacroAtomicResonantFragmentStripper(holder: IMachineBlockEntity) :
8892
companion object {
8993
const val MAX_ASTRAL_ARRAY_COUNT = 256
9094

95+
val FAIL_NO_ASTRAL_ARRAY: RecipeResult = RecipeResult.fail(
96+
Component.translatable("gtladditions.recipe.fail.no.astral.array")
97+
)
98+
9199
val FRAGMENT_STRIPPER = Predicate { machine: IRecipeLogicMachine ->
92-
return@Predicate if (machine is MacroAtomicResonantFragmentStripper) machine.coilType.coilTemperature >= 21600 else false
100+
if (machine !is MacroAtomicResonantFragmentStripper) return@Predicate false
101+
102+
when (machine.recipeType) {
103+
STAR_CORE_STRIPPER -> {
104+
(machine.coilType.coilTemperature >= 21600).also { passed ->
105+
if (!passed) RecipeResult.of(machine, RecipeResult.FAIL_NO_ENOUGH_TEMPERATURE)
106+
}
107+
}
108+
ELEMENT_COPYING_RECIPES -> {
109+
val hasEternityCoil = machine.coilType.coilTemperature >= 96000
110+
val hasEnoughAstralArrays = machine.astralArrayCount >= MAX_ASTRAL_ARRAY_COUNT
111+
when {
112+
!hasEternityCoil -> {
113+
RecipeResult.of(machine, RecipeResult.FAIL_NO_ENOUGH_TEMPERATURE)
114+
false
115+
}
116+
!hasEnoughAstralArrays -> {
117+
RecipeResult.of(machine, FAIL_NO_ASTRAL_ARRAY)
118+
false
119+
}
120+
else -> true
121+
}
122+
}
123+
else -> false
124+
}
93125
}
94126

95127
val MANAGED_FIELD_HOLDER: ManagedFieldHolder =
@@ -121,9 +153,16 @@ class MacroAtomicResonantFragmentStripper(holder: IMachineBlockEntity) :
121153

122154
override fun calculateParallels(): ParallelData? {
123155
val recipes = lookupRecipeIterator()
156+
val getParallelLimitForRecipe: (GTRecipe) -> Long =
157+
if (getMachine().recipeType == STAR_CORE_STRIPPER) {
158+
{ getMachine().getRealParallel() }
159+
} else {
160+
{ Long.MAX_VALUE }
161+
}
162+
124163
return RecipeCalculationHelper.calculateParallelsWithProcessing(
125164
recipes, machine,
126-
getParallelLimitForRecipe = { getMachine().parallelAmount },
165+
getParallelLimitForRecipe,
127166
getMaxParallelForRecipe = ::getMaxParallel
128167
)
129168
}

0 commit comments

Comments
 (0)