multi-level pattern storages with upgrade recipes (upgrade ops)
AMD User — Сегодня, в 2:55 Юра пошёл делать upgradeops AMD User — Сегодня, в 2:56 MLC TLC YuRaNnNzZZ — Сегодня, в 2:56 верно AMD User — Сегодня, в 2:56 А потом не меняя цены меняем на QLC Втихую
This commit is contained in:
parent
bf87d48254
commit
92df9579f0
@ -793,6 +793,9 @@ private fun items(provider: MatteryLanguageProvider) {
|
||||
add(MItems.PORTABLE_DENSE_CONDENSATION_DRIVE, "Portable Dense Condensation Drive")
|
||||
add(MItems.TRITANIUM_ORE_CLUMP, "Raw Tritanium")
|
||||
add(MItems.PATTERN_DRIVE_NORMAL, "Pattern Drive")
|
||||
add(MItems.PATTERN_DRIVE_DOUBLE, "Double-Level Pattern Drive")
|
||||
add(MItems.PATTERN_DRIVE_TRIPLE, "Triple-Level Pattern Drive")
|
||||
add(MItems.PATTERN_DRIVE_QUAD, "Quad-Level Pattern Drive")
|
||||
add(MItems.PATTERN_DRIVE_CREATIVE, "Creative Pattern Drive")
|
||||
|
||||
add(MItems.PATTERN_DRIVE_CREATIVE2, "Omni-Present Pattern Drive")
|
||||
|
@ -794,6 +794,9 @@ private fun items(provider: MatteryLanguageProvider) {
|
||||
add(MItems.PORTABLE_DENSE_CONDENSATION_DRIVE, "Portable Dense Condensation Drive")
|
||||
add(MItems.TRITANIUM_ORE_CLUMP, "Рудный тритан")
|
||||
add(MItems.PATTERN_DRIVE_NORMAL, "Диск шаблонов")
|
||||
add(MItems.PATTERN_DRIVE_DOUBLE, "Двухуровневый диск шаблонов")
|
||||
add(MItems.PATTERN_DRIVE_TRIPLE, "Трёхуровневый диск шаблонов")
|
||||
add(MItems.PATTERN_DRIVE_QUAD, "Четырёхуровневый диск шаблонов")
|
||||
add(MItems.PATTERN_DRIVE_CREATIVE, "Творческий диск шаблонов")
|
||||
|
||||
add(MItems.PATTERN_DRIVE_CREATIVE2, "Вездесущий диск шаблонов")
|
||||
|
@ -52,6 +52,10 @@ fun addOreSmeltingRecipes(consumer: RecipeOutput) {
|
||||
}
|
||||
|
||||
fun addMicrowaveRecipes(provider: MatteryRecipeProvider) {
|
||||
provider.microwave("pattern_drive_normal_erase", Ingredient.of(MItems.PATTERN_DRIVE_NORMAL), Ingredient.of(MItems.PATTERN_DRIVE_NORMAL), workTicks = 30 * 20, experience = ConstantFloat.of(0f))
|
||||
|
||||
for (drive in listOf(MItems.PATTERN_DRIVE_NORMAL, MItems.PATTERN_DRIVE_DOUBLE, MItems.PATTERN_DRIVE_TRIPLE, MItems.PATTERN_DRIVE_QUAD)) {
|
||||
provider.microwave("${drive.registryName!!.path}_erase", Ingredient.of(drive), Ingredient.of(drive), workTicks = 30 * 20, experience = ConstantFloat.of(0f))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -132,6 +132,31 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) {
|
||||
.unlockedBy(MItemTags.ADVANCED_CIRCUIT)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.PATTERN_DRIVE_DOUBLE, category = machinesCategory)
|
||||
.setUpgradeSource(MItems.PATTERN_DRIVE_NORMAL)
|
||||
.addUpgradeOps(UpgradeRecipe.MergePatterns)
|
||||
.row(MItems.PATTERN_DRIVE_NORMAL, MItemTags.ADVANCED_CIRCUIT, MItems.PATTERN_DRIVE_NORMAL)
|
||||
.unlockedBy(MItems.PATTERN_DRIVE_NORMAL)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.PATTERN_DRIVE_TRIPLE, category = machinesCategory)
|
||||
.setUpgradeSource(MItems.PATTERN_DRIVE_DOUBLE)
|
||||
.addUpgradeOps(UpgradeRecipe.MergePatterns)
|
||||
.rowB(MItemTags.DILITHIUM_GEMS)
|
||||
.row(MItems.PATTERN_DRIVE_DOUBLE, MItemTags.ADVANCED_CIRCUIT, MItems.PATTERN_DRIVE_DOUBLE)
|
||||
.rowB(MItemTags.DILITHIUM_GEMS)
|
||||
.unlockedBy(MItems.PATTERN_DRIVE_DOUBLE)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.PATTERN_DRIVE_QUAD, category = machinesCategory)
|
||||
.setUpgradeSource(MItems.PATTERN_DRIVE_TRIPLE)
|
||||
.addUpgradeOps(UpgradeRecipe.MergePatterns)
|
||||
.row(MItemTags.DILITHIUM_GEMS, MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.DILITHIUM_GEMS)
|
||||
.row(MItems.PATTERN_DRIVE_TRIPLE, MItemTags.ADVANCED_CIRCUIT, MItems.PATTERN_DRIVE_TRIPLE)
|
||||
.row(MItemTags.DILITHIUM_GEMS, MItemTags.REINFORCED_TRITANIUM_PLATES, MItemTags.DILITHIUM_GEMS)
|
||||
.unlockedBy(MItems.PATTERN_DRIVE_TRIPLE)
|
||||
.build(consumer)
|
||||
|
||||
MatteryRecipe(MItems.MATTER_CABLE, count = 16, category = machinesCategory)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItemTags.TRITANIUM_PLATES, MItemTags.TRITANIUM_PLATES)
|
||||
.row(Items.REDSTONE, MItemTags.COPPER_WIRES, Items.REDSTONE)
|
||||
|
@ -47,6 +47,9 @@ object ItemsConfig : AbstractConfig("items") {
|
||||
|
||||
object PatternDrives {
|
||||
val NORMAL: Int by builder.defineInRange(MNames.PATTERN_DRIVE_NORMAL, 4, 1, Int.MAX_VALUE)
|
||||
val DOUBLE: Int by builder.defineInRange(MNames.PATTERN_DRIVE_DOUBLE, 8, 1, Int.MAX_VALUE)
|
||||
val TRIPLE: Int by builder.defineInRange(MNames.PATTERN_DRIVE_TRIPLE, 16, 1, Int.MAX_VALUE)
|
||||
val QUAD: Int by builder.defineInRange(MNames.PATTERN_DRIVE_QUAD, 32, 1, Int.MAX_VALUE)
|
||||
}
|
||||
|
||||
init {
|
||||
|
@ -21,9 +21,11 @@ import net.minecraft.world.item.crafting.ShapedRecipePattern
|
||||
import net.minecraft.world.item.enchantment.ItemEnchantments
|
||||
import net.minecraft.world.level.Level
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
||||
import ru.dbotthepony.mc.otm.capability.matter.PatternState
|
||||
import ru.dbotthepony.mc.otm.core.nbt.set
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
import java.util.Optional
|
||||
import java.util.UUID
|
||||
|
||||
class UpgradeRecipe(
|
||||
group: String,
|
||||
@ -60,6 +62,9 @@ class UpgradeRecipe(
|
||||
COPY_ENERGY_CHARGE {
|
||||
override val codec: MapCodec<CopyEnergyCharge> = MapCodec.unit(CopyEnergyCharge)
|
||||
},
|
||||
MERGE_PATTERNS {
|
||||
override val codec: MapCodec<MergePatterns> = MapCodec.unit(MergePatterns)
|
||||
}
|
||||
;
|
||||
|
||||
private val serName = name.lowercase()
|
||||
@ -155,6 +160,34 @@ class UpgradeRecipe(
|
||||
}
|
||||
}
|
||||
|
||||
object MergePatterns : Op() {
|
||||
override val type: OpType
|
||||
get() = OpType.MERGE_PATTERNS
|
||||
|
||||
override fun apply(
|
||||
source: ItemStack,
|
||||
container: CraftingInput,
|
||||
registry: HolderLookup.Provider,
|
||||
destination: ItemStack
|
||||
) {
|
||||
val srcPatterns = source.getCapability(MatteryCapability.PATTERN_ITEM) ?: return
|
||||
val dstPatterns = destination.getCapability(MatteryCapability.PATTERN_ITEM) ?: return
|
||||
|
||||
for (pattern in srcPatterns.patterns) {
|
||||
val findState = dstPatterns.findPattern(pattern.item)
|
||||
|
||||
val new: PatternState =
|
||||
if (findState != null) {
|
||||
PatternState(findState.id, pattern.item, (findState.researchPercent + pattern.researchPercent).coerceAtMost(1.0))
|
||||
} else {
|
||||
PatternState(UUID.randomUUID(), pattern.item, pattern.researchPercent)
|
||||
}
|
||||
|
||||
dstPatterns.insertPattern(new, onlyUpdate = false, simulate = false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun assemble(input: CraftingInput, registry: HolderLookup.Provider): ItemStack {
|
||||
val result = super.assemble(input, registry)
|
||||
|
||||
|
@ -190,6 +190,9 @@ private fun addMainCreativeTabItems(consumer: CreativeModeTab.Output) {
|
||||
energized(MItems.ALL_BATTERIES)
|
||||
mattery(MItems.MATTER_CAPACITORS)
|
||||
accept(MItems.PATTERN_DRIVE_NORMAL)
|
||||
accept(MItems.PATTERN_DRIVE_DOUBLE)
|
||||
accept(MItems.PATTERN_DRIVE_TRIPLE)
|
||||
accept(MItems.PATTERN_DRIVE_QUAD)
|
||||
accept(MItems.PATTERN_DRIVE_CREATIVE)
|
||||
accept(MItems.PATTERN_DRIVE_CREATIVE2)
|
||||
|
||||
|
@ -499,6 +499,9 @@ object MItems {
|
||||
)
|
||||
|
||||
val PATTERN_DRIVE_NORMAL: Item by registry.register(MNames.PATTERN_DRIVE_NORMAL) { PatternStorageItem(ItemsConfig.PatternDrives::NORMAL) }
|
||||
val PATTERN_DRIVE_DOUBLE: Item by registry.register(MNames.PATTERN_DRIVE_DOUBLE) { PatternStorageItem(ItemsConfig.PatternDrives::DOUBLE) }
|
||||
val PATTERN_DRIVE_TRIPLE: Item by registry.register(MNames.PATTERN_DRIVE_TRIPLE) { PatternStorageItem(ItemsConfig.PatternDrives::TRIPLE) }
|
||||
val PATTERN_DRIVE_QUAD: Item by registry.register(MNames.PATTERN_DRIVE_QUAD) { PatternStorageItem(ItemsConfig.PatternDrives::QUAD) }
|
||||
val PATTERN_DRIVE_CREATIVE: Item by registry.register(MNames.PATTERN_DRIVE_CREATIVE) { PatternStorageItem() }
|
||||
val PATTERN_DRIVE_CREATIVE2: Item by registry.register(MNames.PATTERN_DRIVE_CREATIVE2) { CreativePatternItem() }
|
||||
|
||||
|
@ -128,6 +128,10 @@ object MNames {
|
||||
const val MATTER_CAPACITOR_CREATIVE = "matter_capacitor_creative"
|
||||
|
||||
const val PATTERN_DRIVE_NORMAL = "pattern_drive_normal"
|
||||
const val PATTERN_DRIVE_DOUBLE = "pattern_drive_double"
|
||||
const val PATTERN_DRIVE_TRIPLE = "pattern_drive_triple"
|
||||
const val PATTERN_DRIVE_QUAD = "pattern_drive_quad"
|
||||
|
||||
const val PATTERN_DRIVE_CREATIVE = "pattern_drive_creative"
|
||||
const val PATTERN_DRIVE_CREATIVE2 = "pattern_drive_creative2"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user