diff --git a/build.gradle.kts b/build.gradle.kts index 72bdbcb0a..4f0ebd201 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -202,10 +202,10 @@ dependencies { // implementation("mcjty:theoneprobe:${mc_version}-${the_one_probe_version}:deobf") runtimeOnly(fg.deobf("curse.maven:jade-324717:${jade_id}")) - runtimeOnly(fg.deobf("curse.maven:worldedit-225608:${worldedit_fileid}")) - runtimeOnly(fg.deobf("at.ridgo8.moreoverlays:MoreOverlays-updated:${more_overlays_version}")) + // runtimeOnly(fg.deobf("curse.maven:worldedit-225608:${worldedit_fileid}")) + // runtimeOnly(fg.deobf("at.ridgo8.moreoverlays:MoreOverlays-updated:${more_overlays_version}")) - implementation(fg.deobf("mekanism:Mekanism:${mc_version}-${mekanism_version}:all")) + compileOnly(fg.deobf("mekanism:Mekanism:${mc_version}-${mekanism_version}:all")) } } diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/MatterData.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/MatterData.kt index f5ad98b3b..5fd3d09e4 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/MatterData.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/MatterData.kt @@ -1,5 +1,6 @@ package ru.dbotthepony.mc.otm.datagen +import net.minecraft.tags.ItemTags import net.minecraft.world.item.Items import net.minecraftforge.common.Tags import ru.dbotthepony.mc.otm.core.ImpreciseFraction @@ -9,15 +10,237 @@ import ru.dbotthepony.mc.otm.matter.MatterDataProvider // and anything mineral has much bigger matter value than complexity (just throw a lot of same molecules) fun addMatterData(provider: MatterDataProvider) { - provider.scope(Items.DIRT, ImpreciseFraction(1), 1.0) { - relative(Items.GRASS, Items.GRASS) + provider.scope(Items.DIRT, ImpreciseFraction(1), 40.0) { + equal(Items.GRASS_BLOCK, Items.PODZOL, Items.DIRT_PATH) - relative(Items.COAL, 40, 4) + // rocks + scope(Tags.Items.STONE, 1.1, 1.1) { + equal(Tags.Items.COBBLESTONE) + equal(Tags.Items.GRAVEL) + equal(Items.FLINT) + equal(Tags.Items.SAND) + equal(Tags.Items.NETHERRACK) + equal(Items.BASALT) + equal(Items.BLACKSTONE) - scope(Tags.Items.INGOTS_IRON, 128, 10) { - relative(Tags.Items.INGOTS_GOLD, 4, 2) - relative(Tags.Items.GEMS_DIAMOND, 16, 3) - relative(Tags.Items.GEMS_EMERALD, 20, 3.4) + scope(Items.SOUL_SAND, 1.2, 4) { + equal(Items.SOUL_SOIL) + } + + relative(Items.POINTED_DRIPSTONE, 1, 1.4) + + scope(Items.DEEPSLATE, 1.1, 1.1) { + equal(Items.COBBLED_DEEPSLATE) + + relative(Items.CALCITE, 1, 1.2) + relative(Items.TUFF, 1, 1.2) + + relative(Items.REINFORCED_DEEPSLATE, 3, 1.4) + } + + relative(Tags.Items.OBSIDIAN, 10, 1.5) + } + + // valuable minerals + scope(Items.COAL, 8, 2.5) { + scope(Tags.Items.INGOTS_IRON, 3.5, 1.25) { + relative(Tags.Items.INGOTS_COPPER, 0.8, 0.9) + + relative(Tags.Items.GEMS_LAPIS, 1.25, 2) + relative(Tags.Items.DUSTS_REDSTONE, 1.15, 2.5) + relative(Tags.Items.DUSTS_GLOWSTONE, 1.15, 4) + + relative(Tags.Items.INGOTS_GOLD, 4, 1.6) + relative(Tags.Items.GEMS_DIAMOND, 8, 2.1) + relative(Tags.Items.GEMS_EMERALD, 8, 2.2) + relative(Items.NETHERITE_SCRAP, 2, 6) + + scope(Tags.Items.GEMS_AMETHYST, 1.5, 2) { + relative(Items.BUDDING_AMETHYST, 2.5, 9) + } + } + } + + // sponge + scope(Items.SPONGE, 2.5, 4) { + relative(Items.WET_SPONGE, 1.1, 1.25) + } + + // drops from mobs + scope(Items.ROTTEN_FLESH, 8, 2.5) { + relative(Tags.Items.BONES, 1, 1.25) + relative(Tags.Items.STRING, 0.8, 0.75) + relative(Tags.Items.SLIMEBALLS, 1, 1.15) + + relative(Items.HONEYCOMB, 1.8, 1.75) + relative(Items.HONEY_BLOCK, 6, 1.75) + + relative(Tags.Items.GEMS_PRISMARINE, 6, 2.75) + } + + // skulk + relative(Items.SCULK, 6, 24) + relative(Items.SCULK_CATALYST, 12, 40) + relative(Items.SCULK_VEIN, 2.5, 24) + + // planty + scope(Items.GRASS, 1.5, 2.5) { + equal(Items.SUNFLOWER) + equal(Items.LILAC) + equal(Items.ROSE_BUSH) + equal(Items.PEONY) + equal(Items.TALL_GRASS) + equal(Items.LARGE_FERN) + equal(Items.FERN) + + equal(Items.VINE) + equal(Items.LILY_PAD) + relative(Items.GLOW_LICHEN, 1.1, 1.4) + + equal(Items.DANDELION) + equal(Items.POPPY) + equal(Items.BLUE_ORCHID) + equal(Items.ALLIUM) + equal(Items.AZURE_BLUET) + equal(Items.RED_TULIP) + equal(Items.ORANGE_TULIP) + equal(Items.WHITE_TULIP) + equal(Items.PINK_TULIP) + equal(Items.OXEYE_DAISY) + equal(Items.CORNFLOWER) + equal(Items.LILY_OF_THE_VALLEY) + + equal(Items.SPORE_BLOSSOM) + + equal(Items.BROWN_MUSHROOM) + equal(Items.BROWN_MUSHROOM_BLOCK) + equal(Items.RED_MUSHROOM) + equal(Items.RED_MUSHROOM_BLOCK) + + equal(Items.HANGING_ROOTS) + equal(Items.AZALEA) + relative(Items.FLOWERING_AZALEA, 1.05, 1.2) + equal(Items.MOSS_BLOCK) + equal(Items.BIG_DRIPLEAF) + equal(Items.SMALL_DRIPLEAF) + + scope(1, 1.1) { + equal(Items.CRIMSON_FUNGUS) + equal(Items.WARPED_FUNGUS) + + equal(Items.CRIMSON_ROOTS) + equal(Items.WARPED_ROOTS) + equal(Items.NETHER_SPROUTS) + equal(Items.WEEPING_VINES) + equal(Items.TWISTING_VINES) + } + + equal(Items.SEAGRASS) + equal(Items.TUBE_CORAL_BLOCK) + equal(Items.BRAIN_CORAL_BLOCK) + equal(Items.BUBBLE_CORAL_BLOCK) + equal(Items.FIRE_CORAL_BLOCK) + equal(Items.HORN_CORAL_BLOCK) + equal(Items.TUBE_CORAL) + equal(Items.BRAIN_CORAL) + equal(Items.BUBBLE_CORAL) + equal(Items.FIRE_CORAL) + equal(Items.HORN_CORAL) + + equal(Items.DEAD_TUBE_CORAL_BLOCK) + equal(Items.DEAD_BRAIN_CORAL_BLOCK) + equal(Items.DEAD_BUBBLE_CORAL_BLOCK) + equal(Items.DEAD_FIRE_CORAL_BLOCK) + equal(Items.DEAD_HORN_CORAL_BLOCK) + + equal(Items.TUBE_CORAL_FAN) + equal(Items.BRAIN_CORAL_FAN) + equal(Items.BUBBLE_CORAL_FAN) + equal(Items.FIRE_CORAL_FAN) + equal(Items.HORN_CORAL_FAN) + + equal(Items.DEAD_BRAIN_CORAL) + equal(Items.DEAD_BUBBLE_CORAL) + equal(Items.DEAD_FIRE_CORAL) + equal(Items.DEAD_HORN_CORAL) + equal(Items.DEAD_TUBE_CORAL) + + equal(Items.DEAD_TUBE_CORAL_FAN) + equal(Items.DEAD_BRAIN_CORAL_FAN) + equal(Items.DEAD_BUBBLE_CORAL_FAN) + equal(Items.DEAD_FIRE_CORAL_FAN) + equal(Items.DEAD_HORN_CORAL_FAN) + + equal(ItemTags.SAPLINGS) + + scope(1.5, 2) { + equal(Items.MELON_SLICE) + equal(Items.POTATO) + equal(Items.CARROT) + } + + scope(0.75, 2) { + equal(Tags.Items.SEEDS) + equal(Tags.Items.SEEDS_BEETROOT) + equal(Tags.Items.SEEDS_MELON) + equal(Tags.Items.SEEDS_PUMPKIN) + equal(Tags.Items.SEEDS_WHEAT) + } + + scope(Items.PUMPKIN, 2, 2) { + equal(Items.CARVED_PUMPKIN) + } + + scope(2.5, 6) { + equal(Items.CHORUS_FRUIT) + equal(Items.CHORUS_PLANT) + equal(Items.CHORUS_FLOWER) + } + } + + // leaves + scope(ItemTags.LEAVES, 1.5, 4) { + // directly map them this matter value + // equal(Items.OAK_LEAVES) + // equal(Items.SPRUCE_LEAVES) + // equal(Items.BIRCH_LEAVES) + // equal(Items.JUNGLE_LEAVES) + // equal(Items.ACACIA_LEAVES) + // equal(Items.DARK_OAK_LEAVES) + // equal(Items.MANGROVE_LEAVES) + } + + // wood + scope(ItemTags.LOGS, 2.5, 4) { + // directly map them this matter value + // equal(Items.OAK_LOG) + // equal(Items.SPRUCE_LOG) + // equal(Items.BIRCH_LOG) + // equal(Items.JUNGLE_LOG) + // equal(Items.ACACIA_LOG) + // equal(Items.DARK_OAK_LOG) + // equal(Items.MANGROVE_LOG) + + scope(0.9, 0.95) { + equal(Items.STRIPPED_OAK_LOG) + equal(Items.STRIPPED_SPRUCE_LOG) + equal(Items.STRIPPED_BIRCH_LOG) + equal(Items.STRIPPED_JUNGLE_LOG) + equal(Items.STRIPPED_ACACIA_LOG) + equal(Items.STRIPPED_DARK_OAK_LOG) + equal(Items.STRIPPED_MANGROVE_LOG) + equal(Items.STRIPPED_CRIMSON_STEM) + equal(Items.STRIPPED_WARPED_STEM) + equal(Items.STRIPPED_OAK_WOOD) + equal(Items.STRIPPED_SPRUCE_WOOD) + equal(Items.STRIPPED_BIRCH_WOOD) + equal(Items.STRIPPED_JUNGLE_WOOD) + equal(Items.STRIPPED_ACACIA_WOOD) + equal(Items.STRIPPED_DARK_OAK_WOOD) + equal(Items.STRIPPED_MANGROVE_WOOD) + equal(Items.STRIPPED_CRIMSON_HYPHAE) + equal(Items.STRIPPED_WARPED_HYPHAE) + } } } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterDataProvider.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterDataProvider.kt index a5b72a7d5..20390fd3b 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterDataProvider.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterDataProvider.kt @@ -451,17 +451,25 @@ open class MatterDataProvider(protected val dataGenerator: DataGenerator, val na fun relative(tag: TagKey, matterValue: Float, complexity: Long, configurator: InsertConfiguration.() -> Unit = {}) = insert(tag, ImpreciseFraction(matterValue) * this.matterValue, complexity * this.complexity, configurator) //////// - fun relative(vararg items: ItemLike) { + fun equal(vararg items: ItemLike) { for (item in items) { insert(item, matterValue, complexity) } } - fun relative(vararg tags: TagKey) { + fun equal(item: ItemLike) { + insert(item, matterValue, complexity) + } + + fun equal(vararg tags: TagKey) { for (tag in tags) { - relative(tag, matterValue, complexity) + insert(tag, matterValue, complexity) } } + + fun equal(tag: TagKey) { + insert(tag, matterValue, complexity) + } } fun insert(name: ResourceLocation, configurator: InsertConfiguration.() -> Unit): MatterManager.InsertAction { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterManager.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterManager.kt index 546c5f634..c1f192d0a 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterManager.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterManager.kt @@ -7,6 +7,7 @@ import com.google.gson.JsonElement import com.google.gson.JsonObject import com.google.gson.JsonParseException import com.google.gson.JsonPrimitive +import com.google.gson.JsonSyntaxException import it.unimi.dsi.fastutil.objects.Reference2ObjectFunction import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap import net.minecraft.resources.ResourceLocation @@ -60,17 +61,17 @@ object MatterManager : SimpleJsonResourceReloadListener(GsonBuilder().setPrettyP errorOnFailure = json["error_on_failure"]?.asBoolean ?: false priority = json["priority"]?.asInt - val location = json["id"]?.asString?.let { ResourceLocation.tryParse(it) } ?: throw JsonParseException("Invalid `id` value: ${json["id"]}") + val id = json["id"]?.asString ?: throw JsonParseException("Missing `id` value") - if (location.namespace == "#") { - throw JsonParseException("Invalid `id` value: $location") - } + if (id.startsWith("#")) { + if (id.startsWith("#:")) { + throw JsonSyntaxException("Invalid `id` value: $id") + } - if (location.namespace.startsWith("#")) { - tag = ItemTags.create(ResourceLocation(location.toString().substring(1))) + tag = ItemTags.create(ResourceLocation.tryParse(id.substring(1)) ?: throw JsonSyntaxException("Invalid `id` value: $id")) key = null } else { - key = location + key = ResourceLocation.tryParse(id) ?: throw JsonSyntaxException("Invalid `id` value: $id") tag = null }