From ef8b9b099f6ee52369e26b90503cd2dbc22b7664 Mon Sep 17 00:00:00 2001 From: JohnBraham Date: Tue, 10 Nov 2026 12:58:04 +0000 Subject: [PATCH 1/2] Use ore overlays on Minecraft 1.11.2 Let resource packs change the rock behind each ore without covering up the ore markings. Thanks to KiriCattus for the textures. --- CHANGELOG.txt | 7 ++ README.md | 9 +- build.gradle | 1 + docs/BUILDING.md | 6 +- gradle.properties | 2 +- gradle/ore-models.gradle | 115 ++++++++++++++++++ gradle/release/artifacts.gradle | 2 +- .../com/mcmoddev/lib/block/BlockMMDOre.java | 18 +++ .../zone/moddev/mc/basemetals/BaseMetals.java | 2 +- .../models/block/adamantine_ore.json | 6 - .../basemetals/models/block/antimony_ore.json | 6 - .../basemetals/models/block/bismuth_ore.json | 6 - .../basemetals/models/block/coldiron_ore.json | 6 - .../basemetals/models/block/copper_ore.json | 6 - .../basemetals/models/block/lead_ore.json | 6 - .../basemetals/models/block/mercury_ore.json | 6 - .../basemetals/models/block/nickel_ore.json | 6 - .../basemetals/models/block/platinum_ore.json | 6 - .../basemetals/models/block/silver_ore.json | 6 - .../models/block/starsteel_ore.json | 6 - .../basemetals/models/block/tin_ore.json | 6 - .../basemetals/models/block/zinc_ore.json | 6 - .../blocks/ore_overlays/adamantine_ore.png | Bin 0 -> 635 bytes .../blocks/ore_overlays/antimony_ore.png | Bin 0 -> 325 bytes .../blocks/ore_overlays/bismuth_ore.png | Bin 0 -> 325 bytes .../blocks/ore_overlays/coldiron_ore.png | Bin 0 -> 569 bytes .../blocks/ore_overlays/copper_ore.png | Bin 0 -> 262 bytes .../textures/blocks/ore_overlays/lead_ore.png | Bin 0 -> 311 bytes .../blocks/ore_overlays/mercury_ore.png | Bin 0 -> 262 bytes .../blocks/ore_overlays/nickel_ore.png | Bin 0 -> 348 bytes .../blocks/ore_overlays/platinum_ore.png | Bin 0 -> 328 bytes .../blocks/ore_overlays/silver_ore.png | Bin 0 -> 398 bytes .../blocks/ore_overlays/starsteel_ore.png | Bin 0 -> 3837 bytes .../textures/blocks/ore_overlays/tin_ore.png | Bin 0 -> 249 bytes .../textures/blocks/ore_overlays/zinc_ore.png | Bin 0 -> 331 bytes .../review/launch/DevLaunchProbe.java | 2 +- tools/validation/legacy110/run_ci_checks.py | 2 +- 37 files changed, 156 insertions(+), 88 deletions(-) create mode 100644 gradle/ore-models.gradle delete mode 100644 src/main/resources/assets/basemetals/models/block/adamantine_ore.json delete mode 100644 src/main/resources/assets/basemetals/models/block/antimony_ore.json delete mode 100644 src/main/resources/assets/basemetals/models/block/bismuth_ore.json delete mode 100644 src/main/resources/assets/basemetals/models/block/coldiron_ore.json delete mode 100644 src/main/resources/assets/basemetals/models/block/copper_ore.json delete mode 100644 src/main/resources/assets/basemetals/models/block/lead_ore.json delete mode 100644 src/main/resources/assets/basemetals/models/block/mercury_ore.json delete mode 100644 src/main/resources/assets/basemetals/models/block/nickel_ore.json delete mode 100644 src/main/resources/assets/basemetals/models/block/platinum_ore.json delete mode 100644 src/main/resources/assets/basemetals/models/block/silver_ore.json delete mode 100644 src/main/resources/assets/basemetals/models/block/starsteel_ore.json delete mode 100644 src/main/resources/assets/basemetals/models/block/tin_ore.json delete mode 100644 src/main/resources/assets/basemetals/models/block/zinc_ore.json create mode 100644 src/main/resources/assets/basemetals/textures/blocks/ore_overlays/adamantine_ore.png create mode 100644 src/main/resources/assets/basemetals/textures/blocks/ore_overlays/antimony_ore.png create mode 100644 src/main/resources/assets/basemetals/textures/blocks/ore_overlays/bismuth_ore.png create mode 100644 src/main/resources/assets/basemetals/textures/blocks/ore_overlays/coldiron_ore.png create mode 100644 src/main/resources/assets/basemetals/textures/blocks/ore_overlays/copper_ore.png create mode 100644 src/main/resources/assets/basemetals/textures/blocks/ore_overlays/lead_ore.png create mode 100644 src/main/resources/assets/basemetals/textures/blocks/ore_overlays/mercury_ore.png create mode 100644 src/main/resources/assets/basemetals/textures/blocks/ore_overlays/nickel_ore.png create mode 100644 src/main/resources/assets/basemetals/textures/blocks/ore_overlays/platinum_ore.png create mode 100644 src/main/resources/assets/basemetals/textures/blocks/ore_overlays/silver_ore.png create mode 100644 src/main/resources/assets/basemetals/textures/blocks/ore_overlays/starsteel_ore.png create mode 100644 src/main/resources/assets/basemetals/textures/blocks/ore_overlays/tin_ore.png create mode 100644 src/main/resources/assets/basemetals/textures/blocks/ore_overlays/zinc_ore.png diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 0f528961a..1ac9b7e32 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,3 +1,10 @@ +2.5.2.111021 for 1.11.2 + +- Brought KiriCattus's ore overlays to Minecraft 1.11.2. If your resource + pack changes stone, netherrack or end stone, Base Metals ores now match + the surrounding rock and keep their ore markings. +- Ore placement and existing worlds are unchanged. + 2.5.1.111021 for 1.11.2 This update brings the newer Base Metals features to 1.11.2. It requires diff --git a/README.md b/README.md index 1ccec0f43..bd651469a 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Adamantine in the Nether, and Star Steel in the End. Install Forge `13.20.1.2588` or later and [MMD OreSpawn `4.1.6.111021`](https://www.curseforge.com/minecraft/mc-mods/mmd-orespawn/files/9524249) or a newer compatible 4.x release for Minecraft 1.11.2. Put the OreSpawn and -`BaseMetals-2.5.1.111021.jar` files in your `mods` folder. +`BaseMetals-2.5.2.111021.jar` files in your `mods` folder. If you're updating an existing world, back up the world and the `config` folder first. Replace Base Metals and OreSpawn together, but keep your old OreSpawn @@ -21,6 +21,11 @@ Metals ore placement, and the eleven default rules haven't changed. Check [the ore generation guide](docs/ORE_GENERATION.md) before exploring new chunks, especially if your pack changes where vanilla ores spawn. +Base Metals ores use your resource pack's stone, netherrack and end stone. +The ore markings are a separate layer, using textures by KiriCattus. Pack +makers can replace those markings in +`assets/basemetals/textures/blocks/ore_overlays/`. + ## Using the Crack Hammer Break an ore block with a Crack Hammer to get two piles of powder. Smelt the @@ -63,7 +68,7 @@ tests. The source for this version is on `master-1.11.2`. New integrations should use `zone.moddev.mc.basemetals.init` for materials, blocks and items. The Maven coordinate is -`zone.moddev.mc.basemetals:BaseMetals:2.5.1.111021`. Crack Hammer recipes still +`zone.moddev.mc.basemetals:BaseMetals:2.5.2.111021`. Crack Hammer recipes still use `com.mcmoddev.lib.registry.CrusherRecipeRegistry`. Existing add-ons can still use the old `com.mcmoddev.basemetals` class names. diff --git a/build.gradle b/build.gradle index 5d314c6e8..89b2886e1 100644 --- a/build.gradle +++ b/build.gradle @@ -140,6 +140,7 @@ repositories { } apply from: 'gradle/dependencies.gradle' +apply from: 'gradle/ore-models.gradle' renamer.mappings.from minecraft.dependency.toSrgFile tasks.named('processResources', ProcessResources) { diff --git a/docs/BUILDING.md b/docs/BUILDING.md index 86fb53c2b..b993808b3 100644 --- a/docs/BUILDING.md +++ b/docs/BUILDING.md @@ -43,7 +43,7 @@ transformed copies cannot retain a valid signature for the original bytes. gradlew clean check build javadoc verifyReleaseArtifacts writeReleaseChecksums prepareEclipse ``` -The installable jar is `build/libs/BaseMetals-2.5.1.111021.jar`. Sources, +The installable jar is `build/libs/BaseMetals-2.5.2.111021.jar`. Sources, Javadocs are written alongside it; checksums are in `build/release/SHA256SUMS`. The mapped development jar is kept separately under `build/libs-dev`; it is not the jar to install in a normal Minecraft instance. Building never uploads anything. @@ -85,7 +85,7 @@ does not duplicate its ore rules. They also exercise the vanilla-ore switch, molten metal contact and the Modern Metals add-on. The shared **Release Base Metals** workflow lives on the repository's default -branch. Version `2.5.1.111021` selects `master-1.11.2`; it requires successful +branch. Version `2.5.2.111021` selects `master-1.11.2`; it requires successful CI for the exact source commit and explicit publication confirmation. It builds one candidate, then publishes those same files to MMD Maven, CurseForge and GitHub, in that order. A tag alone only validates the candidate. @@ -105,5 +105,5 @@ point. The verification jars are under `build/test-mods`; don't install them in a regular instance. For add-on development, use -`zone.moddev.mc.basemetals:BaseMetals:2.5.1.111021`. The public material and +`zone.moddev.mc.basemetals:BaseMetals:2.5.2.111021`. The public material and recipe types under `com.mcmoddev.lib` are still bundled in Base Metals. diff --git a/gradle.properties b/gradle.properties index e66555652..c767ab092 100644 --- a/gradle.properties +++ b/gradle.properties @@ -12,7 +12,7 @@ mappings_version=32-1.11 mod_id=basemetals mod_group=zone.moddev.mc.basemetals -mod_version=2.5.1.111021 +mod_version=2.5.2.111021 mod_artifact=BaseMetals loader_name=forge loader_code=1 diff --git a/gradle/ore-models.gradle b/gradle/ore-models.gradle new file mode 100644 index 000000000..a377a56c4 --- /dev/null +++ b/gradle/ore-models.gradle @@ -0,0 +1,115 @@ +import groovy.json.JsonOutput +import groovy.json.JsonSlurper + +import javax.imageio.ImageIO + +// KiriCattus's two-layer model uses the legacy texture paths on these Forge versions. +def hosts = [ + adamantine_ore: 'netherrack', antimony_ore: 'stone', bismuth_ore: 'stone', + coldiron_ore: 'netherrack', copper_ore: 'stone', lead_ore: 'stone', + mercury_ore: 'stone', nickel_ore: 'stone', platinum_ore: 'stone', + silver_ore: 'stone', starsteel_ore: 'end_stone', tin_ore: 'stone', zinc_ore: 'stone' +].asImmutable() +ext.baseMetalsOreOverlayIds = hosts.keySet().toList().asImmutable() + +def assets = layout.projectDirectory.dir('src/main/resources/assets/basemetals') +def textures = assets.dir('textures/blocks/ore_overlays') +def overlayFiles = fileTree(textures) { include '*_ore.png' } +def oreStates = fileTree(assets.dir('blockstates')) { include '*_ore.json' } +def oreItems = fileTree(assets.dir('models/item')) { include '*_ore.json' } +def generated = layout.buildDirectory.dir('generated/ore-models') +def sides = ['down', 'up', 'north', 'south', 'west', 'east'] + +def cube = { Number from, Number to, String texture -> + def faces = sides.collectEntries { side -> + [(side): [texture: texture, cullface: side, uv: [0, 0, 16, 16]]] + } + [from: [from, from, from], to: [to, to, to], faces: faces] +} + +def models = [ore_overlay: [ + parent: 'minecraft:block/block', + elements: [cube(0, 16, '#base'), cube(-0.05, 16.05, '#overlay')] +]] +hosts.each { id, host -> + def base = "minecraft:blocks/${host}".toString() + models[id] = [ + parent: 'basemetals:block/ore_overlay', + textures: [particle: base, base: base, overlay: "basemetals:blocks/ore_overlays/${id}".toString()] + ] +} + +def generateOreModels = tasks.register('generateOreModels') { + group = 'build' + description = 'Generates the ore models from KiriCattus’s textures and vanilla rock.' + inputs.files(overlayFiles, oreStates, oreItems).withPathSensitivity(PathSensitivity.RELATIVE) + inputs.property('models', JsonOutput.toJson(models)) + outputs.dir(generated) + + doLast { + def found = overlayFiles.files.collect { it.name - '.png' }.toSet() + if (found != hosts.keySet()) { + throw new GradleException("Ore textures do not match the model list: missing ${hosts.keySet() - found}, extra ${found - hosts.keySet()}") + } + + def json = new JsonSlurper() + hosts.keySet().each { id -> + def state = json.parse(assets.file("blockstates/${id}.json").asFile) + def item = json.parse(assets.file("models/item/${id}.json").asFile) + if (state.variants?.normal?.model != "basemetals:${id}" || item.parent != "basemetals:block/${id}") { + throw new GradleException("The block and item must both use the generated model for ${id}") + } + + def image = ImageIO.read(textures.file("${id}.png").asFile) + if (image == null) throw new GradleException("Cannot read the overlay for ${id}") + def alpha = image.getRGB(0, 0, image.width, image.height, null, 0, image.width).collect { it >>> 24 } + if (!alpha.contains(0) || !alpha.any { it >= 128 }) { + throw new GradleException("The overlay for ${id} must show both the ore and the rock behind it") + } + } + + def dir = generated.get().dir('assets/basemetals/models/block').asFile + dir.mkdirs() + models.each { id, model -> + new File(dir, "${id}.json").setText(JsonOutput.prettyPrint(JsonOutput.toJson(model)) + '\n', 'UTF-8') + } + dir.listFiles().findAll { it.isFile() && it.name.endsWith('.json') && !models.containsKey(it.name - '.json') }.each { + if (!it.delete()) throw new GradleException("Could not remove stale generated model ${it.name}") + } + } +} + +def processResources = tasks.named('processResources', ProcessResources) { + dependsOn generateOreModels + from generated +} + +tasks.named('sourcesJar', Jar) { + dependsOn generateOreModels + from generated +} + +def verifyOreOverlayModels = tasks.register('verifyOreOverlayModels') { + group = 'verification' + description = 'Checks that the processed block and item resources use the generated ore overlays.' + dependsOn processResources + + doLast { + def root = new File(processResources.get().destinationDir, 'assets/basemetals') + def json = new JsonSlurper() + models.each { id, expected -> + def path = new File(root, "models/block/${id}.json") + if (!path.isFile() || json.parse(path) != expected) { + throw new GradleException("Missing or incorrect processed ore model: ${id}") + } + } + hosts.keySet().each { id -> + def packaged = new File(root, "textures/blocks/ore_overlays/${id}.png") + if (!packaged.isFile() || !Arrays.equals(packaged.bytes, textures.file("${id}.png").asFile.bytes)) { + throw new GradleException("Missing or changed processed ore overlay: ${id}") + } + } + } +} + +tasks.named('check') { dependsOn verifyOreOverlayModels } diff --git a/gradle/release/artifacts.gradle b/gradle/release/artifacts.gradle index 82711434d..3fd656f8a 100644 --- a/gradle/release/artifacts.gradle +++ b/gradle/release/artifacts.gradle @@ -38,7 +38,7 @@ tasks.register('verifyReleaseConfiguration') { group = 'verification' dependsOn tasks.named('verifyJava8Toolchain') doLast { - if (project.group != 'zone.moddev.mc.basemetals' || project.version != '2.5.1.111021' + if (project.group != 'zone.moddev.mc.basemetals' || project.version != '2.5.2.111021' || project.minecraft_version != '1.11.2' || project.forge_version != '13.20.1.2588' || project.mappings_channel != 'stable' || project.mappings_version != '32-1.11') { throw new GradleException('Base Metals target, mappings or Maven identity changed.') diff --git a/src/main/java/com/mcmoddev/lib/block/BlockMMDOre.java b/src/main/java/com/mcmoddev/lib/block/BlockMMDOre.java index 0d61b7047..db19ce5e3 100644 --- a/src/main/java/com/mcmoddev/lib/block/BlockMMDOre.java +++ b/src/main/java/com/mcmoddev/lib/block/BlockMMDOre.java @@ -2,6 +2,7 @@ import java.util.Random; +import zone.moddev.mc.basemetals.BaseMetals; import zone.moddev.mc.basemetals.data.MaterialNames; import com.mcmoddev.lib.data.Names; import com.mcmoddev.lib.init.Materials; @@ -12,8 +13,12 @@ import net.minecraft.block.state.IBlockState; import net.minecraft.entity.Entity; import net.minecraft.item.Item; +import net.minecraft.util.BlockRenderLayer; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; /** * Ore Block. @@ -57,6 +62,19 @@ public BlockMMDOre(final MMDMaterial material, final boolean isSoft) { this.setHarvestLevel(tool, this.material.getRequiredHarvestLevel()); } + @Override + @SideOnly(Side.CLIENT) + public BlockRenderLayer getBlockLayer() { + final ResourceLocation id = getRegistryName(); + + if (id != null && BaseMetals.MODID.equals(id.getResourceDomain()) + && id.getResourcePath().equals(material.getName() + "_ore")) { + return BlockRenderLayer.CUTOUT_MIPPED; + } + + return super.getBlockLayer(); + } + @Override public int getExpDrop(final IBlockState bs, final IBlockAccess w, final BlockPos coord, final int i) { diff --git a/src/main/java/zone/moddev/mc/basemetals/BaseMetals.java b/src/main/java/zone/moddev/mc/basemetals/BaseMetals.java index 176a1f1e8..0cb795c16 100644 --- a/src/main/java/zone/moddev/mc/basemetals/BaseMetals.java +++ b/src/main/java/zone/moddev/mc/basemetals/BaseMetals.java @@ -53,7 +53,7 @@ public class BaseMetals { /** * Major.Minor.Patch.Target, where 111021 means Minecraft 1.11.2 on Forge. */ - public static final String VERSION = "2.5.1.111021"; + public static final String VERSION = "2.5.2.111021"; protected static final String UPDATEJSON = SharedStrings.UPDATE_JSON_URL + "BaseMetals/master/update.json"; diff --git a/src/main/resources/assets/basemetals/models/block/adamantine_ore.json b/src/main/resources/assets/basemetals/models/block/adamantine_ore.json deleted file mode 100644 index 2cfa93088..000000000 --- a/src/main/resources/assets/basemetals/models/block/adamantine_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "basemetals:blocks/adamantine_ore" - } -} diff --git a/src/main/resources/assets/basemetals/models/block/antimony_ore.json b/src/main/resources/assets/basemetals/models/block/antimony_ore.json deleted file mode 100644 index 46bcb758b..000000000 --- a/src/main/resources/assets/basemetals/models/block/antimony_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "basemetals:blocks/antimony_ore" - } -} diff --git a/src/main/resources/assets/basemetals/models/block/bismuth_ore.json b/src/main/resources/assets/basemetals/models/block/bismuth_ore.json deleted file mode 100644 index 6a4ff9ceb..000000000 --- a/src/main/resources/assets/basemetals/models/block/bismuth_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "basemetals:blocks/bismuth_ore" - } -} diff --git a/src/main/resources/assets/basemetals/models/block/coldiron_ore.json b/src/main/resources/assets/basemetals/models/block/coldiron_ore.json deleted file mode 100644 index 0053a3db0..000000000 --- a/src/main/resources/assets/basemetals/models/block/coldiron_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "basemetals:blocks/coldiron_ore" - } -} diff --git a/src/main/resources/assets/basemetals/models/block/copper_ore.json b/src/main/resources/assets/basemetals/models/block/copper_ore.json deleted file mode 100644 index 78d8c56ab..000000000 --- a/src/main/resources/assets/basemetals/models/block/copper_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "basemetals:blocks/copper_ore" - } -} diff --git a/src/main/resources/assets/basemetals/models/block/lead_ore.json b/src/main/resources/assets/basemetals/models/block/lead_ore.json deleted file mode 100644 index eb0dd5638..000000000 --- a/src/main/resources/assets/basemetals/models/block/lead_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "basemetals:blocks/lead_ore" - } -} diff --git a/src/main/resources/assets/basemetals/models/block/mercury_ore.json b/src/main/resources/assets/basemetals/models/block/mercury_ore.json deleted file mode 100644 index 43a930396..000000000 --- a/src/main/resources/assets/basemetals/models/block/mercury_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "basemetals:blocks/mercury_ore" - } -} diff --git a/src/main/resources/assets/basemetals/models/block/nickel_ore.json b/src/main/resources/assets/basemetals/models/block/nickel_ore.json deleted file mode 100644 index d56eb9218..000000000 --- a/src/main/resources/assets/basemetals/models/block/nickel_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "basemetals:blocks/nickel_ore" - } -} diff --git a/src/main/resources/assets/basemetals/models/block/platinum_ore.json b/src/main/resources/assets/basemetals/models/block/platinum_ore.json deleted file mode 100644 index 4b9c08a95..000000000 --- a/src/main/resources/assets/basemetals/models/block/platinum_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "basemetals:blocks/platinum_ore" - } -} diff --git a/src/main/resources/assets/basemetals/models/block/silver_ore.json b/src/main/resources/assets/basemetals/models/block/silver_ore.json deleted file mode 100644 index 186435b26..000000000 --- a/src/main/resources/assets/basemetals/models/block/silver_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "basemetals:blocks/silver_ore" - } -} diff --git a/src/main/resources/assets/basemetals/models/block/starsteel_ore.json b/src/main/resources/assets/basemetals/models/block/starsteel_ore.json deleted file mode 100644 index cc135ccca..000000000 --- a/src/main/resources/assets/basemetals/models/block/starsteel_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "basemetals:blocks/starsteel_ore" - } -} diff --git a/src/main/resources/assets/basemetals/models/block/tin_ore.json b/src/main/resources/assets/basemetals/models/block/tin_ore.json deleted file mode 100644 index 76e6d32df..000000000 --- a/src/main/resources/assets/basemetals/models/block/tin_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "basemetals:blocks/tin_ore" - } -} diff --git a/src/main/resources/assets/basemetals/models/block/zinc_ore.json b/src/main/resources/assets/basemetals/models/block/zinc_ore.json deleted file mode 100644 index f6be5b4fe..000000000 --- a/src/main/resources/assets/basemetals/models/block/zinc_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "basemetals:blocks/zinc_ore" - } -} diff --git a/src/main/resources/assets/basemetals/textures/blocks/ore_overlays/adamantine_ore.png b/src/main/resources/assets/basemetals/textures/blocks/ore_overlays/adamantine_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..c3fe185edd311d34883d76d4f9a59da7988e647b GIT binary patch literal 635 zcmV->0)+jEP)z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGf6951U69E94oEQKA0pv+UK~y-6rBYpM6HyR7cXzYf zO}ZbE#A?!peuPpQC5l0VSOpay1O?yyW&IsKD)yyd5R4C^p%|gfM~xdz;%&0o-E>EG zp@BBh1UwG|bMDN!XYO3!Kf$Jvh0Ge|vw5_*g;($Qr`DW7xJcYuStT`|gflute>9ru zK)OhzQtPPw{0?hD#oKa;ttFBqND791j%7nfsa|9M6fl$+xNg83d0`&Y;#e{h@O>Yb zO#>2Rv|l@7e;uLHs6rru5fQ_DJH3INu>$ARgT*-%Gl2(NIXbInGlvB5=w^}hsE+nY z7oA=gal-`X93Q`ZVdos&&2G|@!VbN>|7?6ifH&oLtn~QD20MW* zB?jAbK=?i3qSN;gJIUM#{p|xSZi%RQwuJME*M2rM} z4cZ|giXwjWx>JkOs!C6<=V?Nqc~F5YFM^0*JHyG{0@yU;CS7>bW zs%DU?$nabjBhSULZI91%MWyF=9^+H}D>O~RU@$;b5+E^u_8JS>ZBk>4NNRCdyo2b1 ziowu^<2Yzp&H4U8fEUGk)V5v7QY37y993~ik>?i(@bKCVs?_U14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>~Q? zgt*q%*O!!(^!N8?WMmvUd3@jDgS!vx+kJ4~p%X{9?%J{c=%Jna_Z~cUJNEA0 zclf~ey}Neq+kJHZ!9!gCrvVLNED7=pW^j0RBMr#mEbxddW?gd)z4*}Q$iB}T#0+Y literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/basemetals/textures/blocks/ore_overlays/bismuth_ore.png b/src/main/resources/assets/basemetals/textures/blocks/ore_overlays/bismuth_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..c80e34b633515fd00ee0296b01a52c07e8e412bd GIT binary patch literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6XVU3I`u#fOS+@4BLl<6 ze(pbstU$g(vPY0F14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>~Q? zgt*q%*O!!(^!N8?WMmvWy!YU~9ea0e*|&S^(L;N7Y+ZkF-_AWdHy=K*>&U@9yS8sU zuy^~;?HhOR*nD*VK{26*`#?h&OM?7@862M7NCR>>3p^r=85p>QL70(Y)*K0-V2r1W zV~E7mUOz{!0|p$Y9g{b%EBXKbO-6Pi&#`B&!jlCa9Pj8}d%BppNlt#<$LAXpIVCl1 z#IG#Btroc8iuKz>KZ(n%3TzQ9(f4=lnk^V$`XFcK>b4i0%Qjv6eo6fOawg%@Wxs$H PGB9|$`njxgN@xNA5pH;= literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/basemetals/textures/blocks/ore_overlays/coldiron_ore.png b/src/main/resources/assets/basemetals/textures/blocks/ore_overlays/coldiron_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..f94f58ac5118e39e52d631d291f9f175016285da GIT binary patch literal 569 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6XVU3I`u#fOS+@4BLl<6 ze(pbstU$g(vPY0F14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>8+w-DI*hWV)AflV{d?+A{W>6z`#jR z#icDI6s@NRv^vGYVncemITx3vuyBZ;-u%!|X9a~sb8}rTuJuI`^Af!at*inyG~88H z4Mat`xVUaMHQifOZ!ROVzbP$1L*sI7?TYN+DhG!obMp#&`+2dkMqFI!R#vX6s?uCs zrz$F%eSDIQj82x9uZoFD&!1J}=x8V@nPF2@Gq-k|4ie28U-i(tsS!0*}aI1_o|n5N2eU zHAey{=;Z0*7$Pw>IpF|HOvDj`#wI1BqX!mnTxMG;x|7FYQ;dLK%rr)op4&n@3JZc4 vzIwRnM9qws62C-t27GB;W8R^3ESy14g=Nm$c`_4#rZITB`njxgN@xNAz}u+R literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/basemetals/textures/blocks/ore_overlays/copper_ore.png b/src/main/resources/assets/basemetals/textures/blocks/ore_overlays/copper_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..6ae4ca5151a9d3b214440e37fed6745a8e2591a9 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6XVU3I`u#fOS+@4BLl<6 ze(pbstU$g(vPY0F14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>b4A@8cIxQl@bD<~h&uGT vWi;G8)V75AWR*#%hRupt4#^bb4@?Y+vJA%>U!VL6G={;`)z4*}Q$iB}a12a^ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/basemetals/textures/blocks/ore_overlays/lead_ore.png b/src/main/resources/assets/basemetals/textures/blocks/ore_overlays/lead_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..6367761e912809456381fd85b9e49af6b0cc1ec5 GIT binary patch literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6XVU3I`u#fOS+@4BLl<6 ze(pbstU$g(vPY0F14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>{Zu9WiW@kJ9-D`v#z_a&B2`Tzfa zNsRYSpkBt3AirP+hi5m^fE>;OkH}&M25w;xW@MN(M*=7q?&;zfA~Chs&ynwd0mq|& z6yGoZ@5knpMov?mEzau7P14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>tWf_h&zCQUCXbgj=tDnm{r-UW|1&m49 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/basemetals/textures/blocks/ore_overlays/nickel_ore.png b/src/main/resources/assets/basemetals/textures/blocks/ore_overlays/nickel_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..a3e7ab527201e88c68263d5cfe35f01951b52ca8 GIT binary patch literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6XVU3I`u#fOS+@4BLl<6 ze(pbstU$g(vPY0F14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>Eak7F}1fZkgq|3$N4uSpP=KhC;!|{4|wz#UaWgt8f*NZy(c!q=bCSR z>wUX*x9r{sCmXdjDDyx0)Ui8G{9()cZMrF}DpjlsrWVeJ1OA@rtm|Mf5T3C5o0Zc? fE?dp0Z_Buy|1+}*KTqie+Q;DO>gTe~DWM4fE+=pe literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/basemetals/textures/blocks/ore_overlays/platinum_ore.png b/src/main/resources/assets/basemetals/textures/blocks/ore_overlays/platinum_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..de247751dc2c1b72dbf0779c1c410586124683dd GIT binary patch literal 328 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6XVU3I`u#fOS+@4BLl<6 ze(pbstU$g(vPY0F14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>~Q? zgt*q%*O!!(^!N8?WMusO|L@bEA8)^Ze)r?ckN^Lke|Yox&(F8tK7IT5=llP^uReeH z`0M+tPw(D*`2^H$)q70=NHLZK`2{mLJiCzwvL>4nJa0`PlBg3pY5*S`Cn?Dxu-xB#@*eSHW_fr~sSIv$;>z+>wowPh7 z`qI32Hjb?;?;3JWZZeHwIO00bq55XMvXm2}Fk44ofvPP)Tsw@SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fm;}a85w5HkpK#Q_jGX#(U_Pzabe*R0}+?|=Vxdh@HxP`qq#(|fVD+-2UA~l z(`2DbhZ{F&D_%Im%F)4jBx2@NB}?N-rQWjt_xHzd+YtOvqOo`8m*=?|EdmYh2`MRu znXUN+I9cXx&X~cWB9#AAb@dG~x1fbe^RnZ1MjO9i^7_miyg!%6+M16&#(2*xyoeXOjS5_*Ko$1^b$#-0$V8l`Q7Bep06674a$RT=YbrC0T|- zJD&IlOG$?Om%68ynmo&iP3Zc<@O^8Je7U=5-mHasZ#D0q+3q^m+x72~;A=du)Stzl oaSPdaSuOh4PX25Aq94i6Js5L)no8|1U=T2Py85}Sb4q9e0B~@U1poj5 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/basemetals/textures/blocks/ore_overlays/starsteel_ore.png b/src/main/resources/assets/basemetals/textures/blocks/ore_overlays/starsteel_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..2e8267e09f5550daacd9781acb4fb62f79ee64cd GIT binary patch literal 3837 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/basemetals/textures/blocks/ore_overlays/tin_ore.png b/src/main/resources/assets/basemetals/textures/blocks/ore_overlays/tin_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..03d13a75b7ba327fee9bea2e5272abe342b191c8 GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6XVU3I`u#fOS+@4BLl<6 ze(pbstU$g(vPY0F14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>aimk{;f=`KMY%suIt^ngZHX^%;R;* z2k)Nt2t2=JxwYEH=0|gvNwWqkG1xiyIPKMoJ>4eYAa&t$;DraK2Sc`fi~Gg$`45xY U?#Yh&KzkTGUHx3vIVCg!01y{>D*ylh literal 0 HcmV?d00001 diff --git a/tools/validation/legacy110/launch-probe/review/launch/DevLaunchProbe.java b/tools/validation/legacy110/launch-probe/review/launch/DevLaunchProbe.java index 53c209159..9df03ba43 100644 --- a/tools/validation/legacy110/launch-probe/review/launch/DevLaunchProbe.java +++ b/tools/validation/legacy110/launch-probe/review/launch/DevLaunchProbe.java @@ -66,7 +66,7 @@ public void started(final FMLServerStartedEvent event) throws Exception { } private static void checkWorld(final MinecraftServer server) { - final String expectedVersion = System.getProperty("launch.expectedVersion", "2.5.1.111021"); + final String expectedVersion = System.getProperty("launch.expectedVersion", "2.5.2.111021"); require(expectedVersion.equals(Loader.instance().getIndexedModList().get("basemetals").getVersion()), "Wrong Base Metals version"); require(Loader.isModLoaded("orespawn"), "The ordinary launch did not load OreSpawn"); final boolean modernMetals = Loader.isModLoaded("modernmetals"); diff --git a/tools/validation/legacy110/run_ci_checks.py b/tools/validation/legacy110/run_ci_checks.py index b1f09a60e..4f441b108 100644 --- a/tools/validation/legacy110/run_ci_checks.py +++ b/tools/validation/legacy110/run_ci_checks.py @@ -120,7 +120,7 @@ def main(): downloads = args.output / "downloads" downloads.mkdir() jars = {name: download(downloads, name) for name in RELEASES} - mod = ROOT / "build/libs/BaseMetals-2.5.1.111021.jar" + mod = ROOT / "build/libs/BaseMetals-2.5.2.111021.jar" probes = ROOT / "build/test-mods" def script(name, *arguments): From fbfd5b4aa5b03ad832bdf4ad4d6b7424cf89a23a Mon Sep 17 00:00:00 2001 From: JohnBraham Date: Tue, 10 Nov 2026 13:11:06 +0000 Subject: [PATCH 2/2] Use the current version for CI release files --- .github/workflows/ci.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 13577d34e..b7c0000fc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -166,12 +166,16 @@ jobs: cp build/release/SHA256SUMS "$RUNNER_TEMP/first-SHA256SUMS" - name: Verify the prepared release bundle + id: release_archives shell: bash run: | set -euo pipefail + version="$(sed -n 's/^mod_version=//p' gradle.properties)" + [[ "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]] + echo "version=$version" >> "$GITHUB_OUTPUT" bundle="$RUNNER_TEMP/release-input" mkdir -p "$bundle" - cp build/libs/BaseMetals-2.5.1.111021{,-sources,-javadoc}.jar "$bundle/" + cp "build/libs/BaseMetals-$version"{,-sources,-javadoc}.jar "$bundle/" cp build/release/SHA256SUMS CHANGELOG.txt "$bundle/" ./gradlew verifyPreparedReleaseArtifacts verifyMavenCoordinates \ -PpreparedReleaseDir="$bundle" \ @@ -204,9 +208,9 @@ jobs: if-no-files-found: error retention-days: 30 path: | - build/libs/BaseMetals-2.5.1.111021.jar - build/libs/BaseMetals-2.5.1.111021-sources.jar - build/libs/BaseMetals-2.5.1.111021-javadoc.jar + build/libs/BaseMetals-${{ steps.release_archives.outputs.version }}.jar + build/libs/BaseMetals-${{ steps.release_archives.outputs.version }}-sources.jar + build/libs/BaseMetals-${{ steps.release_archives.outputs.version }}-javadoc.jar build/release/SHA256SUMS CHANGELOG.txt