From cc350a9c6f4f681fba8af57d039ac564d4a15458 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.10.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 | 11 +- build.gradle | 1 + docs/BUILDING.md | 4 +- 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 9716a33e8..4ff2f2aa2 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,3 +1,10 @@ +2.6.1.110021 for 1.10.2 + +- Brought KiriCattus's ore overlays to Minecraft 1.10.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.6.0.110021 for 1.10.2 - Open Base Metals settings from the Mods list or the OreSpawn cog. diff --git a/README.md b/README.md index 3a21e410a..1091c4196 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,11 @@ OreSpawn handles ore placement and imports old OreSpawn configuration files. The eleven ore defaults are unchanged. See [ore generation and upgrades](docs/ORE_GENERATION.md) for configuration locations and advice for existing worlds. +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/`. + ## Configuration Open **Mods → Base Metals → Config** from the main menu, or use the Base Metals @@ -119,7 +124,7 @@ pass. Normal builds and tags do not publish anything. ## Installing -Install Forge and OreSpawn, then put `BaseMetals-2.6.0.110021.jar` in your +Install Forge and OreSpawn, then put `BaseMetals-2.6.1.110021.jar` in your `mods` folder. Downloads are available on CurseForge and the repository's Releases page once the version is published. @@ -139,7 +144,7 @@ items cannot, by itself, repair those Java references. Base Metal Golems its eighteen golems use the existing Base Metals blocks and ingots. Neither add-on needs changing, and neither is required when playing without golems. -This release uses version `2.6.0.110021`. The final six digits identify Minecraft +This release uses version `2.6.1.110021`. The final six digits identify Minecraft 1.10.2 on Forge, following the same version format as the newer branches. The mod ID, saved block and item names, resources and configuration names remain `basemetals`; moving the Java packages does not rename anything in your world. @@ -149,7 +154,7 @@ The mod ID, saved block and item names, resources and configuration names remain New integrations should use `zone.moddev.mc.basemetals.init` for materials, blocks and items. Maven builds use -`zone.moddev.mc.basemetals:BaseMetals:2.6.0.110021`. Crack Hammer recipes still +`zone.moddev.mc.basemetals:BaseMetals:2.6.1.110021`. Crack Hammer recipes still use `com.mcmoddev.lib.registry.CrusherRecipeRegistry`; the bundled library API has not moved. diff --git a/build.gradle b/build.gradle index a6aa42cb8..87c8c91ce 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 5d775cba5..8ff2b9540 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.6.0.110021.jar`. Sources, +The installable jar is `build/libs/BaseMetals-2.6.1.110021.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. @@ -80,7 +80,7 @@ with `-PpackagedForgeRuntimeRoot=`. Python 3 needs `nbtlib` keep a failed run before cleaning the build directory. The shared **Release Base Metals** workflow lives on the repository's default -branch. Version `2.6.0.110021` selects `master-1.10.2`; it requires successful +branch. Version `2.6.1.110021` selects `master-1.10.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. diff --git a/gradle.properties b/gradle.properties index dd7332018..573753a94 100644 --- a/gradle.properties +++ b/gradle.properties @@ -12,7 +12,7 @@ mappings_version=29-1.10.2 mod_id=basemetals mod_group=zone.moddev.mc.basemetals -mod_version=2.6.0.110021 +mod_version=2.6.1.110021 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 0d0e64848..cc6e9638c 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.6.0.110021' + if (project.group != 'zone.moddev.mc.basemetals' || project.version != '2.6.1.110021' || project.minecraft_version != '1.10.2' || project.forge_version != '12.18.3.2511' || project.mappings_channel != 'stable' || project.mappings_version != '29-1.10.2') { 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 ebf056be9..5c7ea39e1 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 110021 means Minecraft 1.10.2 on Forge. */ - public static final String VERSION = "2.6.0.110021"; + public static final String VERSION = "2.6.1.110021"; 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 da934592d..6747bd804 100644 --- a/tools/validation/legacy110/launch-probe/review/launch/DevLaunchProbe.java +++ b/tools/validation/legacy110/launch-probe/review/launch/DevLaunchProbe.java @@ -65,7 +65,7 @@ public void started(final FMLServerStartedEvent event) throws Exception { } private static void checkWorld(final MinecraftServer server) { - final String expectedVersion = System.getProperty("launch.expectedVersion", "2.6.0.110021"); + final String expectedVersion = System.getProperty("launch.expectedVersion", "2.6.1.110021"); require(expectedVersion.equals(Loader.instance().getIndexedModList().get("basemetals").getVersion()), "Wrong Base Metals version"); require(Loader.isModLoaded("orespawn"), "The ordinary launch did not load OreSpawn"); for (final String optional : new String[]{"tconstruct", "ic2", "cofhcore", "Mekanism", "taiga", "golems_metal"}) { diff --git a/tools/validation/legacy110/run_ci_checks.py b/tools/validation/legacy110/run_ci_checks.py index 426018b74..6e7ce3e34 100644 --- a/tools/validation/legacy110/run_ci_checks.py +++ b/tools/validation/legacy110/run_ci_checks.py @@ -70,7 +70,7 @@ def main(): downloads = args.output / "downloads" downloads.mkdir() jars = {name: download(downloads, name) for name in RELEASES} - mod = ROOT / "build/libs/BaseMetals-2.6.0.110021.jar" + mod = ROOT / "build/libs/BaseMetals-2.6.1.110021.jar" probes = ROOT / "build/test-mods" molten = args.output / "molten-contact" prepare(molten, args.template, [mod, jars["orespawn"], probes / "launch-probe-packaged.jar"]) From a266e0531b19a731b02436a74380b697ecdd103b 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 d0bf5213d..b2b77bc3e 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.6.0.110021{,-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.6.0.110021.jar - build/libs/BaseMetals-2.6.0.110021-sources.jar - build/libs/BaseMetals-2.6.0.110021-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