diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 2acc9d0..fcf9b99 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -93,6 +93,7 @@ jobs: chisel(recommended) better-builders-wands(recommended) tinkers-antique(recommended) + ex-nihilo-creatio(recommended) files: | build/libs/!(*-@(dev|sources|javadoc)).jar build/libs/*-@(sources).jar diff --git a/CHANGELOG.md b/CHANGELOG.md index 3420db9..4e085cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,17 @@ +# v1.5.0 +## Ex Nihiro: Creatio Integration +- _Crooking Compatibility_ + - Added GT-style crooks. +- _Hammering Compatibility_ + - CEu Hard hammers can now be used as Ex Nihilo hammers. +- _Sieving Compatibility_ + - :warning:**_WARNING_**:warning: This feature is temporary and will be removed once GTCEu supports it natively. + - Added Steam and Electric Sieve. + - Added Basalt, Granites, Marble pebble. + - Added GT-material Ore Chunk. + +* * * + # v1.4.0 ## New: Tools Module - Per-item tool restrictions (custom max durability), JEI hiding, and recipe removal — all configurable via a single cfg. diff --git a/DEVELOPER.md b/DEVELOPER.md index e1bfa91..2e96d18 100644 --- a/DEVELOPER.md +++ b/DEVELOPER.md @@ -9,6 +9,7 @@ The table below shows current coverage: | Better Builder's Wands | — | No API yet | | Chisel | — | No API yet | | Storage Drawers | `integration.storagedrawers.api` | Available, but for mixin only | +| Ex Nihilo: Creatio | - | No API yet | All registration calls must happen during your mod's `preInit` phase, **before** GTMT's `registerBlocks`, unless stated otherwise. @@ -231,3 +232,47 @@ P X P - **X** = If _tier_ is -1, a `stickLong`; otherwise, a `Field Generator` of the specified tier - _Storage Upgrade_ conversion recipes between StorageDrawers and GTMoreTools are always added for Obsidian / Iron / Gold / Diamond / Emerald. + +--- + +## Ex Nihilo: Creatio Integration + +No addon API is currently available. The following describes the internal logic for reference. + +### What is added + +1. **GT-style Crooks** — registered for every GT material with the `TOOL` property. +2. **Hammer Conversion** - CEu Hard hammers can now be used as Ex Nihilo hammers. +3. **Sieve Compatibility** — added Steam and Electric Sieves, GT pebbles and GT Ore chunk. + +### Tool crafting + +| Config | Recipe shape | Materials | +|--------|----------------------|--------------| +| Always | `"SS" / " S" / " S"` | Rod (or Gem) | + +The original Wood, Iron, Gold, Diamond Crook recipe is removed when `replaceCrook = true`. +Registered as `toolCrook`. + +### Electric Sieve Recipe + +``` +C P C +V H V +W S W +``` + +- **C** = Circuit (all tier-scaled), **P** = Piston +- **V** = Conveyer, **H** = Hull, **W** = `cableGTSingle` (LV = Tin, MV = Copper, ...) +- **S** = Sieve + +### Sieving Compatibility + +:warning:**_WARNING_**:warning: This feature is temporary and will be removed once GTCEu supports it natively. +- Adds GT stone Pebbles and Rubber Saplings to the Dirt Sieve drop table. +- Allows GT Materials to be added to the Sieve drop tables for Sand, Gravel, Andesite, Granite, Diorite, Netherrack, and Endstone via the config. + - Format: `modid:materialName@chance*meshLevel` (`modid` is optional and defaults to `gregtech`.) + - When `outputVeinProbabilities` is set to `true`, all worldgen vein definitions under `config/gregtech/worldgen/vein/` are scanned, and the generation probability of each ore is written to the log. +> **Note:** GTMT only adds new entries and does not modify the default Sieve drop tables. + +--- diff --git a/LICENSE-ExNihiloCreatio b/LICENSE-ExNihiloCreatio new file mode 100644 index 0000000..965c054 --- /dev/null +++ b/LICENSE-ExNihiloCreatio @@ -0,0 +1,25 @@ +The MIT License (MIT) + +Copyright (c) 2015 MikeLydeamore (original Mod); +Copyright (c) 2017 Jacky1356400 (initial Port); +Copyright (c) 2017 BloodWorkXGaming (current Maintainer) +Copyright (c) 2017 SirLyle (current Maintainer) +Copyright (c) 2019 Wolforce (textures) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/LICENSE-Gregification b/LICENSE-Gregification new file mode 100644 index 0000000..72d4259 --- /dev/null +++ b/LICENSE-Gregification @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 GregTech CE Unofficial Team + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index c1e413e..7266c53 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,13 @@ For full details, see [CHANGELOG.md](CHANGELOG.md). ### Storage Drawers Integration - Add GT material-based Storage Upgrades. +### Ex Nihilo: Creatio Integration +- Add GT material-based Crook. +- Hammering Compatibility +- Sieving Compatibility + +For full details, see [CHANGELOG.md](CHANGELOG.md). + ## For Addon Developers GTMoreTools exposes a public API for extending the Tinkers' Construct integration. @@ -40,3 +47,5 @@ See **[DEVELOPER.md](DEVELOPER.md)** for the full guide. ## Credits - I modified some textures & codes from [GregTech CE: Unofficial](https://www.curseforge.com/minecraft/mc-mods/gregtech-ce-unofficial) under [LGPL-3.0](https://github.com/GregTechCEu/GregTech/blob/main/LICENSE) License +- I modified some texture & codes from [Gregification](https://github.com/GregTechCEu/Gregification) under [MIT](LICENSE-Gregification) Licence +- I modified some textures from [Ex Nihilo: Creatio](https://github.com/BloodyMods/ExNihiloCreatio) under [MIT](LICENSE-ExNihiloCreatio) License diff --git a/buildscript.properties b/buildscript.properties index ebe8495..8b12f57 100644 --- a/buildscript.properties +++ b/buildscript.properties @@ -35,6 +35,7 @@ debug_chisel = false debug_bbw = false debug_tic = false debug_drawers = false +debug_exnihilocreatio = false # Select a username for testing your mod with breakpoints. You may leave this empty for a random username each time you # restart Minecraft in development. Choose this dependent on your mod: diff --git a/dependencies.gradle b/dependencies.gradle index 6f22df3..2f2fbdd 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -77,4 +77,12 @@ dependencies { runtimeOnly rfg.deobf("curse.maven:storage-drawers-223852:5981297") implementation rfg.deobf("curse.maven:topalldependents-1120632:6138503") } + + // Debug Ex Nihilo: Creatio + compileOnly rfg.deobf("curse.maven:shadowfacts-forgelin-248453:2785465") // Shadowfacts' Forgelin-1.8.4 + compileOnly rfg.deobf("curse.maven:ex-nihilo-creatio-274456:2817545") // Ex Nihilo: Creatio-1.12.2-0.4.7.2 + if (project.debug_all.toBoolean() || project.debug_exnihilocreatio.toBoolean()) { + runtimeOnly rfg.deobf("curse.maven:shadowfacts-forgelin-248453:2785465") + runtimeOnly rfg.deobf("curse.maven:ex-nihilo-creatio-274456:2817545") + } } diff --git a/src/main/java/com/github/gtexpert/gtmt/api/unification/material/info/GTMTMaterialIconType.java b/src/main/java/com/github/gtexpert/gtmt/api/unification/material/info/GTMTMaterialIconType.java new file mode 100644 index 0000000..cbfa80d --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/api/unification/material/info/GTMTMaterialIconType.java @@ -0,0 +1,12 @@ +package com.github.gtexpert.gtmt.api.unification.material.info; + +import gregtech.api.unification.material.info.MaterialIconType; + +public class GTMTMaterialIconType { + + // Ex Nihilo: Creatio + public static final MaterialIconType oreChunk = new MaterialIconType("oreChunk"); + public static final MaterialIconType oreEnderChunk = new MaterialIconType("oreEnderChunk"); + public static final MaterialIconType oreNetherChunk = new MaterialIconType("oreNetherChunk"); + public static final MaterialIconType oreSandyChunk = new MaterialIconType("oreSandyChunk"); +} diff --git a/src/main/java/com/github/gtexpert/gtmt/api/unification/material/ore/GTMTOrePrefix.java b/src/main/java/com/github/gtexpert/gtmt/api/unification/material/ore/GTMTOrePrefix.java new file mode 100644 index 0000000..3aa2db5 --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/api/unification/material/ore/GTMTOrePrefix.java @@ -0,0 +1,22 @@ +package com.github.gtexpert.gtmt.api.unification.material.ore; + +import static gregtech.api.unification.ore.OrePrefix.Conditions.hasOreProperty; +import static gregtech.api.unification.ore.OrePrefix.Flags.ENABLE_UNIFICATION; + +import gregtech.api.unification.ore.OrePrefix; + +import com.github.gtexpert.gtmt.api.unification.material.info.GTMTMaterialIconType; + +public class GTMTOrePrefix { + + // Ex Nihilo: Creatio + + public static final OrePrefix oreChunk = new OrePrefix("oreChunk", -1, null, GTMTMaterialIconType.oreChunk, + ENABLE_UNIFICATION, hasOreProperty); + public static final OrePrefix oreEnderChunk = new OrePrefix("oreEnderChunk", -1, null, + GTMTMaterialIconType.oreEnderChunk, ENABLE_UNIFICATION, hasOreProperty); + public static final OrePrefix oreNetherChunk = new OrePrefix("oreNetherChunk", -1, null, + GTMTMaterialIconType.oreNetherChunk, ENABLE_UNIFICATION, hasOreProperty); + public static final OrePrefix oreSandyChunk = new OrePrefix("oreSandyChunk", -1, null, + GTMTMaterialIconType.oreSandyChunk, ENABLE_UNIFICATION, hasOreProperty); +} diff --git a/src/main/java/com/github/gtexpert/gtmt/api/util/Mods.java b/src/main/java/com/github/gtexpert/gtmt/api/util/Mods.java index a22c9d1..e949df3 100644 --- a/src/main/java/com/github/gtexpert/gtmt/api/util/Mods.java +++ b/src/main/java/com/github/gtexpert/gtmt/api/util/Mods.java @@ -43,6 +43,7 @@ public enum Mods { EnderIOMachines(Names.ENDER_MACHINES), EnderIOConduits(Names.ENDER_CONDUITS), EnderIOAE2Conduits(Names.ENDER_AE2_CONDUITS), + ExNihilo(Names.EX_NIHILO), ExtraCPUs(Names.EXTRA_CPUS), GalacticraftCore(Names.GALACTICRAFT_CORE), GregicalityMultiblocks(Names.GREGICALITY_MULTIBLOCKS), @@ -116,6 +117,7 @@ public static class Names { public static final String ENDER_MACHINES = "enderiomachines"; public static final String ENDER_CONDUITS = "enderioconduits"; public static final String ENDER_AE2_CONDUITS = "enderioconduitsappliedenergistics"; + public static final String EX_NIHILO = "exnihilocreatio"; public static final String EXTRA_BEES = "extrabees"; public static final String EXTRA_CPUS = "extracpus"; public static final String EXTRA_TREES = "extratrees"; diff --git a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloConfigHolder.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloConfigHolder.java new file mode 100644 index 0000000..c4204c2 --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloConfigHolder.java @@ -0,0 +1,313 @@ +package com.github.gtexpert.gtmt.integration.exnihilo; + +import net.minecraftforge.common.config.Config; + +import com.github.gtexpert.gtmt.api.ModValues; +import com.github.gtexpert.gtmt.modules.Modules; + +@Config.LangKey(ModValues.MODID + ".config.integration.exnihilo") +@Config(modid = ModValues.MODID, + name = ModValues.MODID + "/integration/" + Modules.MODULE_EXNIHILO, + category = "ExNihilo") +public class ExNihiloConfigHolder { + + @Config.Comment({ "Config category for sieve drops" }) + @Config.RequiresMcRestart + public static SieveCategory drops = new SieveCategory(); + + @Config.Comment({ "Replaces the original Crooks with GT Crooks or recipe.", "Affected: Wood, Iron, Gold, Diamond.", + "Default: false" }) + @Config.RequiresMcRestart + public static boolean replaceCrook = false; + + @Config.Comment({ + "Outputs GTCEu vein and material probability information to the log.", + "This option is intended to help configure generated sieve drops.", + "Default: false" + }) + @Config.RequiresMcRestart + public static boolean outputVeinProbabilities = false; + + @Config.Comment({ + "Replace Ex Nihilo Mesh recipes with GT-style recipes", + "Default: true" + }) + @Config.RequiresMcRestart + public static boolean harderMeshes = true; + + public static class SieveCategory { + + @Config.Comment({ "Sand Sieve drop list.", "Format: modid:materialName@Chance*MeshLevel", + "If no \"modid:\" is specified, \"gregtech:\" is assumed.", + "\"Chance\" is parsed as a \"float\", and \"MeshLevel\" as an \"int\".", + "Example: gregtech:iron@0.001*1 or iron@0.001*1" }) + public String[] sandSieveDrops = new String[] { + // Oilsands 1 + "oilsands@0.0111*1", + // Lapis - 25% of Diorite + "sodalite@0.0027*1", + "calcite@0.0008*1", + "lapis@0.0014*1", + "lazurite@0.0035*1", + // Salt - 10% of Gravel + "salt@0.0013*3", + "spodumene@0.0004*3", + "lepidolite@0.0007*3", + "rock_salt@0.0017*3", + + // Mineral Sand + "granitic_mineral_sand@0.0213*2", + "gypsum@0.0065*2", + "fullers_earth@0.0110*2", + "basaltic_mineral_sand@0.0279*2", + // Garnet Tin + "garnet_sand@0.0213*2", + "diatomite@0.0065*2", + "asbestos@0.011*2", + "cassiterite_sand@0.0279*2", + + // Sapphire + "pyrope@0.0161*3", + "green_sapphire@0.0046*3", + "sapphire@0.0084*3", + "almandine@0.0209*3", + // Garnet + "garnet_yellow@0.0107*3", + "opal@0.0031*3", + "amethyst@0.0056*3", + "garnet_red@0.0141*3", + // Copper Tin + "zeolite@0.0133*3", + "realgar@0.004*3", + "cassiterite@0.0069*3", + "chalcopyrite@0.0174*3", + + // Oilsands 2 + "oilsands@0.0222*4" + }; + + @Config.Comment({ "Gravel Sieve drop list.", "Format: modid:materialName@Chance*MeshLevel", + "If no \"modid:\" is specified, \"gregtech:\" is assumed.", + "\"Chance\" is parsed as a \"float\", and \"MeshLevel\" as an \"int\".", + "Example: gregtech:iron@0.001*1 or iron@0.001*1" }) + public String[] gravelSieveDrops = new String[] { + // Cassiterite + "tin@0.0557*1", + "cassiterite@0.011*1", + // Coal + "coal@0.0667*1", + // Redstone - Redstone only + "redstone@0.0368*1", + + // Galena + "galena@0.0247*2", + "lead@0.0031*2", + "silver@0.0056*2", + // Sapphire - 25% of Sand + "pyrope@0.0004*3", + "green_sapphire@0.0012*3", + "sapphire@0.0021*3", + "almandine@0.052*3", + + // Salt + "salt@0.0133*3", + "spodumene@0.0041*3", + "lepidolite@0.0069*3", + "rock_salt@0.0174*3", + + // Mica + "mica@0.0054*4", + "pollucite@0.0015*4", + "bauxite@0.0028*4", + "kyanite@0.0070*4" + }; + + @Config.Comment({ "Granite Sieve drop list.", "Format: modid:materialName@Chance*MeshLevel", + "If no \"modid:\" is specified, \"gregtech:\" is assumed.", + "\"Chance\" is parsed as a \"float\", and \"MeshLevel\" as an \"int\".", + "Example: gregtech:iron@0.001*1 or iron@0.001*1" }) + public String[] graniteSieveDrops = new String[] { + // Coal + "coal@0.0667*1", + // Magnetite + "magnetite@0.0489*1", + "gold@0.006*1", + "vanadium_magnetite@0.0108*1", + + // Redstone + "redstone@0.0368*2", + "cinnabar@0.0004*2", + "ruby@0.0082*2", + + // Olivin + "magnesite@0.0054*3", + "glauconite_sand@0.0015*3", + "olivine@0.0028*3", + "bentonite@0.0070*3", + + // Manganese + "spessartine@0.0054*4", + "tantalite@0.0015*4", + "pyrolusite@0.0028*4", + "grossular@0.00704*4" + }; + + @Config.Comment({ "Diorite Sieve drop list.", "Format: modid:materialName@Chance*MeshLevel", + "If no \"modid:\" is specified, \"gregtech:\" is assumed.", + "\"Chance\" is parsed as a \"float\", and \"MeshLevel\" as an \"int\".", + "Example: gregtech:iron@0.001*1 or iron@0.001*1" }) + public String[] dioriteSieveDrops = new String[] { + // Iron - 10% of Andesite + "yellow_limonite@0.0032*3", + "malachite@0.001*3", + "banded_iron@0.0017*3", + "brown_limonite@0.0042*3", + + // Lapis + "sodalite@0.0107*2", + "calcite@0.0031*2", + "lapis@0.0056*2", + "lazurite@0.0140*2", + + // Lubricant + "talc@0.0107*3", + "pentlandite@0.0031*3", + "glauconite_sand@0.0056*3", + "soapstone@0.014*3", + // Nickel + "nickel@0.0107*3", + "pentlandite@0.0031*3", + "cobaltite@0.0056*3", + "garnierite@0.0140*3" + }; + + @Config.Comment({ "Andesite Sieve drop list.", "Format: modid:materialName@Chance*MeshLevel", + "If no \"modid:\" is specified, \"gregtech:\" is assumed.", + "\"Chance\" is parsed as a \"float\", and \"MeshLevel\" as an \"int\".", + "Example: gregtech:iron@0.001*1 or iron@0.001*1" }) + public String[] andesiteSieveDrops = new String[] { + // Copper + "iron@0.0213*1", + "copper@0.0065*1", + "chalcopyrite@0.0279*1", + "pyrite@0.011*1", + // Coal + "coal@0.0667*1", + + // Diamond + "graphite@0.0247*2", + "coal@0.0031*2", + "diamond@0.0056*2", + + // Iron + "yellow_limonite@0.0319*3", + "malachite@0.0098*3", + "banded_iron@0.0165*3", + "brown_limonite@0.0418*3", + + // Apatite + "apatite@0.0247*4", + "pyrochlore@0.0031*4", + "tricalcium_phosphate@0.0056*4" + }; + + @Config.Comment({ "Netherrack Sieve drop list.", "Format: modid:materialName@Chance*MeshLevel", + "If no \"modid:\" is specified, \"gregtech:\" is assumed.", + "\"Chance\" is parsed as a \"float\", and \"MeshLevel\" as an \"int\".", + "Example: gregtech:iron@0.001*1 or iron@0.001*1" }) + public String[] netherrackSieveDrops = new String[] { + // BandedIron + "yellow_limonite@0.0176*1", + "gold@0.0054*1", + "banded_iron@0.0091*1", + "brown_limonite@0.0203*1", + // Tetrahedrite + "tetrahedrite@0.0946*1", + "stibnite@0.0126*1", + "copper@0.0212*1", + // Redstone + "redstone@0.0811*1", + "cinnabar@0.00108*1", + "ruby@0.0182*1", + // Nether Quartz + "nether_quartz@0.1324*2", + "quartzite@0.0144*2", + + // Certus Quartz + "certus_quartz@0.0359*2", + "barite@0.0068*2", + "quartzite@0.0307*2", + // Sulfur + "sulfur@0.1352*2", + "sphalerite@0.018*2", + "pyrite@0.0303*2", + // Manganese + "pyrolusite@0.00118*2", + "tantalite@0.0034*2", + "pyrochlore@0.0061*2", + "grossular@0.0154*2", + + // Beryllium + "beryllium@0.0407*3", + "thorium@0.0051*3", + "emerald@0.0092*3", + // Topaz + "topaz@0.0236*3", + "bornite@0.0068*3", + "chalcocite@0.0123*3", + "blue_topaz@0.0307*3", + // Saltpeter + "diatomite@0.0236*3", + "alunite@0.0068*3", + "electrotine@0.0123*3", + "saltpeter@0.0307*3", + + // Monazite + "bastnasite@0.0407*4", + "neodymium@0.0051*4", + "monazite@0.0092*4", + // Molybdenum + "molybdenite@0.0029*4", + "powellite@0.0008*4", + "molybdenum@0.0015*4", + "wulfenite@0.0038*4" + }; + + @Config.Comment({ "Endstone Sieve drop list.", "Format: modid:materialName@Chance*MeshLevel", + "If no \"modid:\" is specified, \"gregtech:\" is assumed.", + "\"Chance\" is parsed as a \"float\", and \"MeshLevel\" as an \"int\".", + "Example: gregtech:iron@0.001*1 or iron@0.001*1" }) + public String[] endstoneSieveDrops = new String[] { + // Bauxite + "ilmenite@0.1103*2", + "aluminium@0.0447*2", + "bauxite@0.117*2", + // Magnetite + "vanadium_magnetite@0.0633*2", + "gold@0.0208*2", + "chromite@0.0325*2", + "magnetite@0.0834*2", + + // Sheldnite + "cooperite@0.0213*3", + "palladium@0.0065*3", + "platinum@0.011*3", + "bornite@0.0279*3", + // Scheelite + "scheelite@0.0982*3", + "lithium@0.0131*3", + "tungstate@0.022*3", + + // Naquadah + "naquadah@0.1792*4", + "plutonium@0.0208*4", + // Pitchblende + "pitchblende@0.0987*4", + "uraninite@0.0347*4" + }; + + @Config.Comment({ "Enables logging of SieveDrop registration information.", "See 'latest.log'", + "Default: false" }) + public boolean outputsDebugs = false; + } +} diff --git a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloEventHandlers.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloEventHandlers.java new file mode 100644 index 0000000..0c37a9a --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloEventHandlers.java @@ -0,0 +1,68 @@ +package com.github.gtexpert.gtmt.integration.exnihilo; + +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.item.ItemStack; +import net.minecraftforge.event.world.BlockEvent; +import net.minecraftforge.fml.common.eventhandler.EventPriority; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import org.jetbrains.annotations.NotNull; + +import gregtech.api.items.toolitem.IGTTool; +import gregtech.api.items.toolitem.ToolClasses; +import gregtech.api.unification.material.event.MaterialEvent; +import gregtech.api.unification.ore.OrePrefix; +import gregtech.common.items.MetaItems; + +import com.github.gtexpert.gtmt.api.unification.material.ore.GTMTOrePrefix; + +import exnihilocreatio.registries.manager.ExNihiloRegistryManager; + +public class ExNihiloEventHandlers { + + private ExNihiloEventHandlers() {} + + // Hammer Event + @SubscribeEvent(priority = EventPriority.LOW) + public static void hammer(BlockEvent.HarvestDropsEvent event) { + if (event.getWorld().isRemote || event.getHarvester() == null || event.isSilkTouching()) + return; + + ItemStack held = event.getHarvester().getHeldItemMainhand(); + + if (!(held.getItem().getToolClasses(held).contains(ToolClasses.HARD_HAMMER) && + held.getItem() instanceof IGTTool)) { + return; + } + + Block block = event.getState().getBlock(); + ItemStack stack = new ItemStack(block); + + if (ExNihiloUtil.isContained(stack)) { + return; + } + + List rewards = ExNihiloRegistryManager.HAMMER_REGISTRY.getRewardDrops(event.getWorld().rand, + event.getState(), + ((IGTTool) held.getItem()).getTotalHarvestLevel(held), event.getFortuneLevel()); + + if (rewards != null && rewards.size() > 0) { + event.getDrops().clear(); + event.setDropChance(1.0F); + event.getDrops().addAll(rewards); + } + } + + // Material Event + @SubscribeEvent + public static void registerOrePrefix(@NotNull MaterialEvent event) { + MetaItems.addOrePrefix(GTMTOrePrefix.oreChunk, GTMTOrePrefix.oreEnderChunk, GTMTOrePrefix.oreNetherChunk, + GTMTOrePrefix.oreSandyChunk); + GTMTOrePrefix.oreChunk.setAlternativeOreName(OrePrefix.ore.name()); + GTMTOrePrefix.oreEnderChunk.setAlternativeOreName(OrePrefix.oreEndstone.name()); + GTMTOrePrefix.oreNetherChunk.setAlternativeOreName(OrePrefix.oreNetherrack.name()); + GTMTOrePrefix.oreSandyChunk.setAlternativeOreName(OrePrefix.ore.name()); + } +} diff --git a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloModule.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloModule.java new file mode 100644 index 0000000..cbd3c55 --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloModule.java @@ -0,0 +1,111 @@ +package com.github.gtexpert.gtmt.integration.exnihilo; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.item.crafting.IRecipe; +import net.minecraftforge.client.event.ColorHandlerEvent; +import net.minecraftforge.client.event.ModelRegistryEvent; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.fml.common.event.FMLInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import net.minecraftforge.registries.IForgeRegistry; + +import org.jetbrains.annotations.NotNull; + +import gregtech.api.gui.resources.SteamTexture; +import gregtech.api.items.toolitem.IGTTool; + +import com.github.gtexpert.gtmt.api.ModValues; +import com.github.gtexpert.gtmt.api.modules.TModule; +import com.github.gtexpert.gtmt.api.util.Mods; +import com.github.gtexpert.gtmt.integration.IntegrationSubmodule; +import com.github.gtexpert.gtmt.integration.exnihilo.items.ExNihiloItems; +import com.github.gtexpert.gtmt.integration.exnihilo.metatileentities.ExNihiloMetaTileEntities; +import com.github.gtexpert.gtmt.integration.exnihilo.recipes.*; +import com.github.gtexpert.gtmt.integration.exnihilo.recipes.sieve.SieveDrops; +import com.github.gtexpert.gtmt.integration.exnihilo.recipes.sieve.VeinProbabilityReporter; +import com.github.gtexpert.gtmt.integration.exnihilo.tools.ExNihiloToolsItems; +import com.github.gtexpert.gtmt.modules.Modules; + +import exnihilocreatio.registries.manager.ExNihiloRegistryManager; + +@TModule( + moduleID = Modules.MODULE_EXNIHILO, + containerID = ModValues.MODID, + modDependencies = Mods.Names.EX_NIHILO, + name = "GTMoreTools Ex Nihilo Creatio Integration", + description = "Ex Nihilo Creatio Module") +public class ExNihiloModule extends IntegrationSubmodule { + + public static final SteamTexture PROGRESS_BAR_SIFTER_STEAM = SteamTexture + .fullImage("textures/gui/progress_bar/progress_bar_sift_%s.png"); + + @NotNull + @Override + public List> getEventBusSubscribers() { + return new ArrayList<>(Arrays.asList(ExNihiloModule.class, ExNihiloEventHandlers.class)); + } + + @Override + public void preInit(FMLPreInitializationEvent event) { + ExNihiloToolsItems.init(); + ExNihiloItems.init(); + ExNihiloMetaTileEntities.init(); + } + + @Override + public void init(FMLInitializationEvent evet) { + ExNihiloRegistryManager.registerSieveDefaultRecipeHandler(new SieveDrops()); + } + + @Override + public void postInit(FMLPostInitializationEvent event) { + if (ExNihiloConfigHolder.outputVeinProbabilities) { + VeinProbabilityReporter.output(); + } + } + + @SubscribeEvent + public static void onRegisterItems(RegistryEvent.Register event) { + IForgeRegistry registry = event.getRegistry(); + for (IGTTool tool : ExNihiloToolsItems.getAllTools()) { + registry.register(tool.get()); + } + registry.register(ExNihiloItems.pebbleItem); + } + + @SubscribeEvent + @SideOnly(Side.CLIENT) + public static void onRegisterModels(ModelRegistryEvent event) { + ExNihiloToolsItems.registerModels(); + } + + @SubscribeEvent + @SideOnly(Side.CLIENT) + public static void onRegisterColors(ColorHandlerEvent.Item event) { + ExNihiloToolsItems.registerColors(event.getItemColors()); + } + + @Override + public void registerBlocks(RegistryEvent.Register event) {} + + @Override + public void registerRecipesNormal(RegistryEvent.Register event) { + SieveDrops.readSieveDropsFromConfig(); + } + + @Override + public void registerRecipesLowest(RegistryEvent.Register event) { + ExNihiloUtil.init(); + ExNihiloToolRecipe.registerRecipes(); + ExNihiloMiscRecipe.init(); + } +} diff --git a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloRecipeMaps.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloRecipeMaps.java new file mode 100644 index 0000000..102151a --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloRecipeMaps.java @@ -0,0 +1,18 @@ +package com.github.gtexpert.gtmt.integration.exnihilo; + +import net.minecraft.init.SoundEvents; + +import gregtech.api.gui.GuiTextures; +import gregtech.api.gui.widgets.ProgressWidget; +import gregtech.api.recipes.RecipeMap; +import gregtech.api.recipes.builders.SimpleRecipeBuilder; + +import com.github.gtexpert.gtmt.integration.exnihilo.metatileentities.SieveRecipeMap; + +public class ExNihiloRecipeMaps { + + public static final RecipeMap SIEVE_RECIPES = new SieveRecipeMap("electric_sieve", 2, 42, 0, 0, + new SimpleRecipeBuilder().duration(100).EUt(16), false) + .setProgressBar(GuiTextures.PROGRESS_BAR_SIFT, ProgressWidget.MoveType.VERTICAL_DOWNWARDS) + .setSound(SoundEvents.BLOCK_SAND_PLACE); +} diff --git a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloUtil.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloUtil.java new file mode 100644 index 0000000..2efe4b8 --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/ExNihiloUtil.java @@ -0,0 +1,29 @@ +package com.github.gtexpert.gtmt.integration.exnihilo; + +import java.util.ArrayList; +import java.util.List; + +import net.minecraft.item.ItemStack; + +import gregtech.api.recipes.RecipeMaps; +import gregtech.api.recipes.ingredients.GTRecipeInput; + +public class ExNihiloUtil { + + private static final List recipeInputs = new ArrayList<>(); + + public static void init() { + recipeInputs.clear(); + + RecipeMaps.FORGE_HAMMER_RECIPES.getRecipeList().forEach(recipe -> recipeInputs.addAll(recipe.getInputs())); + } + + public static boolean isContained(ItemStack stack) { + if (stack == null || stack.isEmpty()) { + return false; + } + + return recipeInputs.stream() + .anyMatch(input -> input.acceptsStack(stack)); + } +} diff --git a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/items/ExNihiloItems.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/items/ExNihiloItems.java new file mode 100644 index 0000000..52f790b --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/items/ExNihiloItems.java @@ -0,0 +1,10 @@ +package com.github.gtexpert.gtmt.integration.exnihilo.items; + +public class ExNihiloItems { + + public static ItemGTMTPebbles pebbleItem; + + public static void init() { + pebbleItem = new ItemGTMTPebbles("gtPebble", "gtPebble"); + } +} diff --git a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/items/ItemGTMTPebbles.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/items/ItemGTMTPebbles.java new file mode 100644 index 0000000..5dbf18a --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/items/ItemGTMTPebbles.java @@ -0,0 +1,119 @@ +package com.github.gtexpert.gtmt.integration.exnihilo.items; + +import javax.annotation.Nonnull; + +import net.minecraft.client.renderer.block.model.ModelBakery; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.SoundEvents; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ActionResult; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumHand; +import net.minecraft.util.IStringSerializable; +import net.minecraft.util.NonNullList; +import net.minecraft.util.SoundCategory; +import net.minecraft.world.World; +import net.minecraftforge.client.event.ModelRegistryEvent; +import net.minecraftforge.client.model.ModelLoader; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import org.jetbrains.annotations.Nullable; + +import exnihilocreatio.ExNihiloCreatio; +import exnihilocreatio.entities.ProjectileStone; +import exnihilocreatio.util.Data; +import exnihilocreatio.util.IHasModel; + +public class ItemGTMTPebbles extends Item implements IHasModel { + + public ItemGTMTPebbles(String registryName, String translationKey) { + setRegistryName(registryName); + setTranslationKey(translationKey); + setCreativeTab(ExNihiloCreatio.tabExNihilo); + setHasSubtypes(true); + Data.ITEMS.add(this); + } + + @Override + @Nonnull + public String getTranslationKey(@Nonnull ItemStack stack) { + return String.format("%s.%s", getTranslationKey(), GTPebbles.VALUES[stack.getItemDamage()].getName()); + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(@Nullable CreativeTabs tab, @Nonnull NonNullList list) { + if (tab != null && isInCreativeTab(tab)) { + for (GTPebbles pebble : GTPebbles.VALUES) { + list.add(new ItemStack(ExNihiloItems.pebbleItem, 1, pebble.ordinal())); + } + } + } + + @Override + @Nonnull + public ActionResult onItemRightClick(@Nonnull World world, @Nonnull EntityPlayer player, + @Nonnull EnumHand hand) { + ItemStack stack = player.getHeldItem(hand); + + if (!stack.isEmpty()) { + world.playSound(player, player.posX, player.posY, player.posZ, + SoundEvents.ENTITY_SNOWBALL_THROW, SoundCategory.NEUTRAL, 0.5F, + 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); + + if (!world.isRemote) { + ItemStack thrown = stack.copy(); + thrown.setCount(1); + + ProjectileStone projectile = new ProjectileStone(world, player); + projectile.setStack(thrown); + projectile.shoot(player, player.rotationPitch, player.rotationYaw, 0.0F, 1.5F, 0.5F); + world.spawnEntity(projectile); + } + + if (!player.capabilities.isCreativeMode) { + stack.shrink(1); + } + return new ActionResult<>(EnumActionResult.SUCCESS, stack); + } + return new ActionResult<>(EnumActionResult.FAIL, stack); + } + + @Override + @SideOnly(Side.CLIENT) + public void initModel(ModelRegistryEvent e) { + ModelResourceLocation[] locations = new ModelResourceLocation[GTPebbles.VALUES.length]; + for (GTPebbles pebble : GTPebbles.VALUES) { + locations[pebble.ordinal()] = new ModelResourceLocation(getRegistryName(), + String.format("type=%s", pebble.getName())); + } + + ModelBakery.registerItemVariants(this, locations); + ModelLoader.setCustomMeshDefinition(this, stack -> locations[stack.getMetadata()]); + } + + public enum GTPebbles implements IStringSerializable { + + BLACK_GRANITE("black_granite"), + RED_GRANITE("red_granite"), + MARBLE("marble"), + BASALT("basalt"); + + private final String name; + public static final GTPebbles[] VALUES = values(); + + GTPebbles(String name) { + this.name = name; + } + + @Override + @Nonnull + public String getName() { + return this.name; + } + } +} diff --git a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/metatileentities/ExNihiloMetaTileEntities.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/metatileentities/ExNihiloMetaTileEntities.java new file mode 100644 index 0000000..5b2f8bd --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/metatileentities/ExNihiloMetaTileEntities.java @@ -0,0 +1,22 @@ +package com.github.gtexpert.gtmt.integration.exnihilo.metatileentities; + +import static com.github.gtexpert.gtmt.api.util.ModUtility.id; +import static gregtech.common.metatileentities.MetaTileEntities.registerMetaTileEntities; +import static gregtech.common.metatileentities.MetaTileEntities.registerMetaTileEntity; + +import gregtech.api.GTValues; + +public class ExNihiloMetaTileEntities { + + public static MetaTileEntitySteamSieve STEAM_SIEVE_BRONZE; + public static MetaTileEntitySteamSieve STEAM_SIEVE_STEEL; + public static MetaTileEntityElectricSieve[] SIEVES = new MetaTileEntityElectricSieve[GTValues.V.length - 1]; + + public static void init() { + STEAM_SIEVE_BRONZE = registerMetaTileEntity(13000, new MetaTileEntitySteamSieve(id("sieve_steam"), false)); + STEAM_SIEVE_STEEL = registerMetaTileEntity(13001, new MetaTileEntitySteamSieve(id("sieve_steam.steel"), true)); + registerMetaTileEntities(SIEVES, 13002, "electric_sieve", + (tier, voltageName) -> new MetaTileEntityElectricSieve( + id(String.format("electric_sieve.%s", voltageName)), tier)); + } +} diff --git a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/metatileentities/MetaTileEntityElectricSieve.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/metatileentities/MetaTileEntityElectricSieve.java new file mode 100644 index 0000000..16208bc --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/metatileentities/MetaTileEntityElectricSieve.java @@ -0,0 +1,63 @@ +package com.github.gtexpert.gtmt.integration.exnihilo.metatileentities; + +import javax.annotation.Nonnull; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ResourceLocation; + +import gregtech.api.gui.GuiTextures; +import gregtech.api.gui.ModularUI; +import gregtech.api.gui.widgets.CycleButtonWidget; +import gregtech.api.gui.widgets.ImageWidget; +import gregtech.api.gui.widgets.ProgressWidget; +import gregtech.api.gui.widgets.ToggleButtonWidget; +import gregtech.api.metatileentity.MetaTileEntity; +import gregtech.api.metatileentity.SimpleMachineMetaTileEntity; +import gregtech.api.metatileentity.interfaces.IGregTechTileEntity; +import gregtech.client.renderer.texture.Textures; + +import com.github.gtexpert.gtmt.integration.exnihilo.ExNihiloRecipeMaps; + +public class MetaTileEntityElectricSieve extends SimpleMachineMetaTileEntity { + + public MetaTileEntityElectricSieve(ResourceLocation metaTileEntityId, int tier) { + super(metaTileEntityId, ExNihiloRecipeMaps.SIEVE_RECIPES, Textures.SIFTER_OVERLAY, tier, false); + } + + @Override + public MetaTileEntity createMetaTileEntity(IGregTechTileEntity holder) { + return new MetaTileEntityElectricSieve(metaTileEntityId, getTier()); + } + + @Override + protected ModularUI.Builder createGuiTemplate(@Nonnull EntityPlayer player) { + ModularUI.Builder builder = new ModularUI.Builder(GuiTextures.BACKGROUND, 176, 192 + 18 * 2) + .label(5, 5, this.getMetaFullName()) + .slot(this.importItems, 0, 17, 25, GuiTextures.SLOT) + .slot(this.importItems, 1, 35, 25, GuiTextures.SLOT) + .progressBar(workable::getProgressPercent, 25, 50, 20, 20, + GuiTextures.PROGRESS_BAR_SIFT, ProgressWidget.MoveType.VERTICAL_DOWNWARDS, + workable.getRecipeMap()) + .widget(new ImageWidget(25, 69 + 54, 18, 18, GuiTextures.INDICATOR_NO_ENERGY).setIgnoreColor(true) + .setPredicate(workable::isHasNotEnoughEnergy)) + .bindPlayerInventory(player.inventory, GuiTextures.SLOT, 7, 109 + 18 * 2); + + for (int y = 0; y < 7; y++) { + for (int x = 0; x < 6; x++) { + builder.slot(this.exportItems, y * 6 + x, 61 + x * 18, 15 + y * 18, true, false, GuiTextures.SLOT); + } + } + + builder.widget(new ToggleButtonWidget(7, 87 + 18 * 2, 18, 18, + GuiTextures.BUTTON_ITEM_OUTPUT, this::isAutoOutputItems, this::setAutoOutputItems) + .setTooltipText("gregtech.gui.item_auto_output.tooltip") + .shouldUseBaseBackground()); + + builder.widget(new CycleButtonWidget(25, 87 + 18 * 2, 18, 18, + workable.getAvailableOverclockingTiers(), workable::getOverclockTier, workable::setOverclockTier) + .setTooltipHoverString("gregtech.gui.overclock.description") + .setButtonTexture(GuiTextures.BUTTON_OVERCLOCK)); + + return builder; + } +} diff --git a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/metatileentities/MetaTileEntitySteamSieve.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/metatileentities/MetaTileEntitySteamSieve.java new file mode 100644 index 0000000..565a506 --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/metatileentities/MetaTileEntitySteamSieve.java @@ -0,0 +1,68 @@ +package com.github.gtexpert.gtmt.integration.exnihilo.metatileentities; + +import javax.annotation.Nonnull; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.items.IItemHandlerModifiable; + +import gregtech.api.capability.impl.NotifiableItemStackHandler; +import gregtech.api.gui.GuiTextures; +import gregtech.api.gui.ModularUI; +import gregtech.api.gui.widgets.ImageWidget; +import gregtech.api.gui.widgets.ProgressWidget; +import gregtech.api.metatileentity.MetaTileEntity; +import gregtech.api.metatileentity.SteamMetaTileEntity; +import gregtech.api.metatileentity.interfaces.IGregTechTileEntity; +import gregtech.client.renderer.texture.Textures; + +import com.github.gtexpert.gtmt.integration.exnihilo.ExNihiloModule; +import com.github.gtexpert.gtmt.integration.exnihilo.ExNihiloRecipeMaps; + +public class MetaTileEntitySteamSieve extends SteamMetaTileEntity { + + public MetaTileEntitySteamSieve(ResourceLocation metaTileEntityId, boolean isHighPressure) { + super(metaTileEntityId, ExNihiloRecipeMaps.SIEVE_RECIPES, Textures.SIFTER_OVERLAY, isHighPressure); + } + + @Override + public MetaTileEntity createMetaTileEntity(IGregTechTileEntity metaTileEntityHolder) { + return new MetaTileEntitySteamSieve(metaTileEntityId, isHighPressure); + } + + @Override + protected IItemHandlerModifiable createImportItemHandler() { + return new NotifiableItemStackHandler(this, 2, this, false); + } + + @Override + protected IItemHandlerModifiable createExportItemHandler() { + return new NotifiableItemStackHandler(this, 42, this, true); + } + + @Override + protected ModularUI createUI(@Nonnull EntityPlayer player) { + ModularUI.Builder builder = new ModularUI.Builder(GuiTextures.BACKGROUND_STEAM.get(this.isHighPressure), 176, + 192 + 18 * 2) + .label(6, 6, this.getMetaFullName()).shouldColor(false) + .slot(this.importItems, 0, 17, 43, GuiTextures.SLOT_STEAM.get(isHighPressure)) + .slot(this.importItems, 1, 35, 43, GuiTextures.SLOT_STEAM.get(isHighPressure)) + .progressBar(workableHandler::getProgressPercent, 25, 68, 20, 20, + ExNihiloModule.PROGRESS_BAR_SIFTER_STEAM.get(isHighPressure), + ProgressWidget.MoveType.VERTICAL_DOWNWARDS, workableHandler.getRecipeMap()) + .widget((new ImageWidget(79, 77, 18, 18, + GuiTextures.INDICATOR_NO_STEAM.get(this.isHighPressure))) + .setPredicate(() -> this.workableHandler.isHasNotEnoughEnergy())) + .bindPlayerInventory(player.inventory, GuiTextures.SLOT_STEAM.get(this.isHighPressure), 7, + 109 + 18 * 2); + + for (int y = 0; y < 7; y++) { + for (int x = 0; x < 6; x++) { + builder.slot(this.exportItems, y * 6 + x, 61 + x * 18, 15 + y * 18, true, false, + GuiTextures.SLOT_STEAM.get(isHighPressure)); + } + } + + return builder.build(getHolder(), player); + } +} diff --git a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/metatileentities/SieveRecipeMap.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/metatileentities/SieveRecipeMap.java new file mode 100644 index 0000000..2e15597 --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/metatileentities/SieveRecipeMap.java @@ -0,0 +1,51 @@ +package com.github.gtexpert.gtmt.integration.exnihilo.metatileentities; + +import javax.annotation.Nonnull; + +import net.minecraftforge.items.IItemHandlerModifiable; + +import gregtech.api.capability.impl.FluidTankList; +import gregtech.api.gui.GuiTextures; +import gregtech.api.gui.ModularUI; +import gregtech.api.gui.widgets.RecipeProgressWidget; +import gregtech.api.recipes.RecipeMap; +import gregtech.api.recipes.builders.SimpleRecipeBuilder; + +public class SieveRecipeMap extends RecipeMap { + + public SieveRecipeMap(String unlocalizedName, int maxInputs, int maxOutputs, int maxFluidInputs, + int maxFluidOutputs, SimpleRecipeBuilder defaultRecipe, boolean isHidden) { + super(unlocalizedName, maxInputs, maxOutputs, maxFluidInputs, maxFluidOutputs, defaultRecipe, isHidden); + } + + @Override + @Nonnull + public ModularUI.Builder createJeiUITemplate(IItemHandlerModifiable importItems, IItemHandlerModifiable exportItems, + FluidTankList importFluids, FluidTankList exportFluids, int yOffset) { + ModularUI.Builder builder = new ModularUI.Builder(GuiTextures.BACKGROUND, 176, 192 + 18 * 2 + yOffset); + builder.widget( + new RecipeProgressWidget(200, 25, 50 + yOffset, 20, 20, this.progressBarTexture, this.moveType, this)); + this.addInventorySlotGroup(builder, importItems, importFluids, false, yOffset); + this.addInventorySlotGroup(builder, exportItems, exportFluids, true, yOffset); + if (this.specialTexture != null && this.specialTexturePosition != null) { + this.addSpecialTexture(builder); + } + + return builder; + } + + @Override + protected void addInventorySlotGroup(ModularUI.Builder builder, IItemHandlerModifiable itemHandler, + FluidTankList fluidHandler, boolean isOutputs, int yOffset) { + if (isOutputs) { + for (int y = 0; y < 7; y++) { + for (int x = 0; x < 6; x++) { + addSlot(builder, 61 + x * 18, y * 18, y * 6 + x, itemHandler, fluidHandler, false, true); + } + } + } else { + addSlot(builder, 17, 26, 0, itemHandler, fluidHandler, false, false); + addSlot(builder, 35, 26, 1, itemHandler, fluidHandler, false, false); + } + } +} diff --git a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/ExNihiloMiscRecipe.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/ExNihiloMiscRecipe.java new file mode 100644 index 0000000..aa1abac --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/ExNihiloMiscRecipe.java @@ -0,0 +1,145 @@ +package com.github.gtexpert.gtmt.integration.exnihilo.recipes; + +import static com.github.gtexpert.gtmt.integration.exnihilo.metatileentities.ExNihiloMetaTileEntities.*; +import static gregtech.common.blocks.BlockSteamCasing.SteamCasingType.BRONZE_HULL; +import static gregtech.loaders.recipe.CraftingComponent.*; + +import java.util.Arrays; +import java.util.EnumMap; +import java.util.List; +import java.util.stream.Collectors; + +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; + +import gregtech.api.recipes.ModHandler; +import gregtech.api.recipes.RecipeMaps; +import gregtech.api.unification.material.Materials; +import gregtech.api.unification.ore.OrePrefix; +import gregtech.api.unification.stack.UnificationEntry; +import gregtech.common.blocks.MetaBlocks; +import gregtech.common.blocks.StoneVariantBlock; +import gregtech.common.blocks.StoneVariantBlock.StoneVariant; +import gregtech.loaders.recipe.MetaTileEntityLoader; + +import com.github.gtexpert.gtmt.api.util.Mods; +import com.github.gtexpert.gtmt.integration.exnihilo.ExNihiloConfigHolder; +import com.github.gtexpert.gtmt.integration.exnihilo.items.ExNihiloItems; +import com.github.gtexpert.gtmt.integration.exnihilo.items.ItemGTMTPebbles; + +import exnihilocreatio.ModBlocks; +import exnihilocreatio.modules.AppliedEnergistics2; + +public class ExNihiloMiscRecipe { + + public static void init() { + itemRecipe(); + machineRecipe(); + } + + private static void itemRecipe() { + // Mesh + if (ExNihiloConfigHolder.harderMeshes) { + ItemStack mesh = Mods.ExNihilo.getItem("item_mesh", 1, 1); + // Flint -> Tin Alloy + ModHandler.removeRecipeByOutput(Mods.ExNihilo.getItem("item_mesh", 1, 2)); + ModHandler.addShapedRecipe("tin_alloy_mesh", Mods.ExNihilo.getItem("item_mesh", 1, 2), "RIR", "RMR", "RIR", + 'R', new UnificationEntry(OrePrefix.stick, Materials.TinAlloy), + 'I', new ItemStack(Items.FLINT), + 'M', mesh); + // Iron -> Steel + ModHandler.removeRecipeByOutput(Mods.ExNihilo.getItem("item_mesh", 1, 3)); + ModHandler.addShapedRecipe("steel_mesh", Mods.ExNihilo.getItem("item_mesh", 1, 3), "RIR", "RMR", "RIR", + 'R', new UnificationEntry(OrePrefix.stick, Materials.Steel), + 'I', new UnificationEntry(OrePrefix.ingot, Materials.Iron), + 'M', mesh); + // Diamond -> Aluminum + ModHandler.removeRecipeByOutput(Mods.ExNihilo.getItem("item_mesh", 1, 4)); + ModHandler.addShapedRecipe("aluminium_mesh", Mods.ExNihilo.getItem("item_mesh", 1, 4), "RIR", "RMR", "RIR", + 'R', new UnificationEntry(OrePrefix.stick, Materials.Aluminium), + 'I', new UnificationEntry(OrePrefix.gem, Materials.Diamond), + 'M', mesh); + } + + // Hammer conversion + RecipeMaps.FORGE_HAMMER_RECIPES.recipeBuilder() + .input(Blocks.SAND) + .output(ModBlocks.dust) + .EUt(16).duration(10) + .buildAndRegister(); + + RecipeMaps.FORGE_HAMMER_RECIPES.recipeBuilder() + .inputs(new ItemStack(Blocks.STONE, 1, 1)) + .output(ModBlocks.crushedGranite) + .EUt(16).duration(10) + .buildAndRegister(); + + RecipeMaps.FORGE_HAMMER_RECIPES.recipeBuilder() + .inputs(new ItemStack(Blocks.STONE, 1, 3)) + .output(ModBlocks.crushedDiorite) + .EUt(16).duration(10) + .buildAndRegister(); + + RecipeMaps.FORGE_HAMMER_RECIPES.recipeBuilder() + .inputs(new ItemStack(Blocks.STONE, 1, 5)) + .output(ModBlocks.crushedAndesite) + .EUt(16).duration(10) + .buildAndRegister(); + + RecipeMaps.FORGE_HAMMER_RECIPES.recipeBuilder() + .input(Blocks.NETHERRACK) + .output(ModBlocks.netherrackCrushed) + .EUt(16).duration(10) + .buildAndRegister(); + + RecipeMaps.FORGE_HAMMER_RECIPES.recipeBuilder() + .input(Blocks.END_STONE) + .output(ModBlocks.endstoneCrushed) + .EUt(16).duration(10) + .buildAndRegister(); + + if (Mods.AppliedEnergistics2.isModLoaded()) { + RecipeMaps.FORGE_HAMMER_RECIPES.recipeBuilder() + .inputs(Mods.AppliedEnergistics2.getItem("sky_stone_block")) + .output(AppliedEnergistics2.skystoneCrushed) + .EUt(16) + .duration(10) + .buildAndRegister(); + } + + // Pebbles + EnumMap> variantListMap = new EnumMap<>( + StoneVariant.class); + for (StoneVariant shape : StoneVariant.values()) { + StoneVariantBlock block = MetaBlocks.STONE_BLOCKS.get(shape); + variantListMap.put(shape, + Arrays.stream(StoneVariantBlock.StoneType.values()) + .map(block::getItemVariant) + .collect(Collectors.toList())); + } + List cobbles = variantListMap.get(StoneVariant.COBBLE); + for (ItemGTMTPebbles.GTPebbles pebble : ItemGTMTPebbles.GTPebbles.VALUES) { + String name = pebble.getName(); + int i = pebble.ordinal(); + ModHandler.addShapedRecipe(name, cobbles.get(i), + "PP", "PP", + 'P', new ItemStack(ExNihiloItems.pebbleItem, 1, i)); + } + } + + private static void machineRecipe() { + // Machine Recipes + MetaTileEntityLoader.registerMachineRecipe(SIEVES, "CPC", "FMF", "OSO", + 'M', HULL, 'C', CIRCUIT, 'O', CABLE, + 'F', CONVEYOR, 'S', new ItemStack(ModBlocks.sieve), 'P', PISTON); + ModHandler.addShapedRecipe(true, "steam_sieve_bronze", STEAM_SIEVE_BRONZE.getStackForm(), "BPB", "BMB", "BSB", + 'B', new UnificationEntry(OrePrefix.pipeSmallFluid, Materials.Bronze), 'M', + MetaBlocks.STEAM_CASING.getItemVariant(BRONZE_HULL), 'S', new ItemStack(ModBlocks.sieve), 'P', + Blocks.PISTON); + ModHandler.addShapedRecipe(true, "steam_sieve_steel", STEAM_SIEVE_STEEL.getStackForm(), "BPB", "WMW", "BBB", + 'B', new UnificationEntry(OrePrefix.pipeSmallFluid, Materials.TinAlloy), 'M', + STEAM_SIEVE_BRONZE.getStackForm(), 'W', new UnificationEntry(OrePrefix.plate, Materials.WroughtIron), + 'P', new UnificationEntry(OrePrefix.plate, Materials.Steel)); + } +} diff --git a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/ExNihiloSieveRecipe.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/ExNihiloSieveRecipe.java new file mode 100644 index 0000000..fdcd6f9 --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/ExNihiloSieveRecipe.java @@ -0,0 +1,50 @@ +package com.github.gtexpert.gtmt.integration.exnihilo.recipes; + +import java.util.ArrayList; +import java.util.Arrays; + +import net.minecraft.item.ItemStack; + +import org.jetbrains.annotations.NotNull; + +import gregtech.api.recipes.builders.SimpleRecipeBuilder; +import gregtech.api.recipes.ingredients.GTRecipeItemInput; +import gregtech.api.recipes.ingredients.nbtmatch.NBTCondition; +import gregtech.api.recipes.ingredients.nbtmatch.NBTMatcher; + +import com.github.gtexpert.gtmt.integration.exnihilo.ExNihiloRecipeMaps; + +import exnihilocreatio.compatibility.jei.sieve.SieveRecipe; +import exnihilocreatio.registries.registries.SieveRegistry; +import exnihilocreatio.registries.types.Siftable; + +public class ExNihiloSieveRecipe { + + // Mirror Ex Nihilo Sifter recipes to Sifter RecipeMap + public static void register(@NotNull SieveRegistry registry) { + for (SieveRecipe recipe : registry.getRecipeList()) { + for (ItemStack stack : recipe.getSievables()) { + if (ExNihiloRecipeMaps.SIEVE_RECIPES.findRecipe(16, Arrays.asList(stack, recipe.getMesh()), + new ArrayList<>(), true) != null) + continue; + SimpleRecipeBuilder builder = ExNihiloRecipeMaps.SIEVE_RECIPES.recipeBuilder() + .inputs(stack) + .inputNBT((new GTRecipeItemInput(recipe.getMesh()).setNonConsumable()), NBTMatcher.ANY, + NBTCondition.ANY); + for (Siftable siftable : registry.getDrops(stack)) { + if (siftable.getDrop() == null) continue; + if (siftable.getChance() <= 0) continue; + if (siftable.getMeshLevel() == recipe.getMesh().getMetadata()) { + if ((int) siftable.getChance() * 10000 >= 10000) { + builder.outputs(siftable.getDrop().getItemStack()); + } else { + builder.chancedOutput(siftable.getDrop().getItemStack(), + (int) (siftable.getChance() * 10000), 500); + } + } + } + builder.buildAndRegister(); + } + } + } +} diff --git a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/ExNihiloToolRecipe.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/ExNihiloToolRecipe.java new file mode 100644 index 0000000..46f0f78 --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/ExNihiloToolRecipe.java @@ -0,0 +1,71 @@ +package com.github.gtexpert.gtmt.integration.exnihilo.recipes; + +import gregtech.api.GregTechAPI; +import gregtech.api.items.toolitem.ToolHelper; +import gregtech.api.recipes.ModHandler; +import gregtech.api.unification.material.Material; +import gregtech.api.unification.material.Materials; +import gregtech.api.unification.material.info.MaterialFlags; +import gregtech.api.unification.material.properties.PropertyKey; +import gregtech.api.unification.ore.OrePrefix; +import gregtech.api.unification.stack.UnificationEntry; + +import com.github.gtexpert.gtmt.api.util.Mods; +import com.github.gtexpert.gtmt.integration.exnihilo.ExNihiloConfigHolder; +import com.github.gtexpert.gtmt.integration.exnihilo.tools.ExNihiloToolsItems; + +public class ExNihiloToolRecipe { + + public static void registerRecipes() { + for (Material material : GregTechAPI.materialManager.getRegisteredMaterials()) { + if (!material.hasProperty(PropertyKey.TOOL)) continue; + + crooks(material); + } + if (ExNihiloConfigHolder.replaceCrook) { + replaceCrooks(); + } + } + + public static void crooks(Material material) { + if (material == Materials.Iron || material == Materials.Gold || material == Materials.Diamond || + material == Materials.Wood) { + return; + } + + if (material.hasFlag(MaterialFlags.GENERATE_ROD)) { + ModHandler.addShapedRecipe(String.format("crook_%s", material.getName()), + ExNihiloToolsItems.CROOK.get(material), + "RR", " R", " R", + 'R', new UnificationEntry(OrePrefix.stick, material)); + } else if (material.hasProperty(PropertyKey.GEM)) { + ModHandler.addShapedRecipe(String.format("crook_%s", material.getName()), + ExNihiloToolsItems.CROOK.get(material), + "GG", " G", " G", + 'G', new UnificationEntry(OrePrefix.gem, material)); + } + } + + public static void replaceCrooks() { + // remove + ModHandler.removeRecipeByOutput(Mods.ExNihilo.getItem("crook_gold")); + ModHandler.removeRecipeByOutput(Mods.ExNihilo.getItem("crook_wood")); + ModHandler.removeRecipeByOutput(Mods.ExNihilo.getItem("crook_iron")); + ModHandler.removeRecipeByOutput(Mods.ExNihilo.getItem("crook_diamond")); + + // add + ModHandler.addShapedRecipe("crook_gold_replaced", Mods.ExNihilo.getItem("crook_gold"), + "RR", " R", " R", + 'R', new UnificationEntry(OrePrefix.stick, Materials.Gold)); + ModHandler.addShapedRecipe("crook_wood_replaced", + ToolHelper.getAndSetToolData(ExNihiloToolsItems.CROOK, Materials.Wood, 47, 1, 4F, 1F), + "RR", " R", " R", + 'R', new UnificationEntry(OrePrefix.stick, Materials.Wood)); + ModHandler.addShapedRecipe("crook_iron_replaced", ExNihiloToolsItems.CROOK.get(Materials.Iron), + "RR", " R", " R", + 'R', new UnificationEntry(OrePrefix.stick, Materials.Iron)); + ModHandler.addShapedRecipe("crook_diamond_replaced", ExNihiloToolsItems.CROOK.get(Materials.Diamond), + "RR", " R", " R", + 'R', new UnificationEntry(OrePrefix.stick, Materials.Diamond)); + } +} diff --git a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/LayeredVeinMaterialDistribution.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/LayeredVeinMaterialDistribution.java new file mode 100644 index 0000000..9110fdf --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/LayeredVeinMaterialDistribution.java @@ -0,0 +1,236 @@ +package com.github.gtexpert.gtmt.integration.exnihilo.recipes.sieve; + +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import net.minecraft.block.state.IBlockState; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +import org.apache.commons.lang3.tuple.Pair; + +import gregtech.api.unification.OreDictUnifier; +import gregtech.api.unification.material.Material; +import gregtech.api.unification.material.properties.PropertyKey; +import gregtech.api.unification.stack.UnificationEntry; +import gregtech.api.worldgen.config.FillerConfigUtils; +import gregtech.api.worldgen.config.OreDepositDefinition; +import gregtech.api.worldgen.filler.FillerEntry; +import gregtech.api.worldgen.filler.LayeredBlockFiller; + +/** + * Calculates the expected material composition of a GTCEu layered ore vein. + * + *

+ * The calculation follows the order used by + * {@link FillerConfigUtils.LayeredFillerEntry}: between ore, primary/secondary ore, and finally + * sporadic ore. Source blocks that remain unchanged are omitted, and the + * resulting ore-material weights are normalized to sum to one. + *

+ */ +public final class LayeredVeinMaterialDistribution { + + private LayeredVeinMaterialDistribution() {} + + /** + * Calculates normalized ore-material ratios for a layered vein. + * + * @param definition initialized GTCEu vein definition + * @return material-to-ratio map; empty if the filler is not layered or no + * ore materials can be resolved + */ + public static Map calculate(OreDepositDefinition definition) { + if (!(definition.getBlockFiller() instanceof LayeredBlockFiller)) { + return Collections.emptyMap(); + } + + LayeredBlockFiller blockFiller = (LayeredBlockFiller) definition.getBlockFiller(); + + List possibleStates = blockFiller.getAllPossibleStates(); + if (possibleStates.size() != 1 || + !(possibleStates.get(0) instanceof FillerConfigUtils.LayeredFillerEntry)) { + return Collections.emptyMap(); + } + + FillerConfigUtils.LayeredFillerEntry layered = (FillerConfigUtils.LayeredFillerEntry) possibleStates.get(0); + + int primaryLayers = layered.getPrimaryLayers(); + int secondaryLayers = layered.getSecondaryLayers(); + int betweenLayers = layered.getBetweenLayers(); + int totalLayers = primaryLayers + secondaryLayers; + + if (totalLayers <= 0) { + return Collections.emptyMap(); + } + + double density = clamp01(definition.getDensity()); + int sporadicDivisor = Math.max(1, totalLayers - 1); + int startPrimary = secondaryLayers; + int startBetween = secondaryLayers - betweenLayers / 2; + + Map result = new LinkedHashMap<>(); + + Map primary = getEntryDistribution(layered.getPrimary()); + Map secondary = getEntryDistribution(layered.getSecondary()); + Map between = getEntryDistribution(layered.getBetween()); + Map sporadic = getEntryDistribution(layered.getSporadic()); + + for (int layer = 0; layer < totalLayers; layer++) { + boolean betweenEligible = layer >= startBetween && + layer - startBetween + 1 <= betweenLayers; + + double betweenChance = betweenEligible ? density / 2.0 : 0.0; + double mainChance = (1.0 - betweenChance) * density; + double sporadicChance = (1.0 - betweenChance) * + (1.0 - density) * + density / sporadicDivisor; + + addScaled(result, between, betweenChance); + addScaled(result, + layer >= startPrimary ? primary : secondary, + mainChance); + addScaled(result, sporadic, sporadicChance); + } + + normalize(result); + return result; + } + + /** + * Resolves the material distribution represented by a filler entry. + * + *

+ * Weighted random entries retain their configured weights. For simple + * entries, stone variants of the same ore material are deduplicated so + * that the number of available host-rock variants does not inflate that + * material's contribution. + *

+ */ + private static Map getEntryDistribution(FillerEntry entry) { + List> weightedEntries = entry.getEntries(); + + if (weightedEntries != null && !weightedEntries.isEmpty()) { + Map weightedResult = new LinkedHashMap<>(); + double totalWeight = 0.0; + + for (Pair weightedEntry : weightedEntries) { + if (weightedEntry.getLeft() != null && weightedEntry.getLeft() > 0) { + totalWeight += weightedEntry.getLeft(); + } + } + + if (totalWeight <= 0.0) { + return Collections.emptyMap(); + } + + for (Pair weightedEntry : weightedEntries) { + int weight = weightedEntry.getLeft(); + if (weight <= 0) { + continue; + } + + Map child = getEntryDistribution(weightedEntry.getRight()); + addScaled(weightedResult, child, weight / totalWeight); + } + + normalize(weightedResult); + return weightedResult; + } + + Set materials = resolveMaterials(entry.getPossibleResults()); + if (materials.isEmpty()) { + return Collections.emptyMap(); + } + + Map result = new LinkedHashMap<>(); + double equalShare = 1.0 / materials.size(); + + for (Material material : materials) { + result.put(material, equalShare); + } + + return result; + } + + private static Set resolveMaterials(Collection states) { + Set materials = new LinkedHashSet<>(); + + for (IBlockState state : states) { + Item item = Item.getItemFromBlock(state.getBlock()); + if (item == Items.AIR) { + continue; + } + + final int metadata; + try { + metadata = state.getBlock().getMetaFromState(state); + } catch (RuntimeException ignored) { + continue; + } + + ItemStack stack = new ItemStack(item, 1, metadata); + UnificationEntry unificationEntry = OreDictUnifier.getUnificationEntry(stack); + + if (unificationEntry == null || + unificationEntry.material == null || + !unificationEntry.material.hasProperty(PropertyKey.ORE)) { + continue; + } + + materials.add(unificationEntry.material); + } + + return materials; + } + + private static void addScaled(Map target, + Map source, + double scale) { + if (scale <= 0.0 || source.isEmpty()) { + return; + } + + for (Map.Entry entry : source.entrySet()) { + target.merge(entry.getKey(), entry.getValue() * scale, Double::sum); + } + } + + private static void normalize(Map values) { + double total = 0.0; + + for (double value : values.values()) { + if (value > 0.0 && Double.isFinite(value)) { + total += value; + } + } + + if (total <= 0.0) { + values.clear(); + return; + } + + Iterator> iterator = values.entrySet().iterator(); + + while (iterator.hasNext()) { + Map.Entry entry = iterator.next(); + double value = entry.getValue(); + + if (value > 0.0 && Double.isFinite(value)) { + entry.setValue(value / total); + } else { + iterator.remove(); + } + } + } + + private static double clamp01(double value) { + return Math.max(0.0, Math.min(1.0, value)); + } +} diff --git a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/SieveDrops.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/SieveDrops.java new file mode 100644 index 0000000..6fea3b5 --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/SieveDrops.java @@ -0,0 +1,229 @@ +package com.github.gtexpert.gtmt.integration.exnihilo.recipes.sieve; + +import static com.github.gtexpert.gtmt.integration.exnihilo.items.ExNihiloItems.pebbleItem; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.Nonnull; + +import net.minecraft.item.ItemStack; +import net.minecraft.util.IStringSerializable; + +import org.jetbrains.annotations.NotNull; + +import gregtech.api.GregTechAPI; +import gregtech.api.unification.OreDictUnifier; +import gregtech.api.unification.material.Material; +import gregtech.api.unification.ore.OrePrefix; +import gregtech.common.blocks.MetaBlocks; + +import com.github.gtexpert.gtmt.api.unification.material.ore.GTMTOrePrefix; +import com.github.gtexpert.gtmt.api.util.ModLog; +import com.github.gtexpert.gtmt.integration.exnihilo.ExNihiloConfigHolder; +import com.github.gtexpert.gtmt.integration.exnihilo.recipes.ExNihiloSieveRecipe; + +import exnihilocreatio.ModBlocks; +import exnihilocreatio.blocks.BlockSieve; +import exnihilocreatio.registries.manager.ISieveDefaultRegistryProvider; +import exnihilocreatio.registries.registries.SieveRegistry; +import exnihilocreatio.util.ItemInfo; + +public class SieveDrops implements ISieveDefaultRegistryProvider { + + private static Map> SIEVE_DROPS_MAP = new HashMap<>(); + + /** + * Reads all configured vein entries and prepares sieve drops. + * + *

+ * Call this after GTCEu has initialized its world-generation registry + * and before Ex Nihilo Creatio requests default sieve recipes. + *

+ */ + public static void readSieveDropsFromConfig() { + readSieveDropsFromConfig(ExNihiloConfigHolder.drops.sandSieveDrops, SieveDropType.SAND); + readSieveDropsFromConfig(ExNihiloConfigHolder.drops.gravelSieveDrops, SieveDropType.GRAVEL); + readSieveDropsFromConfig(ExNihiloConfigHolder.drops.graniteSieveDrops, SieveDropType.GRANITE); + readSieveDropsFromConfig(ExNihiloConfigHolder.drops.dioriteSieveDrops, SieveDropType.DIORITE); + readSieveDropsFromConfig(ExNihiloConfigHolder.drops.andesiteSieveDrops, SieveDropType.ANDESITE); + readSieveDropsFromConfig(ExNihiloConfigHolder.drops.netherrackSieveDrops, SieveDropType.NETHERRACK); + readSieveDropsFromConfig(ExNihiloConfigHolder.drops.endstoneSieveDrops, SieveDropType.END); + } + + private static void readSieveDropsFromConfig(String[] recipes, SieveDropType type) { + ModLog.logger.info("Reading {} SieveDrops from config...", type); + if (recipes == null || recipes.length == 0) { + ModLog.logger.info("No configurations found for {} sieve category, skipping...", type.getName()); + return; + } + + for (String recipe : recipes) { + SieveDrop drop = validateInputs(recipe); + if (drop != null) { + SIEVE_DROPS_MAP.putIfAbsent(type, new ArrayList<>()); + SIEVE_DROPS_MAP.get(type).add(drop); + } + } + ModLog.logger.info("Complete."); + } + + private static SieveDrop validateInputs(String recipe) { + SieveDrop drop = null; + String materialName; + float chance; + int meshLevel; + + String trimmed = recipe.trim(); + + int atIndex = trimmed.lastIndexOf('@'); + int starIndex = trimmed.lastIndexOf('*'); + + if (atIndex <= 0 || starIndex <= atIndex + 1 || starIndex >= trimmed.length() - 1) { + ModLog.logger.error("Expected format [modid:]material@chance*mesh_level: " + recipe); + return drop; + } + + String materialText = trimmed.substring(0, atIndex).trim(); + String chanceText = trimmed.substring(atIndex + 1, starIndex).trim(); + String meshText = trimmed.substring(starIndex + 1).trim(); + + if (!materialText.contains(":")) { + materialName = "gregtech:" + materialText; + } else { + materialName = materialText; + } + Material material = GregTechAPI.materialManager.getMaterial(materialName); + if (material == null) { + ModLog.logger.error("{} is null! Skipped: {} ", materialName, recipe); + return drop; + } + + try { + chance = Float.parseFloat(chanceText); + } catch (NumberFormatException exception) { + ModLog.logger.error("Invalid chance in sieve entry. Skipped: {}", recipe); + return drop; + } + + if (!Float.isFinite(chance) || chance < 0.0 || chance > 1.0) { + ModLog.logger.error("Chance must be between 0.0 and 1.0! Skipped: {}", recipe); + return drop; + } + + try { + meshLevel = Integer.parseInt(meshText); + } catch (NumberFormatException exception) { + ModLog.logger.error("Invalid mesh level in sieve entry. Skipped: {}", recipe); + return drop; + } + + if (meshLevel < 1 || meshLevel > 4) { + ModLog.logger.error("Mesh level must be between 1 and 4! Skipped: {} ", recipe); + return drop; + } + + if (ExNihiloConfigHolder.drops.outputsDebugs) { + ModLog.logger.info("Register SieveDropEntry: Material={}, Chance={}, MeshLevel={}", + material.getRegistryName(), + chance, meshLevel); + } + drop = new SieveDrop(material, chance, meshLevel); + return drop; + } + + @Override + public void registerRecipeDefaults(@NotNull SieveRegistry registry) { + // pebbles + registry.register("dirt", new ItemInfo(pebbleItem), 0.3f, BlockSieve.MeshType.STRING.getID()); + registry.register("dirt", new ItemInfo(pebbleItem, 1), 0.3f, BlockSieve.MeshType.STRING.getID()); + registry.register("dirt", new ItemInfo(pebbleItem, 2), 0.3f, BlockSieve.MeshType.STRING.getID()); + registry.register("dirt", new ItemInfo(pebbleItem, 3), 0.3f, BlockSieve.MeshType.STRING.getID()); + // saplings + registry.register("dirt", new ItemInfo(MetaBlocks.RUBBER_SAPLING.getBlockState().getBlock()), 0.3f, + BlockSieve.MeshType.STRING.getID()); + // Materials + for (Map.Entry> drops : SIEVE_DROPS_MAP.entrySet()) { + OrePrefix prefix = drops.getKey().getOutputPrefix(); + for (SieveDrop drop : drops.getValue()) { + ItemStack stack = OreDictUnifier.get(prefix, drop.material); + if (drops.getKey() != SieveDropType.NETHERRACK && drops.getKey() != SieveDropType.END) { + registry.register(drops.getKey().getName(), new ItemInfo(stack.getItem(), stack.getMetadata()), + drop.getChance(), drop.getMeshLevel()); + } else { + registry.register( + new ItemStack(drops.getKey() == SieveDropType.END ? ModBlocks.endstoneCrushed : + ModBlocks.netherrackCrushed), + new ItemInfo(stack.getItem(), stack.getMetadata()), drop.getChance(), drop.getMeshLevel()); + } + } + } + SIEVE_DROPS_MAP.clear(); + ExNihiloSieveRecipe.register(registry); + } + + enum SieveDropType implements IStringSerializable { + + SAND("sand", GTMTOrePrefix.oreSandyChunk), + GRAVEL("gravel", GTMTOrePrefix.oreChunk), + GRANITE("crushedGranite", GTMTOrePrefix.oreChunk), + DIORITE("crushedDiorite", GTMTOrePrefix.oreChunk), + ANDESITE("crushedAndesite", GTMTOrePrefix.oreChunk), + NETHERRACK("nether", GTMTOrePrefix.oreNetherChunk), + END("end", GTMTOrePrefix.oreEnderChunk); + + private final String registryName; + private final OrePrefix outputPrefix; + + SieveDropType(String registryName, OrePrefix outputPrefix) { + this.registryName = registryName; + this.outputPrefix = outputPrefix; + } + + @Override + @Nonnull + public String getName() { + return registryName; + } + + public OrePrefix getOutputPrefix() { + return outputPrefix; + } + } + + /** + * Immutable data required to register one Ex Nihilo Creatio sieve drop. + * + *

+ * The source vein path and group are retained for diagnostics. They are + * deliberately not part of equality or aggregation logic: drops originating + * from different vein groups must remain independent registry entries. + *

+ */ + public static final class SieveDrop { + + private final Material material; + private final float chance; + private final int meshLevel; + + public SieveDrop(Material material, float chance, int meshLevel) { + this.material = material; + this.chance = chance; + this.meshLevel = meshLevel; + } + + public Material getMaterial() { + return material; + } + + public float getChance() { + return chance; + } + + public int getMeshLevel() { + return meshLevel; + } + } +} diff --git a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/VeinGroupIndex.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/VeinGroupIndex.java new file mode 100644 index 0000000..585572d --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/VeinGroupIndex.java @@ -0,0 +1,94 @@ +package com.github.gtexpert.gtmt.integration.exnihilo.recipes.sieve; + +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Map; + +import gregtech.api.worldgen.config.OreDepositDefinition; +import gregtech.api.worldgen.config.WorldGenRegistry; + +/** + * Indexes GTCEu ore-vein definitions by their path and top-level directory. + * + *

+ * The relative selection chance of a vein is calculated using the sum of + * positive vein weights in the same top-level directory. For example, + * {@code overworld/copper.json} is evaluated only against other definitions + * under {@code overworld/}. + *

+ * + *

+ * Biome modifiers and dimension predicates are intentionally not evaluated. + * The directory structure is treated as the logical dimension group for sieve + * recipe generation. + *

+ */ +public final class VeinGroupIndex { + + private final Map definitionsByPath; + private final Map totalWeightByGroup; + + private VeinGroupIndex(Map definitionsByPath, + Map totalWeightByGroup) { + this.definitionsByPath = definitionsByPath; + this.totalWeightByGroup = totalWeightByGroup; + } + + /** + * Builds an index from the currently registered GTCEu ore definitions. + * + *

+ * Call this only after GTCEu has initialized its world-generation + * registry. + *

+ */ + public static VeinGroupIndex create() { + Map byPath = new LinkedHashMap<>(); + Map totals = new LinkedHashMap<>(); + + for (OreDepositDefinition definition : WorldGenRegistry.getOreDeposits()) { + if (!definition.isVein() || definition.getWeight() <= 0) { + continue; + } + + String path = VeinPathUtils.normalize(definition.getDepositName()); + String group = VeinPathUtils.getTopLevelGroup(path); + + byPath.put(path, definition); + totals.merge(group, definition.getWeight(), Integer::sum); + } + + return new VeinGroupIndex( + Collections.unmodifiableMap(byPath), + Collections.unmodifiableMap(totals)); + } + + public OreDepositDefinition getDefinition(String normalizedPath) { + return definitionsByPath.get(normalizedPath); + } + + public int getTotalWeight(String group) { + Integer weight = totalWeightByGroup.get(group); + return weight == null ? 0 : weight; + } + + /** + * Returns the configured vein's one-roll relative selection chance within + * its own top-level path group. + * + * @param definition target vein + * @return a value in the range {@code [0, 1]}, or zero if its group has no + * positive total weight + */ + public double getRelativeChance(OreDepositDefinition definition) { + String path = VeinPathUtils.normalize(definition.getDepositName()); + String group = VeinPathUtils.getTopLevelGroup(path); + int totalWeight = getTotalWeight(group); + + return totalWeight <= 0 ? 0.0 : (double) definition.getWeight() / (double) totalWeight; + } + + public Map getTotalWeightByGroup() { + return totalWeightByGroup; + } +} diff --git a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/VeinPathUtils.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/VeinPathUtils.java new file mode 100644 index 0000000..5262b6c --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/VeinPathUtils.java @@ -0,0 +1,77 @@ +package com.github.gtexpert.gtmt.integration.exnihilo.recipes.sieve; + +import java.util.Locale; + +/** + * Utility methods for handling GTCEu world-generation definition paths. + * + *

+ * All paths are normalized relative to + * {@code config/gregtech/worldgen/vein/}. The {@code .json} extension may be + * omitted by users. + *

+ */ +public final class VeinPathUtils { + + private static final String CONFIG_PREFIX = "config/gregtech/worldgen/vein/"; + private static final String WORLDGEN_PREFIX = "gregtech/worldgen/vein/"; + private static final String ROOT_GROUP = ""; + + private VeinPathUtils() {} + + /** + * Normalizes a configured vein path. + * + * @param value a full or relative vein path + * @return a lower-case, slash-separated path ending in {@code .json} + * @throws IllegalArgumentException if the path is null or empty + */ + public static String normalize(String value) { + if (value == null) { + throw new IllegalArgumentException("Vein path cannot be null"); + } + + String result = value.trim().replace('\\', '/'); + if (result.isEmpty()) { + throw new IllegalArgumentException("Vein path cannot be empty"); + } + + while (result.startsWith("/")) { + result = result.substring(1); + } + + result = removePrefixIgnoreCase(result, CONFIG_PREFIX); + result = removePrefixIgnoreCase(result, WORLDGEN_PREFIX); + + while (result.startsWith("/")) { + result = result.substring(1); + } + + if (!result.toLowerCase(Locale.ROOT).endsWith(".json")) { + result += ".json"; + } + + return result.toLowerCase(Locale.ROOT); + } + + /** + * Returns the first directory below the GTCEu vein root. + * + *

+ * For example, {@code overworld/copper.json} belongs to the + * {@code overworld} group. Files placed directly in the vein root belong + * to {@code }. + *

+ * + * @param normalizedPath a path returned by {@link #normalize(String)} + * @return the top-level vein group + */ + public static String getTopLevelGroup(String normalizedPath) { + int separator = normalizedPath.indexOf('/'); + return separator < 0 ? ROOT_GROUP : normalizedPath.substring(0, separator); + } + + private static String removePrefixIgnoreCase(String value, String prefix) { + return value.regionMatches(true, 0, prefix, 0, prefix.length()) ? value.substring(prefix.length()) : value; + } +} diff --git a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/VeinProbabilityReporter.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/VeinProbabilityReporter.java new file mode 100644 index 0000000..e3db91f --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/recipes/sieve/VeinProbabilityReporter.java @@ -0,0 +1,116 @@ +package com.github.gtexpert.gtmt.integration.exnihilo.recipes.sieve; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Map; + +import gregtech.api.unification.material.Material; +import gregtech.api.worldgen.config.OreDepositDefinition; +import gregtech.api.worldgen.config.WorldGenRegistry; +import gregtech.common.ConfigHolder; + +import com.github.gtexpert.gtmt.api.util.ModLog; + +/** + * Produces a diagnostic report of GTCEu vein and ore-material probabilities. + * + *

+ * The report groups vein definitions by the first directory below + * {@code config/gregtech/worldgen/vein/}. It is intended only as a reference + * for configuring Ex Nihilo sieve-drop probabilities. + *

+ * + *

+ * This class must be called after GTCEu has initialized its world-generation + * definitions, normally during {@code FMLPostInitializationEvent}. + *

+ */ +public final class VeinProbabilityReporter { + + private VeinProbabilityReporter() {} + + /** + * Writes all available vein probabilities to the specified logger. + */ + public static void output() { + VeinGroupIndex index = VeinGroupIndex.create(); + + List definitions = new ArrayList<>(WorldGenRegistry.getOreDeposits()); + + definitions.sort( + Comparator.comparing(definition -> VeinPathUtils.normalize( + definition.getDepositName()))); + + int min = ConfigHolder.worldgen.minVeinsInSection; + int add = ConfigHolder.worldgen.additionalVeinsInSection; + int ave = min + add / 2; + + ModLog.logger.info("========== GTCEu Vein Probability Report =========="); + + for (Map.Entry group : index.getTotalWeightByGroup().entrySet()) { + + ModLog.logger.info( + "Group '{}': total weight = {}", + group.getKey(), + group.getValue()); + } + + String previousGroup = null; + + for (OreDepositDefinition definition : definitions) { + if (!definition.isVein() || + definition.getWeight() <= 0) { + continue; + } + + String path = VeinPathUtils.normalize( + definition.getDepositName()); + + String group = VeinPathUtils.getTopLevelGroup(path); + + if (!group.equals(previousGroup)) { + ModLog.logger.info(""); + ModLog.logger.info("--- Group: {} ---", group); + previousGroup = group; + } + + double veinChance = index.getRelativeChance(definition); + + ModLog.logger.info( + "Vein: {} | weight: {}", + path, + definition.getWeight()); + + Map materialRatios = LayeredVeinMaterialDistribution.calculate( + definition); + + if (materialRatios.isEmpty()) { + ModLog.logger.info( + " Material distribution unavailable " + + "(unsupported or unresolved filler)"); + continue; + } + + for (Map.Entry material : materialRatios.entrySet()) { + + double finalChance = veinChance * material.getValue() * ave; + + ModLog.logger.info( + " Material: {} | Suggested Sieve Chance: {}{}", + material.getKey().getRegistryName(), + formatPercent(finalChance), + finalChance > 1 ? " (Overflow)" : ""); + } + } + + ModLog.logger.info("===================================================="); + } + + private static String formatPercent(double probability) { + return String.format( + java.util.Locale.ROOT, + "%.4f", + probability > 1 ? 1 : probability); + } +} diff --git a/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/tools/ExNihiloToolsItems.java b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/tools/ExNihiloToolsItems.java new file mode 100644 index 0000000..e033180 --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/exnihilo/tools/ExNihiloToolsItems.java @@ -0,0 +1,61 @@ +package com.github.gtexpert.gtmt.integration.exnihilo.tools; + +import java.util.ArrayList; +import java.util.List; + +import net.minecraft.client.renderer.color.ItemColors; +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.model.ModelLoader; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import gregtech.api.GTValues; +import gregtech.api.items.toolitem.IGTTool; +import gregtech.api.items.toolitem.ItemGTTool; +import gregtech.api.unification.OreDictUnifier; + +import com.github.gtexpert.gtmt.api.ModValues; + +public final class ExNihiloToolsItems { + + private static final List TOOLS = new ArrayList<>(); + + public static IGTTool CROOK; + + public static List getAllTools() { + return TOOLS; + } + + public static void init() { + CROOK = register(ItemGTTool.Builder.of(ModValues.MODID, "crook") + .toolStats(b -> b.blockBreaking().attackDamage(1.0F).attackSpeed(1.0F)) + .oreDict("toolCrook") + .toolClasses("crook") + .build()); + } + + public static IGTTool register(IGTTool tool) { + TOOLS.add(tool); + return tool; + } + + @SideOnly(Side.CLIENT) + public static void registerModels() { + TOOLS.forEach(tool -> ModelLoader.setCustomModelResourceLocation(tool.get(), 0, tool.getModelLocation())); + } + + @SideOnly(Side.CLIENT) + public static void registerColors(ItemColors itemColors) { + TOOLS.forEach(tool -> itemColors.registerItemColorHandler(tool::getColor, tool.get())); + } + + public static void registerOreDict() { + TOOLS.forEach(tool -> { + final ItemStack stack = new ItemStack(tool.get(), 1, GTValues.W); + if (tool.getOreDictName() != null) { + OreDictUnifier.registerOre(stack, tool.getOreDictName()); + } + tool.getSecondaryOreDicts().forEach(oreDict -> OreDictUnifier.registerOre(stack, oreDict)); + }); + } +} diff --git a/src/main/java/com/github/gtexpert/gtmt/integration/jei/ExNihiloJEIPlugin.java b/src/main/java/com/github/gtexpert/gtmt/integration/jei/ExNihiloJEIPlugin.java new file mode 100644 index 0000000..a37a83c --- /dev/null +++ b/src/main/java/com/github/gtexpert/gtmt/integration/jei/ExNihiloJEIPlugin.java @@ -0,0 +1,34 @@ +package com.github.gtexpert.gtmt.integration.jei; + +import javax.annotation.Nonnull; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import gregtech.api.items.toolitem.IGTTool; +import gregtech.api.items.toolitem.ToolClasses; + +import com.github.gtexpert.gtmt.api.util.Mods; + +import exnihilocreatio.compatibility.jei.hammer.HammerRecipeCategory; +import mezz.jei.api.IModPlugin; +import mezz.jei.api.IModRegistry; +import mezz.jei.api.JEIPlugin; + +@JEIPlugin +public class ExNihiloJEIPlugin implements IModPlugin { + + @Override + @SideOnly(Side.CLIENT) + public void register(@Nonnull IModRegistry registry) { + if (!Mods.ExNihilo.isModLoaded()) return; + for (Item item : Item.REGISTRY) { + if (item.getToolClasses(new ItemStack(item)).contains(ToolClasses.HARD_HAMMER) && + item instanceof IGTTool) { + registry.addRecipeCatalyst(new ItemStack(item), HammerRecipeCategory.UID); + } + } + } +} diff --git a/src/main/java/com/github/gtexpert/gtmt/modules/Modules.java b/src/main/java/com/github/gtexpert/gtmt/modules/Modules.java index f7d5255..2cf602b 100644 --- a/src/main/java/com/github/gtexpert/gtmt/modules/Modules.java +++ b/src/main/java/com/github/gtexpert/gtmt/modules/Modules.java @@ -27,6 +27,7 @@ public class Modules implements IModuleContainer { public static final String MODULE_BOTANY = "botany_integration"; public static final String MODULE_EXBEES = "extrabees_integration"; public static final String MODULE_EXCPUS = "extracpus_integration"; + public static final String MODULE_EXNIHILO = "exnihilo_cratio_integration"; public static final String MODULE_EXTREES = "extratrees_integration"; public static final String MODULE_GENETICS = "genetics_integration"; public static final String MODULE_GTFO = "gtfo_integration"; diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/diamond/ore_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/diamond/ore_chunk.json new file mode 100644 index 0000000..8cb1108 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/diamond/ore_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/diamond/ore_chunk", + "layer1": "gregtech:items/material_sets/diamond/ore_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/diamond/ore_ender_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/diamond/ore_ender_chunk.json new file mode 100644 index 0000000..aac9fed --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/diamond/ore_ender_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/diamond/ore_chunk", + "layer1": "gregtech:items/material_sets/diamond/ore_ender_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/diamond/ore_nether_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/diamond/ore_nether_chunk.json new file mode 100644 index 0000000..58ec490 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/diamond/ore_nether_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/diamond/ore_chunk", + "layer1": "gregtech:items/material_sets/diamond/ore_nether_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/diamond/ore_sandy_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/diamond/ore_sandy_chunk.json new file mode 100644 index 0000000..05418d7 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/diamond/ore_sandy_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/diamond/ore_chunk", + "layer1": "gregtech:items/material_sets/diamond/ore_sandy_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/dull/ore_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/dull/ore_chunk.json new file mode 100644 index 0000000..dff45f5 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/dull/ore_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/dull/ore_chunk", + "layer1": "gregtech:items/material_sets/dull/ore_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/dull/ore_ender_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/dull/ore_ender_chunk.json new file mode 100644 index 0000000..4f93747 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/dull/ore_ender_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/dull/ore_chunk", + "layer1": "gregtech:items/material_sets/dull/ore_ender_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/dull/ore_nether_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/dull/ore_nether_chunk.json new file mode 100644 index 0000000..ae269f7 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/dull/ore_nether_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/dull/ore_chunk", + "layer1": "gregtech:items/material_sets/dull/ore_nether_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/dull/ore_sandy_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/dull/ore_sandy_chunk.json new file mode 100644 index 0000000..73b4cf1 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/dull/ore_sandy_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/dull/ore_chunk", + "layer1": "gregtech:items/material_sets/dull/ore_sandy_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/emerald/ore_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/emerald/ore_chunk.json new file mode 100644 index 0000000..ca03d47 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/emerald/ore_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/emerald/ore_chunk", + "layer1": "gregtech:items/material_sets/emerald/ore_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/emerald/ore_ender_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/emerald/ore_ender_chunk.json new file mode 100644 index 0000000..3fc295a --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/emerald/ore_ender_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/emerald/ore_chunk", + "layer1": "gregtech:items/material_sets/emerald/ore_ender_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/emerald/ore_nether_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/emerald/ore_nether_chunk.json new file mode 100644 index 0000000..cce855d --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/emerald/ore_nether_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/emerald/ore_chunk", + "layer1": "gregtech:items/material_sets/emerald/ore_nether_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/emerald/ore_sandy_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/emerald/ore_sandy_chunk.json new file mode 100644 index 0000000..0659afc --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/emerald/ore_sandy_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/emerald/ore_chunk", + "layer1": "gregtech:items/material_sets/emerald/ore_sandy_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/fine/ore_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/fine/ore_chunk.json new file mode 100644 index 0000000..6c21423 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/fine/ore_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/fine/ore_chunk", + "layer1": "gregtech:items/material_sets/fine/ore_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/fine/ore_ender_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/fine/ore_ender_chunk.json new file mode 100644 index 0000000..8577f07 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/fine/ore_ender_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/fine/ore_chunk", + "layer1": "gregtech:items/material_sets/fine/ore_ender_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/fine/ore_nether_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/fine/ore_nether_chunk.json new file mode 100644 index 0000000..c74932d --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/fine/ore_nether_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/fine/ore_chunk", + "layer1": "gregtech:items/material_sets/fine/ore_nether_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/fine/ore_sandy_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/fine/ore_sandy_chunk.json new file mode 100644 index 0000000..02ba033 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/fine/ore_sandy_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/fine/ore_chunk", + "layer1": "gregtech:items/material_sets/fine/ore_sandy_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/flint/ore_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/flint/ore_chunk.json new file mode 100644 index 0000000..f50c657 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/flint/ore_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/flint/ore_chunk", + "layer1": "gregtech:items/material_sets/flint/ore_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/flint/ore_ender_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/flint/ore_ender_chunk.json new file mode 100644 index 0000000..0f20d77 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/flint/ore_ender_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/flint/ore_chunk", + "layer1": "gregtech:items/material_sets/flint/ore_ender_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/flint/ore_nether_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/flint/ore_nether_chunk.json new file mode 100644 index 0000000..b69da1d --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/flint/ore_nether_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/flint/ore_chunk", + "layer1": "gregtech:items/material_sets/flint/ore_nether_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/flint/ore_sandy_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/flint/ore_sandy_chunk.json new file mode 100644 index 0000000..0b421db --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/flint/ore_sandy_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/flint/ore_chunk", + "layer1": "gregtech:items/material_sets/flint/ore_sandy_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/gem_horizontal/ore_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/gem_horizontal/ore_chunk.json new file mode 100644 index 0000000..67e52bf --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/gem_horizontal/ore_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/gem_horizontal/ore_chunk", + "layer1": "gregtech:items/material_sets/gem_horizontal/ore_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/gem_horizontal/ore_ender_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/gem_horizontal/ore_ender_chunk.json new file mode 100644 index 0000000..b460a23 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/gem_horizontal/ore_ender_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/gem_horizontal/ore_chunk", + "layer1": "gregtech:items/material_sets/gem_horizontal/ore_ender_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/gem_horizontal/ore_nether_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/gem_horizontal/ore_nether_chunk.json new file mode 100644 index 0000000..13ea58c --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/gem_horizontal/ore_nether_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/gem_horizontal/ore_chunk", + "layer1": "gregtech:items/material_sets/gem_horizontal/ore_nether_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/gem_horizontal/ore_sandy_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/gem_horizontal/ore_sandy_chunk.json new file mode 100644 index 0000000..2a7af56 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/gem_horizontal/ore_sandy_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/gem_horizontal/ore_chunk", + "layer1": "gregtech:items/material_sets/gem_horizontal/ore_sandy_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/gem_vertical/ore_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/gem_vertical/ore_chunk.json new file mode 100644 index 0000000..75424bf --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/gem_vertical/ore_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/gem_vertical/ore_chunk", + "layer1": "gregtech:items/material_sets/gem_vertical/ore_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/gem_vertical/ore_ender_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/gem_vertical/ore_ender_chunk.json new file mode 100644 index 0000000..f56d857 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/gem_vertical/ore_ender_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/gem_vertical/ore_chunk", + "layer1": "gregtech:items/material_sets/gem_vertical/ore_ender_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/gem_vertical/ore_nether_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/gem_vertical/ore_nether_chunk.json new file mode 100644 index 0000000..e5d69c9 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/gem_vertical/ore_nether_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/gem_vertical/ore_chunk", + "layer1": "gregtech:items/material_sets/gem_vertical/ore_nether_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/gem_vertical/ore_sandy_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/gem_vertical/ore_sandy_chunk.json new file mode 100644 index 0000000..f9c3670 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/gem_vertical/ore_sandy_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/gem_vertical/ore_chunk", + "layer1": "gregtech:items/material_sets/gem_vertical/ore_sandy_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/lapis/ore_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/lapis/ore_chunk.json new file mode 100644 index 0000000..dfedee6 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/lapis/ore_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/lapis/ore_chunk", + "layer1": "gregtech:items/material_sets/lapis/ore_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/lapis/ore_ender_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/lapis/ore_ender_chunk.json new file mode 100644 index 0000000..58cd98a --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/lapis/ore_ender_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/lapis/ore_chunk", + "layer1": "gregtech:items/material_sets/lapis/ore_ender_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/lapis/ore_nether_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/lapis/ore_nether_chunk.json new file mode 100644 index 0000000..64ba653 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/lapis/ore_nether_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/lapis/ore_chunk", + "layer1": "gregtech:items/material_sets/lapis/ore_nether_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/lapis/ore_sandy_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/lapis/ore_sandy_chunk.json new file mode 100644 index 0000000..9f092fb --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/lapis/ore_sandy_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/lapis/ore_chunk", + "layer1": "gregtech:items/material_sets/lapis/ore_sandy_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/lignite/ore_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/lignite/ore_chunk.json new file mode 100644 index 0000000..578bd9c --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/lignite/ore_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/lignite/ore_chunk", + "layer1": "gregtech:items/material_sets/lignite/ore_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/lignite/ore_ender_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/lignite/ore_ender_chunk.json new file mode 100644 index 0000000..59dfeb1 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/lignite/ore_ender_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/lignite/ore_chunk", + "layer1": "gregtech:items/material_sets/lignite/ore_ender_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/lignite/ore_nether_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/lignite/ore_nether_chunk.json new file mode 100644 index 0000000..d4e750b --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/lignite/ore_nether_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/lignite/ore_chunk", + "layer1": "gregtech:items/material_sets/lignite/ore_nether_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/lignite/ore_sandy_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/lignite/ore_sandy_chunk.json new file mode 100644 index 0000000..3577c21 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/lignite/ore_sandy_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/lignite/ore_chunk", + "layer1": "gregtech:items/material_sets/lignite/ore_sandy_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/metallic/ore_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/metallic/ore_chunk.json new file mode 100644 index 0000000..ad4f6e5 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/metallic/ore_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/metallic/ore_chunk", + "layer1": "gregtech:items/material_sets/metallic/ore_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/metallic/ore_ender_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/metallic/ore_ender_chunk.json new file mode 100644 index 0000000..1f6fdf3 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/metallic/ore_ender_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/metallic/ore_chunk", + "layer1": "gregtech:items/material_sets/metallic/ore_ender_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/metallic/ore_nether_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/metallic/ore_nether_chunk.json new file mode 100644 index 0000000..fe901ad --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/metallic/ore_nether_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/metallic/ore_chunk", + "layer1": "gregtech:items/material_sets/metallic/ore_nether_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/metallic/ore_sandy_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/metallic/ore_sandy_chunk.json new file mode 100644 index 0000000..1a2647b --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/metallic/ore_sandy_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/metallic/ore_chunk", + "layer1": "gregtech:items/material_sets/metallic/ore_sandy_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/netherstar/ore_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/netherstar/ore_chunk.json new file mode 100644 index 0000000..73d073c --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/netherstar/ore_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/netherstar/ore_chunk", + "layer1": "gregtech:items/material_sets/netherstar/ore_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/netherstar/ore_ender_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/netherstar/ore_ender_chunk.json new file mode 100644 index 0000000..9e12bd1 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/netherstar/ore_ender_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/netherstar/ore_chunk", + "layer1": "gregtech:items/material_sets/netherstar/ore_ender_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/netherstar/ore_nether_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/netherstar/ore_nether_chunk.json new file mode 100644 index 0000000..42a6666 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/netherstar/ore_nether_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/netherstar/ore_chunk", + "layer1": "gregtech:items/material_sets/netherstar/ore_nether_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/netherstar/ore_sandy_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/netherstar/ore_sandy_chunk.json new file mode 100644 index 0000000..fbf7353 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/netherstar/ore_sandy_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/netherstar/ore_chunk", + "layer1": "gregtech:items/material_sets/netherstar/ore_sandy_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/opal/ore_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/opal/ore_chunk.json new file mode 100644 index 0000000..e1037da --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/opal/ore_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/ruby/ore_chunk", + "layer1": "gregtech:items/material_sets/ruby/ore_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/opal/ore_ender_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/opal/ore_ender_chunk.json new file mode 100644 index 0000000..c8f6184 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/opal/ore_ender_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/ruby/ore_chunk", + "layer1": "gregtech:items/material_sets/ruby/ore_ender_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/opal/ore_nether_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/opal/ore_nether_chunk.json new file mode 100644 index 0000000..17800b9 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/opal/ore_nether_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/ruby/ore_chunk", + "layer1": "gregtech:items/material_sets/ruby/ore_nether_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/opal/ore_sandy_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/opal/ore_sandy_chunk.json new file mode 100644 index 0000000..1813a21 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/opal/ore_sandy_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/ruby/ore_chunk", + "layer1": "gregtech:items/material_sets/ruby/ore_sandy_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/quartz/ore_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/quartz/ore_chunk.json new file mode 100644 index 0000000..e09f1b5 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/quartz/ore_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/quartz/ore_chunk", + "layer1": "gregtech:items/material_sets/quartz/ore_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/quartz/ore_ender_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/quartz/ore_ender_chunk.json new file mode 100644 index 0000000..90581ec --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/quartz/ore_ender_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/quartz/ore_chunk", + "layer1": "gregtech:items/material_sets/quartz/ore_ender_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/quartz/ore_nether_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/quartz/ore_nether_chunk.json new file mode 100644 index 0000000..050a280 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/quartz/ore_nether_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/quartz/ore_chunk", + "layer1": "gregtech:items/material_sets/quartz/ore_nether_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/quartz/ore_sandy_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/quartz/ore_sandy_chunk.json new file mode 100644 index 0000000..e7e16a6 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/quartz/ore_sandy_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/quartz/ore_chunk", + "layer1": "gregtech:items/material_sets/quartz/ore_sandy_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/rough/ore_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/rough/ore_chunk.json new file mode 100644 index 0000000..bdb7a57 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/rough/ore_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/rough/ore_chunk", + "layer1": "gregtech:items/material_sets/rough/ore_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/rough/ore_ender_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/rough/ore_ender_chunk.json new file mode 100644 index 0000000..3445d38 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/rough/ore_ender_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/rough/ore_chunk", + "layer1": "gregtech:items/material_sets/rough/ore_ender_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/rough/ore_nether_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/rough/ore_nether_chunk.json new file mode 100644 index 0000000..12e9fcb --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/rough/ore_nether_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/rough/ore_chunk", + "layer1": "gregtech:items/material_sets/rough/ore_nether_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/rough/ore_sandy_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/rough/ore_sandy_chunk.json new file mode 100644 index 0000000..e0afe4d --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/rough/ore_sandy_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/rough/ore_chunk", + "layer1": "gregtech:items/material_sets/rough/ore_sandy_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/ruby/ore_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/ruby/ore_chunk.json new file mode 100644 index 0000000..e1037da --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/ruby/ore_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/ruby/ore_chunk", + "layer1": "gregtech:items/material_sets/ruby/ore_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/ruby/ore_ender_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/ruby/ore_ender_chunk.json new file mode 100644 index 0000000..c8f6184 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/ruby/ore_ender_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/ruby/ore_chunk", + "layer1": "gregtech:items/material_sets/ruby/ore_ender_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/ruby/ore_nether_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/ruby/ore_nether_chunk.json new file mode 100644 index 0000000..17800b9 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/ruby/ore_nether_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/ruby/ore_chunk", + "layer1": "gregtech:items/material_sets/ruby/ore_nether_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/ruby/ore_sandy_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/ruby/ore_sandy_chunk.json new file mode 100644 index 0000000..1813a21 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/ruby/ore_sandy_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/ruby/ore_chunk", + "layer1": "gregtech:items/material_sets/ruby/ore_sandy_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/sand/ore_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/sand/ore_chunk.json new file mode 100644 index 0000000..6c21423 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/sand/ore_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/fine/ore_chunk", + "layer1": "gregtech:items/material_sets/fine/ore_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/sand/ore_ender_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/sand/ore_ender_chunk.json new file mode 100644 index 0000000..8577f07 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/sand/ore_ender_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/fine/ore_chunk", + "layer1": "gregtech:items/material_sets/fine/ore_ender_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/sand/ore_nether_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/sand/ore_nether_chunk.json new file mode 100644 index 0000000..c74932d --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/sand/ore_nether_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/fine/ore_chunk", + "layer1": "gregtech:items/material_sets/fine/ore_nether_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/sand/ore_sandy_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/sand/ore_sandy_chunk.json new file mode 100644 index 0000000..02ba033 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/sand/ore_sandy_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/fine/ore_chunk", + "layer1": "gregtech:items/material_sets/fine/ore_sandy_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/shiny/ore_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/shiny/ore_chunk.json new file mode 100644 index 0000000..ba6fccc --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/shiny/ore_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/shiny/ore_chunk", + "layer1": "gregtech:items/material_sets/shiny/ore_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/shiny/ore_ender_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/shiny/ore_ender_chunk.json new file mode 100644 index 0000000..28df9b6 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/shiny/ore_ender_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/shiny/ore_chunk", + "layer1": "gregtech:items/material_sets/shiny/ore_ender_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/shiny/ore_nether_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/shiny/ore_nether_chunk.json new file mode 100644 index 0000000..9e51adb --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/shiny/ore_nether_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/shiny/ore_chunk", + "layer1": "gregtech:items/material_sets/shiny/ore_nether_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/models/item/material_sets/shiny/ore_sandy_chunk.json b/src/main/resources/assets/gregtech/models/item/material_sets/shiny/ore_sandy_chunk.json new file mode 100644 index 0000000..d80f6d9 --- /dev/null +++ b/src/main/resources/assets/gregtech/models/item/material_sets/shiny/ore_sandy_chunk.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gregtech:items/material_sets/shiny/ore_chunk", + "layer1": "gregtech:items/material_sets/shiny/ore_sandy_chunk_overlay" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech/textures/gui/progress_bar/progress_bar_sift_bronze.png b/src/main/resources/assets/gregtech/textures/gui/progress_bar/progress_bar_sift_bronze.png new file mode 100644 index 0000000..ebdea36 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/gui/progress_bar/progress_bar_sift_bronze.png differ diff --git a/src/main/resources/assets/gregtech/textures/gui/progress_bar/progress_bar_sift_steel.png b/src/main/resources/assets/gregtech/textures/gui/progress_bar/progress_bar_sift_steel.png new file mode 100644 index 0000000..8a7535f Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/gui/progress_bar/progress_bar_sift_steel.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/diamond/ore_chunk.png b/src/main/resources/assets/gregtech/textures/items/material_sets/diamond/ore_chunk.png new file mode 100644 index 0000000..bb34170 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/diamond/ore_chunk.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/diamond/ore_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/diamond/ore_chunk_overlay.png new file mode 100644 index 0000000..d9c6d39 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/diamond/ore_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/diamond/ore_ender_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/diamond/ore_ender_chunk_overlay.png new file mode 100644 index 0000000..2878240 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/diamond/ore_ender_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/diamond/ore_nether_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/diamond/ore_nether_chunk_overlay.png new file mode 100644 index 0000000..3d103e9 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/diamond/ore_nether_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/diamond/ore_sandy_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/diamond/ore_sandy_chunk_overlay.png new file mode 100644 index 0000000..73b886d Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/diamond/ore_sandy_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/dull/ore_chunk.png b/src/main/resources/assets/gregtech/textures/items/material_sets/dull/ore_chunk.png new file mode 100644 index 0000000..4230002 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/dull/ore_chunk.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/dull/ore_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/dull/ore_chunk_overlay.png new file mode 100644 index 0000000..2f9bcdd Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/dull/ore_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/dull/ore_ender_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/dull/ore_ender_chunk_overlay.png new file mode 100644 index 0000000..7c21ccf Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/dull/ore_ender_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/dull/ore_nether_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/dull/ore_nether_chunk_overlay.png new file mode 100644 index 0000000..a0f79b0 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/dull/ore_nether_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/dull/ore_sandy_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/dull/ore_sandy_chunk_overlay.png new file mode 100644 index 0000000..d6fc83e Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/dull/ore_sandy_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/emerald/ore_chunk.png b/src/main/resources/assets/gregtech/textures/items/material_sets/emerald/ore_chunk.png new file mode 100644 index 0000000..9718bd0 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/emerald/ore_chunk.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/emerald/ore_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/emerald/ore_chunk_overlay.png new file mode 100644 index 0000000..ea7ad7c Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/emerald/ore_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/emerald/ore_ender_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/emerald/ore_ender_chunk_overlay.png new file mode 100644 index 0000000..f36419b Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/emerald/ore_ender_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/emerald/ore_nether_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/emerald/ore_nether_chunk_overlay.png new file mode 100644 index 0000000..bc43ccb Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/emerald/ore_nether_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/emerald/ore_sandy_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/emerald/ore_sandy_chunk_overlay.png new file mode 100644 index 0000000..8615ce4 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/emerald/ore_sandy_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/fine/ore_chunk.png b/src/main/resources/assets/gregtech/textures/items/material_sets/fine/ore_chunk.png new file mode 100644 index 0000000..29b5587 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/fine/ore_chunk.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/fine/ore_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/fine/ore_chunk_overlay.png new file mode 100644 index 0000000..a83ffe3 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/fine/ore_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/fine/ore_ender_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/fine/ore_ender_chunk_overlay.png new file mode 100644 index 0000000..6a4c733 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/fine/ore_ender_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/fine/ore_nether_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/fine/ore_nether_chunk_overlay.png new file mode 100644 index 0000000..109ae3b Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/fine/ore_nether_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/fine/ore_sandy_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/fine/ore_sandy_chunk_overlay.png new file mode 100644 index 0000000..ded381b Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/fine/ore_sandy_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/flint/ore_chunk.png b/src/main/resources/assets/gregtech/textures/items/material_sets/flint/ore_chunk.png new file mode 100644 index 0000000..8bf2bbf Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/flint/ore_chunk.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/flint/ore_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/flint/ore_chunk_overlay.png new file mode 100644 index 0000000..0379b39 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/flint/ore_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/flint/ore_ender_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/flint/ore_ender_chunk_overlay.png new file mode 100644 index 0000000..8de7fee Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/flint/ore_ender_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/flint/ore_nether_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/flint/ore_nether_chunk_overlay.png new file mode 100644 index 0000000..2a48136 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/flint/ore_nether_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/flint/ore_sandy_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/flint/ore_sandy_chunk_overlay.png new file mode 100644 index 0000000..a427fa6 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/flint/ore_sandy_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/gem_horizontal/ore_chunk.png b/src/main/resources/assets/gregtech/textures/items/material_sets/gem_horizontal/ore_chunk.png new file mode 100644 index 0000000..64dd229 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/gem_horizontal/ore_chunk.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/gem_horizontal/ore_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/gem_horizontal/ore_chunk_overlay.png new file mode 100644 index 0000000..c5a9360 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/gem_horizontal/ore_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/gem_horizontal/ore_ender_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/gem_horizontal/ore_ender_chunk_overlay.png new file mode 100644 index 0000000..111207b Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/gem_horizontal/ore_ender_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/gem_horizontal/ore_nether_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/gem_horizontal/ore_nether_chunk_overlay.png new file mode 100644 index 0000000..eef536e Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/gem_horizontal/ore_nether_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/gem_horizontal/ore_sandy_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/gem_horizontal/ore_sandy_chunk_overlay.png new file mode 100644 index 0000000..f7762ec Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/gem_horizontal/ore_sandy_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/gem_vertical/ore_chunk.png b/src/main/resources/assets/gregtech/textures/items/material_sets/gem_vertical/ore_chunk.png new file mode 100644 index 0000000..f275c1c Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/gem_vertical/ore_chunk.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/gem_vertical/ore_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/gem_vertical/ore_chunk_overlay.png new file mode 100644 index 0000000..dccb5a8 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/gem_vertical/ore_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/gem_vertical/ore_ender_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/gem_vertical/ore_ender_chunk_overlay.png new file mode 100644 index 0000000..5c0fdee Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/gem_vertical/ore_ender_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/gem_vertical/ore_nether_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/gem_vertical/ore_nether_chunk_overlay.png new file mode 100644 index 0000000..177dd29 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/gem_vertical/ore_nether_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/gem_vertical/ore_sandy_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/gem_vertical/ore_sandy_chunk_overlay.png new file mode 100644 index 0000000..dae4bc3 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/gem_vertical/ore_sandy_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/lapis/ore_chunk.png b/src/main/resources/assets/gregtech/textures/items/material_sets/lapis/ore_chunk.png new file mode 100644 index 0000000..c3e6b6e Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/lapis/ore_chunk.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/lapis/ore_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/lapis/ore_chunk_overlay.png new file mode 100644 index 0000000..57172f5 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/lapis/ore_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/lapis/ore_ender_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/lapis/ore_ender_chunk_overlay.png new file mode 100644 index 0000000..ceaac66 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/lapis/ore_ender_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/lapis/ore_nether_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/lapis/ore_nether_chunk_overlay.png new file mode 100644 index 0000000..b930d70 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/lapis/ore_nether_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/lapis/ore_sandy_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/lapis/ore_sandy_chunk_overlay.png new file mode 100644 index 0000000..5e3b4e9 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/lapis/ore_sandy_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/lignite/ore_chunk.png b/src/main/resources/assets/gregtech/textures/items/material_sets/lignite/ore_chunk.png new file mode 100644 index 0000000..ba364f5 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/lignite/ore_chunk.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/lignite/ore_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/lignite/ore_chunk_overlay.png new file mode 100644 index 0000000..4f24ddc Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/lignite/ore_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/lignite/ore_ender_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/lignite/ore_ender_chunk_overlay.png new file mode 100644 index 0000000..3a757c3 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/lignite/ore_ender_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/lignite/ore_nether_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/lignite/ore_nether_chunk_overlay.png new file mode 100644 index 0000000..4f3643e Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/lignite/ore_nether_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/lignite/ore_sandy_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/lignite/ore_sandy_chunk_overlay.png new file mode 100644 index 0000000..d064112 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/lignite/ore_sandy_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/metallic/ore_chunk.png b/src/main/resources/assets/gregtech/textures/items/material_sets/metallic/ore_chunk.png new file mode 100644 index 0000000..9ae00ef Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/metallic/ore_chunk.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/metallic/ore_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/metallic/ore_chunk_overlay.png new file mode 100644 index 0000000..2deb061 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/metallic/ore_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/metallic/ore_ender_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/metallic/ore_ender_chunk_overlay.png new file mode 100644 index 0000000..f7346b1 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/metallic/ore_ender_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/metallic/ore_nether_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/metallic/ore_nether_chunk_overlay.png new file mode 100644 index 0000000..90e7913 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/metallic/ore_nether_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/metallic/ore_sandy_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/metallic/ore_sandy_chunk_overlay.png new file mode 100644 index 0000000..ad174c3 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/metallic/ore_sandy_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/netherstar/ore_chunk.png b/src/main/resources/assets/gregtech/textures/items/material_sets/netherstar/ore_chunk.png new file mode 100644 index 0000000..4230002 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/netherstar/ore_chunk.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/netherstar/ore_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/netherstar/ore_chunk_overlay.png new file mode 100644 index 0000000..2f9bcdd Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/netherstar/ore_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/netherstar/ore_ender_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/netherstar/ore_ender_chunk_overlay.png new file mode 100644 index 0000000..7c21ccf Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/netherstar/ore_ender_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/netherstar/ore_nether_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/netherstar/ore_nether_chunk_overlay.png new file mode 100644 index 0000000..a0f79b0 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/netherstar/ore_nether_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/netherstar/ore_sandy_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/netherstar/ore_sandy_chunk_overlay.png new file mode 100644 index 0000000..d6fc83e Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/netherstar/ore_sandy_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/quartz/ore_chunk.png b/src/main/resources/assets/gregtech/textures/items/material_sets/quartz/ore_chunk.png new file mode 100644 index 0000000..9522103 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/quartz/ore_chunk.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/quartz/ore_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/quartz/ore_chunk_overlay.png new file mode 100644 index 0000000..7b9bddd Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/quartz/ore_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/quartz/ore_ender_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/quartz/ore_ender_chunk_overlay.png new file mode 100644 index 0000000..f0581f7 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/quartz/ore_ender_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/quartz/ore_nether_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/quartz/ore_nether_chunk_overlay.png new file mode 100644 index 0000000..8ad94d8 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/quartz/ore_nether_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/quartz/ore_sandy_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/quartz/ore_sandy_chunk_overlay.png new file mode 100644 index 0000000..1720b71 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/quartz/ore_sandy_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/rough/ore_chunk.png b/src/main/resources/assets/gregtech/textures/items/material_sets/rough/ore_chunk.png new file mode 100644 index 0000000..2f2fa58 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/rough/ore_chunk.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/rough/ore_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/rough/ore_chunk_overlay.png new file mode 100644 index 0000000..5dd3c1a Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/rough/ore_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/rough/ore_ender_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/rough/ore_ender_chunk_overlay.png new file mode 100644 index 0000000..0076a39 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/rough/ore_ender_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/rough/ore_nether_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/rough/ore_nether_chunk_overlay.png new file mode 100644 index 0000000..cb44315 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/rough/ore_nether_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/rough/ore_sandy_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/rough/ore_sandy_chunk_overlay.png new file mode 100644 index 0000000..4ec7023 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/rough/ore_sandy_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/ruby/ore_chunk.png b/src/main/resources/assets/gregtech/textures/items/material_sets/ruby/ore_chunk.png new file mode 100644 index 0000000..70b91f5 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/ruby/ore_chunk.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/ruby/ore_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/ruby/ore_chunk_overlay.png new file mode 100644 index 0000000..9498513 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/ruby/ore_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/ruby/ore_ender_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/ruby/ore_ender_chunk_overlay.png new file mode 100644 index 0000000..a4740bd Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/ruby/ore_ender_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/ruby/ore_nether_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/ruby/ore_nether_chunk_overlay.png new file mode 100644 index 0000000..817e6fe Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/ruby/ore_nether_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/ruby/ore_sandy_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/ruby/ore_sandy_chunk_overlay.png new file mode 100644 index 0000000..ca1aed4 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/ruby/ore_sandy_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/shiny/ore_chunk.png b/src/main/resources/assets/gregtech/textures/items/material_sets/shiny/ore_chunk.png new file mode 100644 index 0000000..49f7ce2 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/shiny/ore_chunk.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/shiny/ore_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/shiny/ore_chunk_overlay.png new file mode 100644 index 0000000..473d542 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/shiny/ore_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/shiny/ore_ender_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/shiny/ore_ender_chunk_overlay.png new file mode 100644 index 0000000..94aa0a9 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/shiny/ore_ender_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/shiny/ore_nether_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/shiny/ore_nether_chunk_overlay.png new file mode 100644 index 0000000..6ec74c5 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/shiny/ore_nether_chunk_overlay.png differ diff --git a/src/main/resources/assets/gregtech/textures/items/material_sets/shiny/ore_sandy_chunk_overlay.png b/src/main/resources/assets/gregtech/textures/items/material_sets/shiny/ore_sandy_chunk_overlay.png new file mode 100644 index 0000000..e5f9b14 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/items/material_sets/shiny/ore_sandy_chunk_overlay.png differ diff --git a/src/main/resources/assets/gtmt/blockstates/gtpebble.json b/src/main/resources/assets/gtmt/blockstates/gtpebble.json new file mode 100644 index 0000000..6f73f60 --- /dev/null +++ b/src/main/resources/assets/gtmt/blockstates/gtpebble.json @@ -0,0 +1,31 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "builtin/generated", + "transform": "forge:default-item" + }, + "variants": { + "type": { + "basalt": { + "textures": { + "layer0": "gtmt:items/ex_nihilo/basalt_pebble" + } + }, + "black_granite": { + "textures": { + "layer0": "gtmt:items/ex_nihilo/black_granite_pebble" + } + }, + "marble": { + "textures": { + "layer0": "gtmt:items/ex_nihilo/marble_pebble" + } + }, + "red_granite": { + "textures": { + "layer0": "gtmt:items/ex_nihilo/red_granite_pebble" + } + } + } + } +} diff --git a/src/main/resources/assets/gtmt/lang/en_us.lang b/src/main/resources/assets/gtmt/lang/en_us.lang index 625e025..832e77e 100644 --- a/src/main/resources/assets/gtmt/lang/en_us.lang +++ b/src/main/resources/assets/gtmt/lang/en_us.lang @@ -4,9 +4,22 @@ gt.tool.class.chisel=Chisel item.gt.tool.wand.name=%s Wand gt.tool.class.wand=Wand +item.gt.tool.crook.name=%s Crook +gt.tool.class.crook=Crook + item.upgrade_storage.name=Storage Upgrade gtmt.item.upgrade_storage.name=Storage Upgrade (%s) +item.gtPebble.basalt.name=Basalt Pebble +item.gtPebble.black_granite.name=Black Granite Pebble +item.gtPebble.marble.name=Marble Pebble +item.gtPebble.red_granite.name=Red Granite Pebble + +item.material.oreprefix.oreChunk=%s Ore Chunk +item.material.oreprefix.oreEnderChunk=Ender %s Ore Chunk +item.material.oreprefix.oreNetherChunk=Nether %s Ore Chunk +item.material.oreprefix.oreSandyChunk=Sandy %s Ore Chunk + # singleblock # Auto Chisel gtmt.machine.auto_chisel.lv.name=Basic Auto Chisel @@ -26,8 +39,42 @@ gtmt.machine.auto_chisel.zpm.tooltip=Your ideal, we will sculpt it./nMaterial in gtmt.machine.auto_chisel.uv.name=Ultimate Auto Chisel gtmt.machine.auto_chisel.uv.tooltip=Your ideal, we will sculpt it/nMaterial in the left, chiseling to the right. See JEI's Chiseling page for details./n§dAuthor:§f @tier940 +# Auto Sieve +gtmt.machine.sieve_steam.name=Steam Sieve +gtmt.machine.sieve_steam.tooltip=Tired of Right-Clicking all day? +gtmt.machine.sieve_steam.steel.name=High Pressure Steam Sieve +gtmt.machine.sieve_steam.steel.tooltip=Tired of Right-Clicking all day? + +gtmt.machine.electric_sieve.lv.name=Basic Electric Sieve +gtmt.machine.electric_sieve.lv.tooltip=AFK Simulator +gtmt.machine.electric_sieve.mv.name=Advanced Electric Sieve +gtmt.machine.electric_sieve.mv.tooltip=AFK Simulator +gtmt.machine.electric_sieve.hv.name=Advanced Electric Sieve II +gtmt.machine.electric_sieve.hv.tooltip=AFK Simulator +gtmt.machine.electric_sieve.ev.name=Advanced Electric Sieve III +gtmt.machine.electric_sieve.ev.tooltip=AFK Simulator +gtmt.machine.electric_sieve.iv.name=Elite Electric Sieve +gtmt.machine.electric_sieve.iv.tooltip=Particle Vibration Chamber +gtmt.machine.electric_sieve.luv.name=Elite Electric Sieve II +gtmt.machine.electric_sieve.luv.tooltip=Particle Vibration Chamber +gtmt.machine.electric_sieve.zpm.name=Elite Electric Sieve III +gtmt.machine.electric_sieve.zpm.tooltip=Particle Vibration Chamber +gtmt.machine.electric_sieve.uv.name=Ultimate Electric Sieve +gtmt.machine.electric_sieve.uv.tooltip=From nothing, something +gtmt.machine.electric_sieve.uhv.name=Epic Electric Sieve +gtmt.machine.electric_sieve.uhv.tooltip=From nothing, something +gtmt.machine.electric_sieve.uev.name=Epic Electric Sieve II +gtmt.machine.electric_sieve.uev.tooltip=From nothing, something +gtmt.machine.electric_sieve.uiv.name=Epic Electric Sieve III +gtmt.machine.electric_sieve.uiv.tooltip=From nothing, something +gtmt.machine.electric_sieve.uxv.name=Epic Electric Sieve IV +gtmt.machine.electric_sieve.uxv.tooltip=From nothing, something +gtmt.machine.electric_sieve.opv.name=Legendary Electric Sieve +gtmt.machine.electric_sieve.opv.tooltip=From nothing, something + # recipemaps recipemap.auto_chisel.name=Auto Chisel +recipemap.electric_sieve.name=Auto Sieve # Tinkers' Construct integration — custom traits modifier.gtmt_heat_resistant.name=Heat Resistant diff --git a/src/main/resources/assets/gtmt/lang/ja_jp.lang b/src/main/resources/assets/gtmt/lang/ja_jp.lang index 09116f2..764534f 100644 --- a/src/main/resources/assets/gtmt/lang/ja_jp.lang +++ b/src/main/resources/assets/gtmt/lang/ja_jp.lang @@ -4,9 +4,22 @@ gt.tool.class.chisel=チゼル item.gt.tool.wand.name=%sのワンド gt.tool.class.wand=ワンド +item.gt.tool.crook.name=%sの鉤 +gt.tool.class.crook=鉤 + item.upgrade_storage.name=容量キット gtmt.item.upgrade_storage.name=容量キット (%s) +item.gtPebble.basalt.name=玄武岩の小石 +item.gtPebble.black_granite.name=黒色花崗岩の小石 +item.gtPebble.marble.name=大理石の小石 +item.gtPebble.red_granite.name=赤色花崗岩の小石 + +item.material.oreprefix.oreChunk=%s鉱石塊 +item.material.oreprefix.oreEnderChunk=エンド%s鉱石塊 +item.material.oreprefix.oreNetherChunk=ネザー%s鉱石塊 +item.material.oreprefix.oreSandyChunk=砂状%s鉱石塊 + # singleblock # Auto Chisel gtmt.machine.auto_chisel.lv.name=基本型自動彫刻機 @@ -26,8 +39,42 @@ gtmt.machine.auto_chisel.zpm.tooltip=あなたの理想、彫刻します/n左 gtmt.machine.auto_chisel.uv.name=究極型自動彫刻機 gtmt.machine.auto_chisel.uv.tooltip=あなたの理想、彫刻します/n左が素材、右が彫刻型。詳しくはJEIのChiselingページをご覧ください。/n§d作者:§f @tier940 +# Auto Sieve +gtmt.machine.sieve_steam.name=蒸気式ふるい +gtmt.machine.sieve_steam.tooltip=一日中右クリックするのはもう疲れただろう? +gtmt.machine.sieve_steam.steel.name=高圧蒸気式ふるい +gtmt.machine.sieve_steam.steel.tooltip=一日中右クリックするのはもう疲れただろう? + +gtmt.machine.electric_sieve.lv.name=基本型電動ふるい +gtmt.machine.electric_sieve.lv.tooltip=AFKシミュレータ +gtmt.machine.electric_sieve.mv.name=発展型電動ふるい +gtmt.machine.electric_sieve.mv.tooltip=AFKシミュレータ +gtmt.machine.electric_sieve.hv.name=発展型電動ふるい II +gtmt.machine.electric_sieve.hv.tooltip=AFKシミュレータ +gtmt.machine.electric_sieve.ev.name=発展型電動ふるい III +gtmt.machine.electric_sieve.ev.tooltip=AFKシミュレータ +gtmt.machine.electric_sieve.iv.name=精鋭型電動ふるい +gtmt.machine.electric_sieve.iv.tooltip=粒子振動チャンバー +gtmt.machine.electric_sieve.luv.name=精鋭型電動ふるい II +gtmt.machine.electric_sieve.luv.tooltip=粒子振動チャンバー +gtmt.machine.electric_sieve.zpm.name=精鋭型電動ふるい III +gtmt.machine.electric_sieve.zpm.tooltip=粒子振動チャンバー +gtmt.machine.electric_sieve.uv.name=究極型電動ふるい +gtmt.machine.electric_sieve.uv.tooltip=無から有を +gtmt.machine.electric_sieve.uhv.name=史上最高の電動ふるい +gtmt.machine.electric_sieve.uhv.tooltip=無から有を +gtmt.machine.electric_sieve.uev.name=史上最高の電動ふるい II +gtmt.machine.electric_sieve.uev.tooltip=無から有を +gtmt.machine.electric_sieve.uiv.name=史上最高の電動ふるい III +gtmt.machine.electric_sieve.uiv.tooltip=無から有を +gtmt.machine.electric_sieve.uxv.name=史上最高の電動ふるい IV +gtmt.machine.electric_sieve.uxv.tooltip=無から有を +gtmt.machine.electric_sieve.opv.name=伝説の電動ふるい +gtmt.machine.electric_sieve.opv.tooltip=無から有を + # recipemaps recipemap.auto_chisel.name=自動彫刻機 +recipemap.electric_sieve.name=自動ふるい # Tinkers' Construct連携 — カスタムトレイト modifier.gtmt_heat_resistant.name=耐熱性 diff --git a/src/main/resources/assets/gtmt/models/item/tools/crook.json b/src/main/resources/assets/gtmt/models/item/tools/crook.json new file mode 100644 index 0000000..c0b66ee --- /dev/null +++ b/src/main/resources/assets/gtmt/models/item/tools/crook.json @@ -0,0 +1,7 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "gregtech:items/void", + "layer1": "gtmt:items/tools/crook" + } +} diff --git a/src/main/resources/assets/gtmt/textures/items/ex_nihilo/basalt_pebble.png b/src/main/resources/assets/gtmt/textures/items/ex_nihilo/basalt_pebble.png new file mode 100644 index 0000000..e294fbc Binary files /dev/null and b/src/main/resources/assets/gtmt/textures/items/ex_nihilo/basalt_pebble.png differ diff --git a/src/main/resources/assets/gtmt/textures/items/ex_nihilo/black_granite_pebble.png b/src/main/resources/assets/gtmt/textures/items/ex_nihilo/black_granite_pebble.png new file mode 100644 index 0000000..3065199 Binary files /dev/null and b/src/main/resources/assets/gtmt/textures/items/ex_nihilo/black_granite_pebble.png differ diff --git a/src/main/resources/assets/gtmt/textures/items/ex_nihilo/marble_pebble.png b/src/main/resources/assets/gtmt/textures/items/ex_nihilo/marble_pebble.png new file mode 100644 index 0000000..59aa56a Binary files /dev/null and b/src/main/resources/assets/gtmt/textures/items/ex_nihilo/marble_pebble.png differ diff --git a/src/main/resources/assets/gtmt/textures/items/ex_nihilo/red_granite_pebble.png b/src/main/resources/assets/gtmt/textures/items/ex_nihilo/red_granite_pebble.png new file mode 100644 index 0000000..b3b102d Binary files /dev/null and b/src/main/resources/assets/gtmt/textures/items/ex_nihilo/red_granite_pebble.png differ diff --git a/src/main/resources/assets/gtmt/textures/items/tools/crook.png b/src/main/resources/assets/gtmt/textures/items/tools/crook.png new file mode 100644 index 0000000..40bc29c Binary files /dev/null and b/src/main/resources/assets/gtmt/textures/items/tools/crook.png differ