From 8164921344f6a5164b564b1a19454544e4c11e07 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Sun, 7 Jan 2024 20:03:41 +0700 Subject: [PATCH 1/9] how --- src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/English.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/English.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/English.kt index 7664ba033..1400c12d9 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/English.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/English.kt @@ -896,7 +896,7 @@ private fun gui(provider: MatteryLanguageProvider) { gui("experience.set_exact", "Set your experience level to %s") gui("essence_capsule", "(Almost) Everything you ever knew is within") - gui("essence_capsule2", "This item can be recycled at Essence Servo") + gui("essence_capsule2", "This item can be recycled at Essence Storage") gui("essence_capsule3", "Use to break free most of stored knowledge") gui("essence_capsule.digital", "Use to scan memories stored within") From 54a6f9f1524b239fd5174b00b4c0459710c5d5dc Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Sun, 7 Jan 2024 20:15:03 +0700 Subject: [PATCH 2/9] Add essence storage advancement --- .../mc/otm/datagen/advancements/AdvancementData.kt | 5 ++++- .../mc/otm/datagen/advancements/MachineAdvancementsData.kt | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/AdvancementData.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/AdvancementData.kt index 0cd43924e..b0c32ab60 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/AdvancementData.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/AdvancementData.kt @@ -559,7 +559,7 @@ fun addAdvancements(serializer: Consumer, lang: MatteryLangua .addCriterion("pill4", criterion(MItems.PILL_OBLIVION)) .save(serializer, modLocation("regular/all_pills")) - AdvancementBuilder() + val essenceCapsule = AdvancementBuilder() .parent(root) .display( itemStack = ItemStack(MItems.ESSENCE_CAPSULE), @@ -588,4 +588,7 @@ fun addAdvancements(serializer: Consumer, lang: MatteryLangua ) .addCriterion("damage", NailedEntityTrigger.Instance().criterion()) .save(serializer, modLocation("regular/explosive_hammer")) + + CraftEntry(MItems.ESSENCE_STORAGE.values, "Did not Forgot to Remember", + russianName = "Не забыл запомнить").make(serializer, essenceCapsule, translation) } diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/MachineAdvancementsData.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/MachineAdvancementsData.kt index 4bc01a1bc..479976a5b 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/MachineAdvancementsData.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/MachineAdvancementsData.kt @@ -16,7 +16,7 @@ import ru.dbotthepony.mc.otm.registry.MItems import ru.dbotthepony.mc.otm.triggers.TakeItemOutOfReplicatorTrigger import java.util.function.Consumer -private data class CraftEntry( +data class CraftEntry( val item: Collection, val englishName: String, val englishSuffix: String? = null, From 7d08b90020afe6e2d8926604f945a3c58ea32a28 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Mon, 8 Jan 2024 00:11:26 +0700 Subject: [PATCH 3/9] Double the amount of energy produced by chemical generator from fuels --- .../kotlin/ru/dbotthepony/mc/otm/config/MachinesConfig.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/config/MachinesConfig.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/config/MachinesConfig.kt index 5bb1b860b..cc3358134 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/config/MachinesConfig.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/config/MachinesConfig.kt @@ -70,7 +70,7 @@ object MachinesConfig : AbstractConfig("machines") { private val CHEMICAL_GENERATOR = workerValues( MNames.CHEMICAL_GENERATOR, - energyStorage = Decimal(24_000), + energyStorage = Decimal(32_000), energyThroughput = Decimal(160), energyConsumption = Decimal(40), workTimeMultiplier = null @@ -80,7 +80,7 @@ object MachinesConfig : AbstractConfig("machines") { object ChemicalGenerator { val VALUES by ::CHEMICAL_GENERATOR - val RATIO: Int by builder.comment("This amount of burn ticks result in 1 generation tick").defineInRange("RATIO", 4, 0) + val RATIO: Int by builder.comment("This amount of burn ticks result in 1 generation tick").defineInRange("RATIO", 2, 0) } object MatterBottler { From e54ca2ecfae97c400a6d70ee05703dfe52d0c306 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Mon, 8 Jan 2024 00:35:46 +0700 Subject: [PATCH 4/9] Energy servo advancement --- .../mc/otm/datagen/advancements/MachineAdvancementsData.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/MachineAdvancementsData.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/MachineAdvancementsData.kt index 479976a5b..9a5d25ba4 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/MachineAdvancementsData.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/MachineAdvancementsData.kt @@ -106,6 +106,9 @@ fun addMachineAdvancements(serializer: Consumer, lang: Matter CraftEntry(MItems.TWIN_PLATE_PRESS.values, "Twice the Thud", russianName = "Двойной стук").make(serializer, press, translation) + CraftEntry(MItems.ENERGY_SERVO.values, "Power Goes In, Powered Things Go Out", + russianName = "Энергия на вход, электроинструмент на выход").make(serializer, press, translation) + val scanner = CraftEntry(MItems.MATTER_SCANNER.values, "Scanning Things that Matter", russianName = "Сканируем вещи которые материальны") val decomposer = CraftEntry(MItems.MATTER_DECOMPOSER.values, "Decaying the Atoms", "Keep your limbs outside of the working chamber at all times", From 4033fd2ba9b25d20376ff0284f74957312f148d4 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Mon, 8 Jan 2024 01:45:32 +0700 Subject: [PATCH 5/9] Energy servo advancement --- .../mc/otm/datagen/advancements/MachineAdvancementsData.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/MachineAdvancementsData.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/MachineAdvancementsData.kt index 9a5d25ba4..4acd3effc 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/MachineAdvancementsData.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/MachineAdvancementsData.kt @@ -109,6 +109,9 @@ fun addMachineAdvancements(serializer: Consumer, lang: Matter CraftEntry(MItems.ENERGY_SERVO.values, "Power Goes In, Powered Things Go Out", russianName = "Энергия на вход, электроинструмент на выход").make(serializer, press, translation) + CraftEntry(MItems.ENERGY_SERVO.values, "Power Goes In, Powered Things Go Out", + russianName = "Энергия на вход, электроинструмент на выход").make(serializer, press, translation) + val scanner = CraftEntry(MItems.MATTER_SCANNER.values, "Scanning Things that Matter", russianName = "Сканируем вещи которые материальны") val decomposer = CraftEntry(MItems.MATTER_DECOMPOSER.values, "Decaying the Atoms", "Keep your limbs outside of the working chamber at all times", From c04830a3bbb414f566012e858a7b772f0e21d752 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Mon, 8 Jan 2024 01:47:24 +0700 Subject: [PATCH 6/9] Fluid tank and capsule advancements --- .../mc/otm/datagen/advancements/AdvancementData.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/AdvancementData.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/AdvancementData.kt index b0c32ab60..b3b30d123 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/AdvancementData.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/AdvancementData.kt @@ -330,6 +330,12 @@ fun addAdvancements(serializer: Consumer, lang: MatteryLangua } .save(serializer, modLocation("regular/industrial_glass")) + CraftEntry(MItems.FLUID_TANK, "Liquid Packaging", + russianName = "Упаковка для жидкостей").make(serializer, glass, translation) + + CraftEntry(MItems.FLUID_CAPSULE, "Liquid Canning", + russianName = "Банка для жидкостей").make(serializer, glass, translation) + AdvancementBuilder() .parent(glass) .display( From bf450e2ff909a0eec71ca5ba00863e8df3930c92 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Mon, 8 Jan 2024 10:09:16 +0700 Subject: [PATCH 7/9] Add block entity sync backlog handling --- .../mc/otm/block/entity/MatteryBlockEntity.kt | 2 ++ .../mc/otm/network/GenericNetworkChannel.kt | 22 ++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/MatteryBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/MatteryBlockEntity.kt index bfbb8955c..ccfea941e 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/MatteryBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/MatteryBlockEntity.kt @@ -535,6 +535,8 @@ abstract class MatteryBlockEntity(p_155228_: BlockEntityType<*>, p_155229_: Bloc waitForServerLevel.forEach { it.invoke() } } else { waitForServerLevel.clear() + + BlockEntitySyncPacket.applyBacklog(this) } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/network/GenericNetworkChannel.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/network/GenericNetworkChannel.kt index ab054cf1d..931fad1fb 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/network/GenericNetworkChannel.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/network/GenericNetworkChannel.kt @@ -69,9 +69,7 @@ class BlockEntitySyncPacket(val position: BlockPos, val buffer: ByteArray, val v val blockEntity = level.getBlockEntity(position) if (blockEntity == null) { - LOGGER.warn("Putting BlockEntitySyncPacket received for $position into backlog because there is literally no block entity there!") - LOGGER.warn("This is CERTAINLY a bug in one of optimizing mods you have or server has installed!") - LOGGER.warn("This can cause memory leak.") + LOGGER.warn("Putting BlockEntitySyncPacket received for $position into backlog because there is literally no block entity there! This is CERTAINLY a bug in one of optimizing mods you have or server has installed! This might cause memory leak.") backlog.computeIfAbsent(level) { Object2ObjectOpenHashMap() } .computeIfAbsent(position, Object2ObjectFunction { ArrayList() }) @@ -88,6 +86,8 @@ class BlockEntitySyncPacket(val position: BlockPos, val buffer: ByteArray, val v try { if (packets != null) { + LOGGER.info("Unfolding ${packets.size} backlog packets for $position (${level.getBlockState(position)}/$blockEntity)") + for (packet in packets) { blockEntity.synchronizer.read(FastByteArrayInputStream(packet.buffer, 0, packet.validBytes)) } @@ -115,6 +115,22 @@ class BlockEntitySyncPacket(val position: BlockPos, val buffer: ByteArray, val v } private val LOGGER = LogManager.getLogger() + + internal fun applyBacklog(blockEntity: MatteryBlockEntity) { + val packets = backlog[blockEntity.level]?.remove(blockEntity.blockPos) + + try { + if (packets != null) { + LOGGER.info("Unfolding ${packets.size} backlog packets for ${blockEntity.blockPos} (${blockEntity.level!!.getBlockState(blockEntity.blockPos)}/$blockEntity)") + + for (packet in packets) { + blockEntity.synchronizer.read(FastByteArrayInputStream(packet.buffer, 0, packet.validBytes)) + } + } + } catch(err: Throwable) { + LOGGER.error("Exception while reading synchronized BlockEntity data!\nPosition: ${blockEntity.blockPos}\nBlock: ${blockEntity.level!!.getBlockState(blockEntity.blockPos)}\nBlock entity: $blockEntity", err) + } + } } } From c186a6b40508eddcd9f881f3a2d2f9bd6871026f Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Mon, 8 Jan 2024 10:24:52 +0700 Subject: [PATCH 8/9] Add missing tritanium block yellow stripe painter recipe --- .../mc/otm/datagen/recipes/PainterRecipes.kt | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/PainterRecipes.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/PainterRecipes.kt index a3d384f29..762b23134 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/PainterRecipes.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/PainterRecipes.kt @@ -323,4 +323,28 @@ fun addPainterRecipes(consumer: RecipeOutput) { } consumer.accept(PainterArmorDyeRecipe(mapOf(null to 15)).toFinished(modLocation("painter/armor_clear_dye"))) + + consumer.accept(PainterRecipe( + Ingredient.of(MRegistry.TRITANIUM_BLOCK.item), + ItemStack(MItems.TRITANIUM_STRIPED_BLOCK), + mapOf(DyeColor.YELLOW to 1) + ).toFinished(modLocation("painter/tritanium_yellow_stripe"))) + + consumer.accept(PainterRecipe( + Ingredient.of(MRegistry.TRITANIUM_STAIRS.item), + ItemStack(MItems.TRITANIUM_STRIPED_STAIRS), + mapOf(DyeColor.YELLOW to 1) + ).toFinished(modLocation("painter/tritanium_yellow_stripe_stairs"))) + + consumer.accept(PainterRecipe( + Ingredient.of(MRegistry.TRITANIUM_SLAB.item), + ItemStack(MItems.TRITANIUM_STRIPED_SLAB), + mapOf(DyeColor.YELLOW to 1) + ).toFinished(modLocation("painter/tritanium_yellow_stripe_slab"))) + + consumer.accept(PainterRecipe( + Ingredient.of(MRegistry.TRITANIUM_WALL.item), + ItemStack(MItems.TRITANIUM_STRIPED_WALL), + mapOf(DyeColor.YELLOW to 1) + ).toFinished(modLocation("painter/tritanium_yellow_stripe_wall"))) } From d3423a616032811491bb09a6f4a4efca890fcead Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Mon, 8 Jan 2024 14:13:43 +0700 Subject: [PATCH 9/9] Post merge fixes for 1.20.1 --- .../mc/otm/datagen/recipes/PainterRecipes.kt | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/PainterRecipes.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/PainterRecipes.kt index 5df25aed9..e94a10555 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/PainterRecipes.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/PainterRecipes.kt @@ -325,26 +325,30 @@ fun addPainterRecipes(consumer: RecipeOutput) { consumer.accept(PainterArmorDyeRecipe(modLocation("painter/armor_clear_dye"), mapOf(null to 15)).toFinished()) consumer.accept(PainterRecipe( + modLocation("painter/tritanium_yellow_stripe"), Ingredient.of(MRegistry.TRITANIUM_BLOCK.item), ItemStack(MItems.TRITANIUM_STRIPED_BLOCK), mapOf(DyeColor.YELLOW to 1) - ).toFinished(modLocation("painter/tritanium_yellow_stripe"))) + ).toFinished()) consumer.accept(PainterRecipe( + modLocation("painter/tritanium_yellow_stripe_stairs"), Ingredient.of(MRegistry.TRITANIUM_STAIRS.item), ItemStack(MItems.TRITANIUM_STRIPED_STAIRS), mapOf(DyeColor.YELLOW to 1) - ).toFinished(modLocation("painter/tritanium_yellow_stripe_stairs"))) + ).toFinished()) consumer.accept(PainterRecipe( + modLocation("painter/tritanium_yellow_stripe_slab"), Ingredient.of(MRegistry.TRITANIUM_SLAB.item), ItemStack(MItems.TRITANIUM_STRIPED_SLAB), mapOf(DyeColor.YELLOW to 1) - ).toFinished(modLocation("painter/tritanium_yellow_stripe_slab"))) + ).toFinished()) consumer.accept(PainterRecipe( + modLocation("painter/tritanium_yellow_stripe_wall"), Ingredient.of(MRegistry.TRITANIUM_WALL.item), ItemStack(MItems.TRITANIUM_STRIPED_WALL), mapOf(DyeColor.YELLOW to 1) - ).toFinished(modLocation("painter/tritanium_yellow_stripe_wall"))) + ).toFinished()) }